Monday, December 31, 2007

[recipe] Thinly sliced beef stir fry

Whipped this up after the hike today, with the thinly sliced beef from Mitsuwa.

- Sliced six fingerling potatoes. Pan-fry with a saute pan with a little oil in medium heat. Takes a good ten minutes until they get that beautiful golden brown home-fries colors.
- In the wok, heat oil with garlic, and the stir fry a package of snow peas. When done throw them over the potatoes.
- Reheat the wok with more oil with garlic. Stir fry about half pounnd of thinly sliced beef. Today I had Lee Kum Kee's sweet and spicy beef ribs sauce on hand, so as soon as it's half way done throw a good amount of it in there.
- Finish by stir frying the snowpeas and potatoes back with the beef and sauce.

Sunday, December 30, 2007

[recipe] Lightly Salted Salmon

Saw the "lighly salted salmon" on sale at Mitsuwa yesterday and bought a package. Have never cooked this before but my guesses turned out pretty good:

- Pan fry in medium heat. Probably a couple of minute on each side. Just stop when salmon looks cooked on the outside but still very rare on the inside.
- Even though the package says "lightly Salted", the salmon is actually pretty salty. Slice up bunch of cucumber mix with beans sprout, and eat it with the salmon.

Gonna go get some more next week ...

[recipe] Lettuce Wrap

I always get protein-style at In-n-Out. But even then the heart attack guilt factor is still pretty darn high. Made this up a couple of days ago as a substitute -- Though I think the principle is simply to dice up a bunch of things that end up soft and in small enough bits to wrap in a lettuce leaf and eat.

- Dice a shallot, saute
- Dice a zuchini, saute
- Dice a dozen Shitake mushrooms
- Auntie Ruth made us a bunch of 梅菜扣肉, so I just took the pork belly that's already steamed soft and diced that, and sauted with bunch of Hoisin ()
- Rinse a hanful of lettuce leaves and wrap away. I used butter lettuce this time. Might try romaine or iceberg next time.

Saturday, December 22, 2007

[recipe] Chewy Chocolate Cherry Cookies

OK. Now I know why we buy cookies (or just eat ones that Scott and Auseh make). Because making them is a crap load of work. A recipe that I used today, edited for next time I want to make them again:

1 cup all-purpose flour
1/3 cup unsweetened cocoa
1/2 teaspoon baking powder
1/4 teaspoon baking soda
1/4 teaspoon salt
1 cup sugar
1/3 cup unsalted butter, softened
1 teaspoon vanilla extract
1 large egg
3 tablespoons semisweet chocolate chips
1/3 cup dried tart cherries
Cooking spray

- Preheat oven to 350°.

- In the first "dry ingredient" bowl, combine flour, cocoa, baking powder, baking soda, and salt. Mix thoroughly. This step is easy.

- Soften the butter by defrosting it in the microwave for a good 30 seconds.

- In a second bowl that you can run the mixer in, add the sugar and butter. Mash the butter into the sugar, and then blend until there is no big butter chunks. This whole process will take a while.

- Add vanilla and egg. Beat well. This step is easy.

- Here comes the pain-in-the-a** part -- With mixer on low speed, gradually add flour mixture with a big spoon. This means add a couple of spoonful, blend until the dry stuff disappears, and then repeat. This process gets really hard about halfway through, when all the batter will stick to mixer, and you have to keep spooning everything off the mixer just so you can mix again. Beat just until combined -- Meaning the moment that you are really, really relieved because you don't see any more dry stuff in the bowl.

- Fold in chocolate chips. This isn't easy either, because the batter is very dry and chunky. Try using two spoons so you can break up the batter to incorporate the chocolate chip.

- Cover two cookie sheets with foil and lightly cover with cooking spray. This will save you dishes time later.

- Divide the batter into 20 to 30 cookies, 2 inches apart. Depending on how big you like them. Spooning doesn't really work, just use your finger like you are making rice balls for sushi. To each cookie, add 2 to 4 cherries, depending how much your audience like tart cherries.

- Bake at 350° for 12 minutes or just until set. Remove from oven; cool on pans 5 minutes. Remove from pans; cool completely on wire racks.

- Enjoy a couple of these wonderful, chewy, chocolate cherry cookies. Enjoy how the tartness of the cherries contrasts with the cocoa and semisweet chocolate chips. Then go take a nap. You'll need it.

(Original recipe from Cooking Light. Notice how the recipe reads like it's so easy.)

[recipe] BBQ Sausage Sauté

Came home from the airport and whipped this up out of things in the fridge.

- Cut 1 onion in to one-inch squares. Sauté until golden brown.
- Cut 4 cooked sausage (like the Aidells) length-wise and then into one-inch chuncks. Sauté.
- Throw in a handful of frozen corn, frozen green peas, and BBQ sauce to taste. Sauté.
- Dice a fresh tomato to sprinkle over when serving -- Adds a nice splash of bright colors and the tomato is refreshing.

Monday, December 17, 2007

[recipe] It's da BOM hash

- Bacon - 8 slices. Cut into 1 inch strips.
- Onion - 1. Cut into squares.
- Mushrooms - 1 container of whatever sliced stuff.

- Cook Bacon, Onion, Mushrooms in that order.
- Drain onto paper towel to feel less guilty about the whole thing
- But don't skip the finish -- Drizzle maple syrup over the whole thing and mix

Great with anything (bacon is just so magical), or just enjoy by itself.

Thursday, December 06, 2007

[recipe] Sloppy Jose

Picked up some random new things from the "Hispanic Foods" section at Pavilion that ended up looking like Sloppy Joe:

- Chopped 1 onion into smallish pieces. Brown it.
- Then brown 1.25 lb Extra lean ground turkey.
- Throw in handful of breadcrumb. Not sure what this does but sounded good.
- Throw in small can (7oz) of Salsa Ranchero
- Throw in small can (7oz) of Van Camp's Pork and Beans in Tomato Sauce
- Throw in sliced mushrooms. Like half of those small bucket from store.
- Throw in teaspoon of Kirkland Steak Rub. Because that's good in everything.
- I think if I had sour cream that would be good to mix in. But I didn't

Dead simple, quick cooking, enough food to last for days, artery-friendly, and low-carb.

Monday, December 03, 2007

[trip] Costa Rica

- Hotel Martino (
- Tabaon Therma Resort (
- Cacique Guaro Quattro Plume (
- Pozo Azul (
- Canopy Zipline
- Horseback Riding
- Whitewater Rafting
- Filet Mignon, $13. Wine by the glass, $3.
- "Proximio ... Donte ... Mucho .. Animales", "Zoological?", "Yeah!"
- Running in Dallas airport to Gate C4
- Happy birthday Jessica and Truc!

Wednesday, November 28, 2007

[tool] Zoho Creator

Zoho Creator is to casual database application buildling tools, as iPhone is to cell phones --- Beautiful, fun, powerful.

I am so impressed. Kudos.

Jury's still out on whether Zoho can handle heavy-duty db apps with complex parent-child relationships and tables (doesn't look promising right now), but it sure solves the "Single Table App" problem extraordinarily well.

Saturday, October 27, 2007

[trip] Prague - Day 6

Friday, October 19
- Pilsner Heaven
- Er Josh why did you pick the small cup?
- Alan, Josh, and I running back for re-fill, while Pierre and Maureen tried to distract the tour guide
- Deiter the "Detour"
- "Please make a U-turn as soon as possible"
- Beer Bath! Finally!
- Maureen discovering the hot water, bubble, and beer switch
- The mandatory beer with the beer bath
- They must be so relieved when we were finally out of there
- Incredible dinner with beer for five for just $62
- Ro Sham Bo for Absinth

[trip] Prague - Day 5

Thursday, October 18

- Suddenly, it's freaking Eastern Europe cold!
- Pierre looking good in my scarf
- The Golden Tiger, finally
- Sausage at The Golden Tiger, Sausage at the place in Mala Strana, Sausage, Sausage

Thursday, October 18, 2007

[trip] Prague - Day 4

Wednesday Oct 17
- Run run run to platform 6!
- Pokahantas speak with Czech lady on train: "Prague. Big. Beautiful. Many people"
- Kutna Hora Silver Mine
- The "charming little" cafe ... with random sewing machines scattered around
- They just had to make us wear the coat and miners hat when we walk outside
- Going completely dark in the mine
- The dude with the best job in the mine was the one who manned the toilet?
- What's up with the angels and the skulls?
- Amazingly nice old man who had climbed 600m out of a mine
- Bone Church
- Thank god the train stopped at Prague
- Mmmm ham flavored potato chips!
- 1: Le Casa Argentine
- 2: Karlova

[trip] Prague - Day 3

Tuesday Oct 16th
- Heavenly croissant pizza
- Josefov
- Havelske Market
- Can't take picture of "Party Power"? or Bread?
- Powder Tower
- 1: Lary Fary
- Giant skewer
- 2: e Lounge
- 3: Coyote (yes, again)
- Is it a beer holster? Is it an eye mask? Is it a ....?
- 4: "The Biggest Music Club in Central Europe"
- The girl and the guy in the corner
- Blades of Glory couple
- Charles bridge at 3am
- Nothing beats early morning Wenceslas Square sausage

[trip] Prague - Day 2

Monday 2007 October 22
- Charles Bridge and Prague Castle
- "That gargoyle looks like it's got something up its ..."
- Scary sculpture depicting scary scenes with scary dudes behind bars
- 287 Steps up (and down) The Great South Tower!
- 1: U Vejvodu
- Pork Knuckle and the Bohemian "heart-attack" Pan
- What? There's a charge for the pretzel?
- 2: U Fleku
- The wait staff really loves Josh
- "Can we order some bacon dumplings?", "No that's garnish"
- 3: U Medvidku
- "Hey Fred!"
- Primator
- 4: Coyote
- "Do your people eat pets?"

[trip] Prague - Day 1

Sunday Oct 14
- London Heathrow deadly security line at Terminal 3 and then Terminal 1
- London Heathrow killer British Airway lounge
- "Hey Hun, do you have a few singles?" ... "It's self-serve!"
- "Mr Sae-Tan"
- "I think our driver just punched the parking gate"
- 1: Praha Grand Cafe: "All these people wait around the clock to see that?"
- 2: Two Cats:
- "I'll give you 10 crowns for chugging that beer"
- Who knew flipping coasters can be so much fun?
- "Mozart was here"
- Attacking Josh in the hotel lobby and crowding his room
- 3: Rock Cafe: The first mug
- 4: Double Trouble: "Who's going home with the Thai girls?"
- Deadly Becherova

[trip] Prague - Day 0

- Catching Jose's Poop
- First four vodka tonic at the LAX Admiral's Club

Friday, September 28, 2007

[homage] Hangar One Vodka

hangar one vodka
Best liquor I have ever had in my life. Ever.

Wednesday, September 26, 2007

Monday, September 24, 2007

[homage] What's in a Twinkie

Great transcript on CNN


GUPTA (voice over): With more than 500 million sold every year, chances are pretty good you've tasted a Twinkie, but have you ever wondered, what's in one?

We asked Christopher Kimball, host of "America's Test Kitchen" to deconstruct the Twinkie for us.

CHRISTOPHER KIMBALL, "AMERICA'S TEST KITCHEN": The Twinkie is one of the finest examples of modern engineering and here's why. It started out in 1930 as a basic sponge cake with the basic ingredients, you know, milk, butter, eggs, et cetera. And they filled it with cream and it lasted well maybe a couple days, three days in the market. Hence the problem, now how do you create something that's going to be shelf stable. It's not going to change over time.

GUPTA: To do that, Hostess replaced the egg yolks with lecithin.

KIMBALL: It's an emulsifier like egg yolk, which means it takes lots of disparate ingredients and sort of lets them blend together.

GUPTA: Cellulose gum replaces fat.

KIMBALL: It brings in moisture, holds moisture and gives you that mouth feel you get from fat.

GUPTA: Artificial colors take the place of natural ones.

KIMBALL: And those colors actually come from, oddly enough, the petrochemical industry, from benzene and aniline and other chemicals, which in quantity is actually poisonous, but the small quantities used here, the FDA has approved.

GUPTA: In response, Interstate Bakeries, makers of Hostess products, says the core ingredients have been the same for decades -- flour, sugar, water. Adding that deconstructing the Twinkie is like trying to deconstruct the universe. Some people look at the sky and think it's beautiful, others, try to count the stars.

Urban legend would have you believe a Twinkie can last for years. Hostess says just 25 days.

Dr. Sanjay Gupta, CNN, reporting.


[homage] Star Wars Family Guy

Star Wars Family Guy

Thursday, September 20, 2007

Tuesday, September 18, 2007

[story] Big Spender

A fun twist to a classic:

For generations, my family served as the village guardians. Like my mother and her mother before her, I was born with the gift to forsee the darker side of life -- disasters, evil, weaknesses. And we used our powers to help protect the village. If a drought was coming, we'd teach everyone to save food and water. If temptations were clouding people's minds, we'd set them back on the right path. We took great pride and joy in our duties.

But one year things got really bad. Flood, fire, storm, sicknesses -- one after another. Day and night, we worked so hard to help people cope. But one day, they just snapped. They got it into their little heads, that somehow it was all our fault. So they took my family and me, and threw us into the raging river, one by one.

I was the only one who survived.

And on that day, I swore to never use my power for the "greater good" again. What good is it if I couldn't even help myself and my family? And you know what, when you can see people's weaknesses like they are written on their face, it is so easy to take what you want from them.

Take, for example, that man over there. Handsome, rich. Thinks he's smart. Ha. He has no idea. I can take everything away from him so easily ...

The minute you walked in the joint
I can see you were a man of distinction
A real big spender
Good looking, so refined
Say, wouldn't you like to know what's going on in my mind
So let me get right to the point
I don't pop my cork for every man I see
Hey big spender!
Spend a little time with me.

Wouldn't you like to have fun, fun, fun
How's about a few laungh, laugh?
I can show you a good time!
Let me show you a good time

The minute you walked in the joint
I can see you were a man of distinction
A real big spender
Good looking, so refined
Say, wouldn't you like to know what's going on in my mind
So let me get right to the point
I don't pop my cork for every man I see
Hey big spender!
Hey big spender!
Hey big spender!
Spend a little time with me.
Spend a little time with me.
Spend a little time with me.

Tuesday, September 11, 2007

[story] Distant Melody

Wrote for the song "Distant Melody":

Once upon a time, women in China practiced a tradition called "feet binding". Before a girl reached six years of age, her mother would break four toes in each foot, fold them underneath, and then wrap them as tightly as possible. The pain would last for years, and there was no medicine to numb it. Women were taught that bound feet represented beauty and class, and that a mother binding her daughter's feet was a great act of love.

There was a woman who had such bound feet. Her mother cried as she broke her feet, and she kept repeating that she had to do it because she loved her, because she wanted her to marry well and have a good life. The woman clung to those words as she grew up -- they were the only thing that could comfort her through the never ending pain.

But, all that changed when she gave birth to her own daughter. As soon as her little girl could walk, the woman realized that her daugher had a great talent -- a talent of dance. She knew that if she broke her little feet, she would break her mind and her spirit too.

But what could she do? The rest of the family would want to bind her feet. The woman came up with a plan -- she taught her daughter to walk like a cripple -- Always limping and hunching her body. It worked. Everyone wrote the little girl off as a cripple, and only at night, in the bedroom, when the door was closed and the shades were drawn, would the woman sing to her daughter so that she could dance freely. Oh, how beautifully she danced!

They kept it a perfect secret for years. Not even the father knew. But one hot summer night, they got careless. They left one window open, and when the father walked by, he spotted dancing shadows. He charged into the room and discovered that his daughter was never a cripple at all! He was furious. He sold his daughter to another family and kicked his wife out of the house -- They had betrayed him, and he never wanted to see them again. Ever.

The little girl never saw her mother again. Her new family took her to America, where she grew up to be a great dancer. But every night in her bedroom, when the door was closed and the shades were drawn, she would think of her mother, and the song that she sang to her ...
Once upon a time and long ago,
I heard someone singing soft and low.
Now when day is done, and night is near,
I recall the song I used to hear.

My child, my very own.
Don't be afraid, you're not alone.
Sleep until the dawn, for all is well.

Long ago this song was sung to me.
Now it's just a distant melody.
Somewhere from the past, I used to know.
Once upon a time, and long ago.

Sunday, September 09, 2007

[find] Envelop

[log] Hermosa Beach Labor Day Fair

- 2007 Labor Day Monday
- Alan, Maureen, Adam, Mike, Shelbey, Brandon, Melissa, Turner, Pierre, me

- 12" sweet Italian sausage
- Pierre + Snake + Shark + Samurai sword
- Gorgeous art

Saturday, September 01, 2007

[outing] Wicked

Where: Pantages Theater
Who: Steph, Scott, Pierre, me
When: Sunday Aug 26th

- We are going to pick up the ticket at the Frolic room? Looking for Mr King?
- Sushi at Kabuki
- Love the story!

[muse] Leonidas and Xerxes

In addition to being a fantasic film, "300" is also an interesting study of two very different management styles:

[ Leonidas ]
- Hands-on manager (got awesome sparta muscles to show off)
- Inspires results from his troops
- Lead-by-example

[ Xerxes ]
- Hands-off manager (can't ruin the battlefield bling bling)
- Demands results from his generals (by either showering them with great rewards, or chopping their heads off)
- Lead-by-aura

Which strategy is more effective in different situations?

Sunday, August 19, 2007

[muse] Grass is Greener ...

The priest from Marie and Renzo's wedding said:

It isn't that grass is greener on the otherside --- Grass is greener where it's watered.

Love it.

Thursday, August 16, 2007

[sql] Detecting / Filtering All Caps Text

Needed to detect if a field contained all caps / uppercase text. Once again, Yodakawa comes to the rescue.

-- Retrieve rows where FooText is not all caps
--(using it in where clause)
select top 100 FooText, * from FooTable
where FooText like '%[abcdefghijklmnopqrstuvwxyz]%'
COLLATE SQL_Latin1_General_CP1_CS_AS

-- Syntax for using it in the select
select top 100
isnull((case when FooText like '%[abcdefghijklmnopqrstuvwxyz]%'
COLLATE SQL_Latin1_General_CP1_CS_AS
then description2 else '' end), '')
from FooTable

[sql] Remove carriage return

SET FooText = REPLACE(FooText, CHAR(13), '')

Monday, August 13, 2007

[sql] Change object ownership

Changing object ownership in Micrsoft SQL Server

EXEC sp_changeobjectowner 'userfoo.tablefoo', 'dbo'

Saturday, August 11, 2007

[sql] Update table with column from another table

For example, if you have a list of students of all ages attending attending a field trip (Table "FieldTripList"), and you want to record who their current teacher is in the student information table (Table "Student")
update FieldTripList 
set FieldTripTeacher = s.CurrentTeacher
from Student s
where fk_StudentID = s.StudentID

More generic example with joining away to two tables: update columns in [TableA], by joining to [TableB] and [TableC] and using the values from those tables
update [TableA]
set TableAValueB = TableBValue,
TableAValueC = TableCValue
from [TableB], [TableC]
where TableAID = TableBID
and TableBID = TableCID

Wednesday, August 01, 2007

[muse] Jose and the hula hoop

The first time we tried to get Jose to just walk through a hula hoop, he was deathly afraid. We held out his favorite treat on the other side, and he would reach and reach for it with his neck, but his little feet stubbornly planted on the edge of the hoop.

Finally we held his foot up and gently nudged him through the hoop to get his treat. Suddenly he realized that the hoop wasn't going to eat him alive -- Jumping through hoop wasn't so hard after that!

What are things on my to-do and i-really-should list that are hula hoops -- really hard to get through the first time, because I don't know how easy it really is?

Monday, July 30, 2007

[log] Long Beach off-leash dog park

Sunday: 2007 July 29

- Long Beach off-leash dog beach
- Jose getting tackled in the sand
- Jose and waves not friends
- Nice stroll on Long Beach 2nd street
- The really small family fun fair
- Fish Tacos at Rubio's

Sunday, July 22, 2007

[recipe] Chicken Mushroom Bacon Bake

We defrosted chicken and bacon to clear out the freezer, and Pierre ended up with this:

- Chicken Thighs (5-7 pieces)
- Bacon (5-7 pieces)
- Cream of Mushrooms
- Baby Portebella
- Breadcrumb

1. Layer chicken thighs in a baking dish
2. Half the baby portebella and scatter on top of chicken
3. Layer bacon on top
4. Pour a can of cream of mushrooms over
5. Scatter breadcrumb all over
6. Bake in 400F oven for 45 min

Few things are easier and tastier than this!

Monday, July 16, 2007

[code] Falling Kitties

What happens when JavaScript falls the dark side of the force. Truly frightening.

[outing] Papa Cristo's, Zee's, and J Lounge

Papa Cristo's
- Omakese-style appetizer run
- Meat pie, cheese pie, spinach pie
- Gigantic gyro plate

- Big o fluffy sheep rug pairs perfectly with the hardwood floor
- Robert's excellent instant Sangria. Cans of doles with peach schnapp.

J Lounge
- Gray and Robert as the two token white males who tower over everyone else
- Using the word "mutagens" on random bar chicks
- Can't decide on Hanger One or Grey Goose? Run a blind taste test, of course

Thursday, July 12, 2007

[sql] Left join to two-away table

Lesson from Yodakawa today on how to left join to a table, and then join to another 2-away table:

from A left join (B join C on = on =

[recipe] Sausage Salad

Recipe inspired by the sign I saw at the 7-eleven Kwik-E-Mart, which said -- "Eat fruit to feel less guilty about that chili dog"

- 1 cucumber
- 2-3 tomatoes
- 8-oz mushrooms
- 2 sausages

- Dice up everything to ~1 inch chunks
- Saute mushrooms and sausages
- Layer cucumber, tomatoes, then mushroom / sausages
- Eat sausages (and feel less guilty about it)

Wednesday, July 04, 2007

[play] Great iPhone Parody Ads

Beautifully done and just my kind of humor. Bravo.

Tuesday, July 03, 2007

[log] 7-Eleven Kwik-E-Mart

Just discovered that I live just a few blocks away from one of just eleven Kwik-E-Mart in the world! Went there at midnight and the line outside was so long you'd think they were selling free iPhones inside. Will have to go and try again at 2am.

And here is how to find a Kwik-E-Mart near you, so you can get your very own Squishee.

Monday, July 02, 2007

[play] How to make upside down text

¡ɹɐd oʇ dn sɐʍ (ʇı sllɐɔ ǝɥ sɐ 'nɥd-ǝlƃooƃ 'ɹo) nɟ-ǝlƃooƃ ʎɯ ʎlǝʇɐunʇɹoɟ ˙ʎɐpoʇ ǝlzznd pɹǝu ǝlʇʇıl looɔ sıɥʇ ǝɯ ʇuǝs ʇʇoɔs

Here is how to make upside down text

[outing] The Sound of Music Sing Along

Where: Hollywood Bowl
Who: Mike, Shelbey, Corinne, Pierre and me

- To sausage or not to sausage?
- Canadian bacon and croissant sandwich?
- The deadly fruit in the sangria
- Jack left the building in just 20 min
- Pierre slept through the whole movie
- "Moonbeam in your hand"
- "Maria, You're Fired!"
- Was everybit as good as I had imagined. Gotta call Eileen to go next year

[log] iPhone

Thanks to Mike, who waited in line for 8 hours, I can now say that I know someone who has an iPhone. And,

- iPhone's screen is astoundingly gorgeous
- iPhone's body is work of art
- iPhone's browser renders text so beautifully
- iPhone's vertical / horizontal flip is killer
- iPhone's touch screen typing is an absolute breeze

All those commercials are actually, really, real. Surprise!

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.)

  • = 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


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

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"}%

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
- Copy files from the zip file to the locations of your twiki directory, according to this installation instruction.

Copy MultiEditContrib Plugin Files
- Download
- 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/ and search in the code to replace editonesection with

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

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
103 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. 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

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. - 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.

Thursday, May 31, 2007

[web] reCAPTCHA

Absolutely brilliant use of crowdsourcing to digitize books and old text:

1. When OCR scans the original text, it throws out words that it cannot read with high confidence, and gives it to reCAPTCHA
2. Instead of normal CAPTCHA which asks for one text string, reCAPTCHA asks users for two words, one it knows the answer to, the other it doesn't
3. If user answers the known word correctly, then the answer to the unknown word is marked as a likely-winning candidate
4. The system collects a number of sample of likely-winning candidate, and determine what the right word is likely to be
5. All this, while serving the double duty of stopping bots and spam!

Just brilliant.

[web] Lumosity, Gizmoz, Google Gears, MS Popfly, Maplets

Done playing:
- Gizmoz - Create widgets with animated avatar and voice from your own picture (or stock ones) - Need a good face shot of Zee or Gray and try this out for real.
- Google Maplets - Mini-apps that users can embed within Google Maps - Didn't see any killer app(let), yet.
- Stardoll - A whole community built around dressing paper dolls - Personally it was only fun for about five minutes but I guess I'm not the typical 5 to 15 year old girls that make up the 7.7 million members.
- Grand Central - Phone forwarding for life and unified messaging - Signed up. Tested. My cell rang, which was cool. Except that, I already have my cell number for life.
- Yak4Ever - Free international calls - Can't figure out how they plan to make money? The number that I got assigned to is a not in CA, so even if the international call is free I'd have to pay long distance from my land line. My international phone card at 4 cents a minute to Taiwan is cheaper.
- Platial - Markup your copy of Google Map however you like - It's always fun to look at the maps. But marking it up wasn't all that satisfying. Maybe the UI was too slow.
- ThisNext - Shopcast trying to turn social shopping - You can build a wish list, but no friend's list? Really, you cannot be "social" anything without a friends list.

To go back and play more later:
- Lumosity - Brain Fitness Game - Fun. The "bird watching" game demonstrates that I don't know jack about birds. The "raindrop math" game is fun like House of the Dead Typing Game.
- Google Gears - Browser extension that enables offline web applications
- Microsoft Popfly - Website and mashup builder using Silverlight
- Google Mashup Editor - Because everyone cool has a mashup editor - Signed up for beta
- Widgetbox - Another widget platform, but specifically targeting bloggers as widget consumer
- Fix8 - Create animated video from your movement and expression using webcam

Wednesday, May 30, 2007

[log] Dog Park

Where: Culver City Dog Park
When: 2007 May 26 and 27

- Mary the amazing gray poodle that begs to play fetch
- Jose, the free saftey, "why are we all running up and down? what the point of that ball?"
- Jose, the brave, "Er, Jose, you don't need to protect your friend from his owner"
- Jose, the social butterfly, "gotta sniff every dog's butt"
- Tofu is eating poop!

[outing] BBQ at 141 S Clark

Where: 141 S Clark
Who: Gray, Zee, Robert, Pierre, me, and Jose
When: Sunday 2007 May 27

- The empty complex
- Kick ass 2-pound tri-tip by Zee. Pour a can of coke in your marinade, he said
- And there was another 2-pound of tri-tip to go
- Running up and down the hallway with Jose
- Gray's next pet will so be Mr Snuggle
- Did Robert really charted out his new apartment in 3 different version of diagrams on Visio
- "If you jump from that window with a running start you can totally land in the pool"
- Is Robert still doing his laundry?
- We'll have a shot each time we move a big item

Tuesday, May 29, 2007

[code] Pretty Form CSS

Clean CSS for making a pretty form with Field Set, Legend, and Focus:

form.pretty-form {margin: 0; padding: 0;}
form.pretty-form fieldset {border: 1px solid #ddd; padding: 4px 8px 10px 8px}
form.pretty-form legend {color: #1f9dbd; font-weight: bold}
form.pretty-form label {display: block; font-weight: bold}
form.pretty-form label span {font-weight: normal; font-size: 10px}
form.pretty-form label span.required {color: #b00}
form.pretty-form label span.optional {color: gray}
form.pretty-form input.pretty-field {padding: 2px 5px; border: 1px solid #999}
form.pretty-form input.pretty-field:focus {background-color: #fffadb; border: 1px solid #cbb945; color: #776b1b}

Sunday, May 27, 2007

[code] Superscript and Subscript (That Look Good)

#bodyContent sup {
font-size: smaller;
vertical-align: baseline;
position: relative;
bottom: 0.33em;
#bodyContent sub {
font-size: smaller;
vertical-align: baseline;
position: relative;
bottom: -0.25em;

The source from Wikipedia talks about this as a way to fix the line-height issue on Safari and Opera, but on IE and Firefox produces a much softer and better looking superscript and subscript effect.

[log] Jose

Name: Jose
Breed: Mini Pinscher Chihuaha Mix
Born: Circa 2006 May
Temperament: Absolutely sweet and calm, and hopelessly addicted to snuggling.
Brownie points: Got so excited when he saw Pierre came home, that he accidently peed on him. Good dog!

Friday, May 25, 2007

[muse] The Blame Game

The last software release contained a bug, but it's only discovered days and weeks later and now the data is all messed up. What to do?

- Blame QA -- Why of course, isn't your job to test?
- Blame Development -- Why did you write buggy code?
- Blame Product Management -- Why weren't you clear in the requirements?
- Blame Project Management -- Why didn't you identify this dependency?
- Blame Business Owner -- Why didn't you specify that detail in your request?
- Blame End Users -- Why didn't you check the result when we released it? You would have realized the problem much earlier.

The reality is that no single person is ever to blame. The purpose of the different teams is for us to serve as safety net for each other. So everyone shares credit for a success, and everyone is responsible for a problem. Everyone can learn from a problem and do a little better next time.

So don't ever ask "Why didn't you catch this problem" -- It serves no purpose other than to be condescending -- Do you really think that anyone actually wants things to not work?

I am very lucky to be part of a team where we don't play the blame game. But I haven't always been this lucky. If your workplace is blame-game-infested, try this counter-measure -- Step up and take the blame. Yup. All of it. Afterall, you are partly to blame anyways, and taking all the blame may just end the game, so everyone can return to some productive and interesting work.

And that, is building good karma.

Thursday, May 24, 2007

[outing] A Funny Thing Happened on the Way to the Forum

Where: Lyrics Theater
Who: Corinne and I
When: Saturday 2007 May 19

- Killer Endive Salad w/Blue Cheese, Walnuts, Pear at L'Hermitage
- Clever, clever Sondheim
- Is that a really tall man or are those four midgets?
- A theatre owned by a mom and her sons

[outing] Appetizer and Wine

Where: The house
Who: Marie and Renzo, Ivy and friends, Jeremy, Paul, Shu, Alan, Corinne, Andrew, us
When: Sunday 2007 May 20

The fantastic menu, in no particular order
- Marie's cheese fondue with mustard and worchester's sauece
- Ivy's cheese and berries plate
- Ivy's friend's shortbread
- My mac and cheese with guyere and applewood bacon
- Pierre's teriyaki chicken
- Corinne's layered taco dip
- Corinne's flourless chocolate cake
- Corinne's homemade chips
- Jeremy's prociutto and melon
- Renzo's salami and cheese
- Paul's empandas
- Andrew's BBQ chicken pizza
- Andrew's chocolate bark
- Andrew's raspberry cheese tart
- Bottles of wine consumed: 7
- The first bottle of wine consumed: My peachy wine that Pierre made fun of. Ha.

[outing] Hermosa Beach Strand

Where: Alan's, Hennesey, Sangria
Who: Alan and Maureen, Adam, Vargo Sr and Jr, Mike and Shelby, Helton, Sheila, us
When: Friday 2007 May 18

- Wow you have big feet!
- Midnight pizza at Paizano's
- "Welcome to the city of Lomita!?"
- The 2 hour drive home from Hermosa, starting at 2am

Wednesday, May 16, 2007

[code] Apache handler, Perl, Ruby, CGI

Before I figured out about Apache cgi-script handler, I foolishly thought there was something magical about only Perl could be use as CGI, but couldn't figure out what was controlling that. So I wrote a perl script to call ruby because I stubbornly wanted to use Ruby instead.

Of course now I know that it wasn't perl at all; it was just that Bluehost had .pl defined to use cgi-handler by default, and all I had to do was use the .pl extension and it would have worked (but of course it's better to simply add .rb as another cgi-script extension)

Now I just have a goofy perl script. Well, it was fun.


## This works, but, the system function returns an extra 0 at the end
## $result = system("/home/username/public_html/MyRubyProgram.rb $ARGV[0]");

## This works perfectly. No extra cruff.
open(F, "/home/username/public_html/MyRubyProgram.rb $ARGV[0] |");
while (defined($result = )) {
print $result;


Sunday, May 13, 2007

[ruby] Hash of Hashes

One little bit that was not so obvious from the various Ruby docs - How to create Hash that has Hash as values.

This works:
$States =
$States["California"] =
$States["California"].store("Los Angeles",
$States["California"].fetch("Los Angeles").store("District 1", "90035")

This does not work (does not actually give you a syntax error. the child hash assignment would go through silently, but you can never get back the child hash)
$States =
$States["California"] =
$States["California"]["Los Angeles"] =
$States["California"]["Los Angeles"]["District 1"] = "90035"

[outing] Sleeping Beauty Wakes

What: Sleeping Beauty Wakes
Where: Kirk Douglas Theater, $40 + $4 handling fee, with Corinne

- Official Synoposis: After her centuries long snooze, Beauty wakes to find herself far from her fairy tale kingdom in a contemporary sleep-disorder center, where all the princes seem to have disappeared!
- The best musical I have ever seen (Disclaimer: I am sucker for fairy tale spoofs)
- Never imagined sign language so expressive and effective as choreography
- Amazing integration of instrumental artists and sets
- The lady who kicks-ass at singing, acting, and violin playing
- I laughed, I sniffled, I want to see it again

Wednesday, May 09, 2007

[log] LG LX150

The Nokia 6225 drowned itself. And for more than week Sprint kept telling that they cannot activate new phone because they were migrating my account to the new billing system with the Nextel merger. After multiple fruitless trips to Best Buy and Sprint store, and calls to 800-SPRINT1, finally, new phone is here. Log of observations:

Motorola MOTOKRZR: Absolutely sleek, no doubt. Love the matted-rubbery surface on the bottom of the phone. But, it's larger than is necessary, with a music player and camera that I will never use. And the Deal Breaker: Ridiculously slow menu action. You click menu, it takes a full second for the phone to react. So if you ended up double-clicking, that just makes the menu come up and immediately go away. No thanks. I'm not loading Internet Explorer. I'm loading the phone menu, for gods sake.

Samsung Upstage: Zee geek-factor approved. Definitely a looker. Deal Breaker: One, on the phone side, the LCD screen is only the height of your eyebrow. Two, it feels very uncomfortable to hold when making calls. But then again, maybe "making calls" just isn't a fashionable priority for cell phones anymore.

Sanyo Katana: Immediate Deal Breaker: Buttons look and feel absolutely cheap. I don't need to look cool but these buttons are below my (very low) vanity standard.

Motorola MOTORAZR: It's cool. It's popular. It comes in a cool red. But Deal Breaker: It's so damn big. I know it's hailed as a breakthrough in thin phone design and all. But I'm not so sure if it counts when you save on the thickness by adding on the girth.

Samsung A640: Sleek exterior, looks like a phone that Knight Rider would carry, if Knight Rider carried a cell phone. Though online reviews complain of worrisome reliability issues and weak vibrate. The buttons and interior feel cheap to me, but I convinced myself and pushed it above my vanity threshold. I was all ready to buy it until I saw in my browser window ...

LG LX150: Only offered online at the Sprint site. Saw it in the last minute while the customer service manager was talking to tele-sale about the mysterious $18 tax that they wanted to charge me for the $30 Samsung A640. And turns out , they only wanted $20 for LG LX150 (with $17 mystery government tax). I bought it sight unseen but hey, the CNET guy gave it a good review. Definitely not Zee geek-factor approved. No music player (good). No camera (excellent - means I can carry and use my phone when I need it the most, like waiting in line in federal buildings and looking for people at a concert). Buttons look and feel great. Superfast menu navigation. Internal antenna. Super light (3.2 oz). Tiny. The dark electric blue is easy on the eye and the flip phone is comfortable to hold.

A lovable, adorable piece of electronic. Now, if Sprint can just figure out how to actually activate my phone ... (or, keep those service credits coming)

Saturday, May 05, 2007

[play] Guitar Hero Analytics

What happens when a web analytics geek gets addicted to Guitar Hero: Career Score Maximization Analysis

"Revenue per Visit" translates perfectly to "Points per Note" in identifying optimization opportunities.

Now back to some real analysis that needs doing ...

Friday, May 04, 2007

[code] Regexp with exception for extension

Queston: What's the regexp that would match: "/foo", "/bar", etc.

But would not match "*.txt", "/foo/*.txt", "/foo/bar/*.txt", etc.

Answer: /\/(\w*|^.txt)$/

(Courtesy of Serge)

Tuesday, May 01, 2007

[log] Time Warners

- 10:45pm Pierre discovers that we've suddenly lost access to Sundance and bunch of HD channels. Pierre calls immediately.
- 11:20pm After a lot of "please hold", customer service rep #1 finally figured that they have changed the plans on us and we now need to pay extra to access the new "tier". After agreeing to adding $10 more to our monthly fee, they promised they fixed the issue.
- 11:25pm Pierre discovers that we've lost access to Showtime. Pierre calls again.
- 12:00pm Customer service rep #2 says they restored Showtime to our account.
- 12:05pm Pierre discovers that we've now lost access to HBO channel. Pierre nearly goes postal.
- 1:00am Customer service rep #3 is a 9-year veteran. After nearly an hour, she restored all our channels, and supposedly took on the extra $10 that customer rep #1 said we had to pay.

And I still have no idea how much exactly Time Warner plans to charge us the next month, because the online account management system only shows past bills. I suppose life is more fun with surprises.

Monday, April 30, 2007

[tool] JS-Kit

Absolutely slick one-line Javascript comment, rating, and poll module. It took 5 seconds flat to install a comment module on my twiki. Just add
<script src=""></script>


Sunday, April 29, 2007

[buy] Guitar Hero II

Where: Costco Online
What: Guitar Hero II for Xbox 360, $75

- The evil achievements system
Damage so far: 31 achievements - 450 points
- 30 points: 300K Club - Get 300,000 points in a song 04.29. X-Stream. Hard.
- 30 points: Hard Tour Champ - Beat the Hard tour 04.28
- 30 points: Medium Tour Champ - Beat the Medium tour 04.27
- 30 points: Most Likely to Succeed - Earn five stars on all songs in the Medium tour 04.28
- 30 points: Sandbox Hero - Earn five stars on all songs in the Easy tour 04.29
- 30 points: Perfectionist - Get 100% notes hit on a song 04.19
- 30 points: Eddie Van Halen - Get a 500-note streak 04.26 567-note. Heart shaped box. Medium.
- 10 points: Scenester - Beat all the unlock songs 05.06. On Hard.
- 10 points: Dimebag Darrell - Get a 100-note streak
- 10 points: EasyTour Champ - Beat the Easy tour 04.29
- 10 points: 100K Club - Get 100,000 points in a song
- 10 points: 200K Club - Get 200,000 points in a song
- 10 points: Roadie - Unlock Rat Cellar
- 10 points: New Kid - Unlock Blackout Bar
- 10 points: Young Gun - Unlock RedOctane Club
- 10 points: Axe Grinder - Unlock Rock City Theater
- 10 points: Shredder - Unlock Vans Warp Tour
- 10 points: Rock Star - Unlock Harmonix Arena
- 10 points: Guitar Hero - Unlock Stonehenge 04.19
- 10 points: Big Spender - Spend $10,000 at the store
- 10 points: Life of the Party - Buy all characters 04.28
- 10 points: Record Collector - Buy all songs
- 10 points: Fashion Plate - Buy all outfits 04.26
- 10 points: Scoremonger - Get an 8x multiplier
- 10 points: Hendrix - Beat a song with lefty flip on
- 10 points: Saturday Morning - Beat Trogdor and Thunder Horse 04.19
- 10 points: Rock Snob - Refuse to play an encore
- 10 points: Long Road Ahead - Fail a song on Easy
- 10 points: Extra Credit - View the credits
- 10 points: Rock School Grad - Complete all tutorials
- 10 points: Teacher's Pet - Practice three different songs

- The even more evil real-time xbox live leaderboards system

[play] Unsecured security cameras

Came across this article on unsecured security cameras and tried it out.

1. Go to Google or Yahoo, and search for inurl:ViewerFrame?Mode=
2. Click on the search result (FireFox 1.5 works just fine)

Voila. Yet another way to relax for hours on the internet: A bird table in UK, a balcony in Japan ...

Saturday, April 28, 2007

[log] Guitar Hero II achievement tips

Tips from discussion boards on getting these achievements:

300K - Freebird - Medium (4.29 - Got this on X-Stream. Hard)
400K - X-Stream - Hard
500K - Freebird/X-Stream - Expert
1000 notes - Freebird - Medium, or, X-stream - Hard

[outing] Engineering Happy Hour

Where: Yankee Doodles, Santa Monica
Who: zzAll Engineering
When: Thursday, 2007 April 5

- Mike tackling Pierre on Broadway
- Where did you get that bottle of Ketchup!
- Looking for coffee at midnight

[outing] St Patty's in Santa Monica

- Where: The Victorian and World Cafe
- Who: Alan, Maureen, Gray, Zee, Robert, Rita, Jessie, us
- When: Saturday, 2007 March 17

- Sweet potato fries at The Victorian
- Gray paying up his bet with three back-to-back Irish Car Bomb
- Gray, Zee, Robert, and Rita all in matchin green t-shirt. Aww.
- "This place doesn't have any TVs?!"
- "Hey the manicure place has a big TV"
- Pierre fast asleep in World Cafe
- People posing with Pierre, who was fast asleep in World Cafe
- Go Bruins!
- Maureen and I sharing the suspect hot dog
- Climbing over the fence to fetch a cab

(Thanks to Gray for reminding me to post this)

[outing] Drink Fest in WeHo

Where: Barney's and Red Rocks
Who: Gray, Zee, Scott, Adam, Jill, Mike, Shelbey, Jeff, Bill, Josh, Jessie, Shiela, Melissa, Ron, Maria, Fiona, Natasha, Natasha's boyfriend, Steve, us
When: Friday, 2007 April 27

- "Natasha's place is walking distance" from Barney's" -- right. maybe for Forest Gump.
- Pierre's stellar performance at air hockey
- De--fense! De--fense!
- Posing with Melissa's behind
- Four-dollar Steve (and Pierre finally remembering that it should have been four-dollar Cody)
- Davis: "You are the other Melissa Stein?!"
- Killer home fries and corned beef hash
- "How much @#$% further do we have to walk?"

Thursday, April 26, 2007

[log] I'm hot 'cause I'm fly

Pierre sent me this article today:,harvilla,76021,22.html

I forwarded to Paul who responded with:

I have a few concerns with Mims deductive argument "I'm hot 'cause I'm fly/You ain't 'cause you not."

he’s saying that “I’m fly” implies “I’m hot”. But then ads that “You not [fly]” implies “You ain’t [hot]” as a flawed deduction – common mistake for rappers. 1st order logic would suggest that the correct following deduction would be “You ain’t [hot]” implies “You not [fly]”. This would require Mims to change his lyrics to make them consistent with basic logic “I’m hot ‘cause I’m fly/You not ‘cause you ain’t”.

I sent Paul's comment to Pierre, who then came back with:

Well, if Mims led with the statement that “all who are hot are also fly”, then all Mims would have to say is “I’m hot and you’re not.” That would then imply that Mims is both hot (and, by default, fly) and the recipient of his statement was neither hot nor fly.

How I love nerd jokes!

Wednesday, April 25, 2007

[log] Freebird

... is killing me. Full extend of my mysery.

And the full Guitar Hero Note Charts. Another example of astounding work that the rest of us gets to enjoy for free (how did they ever charted out all those subtly off-beat notes? @#$%!)

[code] Keeping mininum table column width

Learned this trick from Dana today on how to have a table column stretch wider when one expands the browser, and yet maintain a minimum width (say, 500px) when shrinking the browser.

- Make the column stretchy, then stick this in the column:
<img class="MinWidthPix" src="/images/pix.gif">

- And stick this in the stylesheet
.MinWidthPix {width:500px;height:1px;}

- pix.gif is a 1x1 transparent gif

Dana also mentioned that, instead of a 1x1 pix, a HR tag could also work, but that the HR tag is prone to result in inconsistencies in different browsers.

Monday, April 23, 2007

[code] Make internal links scroll smoothly

Wonderfully instructive article on this Javascript trick:

And just in case that article should get wiped out from sitepoint. My backup.

Sunday, April 22, 2007

[outing] Audition! The Musical

Where: Santa Monica Playhouse
Who: Corinne and I

- Three ladies, nine characters, amazing skills and great performance
- Wonderfully historical building
- And a light complimentary dinner!

[outing] Cafe Laurent (Culver City, CA)

Where: Cafe Laurent
Who: Corinne, Andrew, Deb, Bill, us
When: Sunday 2007 Apr 22, 11:30am

- Gorgeous patio area with live music on Sunday
- My order: Warm Chocolate Bread Pudding with whip cream and ice cream (not the most cardiovascular friendly choice, but, it came with some fruit)
- Pierre's order: Chocolate waffle, bacon, sausage, scrambled eggs, potato au gratin, fruit
- Corinne's order: Frittata with apple chicken sausage served in a croissant, side salad, potato au gratin
- Andrew and Deb: Les Oeufs Bénédicte
- Bill: Omelete La Complète (but without the meat) - brie, mushrooms, avocado
- Was it 11 or 11:30?

Cafe Laurent
4243 Overland Ave
(Overland, one block south of Culver blvd)
Culver City, CA 9023
310. 558. 8622

[log] Coghead

Spent some relaxing time on Coghead, exploring some ideas and needs for our SEO projects. It totally reminds me of the earlier days of TenFold's Universal Application. I have absolutely no doubt that Coghead makes for a beautiful demo, where one can create a database app in minutes. But creating a complex, mission-critical business app? I couldn't find at least these features:

- Adding new row to a child table from a "parent form" (TenFold calls it "AutoAdd")
- Multi column "drop down" that populates a foreign key or data in mulitple fields (TenFold calls it "SmartPicks")
- Auto Generated Incrementing ID -- They must have this? I just couldn't find it.
- Joining to fields that are multiple tables (or "collection" in Coghead speak) away
- Scheduled Jobs
- Testing Tools

Complex apps just make for complex problems.

But, I do love the idea of the web-hosted app, with built-in user authentication and access control. And using Flash means I can edit the app from anywhere. It's impressive what one can do in Flash these days.

Disclaimer: Of course, I didn't read the user manual. I only read manuals of video games ...

Thursday, April 19, 2007

[tool] SQL Assistant

Just a couple of days after I posted the entry about SQL Prompt, Google AdSense shows me a ad for SQL Assistant -- Another tool that code table and column name completion, but it's free.

God bless the technology that is contextual keyword targeted text ads.

SQL Assistant v1.0 uses a slightly smaller memory footprint (7mb vs 12mb), so far it is feeling faster to use all around. Though it does not appear to have the "only run when I ask" mode. So we will see. I do always appreciate great free software.

And the all important "how to turn off auto-casing":
- Right click on SQL Assitant from the System Tray, and click "Options ..."
- Go to "SQL Assistant" tab, click on the text "SQL Server" to select it
- (Here come the totally not obvious step) Click on the blank cell next to "Keywords ..."
- A whole lot of stuff now appears. Click on text "Uppercase", to the right of "Convert keywords to", to enable a dropdown menu
- Select "None"

2007 Apr 19 Update -- SQL Assistant is the winner over SQL Prompt. I've uninstalled SQL Prompt.

Wednesday, April 18, 2007

[trip] Cabo San Lucas

Accomodation: ME by Melia Cabo
When: Sun April 15 - Wed April 18
Who: Daryl, Natalie, Raheem, Eliza, us

- Chaise lounges at the gorgeous lobby
- Working on laptop in the shaded pool side cabana
- iPod docking station
- Strawberry Daq + Pina Colada = Miami Vice
- Surviving rounds of hearts (and shots) and losing the first and only hand
- Tortilla soup ranking:
  1. Las Quesadilla (great tomato-based soup base with fresh cilatro)
  2. Stop Light (tasty melty cheese in smokey tomato-based soup)
  3. Edith's (good soup base but otherwise can't remember much)
  4. The Sand Bar (not bad but not memorable either)
- $6 Voss Water at Edith's
- Fire pit at The Sand Bar
- Getting Daryl up for dinner -- "Ahhh! Close your eyes!"
- El Squid Roe, Giggling Marlin, and great cover band at Cabo Wabo

[muse] Policemen and Paramedics

Can't remember who told me this, but it's always been one of my favorites:

At every scene of crisis, there are policemen and paramedics.

Are you a policeman or a paramedic, at your daily "scenes of crisis" at work and at home?

Tuesday, April 17, 2007

[eats] Sushi Central (Los Angeles, CA)

- Excellent Ono (Escobar) with Phillip's special sauce
- Excellent Spicy tuna handroll
- Excellent Beef short ribs
- And really, everything is excellent. But I will always go for the three above.
- (actually, maybe except for spicy shrimp handroll, which was the only thing that we've had that we were not thrilled with)
- Laid back casual family atmosphere with great sushi. Convenient in-lot parking and few minutes drive. Bring your own booze (or buy from 7-11 next door)
- Can't really ask for more.

Sushi Central
3500 Overland Ave. #100
(Corner of Overland and Palms)
Los Angeles, CA 90034

Saturday, April 14, 2007

[code] Long Spaces

In writing the last post, I just learned about some special characters for long spaces. Now I can be a little smarter than writing multiple &nbsp's.

  * &nbsp;
  * &ensp;
  * &emsp;

- * regular hyphen
– * &ndash;
— * &mdash;

[tool] SQLPrompt

Ben tipped me on this nice utility: SQLPrompt

However, upon install, it wants to practically write my sql code for me, which was annoying because it slowed me down so much. But, with these tweaks in place ...

- From the SQLPrompt menu of SQL Query Analyzer, select Options
- In "Availability" tab
 - set "Candidate List" to "Manual"
 - set "Schema Panel" to "Don't show"
- In "Candidates" tab
 - uncheck "Include variables in the candidate list"
- In "Style" tab
 - uncheck "Surround with brackets []"
 - uncheck "Insert parentheses for built-in functions and data types"
 - set "Reserved keywords" to "Leave as is"
 - set "Build-in functions" to "Leave as is"
 - set "Built-in data types" to "Leave as is"
- In "Auto Insert" tab
 - uncheck "Enable TAB to expand columns after SELECT *"
- In "Aliases" tab
 - set "Alias Assignment" to "off"

Now, it only comes up when I want to -- ctrl-space brings up the box to help me complete long table names and long column names. Love it!

[log] Drew's Script-o-Rama

Never ceases to amaze me what just one person can accomplish (or is he just joking when he says "This script is a transcript that was painstakingly transcribed using the screenplay and/or viewings"?) Either way I am grateful.

Monday, April 09, 2007

[muse] Muscle Memory

I was practicing Bach's Invention 13 last night, and noticed this:

I've always learned a new piece of music by playing through it for a while first. So that's what I had done with this piece. I could play through it, but with many pauses and restarts.

Once I'm ok at the play-through, I practice to get rid of the pauses and restarts. That's what I was doing last night. I suddenly realized, that all I was doing, was trying to reverse all the wrong muscle memories that I had developed in the "playing through" phase.

And it was really hard.

It then occured to me, how easily and unknowingly it is to develop these muscle memories in all parts of our lives -- be it finger positions on a piano, to how we organize mail, how we split the bills at dinner, how we laugh at the movies, how we deal with a bad day at work ...

Much of what we called "personality" and "character", is the collective muscle memories that we had accumulated and settled into as we age.

Now it really makes sense to me, why most people can't change. I can barely fix a couple of fingering mistakes in one evening.

Beware of muscle memories. They creep in.

Sunday, April 01, 2007

[outing] Pippin

Where: Morgan-Wixson Theatre (Santa Monica)
Who: Corinne and I
Tickets: $11.50 Row B. Sunday 2007 April 1 2pm

- A prince looking for true meaning and fulfillment in life ...
- The most excellent morality tale, that is also incredibly clever and funny
- Fantastic choreography
- Beth and Henri were great!
- Love, love, loved it.

[story] The Sweetheart Tree

I made up this story to go with the song The Sweetheart Tree. It's a simple love song, with a beautifully sad melody.

Long ago there were two warring countries -- Han and Chin. They had been at war with each other for so long, that no one really even remembered why they hate each other so much.

One day the Prince of Han went hunting in the forest. He shot an arrow at a bird that flew by, and missed. But as the arrow came down, he heard a loud cry:

"Ah! Oh my god!"

The Prince followed the voice deeper into the forest, and came upon the most beautiful lady, sitting under a tree; and his arrow, planted on the tree trunk, just above her head.

The lady was very frightened and very angry. But the Prince apologized profusely, and after a good number of "sorry's", the lady finally had a smile on her face again. The Prince introduced himself, and to his great surprise, she turned out to be the Princess of Chin.

They spent the rest of that day together and had a great time. They set a time to meet again, and soon they were meeting in the forest every week. They were madly in love, but they also knew that they could never be together -- Their families would never allow it.

But the war between the countries went on, so they finally decided that their only choice was to run away, even though they would be leaving their beloved families and countries behind. They set a date to meet by the tree.

When that fateful day came, the Princess left a note on her bed, and headed for the forest to wait by the tree. The palace guards found the note in no time, and reported the Princess missing to the King. The King did not believe the note: "There is no way that my princess would leave us -- Those Han bastards must have abducted her! Get her back!"

The Chin army quickly assembled and took off. As they were charging towards the Han territory, they saw the Prince flying towards them on horseback. "Look! It's the Prince! Get him!"

They shot a hundred arrows at him. The Prince was very, very hurt, but he wouldn't stop. Then someone noticed that the Prince really wasn't heading for the Chin army, but that he was heading for the forest. "Look! He's trying to get away!"

So they shot a hundred more arrows. And this time, they stopped the Prince.

As for the Princess? She never stopped waiting. She never left the tree.
They say there’s a tree in the forest
A tree that will give you a sign
Come along with me to the sweetheart tree
Come and carve your name next to mine.

They say if you kiss the right sweetheart
The one you’ve been waiting for
Big blossoms of white will burst into sight
And your love will be true evermore.

Tuesday, March 27, 2007

[tool] Web-based Diagramming Tool

Vargo tipped me on this fabulous web-based diagramming tool today. Excellent for those of us who don't want to pay for Visio.

[story] Life Is Just a Bowl of Cherries

Story I made up today, to go with the song Life Is Just a Bowl of Cherries:

My grandfather worked in a coal mine. And like everyone who worked in a coal mine, he dreamed of becoming filthy rich. But of course, no one was rich. Everyone was just, well, filthy. But since my grandfather had nothing to lose, he lived a simple, carefree life.

One day he was working in a corner of the mine by himself, pulling overtime to make a few extra bucks. Suddenly, something sparkled in the dark. He leaned to look closer, and there it was -- a big handful of perfect pieces of diamonds!

His hearts was pounding and his palms were sweating. But as calmly as he could, he picked up the diamonds, and put them in his pockets.

For the next day and next night, my grandfather couldn't eat, couldn't sleep, couldn't talk to his friends, and couldn't even have a beer with them anymore. So he left. For the next few months, he lived in the mountains. Now he was not only filthy, he was also lonely and scared -- paranoid that people would discover his diamonds and take them away.

One afternoon he was taking a nap by the river, clutching tightly to his little sack of treasure as usual. Suddenly he heard a woman scream, "Help! I can't swim! Help!"

He jumped up, and without thinking, dove into the water. In the most heroic fashion, he saved the lady.

As they were making their way back to the shore, a beautiful eagle appeared out of nowhere. They looked up to admire the bird. And suddenly, it swooped down, picked up the sack of diamonds, and just as quickly as it came, it was gone.

My grandfather's jaw just dropped straight through the floor. And the lady was concerned, "Is everything okay? I hope you didn't lose something important?"

Now you would think that at this point, my grandfather would be desperate, angry, bitter ... He just saved a life! And he's rewarded by losing the biggest jackpot of his life? But strangely, he wasn't desperate, angry, or bitter. Instead, he felt a great sense of relief, as if a huge burden just disappeared.

He turned to the lady, and with the most gorgeous smile he said, "Oh, it was just some rocks. I am glad you are okay."

The lady was so grateful, "Thank you so much for saving me. My father owns the coal mine up the river. Would you like to take me back? I am sure he would want to thank you in person."

That lady, ended up as my grandmother.

Life has a funny way of working itself out, doesn't it?
Life is just a bowl of cherries
Don't take it serious,
Life's too mysterious
You work, you save, you worry so
But you can't take your dough
When you go, go, go

So keep repeating "It's the berries."
The strongest oak must fall
The sweet things in life
To you were just loaned
So how can you lose
What you've never owned

Life is just a bowl of cherries
So live and laugh at it all!