Friday, June 29, 2007

[log] i18n, L10n, g11n, p13n

Pierre pointed me to this little gem of knowledge from wikipedia -- gave me such a good laugh. Numeronym = Pig Latin for l33t geeks. F5g f3y s2t.
Internationalization is often abbreviated as the numeronym i18n (or I18n or I18N) where the number 18 refers to the number of letters omitted (nternationalizatio).

Localization is often abbreviated L10n or l10n in the same manner.

(The most common forms are i18n and L10n, respectively. These forms won out because many fonts do not readily distinguish uppercase "I" and lowercase "l", but lowercase "i" and uppercase "L" are always clear.) These abbreviations also avoid picking one spelling (internationalisation vs. internationalization, etc.) over the other.

Both notions are sometimes collectively termed globalization (g11n), but that word has a more common meaning.

Also seen in some circles, but less commonly, are "p13n" for personalization, "m17n" for multilingualization, and "r3h" for reach, as in the reach of a website across countries and markets.

A related concept is a11y (accessibility), which is concerned with adapting products for people with disabilities or age-related limitations.

Thursday, June 28, 2007

[util] FireFox 2 Config Tweaks

I finally upgraded to Fire Fox 2. Having my life depended on a laptop that's 2.5 years old means I am much more suspicious of fangled memory and resource intensive software. Thanks to Lifehacker for these critical tweaks:

1. In address bar, type in "about:config"

2. Then change these settings to the new values:
  • browser.tabs.tabMinWidth = 0 (Remove the new fixed size tabs that scroll. Yes. I want to see all my tabs, even if they are tiny and unreadable)

  • browser.tabs.closeButtons = 2 (Remove the close button on each tab. I use control-F4 to close tabs. Why waste screen real estate with a close button on each tab?)

  • network.prefetch-next = false (Stop browser from prefetching pages based on its guesses. No thanks.)

  • browser.cache.memory.capacity = 10000 (Limit browser memory usage. Have not confirmed that this really works for me. Let's hope it does.)

  • browser.chrome.toolbar_tips = false (Turn off toolbar tips. Who needs those anyways?)

  • browser.urlbar.hideGoButton = true (Hide the "Go" button on the address bar. My laptop screen only supports 1024 x 768. Every tiny square inch counts)

Tuesday, June 26, 2007

[sql] Generate Random Numbers

Good trick (and very nicely put together article) that Mike found http://www.sql-server-helper.com/tips/generate-random-numbers.aspx

SELECT ABS(CAST(CAST(NEWID() AS VARBINARY) AS INT))

Double casts with absolute value. Awesome.

Monday, June 25, 2007

[twiki] How to Install SectionalEditPlugin

Just got SectionalEditPlugin to work the way I wanted. Now I'm plastering <editsections/> everywhere.

Install SectionalEditPlugin
- Follow pretty much the same instruction as MultiEditPlugin to do the install.
- One additinal step: in the "configure" program, under "Security Setup" section, {AuthScripts} attribute, add "editsection" to the end of the comma delimited list. This tells TWiki to authenticate the users before editing the section.

Set Edit Link Style
I prefer the wikipedia style of having edit link in the top-right corner of the section. To do that, from the TWiki web, SectionalEditPlugin page, edit these settings:
* Set LABEL = <div style="float:right;margin-top:10px;">%ICON{edittopic}% Edit</div> 
* Set STYLE = ""
* Set PLACEMENT = above


Set the Minimum Depth Preference
I prefer to only auto add the edit link from header level 2 and down sitewide. To do that, from the TWiki web, TWikiPreferences page, add these settings:
Setion Depths Settings for SectionalEditPlugin
* Set SECTIONDEPTH = all
* Set SECTIONDEPTHMIN = 2


Optional: Disable Content Before
I was having a few issues with the page not jumping to the edit box consistently. Still considering whether I should hide the content or not but here's a note in case I want to do it later.
- From [twikipath]/templates/editsection.pattern.tmpl
- Replace %TMPL:DEF{"content"}%
- With %TMPL:DEF{"contentDontShow"}%

Enjoy
Now all you need to do is add <editsections/> just once on the top of a document, and all the headings will automatically become section-editable.

Sunday, June 24, 2007

[twiki] How to Install MultiEditPlugin

Tested installation of MultiEditPlugin and it's very cool (live example). Instead of putting the entire document into edit window, and having to scroll and look for that section you want to edit, you can now just edit specific sections. Notes from my install.

Before You Start
You need to have (or have someone who does) access to create files and change file access permission on the twiki file server (i.e. telnet or ftp into the actual machine)

Also, there is another plugin called SectionalEditPlugin that has very powerful feature that automatically enables the entire document for section editing. However, I haven't figured out how to customize it so the "edit" link float right properly in each section. Likely project for next weekend to customize the perl module. If I can get that done, I will likely use that plugin more often for basic editing use. MultiEdit however, gives you the ability to mark any part of the page as a section, which gives me more flexibility when I need it.

Copy EditContrib Plugin Files
- Download EditContrib.zip
- Copy files from the zip file to the locations of your twiki directory, according to this installation instruction.

Copy MultiEditContrib Plugin Files
- Download MultiEditPlugin.zip
- Copy files from the zip file to the locations of your twiki directory, according to this installation instruction.
- Bluehost specific instruction: Bluehost requires the bin files to be renamed with .pl extensions. So do that. And then, go to lib/TWiki/Plugins/MultiEditPlugin.pm and search in the code to replace editonesection with editonesection.pl

Verify Execute Permission on Files
- For the files you copied over to the bin sub-directory, you'll need to make sure that that they have the execute permissions. If you are on some flavor of unix, cd into the bin subdir and do chmod a+x addsection savesection editonesection

Enable the Plugins and Authentication
- Go to the configure program and enable the plugin. Exactly how you access the configure program may vary, generally speaking you are looking for http://[yoursite]/[yourtwikipath]/bin/configure, and then expand the "Plugins" section, then check the box next to {Plugins}{MultiEditPlugin}{Enabled}
- Alternatively, bring up lib/LocalSite.cfg and add in the line $TWiki::cfg{Plugins}{MultiEditPlugin}{Enabled} = 1;
- Also, under "Security Setup" section, {AuthScripts} attribute, add "editonesection" to the end of the comma delimited list. This tells TWiki to authenticate the users before editing the section.

Customize the Style
- By default, the edit link appears on the lower right of the section on it's own line. Personally, I prefer the wikipedia style of floating the edit link on the top right corner of the section. To do that:
- Go to http://[yoursite]/[yourtwikipath]/view/TWiki/MultiEditPlugin. Click "Edit" to modify the page, and replace Set PLACEMENT = after with Set PLACEMENT = before
- Add .multiEditLabel {float:right;} to your site's override stylesheet, if you have one already set up. Or if you don't already have one and you just want the shortcut, add to the stylesheet of the skin that you are using. For example, pub/TWiki/PatternSkin/style.css

Enjoy
You can now enclose sections that you'd like to edit individually with <section> and </section>.

Friday, June 22, 2007

[css] Page Break Attribute

CSS attribute that adds page break in print! Just insert this snippet in the location of page where you want to page break to occur:

<div style="page-break-after:always;"></div>


Test this with IE 7 with TWiki Printable View "Pattern" skin -- Works perfectly.

However did not work on FireFox 1.5.

Monday, June 18, 2007

[log] M&M's


The Mini's were bad enough, and now they launched Dark. I'll justify my indulgence with those reports about high levels of anti-oxidant in chocolate.

Saturday, June 16, 2007

[muse] Smart, Motivated, Nice

Hiring is tough. It's like commiting to marriage after just a couple of speed dates. After all, many of us spend more of our waking hours during the week at work, rather than at home.

I learned the greatest hiring rule from Al: "Smart, Motivated, and Nice".

But, how one actually figures out if a potential candidate is smart, motivated, and nice, in just a couple of short interviews, continues to be one of the most interesting and difficult challenges to me.

Thursday, June 14, 2007

[util] Pivot Stickfigure Animator

Came across this cool piece of software -- Pivot Stickfigure Animator. A tiny half meg download can produce some really cool animated gif. Neat.

Found on snapfiles

[sql] SQL Server Date Formats

Handy reference. Example: select convert(varchar(10),getdate(),102) --> '2007.06.12'

ID Style Type
100 mon dd yyyy hh:miAM (or PM)
101 mm/dd/yy
102 yy.mm.dd
103 dd/mm/yy
104 dd.mm.yy
105 dd-mm-yy
106 dd mon yy
107 Mon dd, yy
108 hh:mm:ss
109 mon dd yyyy hh:mi:ss:mmmAM (or PM)
110 mm-dd-yy
111 yy/mm/dd
112 yymmdd
113 dd mon yyyy hh:mm:ss:mmm(24h)
114 hh:mi:ss:mmm(24h)
120 yyyy-mm-dd hh:mi:ss(24h)
121 yyyy-mm-dd hh:mi:ss.mmm(24h)
126 yyyy-mm-dd Thh:mm:ss.mmm(no spaces)
130 dd mon yyyy hh:mi:ss:mmmAM
131 dd/mm/yy hh:mi:ss:mmmAM

Wednesday, June 13, 2007

[web] From Application to Platform

I admire these two companies for having the terrific vision and the engineering talent, to grow their product from an application with a specific set of functionality, to a platform of applications that now supports an entire ecosystem of companies, developers, users -- and of course, in that process, making itself absolutely indispensable.

Salesforce.com AppExchange - Still the the best success story of hosted enterprise software. The AppExchange demonstrates their deep and clear understanding of the users' needs -- which is, that they are all different.

Facebook Platform - A most elegant way to extend the social network core app, by making itself the central platform from which all other social network apps can run on and must plug into, and making its own app a whole lot more interesting. I added the "Drinks" app right away.

Tuesday, June 12, 2007

[eats] Ummba Grill (Century City, CA)

- Gorgeous outside lounge dining area with hollywood-club style sofas
- You can hang out with your dog
- Excellent mango caipirinha with mango pulp bits
- You can drink with your dog in your lap
- Wonderful plate of picanhna, garlic beef, shrimp, and chicken legs
- You can eat with your dog in your lap
- The waiter forgot to charge us for the meat and was too busy to correct it
- Pretty hard to beat a Saturday afternoon such as this one
- (and thank goodness Jose didn't have to pee or poop while we were in the mall)

Ummba Grill
Inside the Westfield Century City Shopping Mall
Next to the food court & AMC
310.552.2014

Wednesday, June 06, 2007

[web] Money Widgets

A mad dash these days for widgets. The most interesting ones of course that ones that can make you money:

Google AdSense - IMHO the original, most widely distributed, and most important "widget" on the internet, by definition of "widget". Though interestingly, almost never referred to as widget.

Tumri AdPod - Rev-share pay per click module focusing on shopping ads from consumer merchants.

Nooked - Seems to be similar to Tumri, though still in private Beta so no preview.

FavoriteThingz - Amazon and Ebay Affliate marketing webstore in a widget.

[outing] Dandy Don's Catered Sundae Bar

Where: Rec Room
When: Friday 2007 Jun 1st


- Chocolate ice cream, topped with lots of oreo's, peanuts, and whipped cream. Ah.

Tuesday, June 05, 2007

[muse] Urgent vs Important

Great advice from my college advisor, Olin Shivers:

  "Don't let the Urgent make you lose sight of the Important"

But what I've realized overtime is that, the trick is to take care fo them both. Now with Alan's fun analogy influence:

  "You can't just keep feeding the hungry villagers sardines, you gotta hunt down a whale once in a while to make them really satisfied. But, if you are always just hunting whales, then the villagers will starve to death while they wait for you."

The best way to master the princple: Play the game of Civ.

[web] Local Events App

Local Events is the other way to capitalize on social networking functionality. And truly, a great new way to get people together:

MyPeopleConnection - I think these guys are the original, and a great effort for an all volunteer organization.

Going.com - Only available in Boston, NYC, and SF, but TechCrunch says its got 200,000 (!) members already. A look at number of events today: 247. The site looks like it's got real money and talent behind it to take the local events market. It's got all the right sticky and convenience features.

Evite - Honestly I have always wondered why Evite hasn't created group, friend's list feature. And, there is actually a "Local Events" feature, but it is nearly impossible to find. All along they were the one who were the most poised to take this market. Odd.

Monday, June 04, 2007

[web] The Killer App - Fresh, Relevant Content

We hear so much about concerns over privacy, and yet web apps that help you broadcast your every little random thoughts and your conversations with friends to the world (or of course, the parts of the world you choose) are the most popular things of the day:

MySpace - Many have documented how teens are addicted to "Comments".

Facebook - The de-facto nemesis of MySpace, with their "News feed" and "The Wall".

Twitter - Some call it mini-blog. So popular that the servers are routinely down.

Jaiku - The de-facto nemesis of Twitter.

Plazes - Similar service but with geomap mashed up.

If I had thought a little harder about this earlier, the pattern should have been obvious long ago:

Email - The original killer app of the internet. Email delivers fresh content that is interesting to you.

RSS - The killer app that sprung up a whole new generation of professional bloggers. RSS feeds deliver fresh content that is interesting to you, by your voluntary subscription.

MySpace, Facebook, Twitter, etc - The killer app that made "social networking" an industry. Each has a module that delivers fresh content that is interesting to you, as generated by your group.

Looks like, a little "fresh relevant content", is all that anyone's ever asked for.

Friday, June 01, 2007

[muse] Google Gear

Two thought-provoking posts, from The Read/Write Web and The Motley Fools, well, provoked some thoughts:

1) "Does Google Gear add value to the company?"

To me, Google is a company that makes money from advertising, using search.

But, in order to search (and subsequently make money from search), it needs data.

Google is already the clear winner in many forms on online data -- and expanding all the time.

But, for a vareity of reasons, people still like to keep data offline on their local disk. Hence Word, Excel, Outlook. Tons and tons of data there.

So in order to get their hands on those data, they build Google Gear -- If they built a killer app using Google Gear, they will have access to all offline data managed by it. Maybe it's GMail, maybe it's Google Office. And if someone else built a killer app using Google Gear, why, they'll just buy it.

And that, to me, is a consistent expansion of their strategy -- They've started reaching for offline data with Picasa and Google Desktop. Google Gear is the platform from which they can try to take the rest of pie.

2) "Is offline data relevant in the future?"

Well, let's see. Remember that big hype about "paperless office?" "Once we have everything automated and computerized, we won't need paper anymore!"

And, I am, personally, in fact, 99.5% paperless. But I look around my office, and it's paper everywhere.

Who knows if offline data will really disappear like casette tapes, or if it will stick around like paper. But there's plenty of offline data to be had today, and, Google's got a deep pocket.

If I were Google, I'd hedge my bet and build Google Gear.