Saturday, December 06, 2008

[log] How to fix Google Chrome Ajax problem after running CCleaner

I ran CCleaner this morning, and afterwards, all Ajax functionality stopped working in Chrome. This means no gmail, no facebook, and a lot of work stuff.

After some panic time, here's how I fixed it:

1. Shut down Chrome

2. Go to: C:\Documents and Settings\[YourUserName]\Local Settings\Application Data\Google\Chrome\User Data\Default

3. Delete the "Cache" folder

4. Restart Chrome

That's it.

Sunday, November 09, 2008

[trip] Panama

- When: Oct 23 to Oct 27
- Hotel El Panama
- ========
- Pulling an all-nighter for the 6:30am flight
- 2 Admirals club lounges. 6 Bloody Mary's. $0.
- Yes can I have another glass of the white?
- Wake up! The plane is empty!
- OMG. I left my passport on the plane.
- Wake up! I got my passport!
- Jumping into the pool at 9:30pm.
- 4am chicken soup run at the La Flamenco
- ========
- Hurry! They are taking away all the breakfast stuff!
- The Panama Canal observatory transforms from ghost-town to crowd-town
- Taking the time lapse video
- Taking a million photos of the gorgeous pool at sunset
- Pierre's wise choice of Cerviche - Perfect to eat with a little tropical rain
- Dinner at Manolo Caracol
- $35 for the bottle but $5 for a glass? We'll take a two glasses.
- White rice can be served as a main dish -- when it tastes that coconuty good and fluffy
- Tasty sauteed Octopus
- But they definitely needed a class on how to make sushi
- Fusion Omekase for $25 per person? Can we come back tomorrow?
- ========
- $3 Black Jack table
- $3.5 Cocktails at the Swim up bar (and 2-for-1 happy hour)
- Strange fascination with Don Lee
- For real? Free Mojitos as the grocery store? Thank you Bacardi for making the day instantly better.
- Dinner at Al Tambor de la Alegria
- Massive rain storm
- There may be more performers than diners?
- Meeting Suzanne and Anke from Amsterdam
- $15 cover on Calle Uruguay -- No thanks -- We'll just have a $2 beer out here
- ========
- Ping pong anyone?
- $75 for xbox games. Whoa.
- Pierre learns to never bet on SC. Ever. Again.
- Sunday morning kiddie chess tournament in the mall
- Dinner at La Rioja
- Really one-on-one service. Calle Uruguay = Ghost town.
- And they had the Philly vs Devil Rays game on. bonus
- Great Tapas sampler and big jug of sangria
- ========
- Roooowoorrr!

Tuesday, October 21, 2008

[recipe] Jade Celery

Finally figured out how to make Jade Celery that taste almost as good as Mei Long Villages'.

[ At the grocery store ]
- Celery (no need for celery heart. just the cheap kind will do)

[ Direction ]
- With a vegetable peeler, peel celery to remove the outer stringy layer (quite annoying work but absolutely critical step)
- Chop into 2 inch pieces
- Boil for 2 minutes (gives the celery a gorgeous green)
- Rinse in cold water until completely cooled (makes them crispy)
- Mix with salt and sesame oil to taste

[ Stats ]
- Prep time: 15 min
- Cook time: 5 min
- Clean up time: 3 min

Tuesday, October 14, 2008

[recipe] Beef with Lime and Honey

Thought of another way to combine my favorite ingredients into an artery-friendly, low-carb, and fast-to-make one-dish meal.

[ At the Grocery Store ]
- Beef, 0.85 pounds pre-cut into strips for stir fry ($5)
- Cilantro, one bunch ($1)
- Cherry tomatoes, one bag, about 12 oz ($4)
- Mushrooms, one box or just a handful ($3)
- Onion, one small size ($0.25)
- Lime, one ($0.25)
- ----------
- Honey (or sugar)
- Cumin

[ Direction ]
- Marinade beef with:
   - Half cup chopped cilantro
   - Half an onion, thinly sliced and separated

   - Generous salt and pepper
   - Generous honey (~2 tablespoons)
   - Juice of half a lime
   - Cumin (~1 teaspoon)
   - Drizzle of olive oil
   - Hot pepper flakes to taste

- Halves about 1/3 of the bag of tomatoes. Salt and pepper to taste.
- Slice up a handful of mushrooms

- Oil on high heat
- Pour everything in: Beef + Cilantro + Onion + Tomatoes + Mushrooms
- Stir-fry for just a few minutes
- While stir-frying, chop up the rest of the cilantro
- Fold in all chopped cilantro at the last minute and then serve

[ Stats ]
- Serves: 2
- Prep time: 15 min
- Marinade time: Flexible
- Cook time: 5 min
- Cleaning time: 5 min

Sunday, October 12, 2008

[recipe] Crab Stuffed Mushrooms

Usually make crab hand-roll with similar recipe, but thought this way would make good appetizers -- bite-sized and don't get soggy

[ At the Grocery Store ]
- One can of crab meat
- One box of mushrooms sized "for stuffing"
- One bunch of Italian parsley or cilantro, whichever you prefer
- One small lemon
- Light Mayonnaise

[ Direction ]
- Pre-heat oven to 400F
- Make an 8"x8" aluminum foil baking dish

- Clean (rub surface with damp towel), de-stem, and place mushrooms in baking dish. Stem side up (so they look like little bowls)
- Coat with olive oil. Salt and pepper to taste.
- Bake 15 min

- Meanwhile, combine crab, mayonnaise, juice of half lemon, chopped parsley, hot sauce to taste in a bowl
- Mix with spoon until smooth
- Cover and put back in fridge

- To serve: Transfer mushrooms onto place (pour out any mushroom juice)
- Spoon crab over mushrooms. About one generous tablespoon can fit per mushroom.

[ Stats ]
- Prep Time: 10 min
- Cook Time: 15 min
- Cleanup Time: 3 min

[recipe] Baked Salmon with Cherry Tomatoes

Took a recipe and made some simplifications. Healthy and easy.

[ At the Grocery Store ]
1. Two pieces of 6-oz portioned skinless salmon from the seafood counter ($8)
2. A box/bag 12-oz of cherry tomatoes ($4)
3. A small onion ($1)
4. A bunch of Italian parsley ($1)
5. A small lemon ($1)

[ Direction ]
1. Pre-heat oven to 400F
2. Make a 10" x 10" baking dish out of aluminum foil (fold the sides and corners to keep the juices in), then set it on a baking pan (to transport the dish easily without having to do dishes afterwards)

3. Halve all the cherry tomatoes and spread in baking dish
4. Halve the onion, then very thinly slice the halves. Break up the onion slices by hand and spead in baking dish
5. Take the parsley bunch and thinly chop until you have about 1/2 cup worth. Spead in baking dish.
6. Coat with olive oil, salt and pepper to taste, and mix the ingredients.
7. Bake for 5 min

8. Rinse salmon and pat dry with paper towel
9. Make space in the baking dish and lay in the salmon
10. Add juice of half a lemon over salmon
11. Salt and pepper over salmon
12. Bake for 10 min

13. Cut 6 very thin slices from the other lemon half
14. Chop about another 1/4 worth of parsley

15. To serve, use a spatula to transfer salmon to plates
16. transfer the tomato, onion, parsley and place on top of salmon. Do this slowly to make the tomatoes stay on the salmon
17. Pour the juice from baking dish over the plates
18. Garnish with lemon slices and parsley
19. Add another little squeeze of lemon

[ Stats ]
- Serves: 2
- Ingredient cost: $15
- Prep time: 10 min
- Bake time: 15 min
- Clean up time: 3 min
- Calorie: 275 per serving

Tuesday, September 30, 2008

[trip] Mike and Shelbey's Wedding

When: 2008.09.25 - 2008.09.28
Where: Seattle
Accomodation: The Pan Pacific Hotel

- You won't give us the car at our price because we are 20 min early? Fine. We'll wait.
- Whoa! The speedometer just shot past 200 miles and went full circle! OK. I guess this car is dead (or possessed)
- Would we like that red H3 instead? Sure! Not ironic at all driving a giant humvee in a green city like Seattle
- Your fitness center is open 24 hours and has a 10-person hot tub. Seriously?
- At Maxmillian at Pike's Market -- Yes, we'll wait here until it's happy hour. Then we will order all 10 items off your happy hour food menu plus a bucket of beer. Thank you very much.
- The Space Needle - And the foggy / damp view from the Space Needle
- Savor Seattle Tour's Pike Market food tour -- donuts, salmon, cherry chocolate, fresh cheese, clam chowder, coconut cream pie ... follow the pink umbrella!
- Oh, and, a lot more clam chowder the day after.
- "How do you solve a problem like Mike Davis?"
- Um. I don't think these beer nuts are meant to substitute a meal ... but okay, I'll go ask for another cup full.
- Let's check out Game Works!
- Finding a great meshed, padded, seat-belt friendly harness for Jose
- Finally! We found Uwajimaya!
- We got time before the wedding starts! Let's see if we can find a cocktail! (and no, they were all closed)
- Beautiful wedding at the most intimate chapel at an catholic school
- Yes, I went back for multiple servings of that damn good beef and salad with candied walnut
- Great wedding music that went through the decades
- Hanging out with the bride and groom in the hot tub after the reception, at 1am
- Hanging out with the bride and groom's family at the hotel bar, at 2am

Sunday, September 28, 2008

[outing] Angelini Osteria

Who: Christine, Pierre, me
Where: Angelini Osteria

- Arugula salad with sauteed cherry tomatoes and octupus
- Waygu beef cheek on a bed of polenta
- Happy birthday Christine - and thanks for the cup of Mascarpone!
- Fantastic dessert wine - 2004 Acinatico, Recioto della Valpolicella Region, Stefano Accordini Winery
- Whoa! look at your stunning hair christine!

Sunday, September 14, 2008

[muse] Usefulness vs Usability

- First, make sure the product is useful
- Then, think about making the product usable

Friday, September 12, 2008

[sql] How to find invalid email address in SQL Server

Very awkward without regular expression. So not perfect. But, catches enough.
select email   
  from loginuser where  
     patindex ('%[ &'',":;!+=\/()<>]%', email) > 0  -- Invalid characters
  or patindex ('[@.-_]%', email) > 0        -- Valid but cannot be starting character
  or patindex ('%[@.-_]', email) > 0        -- Valid but cannot be ending character
  or email not like '%@%.%'                 -- Must contain at least one @ and one .
  or email like '%..%'                      -- Cannot have two periods in a row
  or email like '%@%@%'                     -- Cannot have two @ anywhere
  or email like '%.@%' or email like '%@.%' -- Cannot have @ and . next to each other
  or email like '' or email like '' -- Camaroon or Colombia? Unlikely. Probably typos  
  or email like '%.or' or email like '' -- Missing last letter  

Monday, September 01, 2008

[log] How to install Wordpress on IIS 6 Windows Home Server

The following is very specific to IIS 6.0 Windows Home Server. It is a continuation of this post.

Critical assumptions:

- You have set up a domain with (like,, when you set up your home server machine
- You have done ALL the steps to install PHP and MySQL

And now, for Wordpress:

1. Download and unpack
- Download from: (
- Create the directory c:\inetpub\wwwroot\blog (This would allow your blog to be accessed at
- Copy\wordpress\* into c:\inetpub\wwwroot\blog (Navigate into the zip file in an explorer window, and double click on the file)

2. Create database and user
- Open MySQL client (Start Menu -> Programs -> MySQL -> MySQL Command Line Client)
- Enter your admin user password (hopefully you wrote this down)
- Type in the following commands (the expected outcome of each command should look like "Query OK, x row affected")

> create user wordpressusr identified by 'wordpresspwd';
> create database wordpress;
> grant all privileges on wordpress.* to wordpressusr;
> flush privileges;
> exit;

3. Setup Wordpress Config file
- Open an explorer window and navigate to c:\inetpub\wwwroot\blo
- Rename wp-config-sample.php file to wp-config.php
- Open wp-config.php in a text editor (Use notepad if there's nothing else)
- Find the three lines that look like below and changed them to match:

define('DB_NAME', 'wordpress'); // The name of the database
define('DB_USER', 'wordpressusr'); // Your MySQL username
define('DB_PASSWORD', 'wordpresspwd'); // ...and password

4. Go through Wordpress Install
- In a web browser, go to http://localhost/blog/wp-admin/install.php
- Follow the self-explanatory instruction. It will walk you through creating an administrator account.

5. Change blog address
(This step is missing in all instructions that I've seen)
- In a web browser, go to http://localhost/blog
- Find the login link and login as administrator.
- Click on "settings" (near right hand side of screen)
- For "Blog Address" and "Wordpress Address", change from "localhost" to ""

6. Change wp-content write permission
(This step is also missing in all instructions that I've seen)
- In an explorer window, navigate to c:\inetpub\wwwroot\blog\
- Right-click on wp-content
- Click on "Properties"
- Click on "Security" tab
- In the top-half of the window, click on "Windows/Users" in the list of users
- Then in the bottom-half of the window, click on checkbox for "modify" and "write"
- (If you don't do this, you won't be able to upload images and other content)

7. Now you are finally done
- In a web browser, go to
- (If you don't see anything, make sure you had set up index.php as default content. See step 4 of how to install php)
- Login. Spend the rest of the day downloading and figuring out which theme you want to use (no one can resist spending hours fussing with themes)
- Oh yes, and blog.

[log] How to install PHP 5 and MySQL 6 on IIS 6 Windows Home Server

Installed PHP and MySQL on Windows Home Server with IIS6 this weekend, in order to install Wordpress and Gallery. As expected, it was all about figuring out confusing and non-existant installation instruction. Recap of how I should do it (if there is a next time).

[ PHP 5 ]

1. Download and run installer
- Go to PHP download page:
- Download the Installer (php-x.x.x-win32-installer.msi)
- Download and Zip pakcage (
- (Why two packages? The installer saves time by automatically settig a bunch of IIS settings. But the zip file has all the DLLs that we need to add in)
- Double click to run the installer. Use all the default settings it suggests. Choose ISAPI, when it asks about it.

2. Copy DLLs
- In an explorer window, navigate to c:\program files\php\ext (The installer would have created this folder if you used the default setting)
- In another explorer window, navigate into the zip package (
- In yet another explorer window, navigate into c:\windows\system32
- Copy\libmysql.dll into c:\windows\system32
- Copy\ext\*.* into c:\program files\php\ext
- (Probably won't use all the extensions, but it's much easier to have them in there to just activate in php.ini file in the future)

3. Setup php.ini
- Open c:\program files\php\php.ini in a text editor
- Find the right section by searching for "extension="
- Add these lines:
- extension=php_mysql.dll
- extension=php_gd.dll
- extension=php_gettext.dll
- (mysql is for both wordpress and gallery. gd and gettext are for gallery only)
- As a last check, search for "extension_dir" and make sure it's set to c:\program files\php\ext. If it isn't, fix it.

4. Add index.php as a default content file
(This step is critical for all the PHP apps like wordpress and gallery)
- Start Menu -> Programs -> Administrative Tools -> Internet Information Services
- Expand the first level (which is something about "local computer")
- Then expand the "Web Sites" folder, now you should see "Default Web Site"
- Right-click on "Default Web Site"
- Click on the "Documents" tab
- Click "Add" button and type in "index.php"
- Click "Apply" and then close all the windows

5. Reboot the machine
- Tried just with IISReset, but IIS could not find php.ini in the right directory. So I rebooted the machine and that worked.

[ MySQL 6]

1. Go to
2. Download the "Essential", which has the file name that looks like mysql-essential-x.x.x-win32.msi
3. Double click to run the installer. Use all default settings.
4. Reminder -- Write down the admin password. You'll need to log in as admin later to create databases and users to install things like wordpress.

PHP and MySQL by themsevles are not all that interesting. Make them useful by installing some applications. Here's how to install Wordpress on IIS 6 Windows Home Server.

Sunday, August 31, 2008

[outing] Hermosa Beach Labor Day Fair

When: Sunday 2008 Aug 31st
Who: Alan, Maureen, Treveor, Marco and family, Steve, Us

- Island's Sippy Cups are absolutely brilliant
- Pyrat Rum. Tastey.
- "How much brandy did you put into the sangria?"
- 12" sweet italian, of course
- Machine gun now a kids fair game
- "Maaaaarcoooo"
- Straw and paper darts
- Halo 3 showdown between Pierre and Trevor
- Maureen's killer shoes collection
- "Stop cheating and flying around up there. Come down and fight!"

Saturday, August 23, 2008

[muse] What we don't understand

Just because we don't understand something, doesn't it make untrue.

But just because we don't understand something, doesn't make it true either.

Sunday, August 03, 2008

[outing] Scott's Rockband Birthday Party

Where: Scott and Steph's
Who: Scott, Steph, Karl, James, Daryl, Leslie, Liz
When: Saturday 2008 Aug 02

- Catching the 1am IMAX The Dark Knight the night before (home at 4am)
- Awesome A/V setup with black drapes - Main stage and side stage
- Mmmm brownies smell so good
- Steph's awesome avatar matching outfit with long black tube socks and bling belt
- Kung pao chicken? Kung pao shrimp?
- I need to buy myself a bag of Portion cups (and that awesome should strap)
- Ranch drip made simply from sour cream and ranch packet! technology!
- Pierre's sucker bet -- 3 against 1? What?
- Some one got a good picture of pierre's face with James's behind
- All parties degenerate to hearts ...
- Thump
- Step away from the drawer

Monday, July 28, 2008

[code] sed, awk, and tab

Never realized that sed doen't recognize tab as a escape character. So to use regular expression to search and replace tab characters out of a file, use awk instead.

With sed (very dangerous to put tab character like this because it's easy to accidently copy and paste, and turn tab into space):

sed -e 's/ /x/g' myfile.txt

Better with awk:

awk '{gsub("\t","x");print}' myfile.txt

Sunday, July 27, 2008

[outing] Dean's Wedding

Where: Universal Sheraton
Who: Dean, Jessica, Graham, Brandi, Josh, April, Cash
When: Saturday 2008 July 26

- Returning to the scene of the crime .. beer pong anyone?
- We are not late!
- The world's slowest elevators
- Who's asian and took pictures of the menu?
- The dog was part of the wedding procession!
- Gorgeous, gorgeous view from the roottop garden of universal sheraton
- Where's the scallop and bacon dude?
- Conga line to the bar ...
- Any vodka in ths vodka?
- Whoa. There is a Betta fish in the center piece
- Even the guy on crutches get up to dance to Footloose
- Guess where was vodka in the vodka afterall

Wednesday, July 23, 2008

[muse] Question vs Problem

Don't just answer the question.

Solve the problem.

Saturday, July 19, 2008

[outing] Zee's Birthday at Rush Street

Where: Rush Street
Who: Zee, Gray, Robert, Monica, Marie, Vicky, Jack, Tonia, Chris
When: Friday 2008 07 18

- What a beautiful space.
- Stripper pole. Brilliant idea.
- Dude: "How much is a beer?". Bartender: "Six dollars". Dude: "Come on I have a five dollar bill. Can I get half a beer?". Bartender: "No"
- Marie wasn't so hot on chewable kiwi-cucumber martini. Looked nice though.
- Tonia accidentaly cleared a tray full of glasses
- Zee accidentally cleared the dance floor
- Get this body into the car before the cop comes over here
- Go into the bathroom and get away from my router!
- How did Z get that gash on his head? Hmm.

Wednesday, July 09, 2008

[tool] Google Chart,30&chs=250x100&chl=Hello|World

Nice 'n easy.

Sunday, July 06, 2008

[muse] The Long Tail

Something I was thinking about:

It's not about focusing on the head or the tail.

It's about having a strategy for the head, and another strategy for the tail.

Friday, July 04, 2008

[outing] Hawaiian Concert on the Santa Monica Pier

Where: Santa Monica Pier
Who: Corinne, Deb, Bill, Andrew, Marie, Shu, Ray ...

- Security guard: "Ma'am do you mind if I check you bag ... whoa! there's enough food in there for a three-day camp out!"
- Macaroni potato tuna salad, fried chicken, edemame, spicy spam musubi, three flavors of rice balls, tamago, tofu, cucumber salad, and killer chocolate chip nuts oats cookies
- Are Jager, Patron, and Makers Marie's friends?

Friday, June 27, 2008

[muse] Mouse and the Mouse Trap

A thought during the commute:

- A good inventor makes a better mouse trap
- A great inventor makes a better mouse

In addition to coming up with new solutions, remember to pause and think if we can just change the problem altogether.

Thursday, June 26, 2008

[css] z-Index with Relative Position in Internet Explorer

Turns out z-Index requires absolute position in Internet Explorer (not in Fire Fox). Fortunately Dana knew a trick ...

Wednesday, June 25, 2008

[muse] First vs The Next Hundred

The first big release / launch / change gets all the attention.

But really, what matters much more, is putting a sustainable pace, team, process, and culture in place --- so that the next hundred and thousand releases can happen, as quickly and as smoothly as possible.

Don't burn out your team and exhaust your goodwill for any reason. No single release is as big as all the releases add up together.

Everyone knows that "Rome wasn't built in one day", but having the long-view, the discipline, the vision, and the patience to allow the organization to "build Rome" over time, is certainly not easy ...

... But definitely worthwhile.

Sunday, June 22, 2008

[outing] PhoShow

Where: PhoShow
Addres: 4349 Sepulveda Boulevard Culver City, CA 90230. Just south of Culver Blvd.
Who: Marie, Shu, Jose, us

- Beautiful evening to and dine on the patio space with Jose!
- "Er. #7, #9, and #14 are all "Beef with Steamed Rice"
- "The guys showed up with no shoes"
- "You are a dick. That's a compliment!"
- "Who is Pollyanna?"
- Loved my Beef Salad (#15)
- Cannot wait to go back to try Lychee and Mango Martini

Saturday, June 21, 2008

[outing] Mike's Birthday

Where: Mike and Shelbey's
Who: Mike, Shelbey, Scott, Jessica, James
When: Friday 2008 Jun 20

- It started with a new bottle of captain morgan reserved
- Burned mushrooms? Nah they are just crunchier
- Mike emptied the bottle in style
- It started with a nike smoowsh on the ankle
- How do you draw a unicorn? Hmm I think I drew a rhinosaurus?
- Cup stacking Olympics!

Wednesday, June 18, 2008

[sql] Extract domain from URL

CASE WHEN CHARINDEX('//', url) > 0
(CHARINDEX('//', url) +2),
(CASE WHEN CHARINDEX('/', url, CHARINDEX('//', url) +3) > 0
THEN CHARINDEX('/', url, CHARINDEX('//', url) +3)
ELSE (CASE WHEN CHARINDEX('?', url, CHARINDEX('//', url) +3) > 0
THEN CHARINDEX('?', url, CHARINDEX('//', url) +3)
ELSE LEN(url) +1 END)
- (CHARINDEX('//', url) +2))

Sunday, June 15, 2008

[outing] Sushi and Sake Festival at Queen Mary

- Where: Queen Mary Seawalk Grounds
- What:

- Phone jabs!
- Strip search and no water
- "This is a swap meet with a $21 admission and $15 parking ticket"
- (Thank goodness we got the tickets for free)
- "This is a festival of *waiting* for sushi and sake"
- "I really just can't have nachos at a sushi and sake festival"
- "We only have chicken left"
- So many $6 Sapporo
- Bartering beer for sushi
- Fun with $3 sunglasses
- "Wow that pigeon just peed/pooped!"
- "I've never nad Peruvian food. Have you?"

[muse] History (Not) Repeating

"It's happened all before ..."
"But it doesn't have to happen all again"

     -- "3" Deanna and Lee Adama, Battlestar Galactica, Episode "Revelations"

Thursday, June 12, 2008

[muse] Conflict vs Confrontation

A thought that came to me in my morning commute:

Conflict is a fundemental force of nature.

- All objects that consume resources have conflict with each other.
- The magnitude of the conflict is proportional to how close they are to exhausting or otherwise approaching the limit of the resources they both need.

Confrontation -- or, how we deal with conflicts -- that's a choice.

Monday, June 09, 2008

[outing] Norman's Ark

What: Norman's Ark
Where: Ford Amphitheatre

- The simpliest and most elegant set of a rooftop, transformed by overlay images and accomodates a cast of many
- "Don't worry Daddy, Jenny is here"
- Most adorable Harry and Jenny
- Singing happy birthday to Sam, the wingy-dy-bat, and cock-a-roach

Sunday, June 01, 2008

[eats] Casa Sanchez Mexican Restaurant
4500 S Centinela Ave, Los Angeles (Centinela north of Washington)

- Chamorro de Puerco - $19 - Baked (big ass) pork shank served in a (big ass) bed of white rice (mixed with vegetables)

- Sole Fish Filet - $18 - Sole fish stuffed with mushrooms, pico de gallo, baby spinach and cotija cheese. In a bed of cilantro, habanero pesto sauce. Garnished with Shrimp and scallops. Served with rice and vegetables.

- Live Mariachi band ("we are not named after the hotsauce tapatio") and dancers!

Friday, May 30, 2008

[sql] Delete rows with join to another table in SQL Server

The non-obvious part is that you have to put the table name twice -- after the "delete" AND after the "from".

delete [TargetTable]
from [TargetTable]
join [JoinTable] on [TargetTable].[Column] = [JoinTable].[Column]

Monday, May 26, 2008

[outing] Memorial Day

Sunday 2008 May 26 @ Casa de Lang

- Me to Pierre: "I bet you there is a California City"
- Pierre to Steve: "I lost the bet and you have to get in the boat with me" (or was it under the bus?)
- Killer asian-styled pulled pork by Maureen
- Loving that Maureen took the recipe and crossed out half the instruction. I am not the only one!
- Shrimp, scallops, sesame noodles, gyoza, chicken wings
- Sangria, Veev, Tunnel 88, Patron, Bicardi, Grey Goose, JD
- What can you do with fun-sized kit kats, plastic cups, coffee straws, plastic utensils, and permanent markers? You can decorate pierre
- Mike's secret Yoga skills
- Who knocked over the telescope?

[quote] John Wooden on Team Work

"A player who makes a team great is much more valuable than a great player."

- UCLA Coach John Wooden

It's a wonderful quote on team work, but I'd like to offer a small edit. No where near as clever as the coach, but guaranteed to be true.

"A great player who makes a team great is much more valuable than a great player."

Saturday, May 10, 2008

[tools] Local IIS Webserver in 3 min

For some reason I was under the impression that running IIS on my local machine was gonna be a giant $ license + install ordeal. Thanks to Scott, who happened to inquire why I'm working at the office on a Saturday, to which I explained I couldn't stand the file save lags on to the dev server over VPN, who then pointed me to get IIS running on my machine.

Took all about 3 min.

Add IIS Component:
> Go to Start ... Settings ... Control Panel
> Click on "Add or Remove Programs"
> Click on "Add/Remove Windows Components"
> Check "Internet Information Services (IIS)" --- Just 13.5 MB!
> Click [Next]
> Watch the "progress bar dance" --- Less then 3 min.
> Close everything

Enable directory browsing:
> Go to Start ... Programs ... Administrative Tools ... Internet Information Services
> Click on + sign to until "Default Web Site"
> Right click on "Default Web Site". Click "Property"
> Under "Home Directory" tab, check "directory browsing", and change file root to whatever you want. Default is "c:\inetpub\wwwroot"

> Enjoy http://localhost

That sure all seems pretty darn obvious after the fact!

Now I can go home.

Sunday, April 20, 2008

[tool] SQL Server 2005 settings: copy column names and show line numbers

Helpful settings found in Tools ... Options today:

1) Copy column names / heading when copying from grid results

2) Show line numbers

Monday, April 14, 2008

[log] "21" Movie Game Show Host Three Doors Problem Explanation

Went to see 21 last night, and none of the us got the gameshow host door explanation. Is it really better to switch? Yes, it is. Here is my explanation. This is not a math problem, but rather a logic problem

Game setup
> Three doors. One with prize and two with goats.
> Prize and goats randomly hid behind the doors.
> The host knows which door has the prize

Game play
> First, contestant picks a door, but not open it
> Next, the host MUST open a door with a goat, BUT, cannot open the contestant's door
> After the host opens the door showing the goat, the contestant can stay with his original choice, or, switch to the other door.
> Should the contestant stay or switch?

What the movie said
> The move said that it's better to switch. That switching will win 2/3 of the time. And I agree.

Why is it better to switch?
> The critical point here, is that the host CANNOT open the contestant's door, which limits what he can do, when the contestant's first round choice is a goat door.

> So let's say, that the contestant always chooses door 1, which is as good a random choice as any.

> Now, consider the case when the prize is NOT in door 1.
>     In that case, the host only has one choice of door to open.
>        For example, if Prize is in door 2, the host HAS to open door 3.
>     Let's think about what happens if we switched (this is the critical point!) -- in this case, the contestant is GUARANTEED to win, if he SWITCHED
>     (What causes that "guaranteed win" from the switch? It's because the game show host cannot open the contestant's door. So he is always eliminating the other goat door.)

> And now, how often is the prize NOT in door 1?
>     2/3 of the time!

> And that is why, 2/3 of the time, the "switch" choice will win

But wait! What about when the contestant picked the right door to begin with? switching will lose!
>     Yes, of course. But, how often is the Prize is behind door 1?
>     Only 1/3 of the time.

Come again. Why is the second round pick NOT 50/50?
> It's because the host could NOT open the contestant's door. If he could, then the "guaranteed win" scenario above would not be true.

Other fun explanation and debates on this problem. I also created a simulation just to make sure I'm not out of my mind.

Saturday, March 22, 2008

[code] Horizontal and vertical center for a div in CSS

#centerDiv {
position: absolute;
left: 50%;
width: /* width of your div, say 800px */;
margin-left: /* half width of your div and make it negative, so would be -400px */

top: 50%;
height: /* height of your div, say 600px */;
margin-top: /* half heigt of your div and make it negative, so would be -300px */

Reference from here

[find] Happy Easter

Courtesy of Mike.

Saturday, March 15, 2008

[trip] Zane Crawl Day 2

Saturday 2008 Marh 15

- "Absinth is not my friend"
- Gauchos Village
- - Mmm cheese balls. Capeirina. Xingu beer. Zane's very cute 6-month old baby.
- Tam O'Shanter Inn
- - Scotch. Scotch. More Scothc.
- - Punked by Ben!
- Red Lion Tavern
- - Beer chugging contest + lines of Jager shots
- - 5.5 seconds
- - The giant beer boot and pleepleus
- - "Are we not entertaining enough for you?"
- Taxi French Restaurant
- - Cognac. Cheese. Bread. Grapes
- - Game of 4-2-1
- Manna Korean BBQ
- - Beef, Soju, and Hite beer mayhem.
- - Shuh-nan-da. Jee-mee-nan-da. The Game of Death!
- - The big banner saying about "keep noise down". Right.
- Saddle Ranch at Universal City Walk
- - We left! Ha! Fearless leader is Zane.
- Lobby Bar at Universal Sheraton
- - The poor bartender who thought he was gonna have another quiet night.
- - John wins the beer pong tourney and shows us his glass eye!
- - "You guys have only run up $400 tab? Come on!"

Friday, March 14, 2008

[trip] Zane Crawl Day 1

Friday 2008 March 14

- "This better not be a weekend retreat at Universal Studios"
- "Don't worry honey, it's a weekend long real estate seminar"
- "Is that ZOO crawl...? ... Oh my god it's ZANE crawl!"
- "I am about to run a 48 hour drinking marathon and I haven't prepared at all"

- Cha Cha Chicken
- - Three sheets trivia
- - Killer rum punch by Zane. Red Stripes
- Ye Old King's Head
- - Darts. Chris took the the final win with a bulls eyes!
- - Boddington dude. Snake bites.
- Warsawa
- - Would you like the 140 proof or the 75 proof Absinth? The drinking game is = ceremonially burn your absinth over sugar cubes and shoot it.
- - Pilsner Urquell is good chaser
- Marisol
- - Mexicali. Mariachi band.
- - Margarita. Corona.
- Yamashiro's
- - "The BAC game" "You are not drunk"
- - I am really bad at charade.
- - Too many different kinds fo sake and Kirin Ichiban.
- - Blown tire? For real?

Saturday, March 08, 2008

[outing] Pierre's Birthday at Alibi Room

When: Friday 2008 Mar 7
Where: Alibi Room
Who: Alan, Maureen, Mike, Shelbey, Corinne, Deb, Bill, Dean, Derek, Josh, Robert, Monica, Zee, Michelle, Adam, Jill, Scott, Steph, Leslie, Daryl, Nat, Johnny, Grace, Tonia, Chris, Scott, Marie, Fernando, Ray, Adam, John, Jamie, Christine, George, Ray, Pierre, me

- Nick the bartender: "You look familiar .. I know you right?"
- Corinne and her mini-liquor-bottle lei
- Mike: "Give me another drink or I'll fall asleep"
- Butter burger and double fried fries.
- Scott getting the whole bar to sing happy birthday
- Cupcakes from Hotcakes
- Let's get Josh to get one of the girls with bracelet to set us up with free drinks
- Pierre and Marie both so very sawy-y
- Disaster in the middle of the night and lots of laundry runs the morning after
- Peace and quiet for me and Jose!

Monday, February 18, 2008

[trip] Rome Day 7

- Nice driver who loves Brunello DeMontecino
- If you like women, you'll like wine
- Finally had cappucino and cornetto
- Evil woman at the exchange at airport who stole 50 EUR from us

Wednesday, February 13, 2008

[trip] Rome Day 6

- St Peter's Basilica
- "Must wait until the moon hit the obelisk"
- La Danesina Hosteria
- A page full of "Typical Roman Dish"
- Veal (is lamb) with lemon sauce
- 12 boxes of Ferrero Duplo
- Great views from top of Monument to Vittorio Emanuele II
- Jewish Ghetto
- Chinese pop music education: MV
- trick: FY
- Grappa Bastarda

Tuesday, February 12, 2008

[trip] Rome Day 5

- Tuesday 2008 Feb 12
- Pantheon
- Lunch at
- Eggplant parmasen, Punch (Neon) Mandarin, Ciocollato Caldo, Croquetts, Artichoke, Fried Calzone, Cauliflower + Ham Pizza
- Despar
- See-Fan dinner
- In & Out

[trip] Rome Day 4

- Monday 2008 Feb 11
- St Peter's square
- The marching band the rode on horses, and the little dog mascot
- Coloseo
- Santa Scala
- The dude that kept winning money at the slot machine
- Risotto e Mare, Lagsana, Spaghetti alla Cabonara
- Laterno
- Moonstruck

[trip] Rome Day 3

- Sunday 2008 Feb 10
- Porta Portese Flee Market
- Cinqe Luna bakery. Tiramisu cake
- Wrote a keyword counter for work

Saturday, February 09, 2008

[trip] Rome Day 2

- Saturday 2008 Feb 09
- Campo de Fiori Market
- The old lady in the cheese truck
- "Madam would you like to taste this vinegar sauce?", "Oh can I taste the cracker?", "Sure have a whole bag!" We ended up buying the vineger sauce
- "Cane Parking"
- Trevi Fountain
- San Crispino and the cognac flavored gelato
- Capuchin Crypts at Santa Maria della Concezione
- Mom: I got really hot in there
- Bao bao: My fingers were tingling
- Me: Very discreetly took a perfect shot of the reaper
- The Spanish Steps and the crazy crowded Via Condotti
- Curry
- My Fair Lady

Friday, February 08, 2008

[trip] Rome Day 1

- Friday 2007 Feb 08
- Porridge and pork-sung for breakfast. Yum.
- Vatican Museum - Great audio guide
- Er guys. Let's not spend forever in the Egyptian section ...
- The dozen rooms of modern art that no one even stops to look at
- Sneaking pictures in the sistine chapel
- Lunch at Dal Tuscano. Table 29.
- The fish brocolli soup is a bit fishy. Let's pour some red wine in it?!
- Pappardelle with wild boar - taste like ground beef?
- Spaghetti Amatriciana. Home-made spaghetti with basil and tomatoe sauce.
- Crazy snappy old lady at the Mercado della Piazza dell'Unita -- You don't want to buy the entire string of tomatoes? Give me back those cauliflowers!
- Weekly concert at Sant'Agnese. OMG. Featuring Brahm's Horn Trio Op 40. The only classical CD that in my infitite replay collection.
- OMG. I got second row in the center! Beautiful, gorgeous viola playing.
- Dinner at the aparment - Mom-smuggled-in-from-thailand pork bone soup base cube with noodles, with eggs tomatoes and broccoli. Yum.

[trip] Rome Day 0

- Wed/Thur 2008 Feb 06/07
- Writing production band aid sql script at 4am before leaving
- Who thought of the "An agent will call your name to tag your bag" queue system at AA?
- Chicago snow storm = Flight status cancelled
- Rebooked through London = 8+ hours added to trip time
- Travel power adaptor on plane = Productive trip
- Back in Heathrow and lesson learned from last trip
- Too tired to think clearly and getting ripped off right out of rome airport
- Our apartment is so *huge*! But why is there toilet seat in one of the bathrooms? And enough candle the craft things on the shelve to start a 99-cent store
- The trick bathroom mirror that doubles as bathroom window
- How the heck does this washer work?
- The neighbor ringing our doorbell to ask us to take down stuff from the dryer line
- Dinner at L'Orso' 80
- Wow those two people must have not eaten for days. Look at the table full of antipasti.
- Hey look! Now we have the same table-full of antipasti! - Prosciutto, Salami, Roasted red pepper, marinated mushrooms, brocolli with capers, beans, mozzarella balls, celery with pecorino, olives, meatballs, tiramisu, cream cake, bottle of red wine
- Sis' story aboujavascript:void(0)
Publish Postt almost getting things stolen in Milan
- Late night walk through Campo de Fiori and Trastevere
- Book and CD on chinese and japanese patterns!

Wednesday, February 06, 2008

[log] Done with McDonald's Fries

I am done with McDonald's fries.

I used to have McD fries all the time, and then all of a sudden it started to make me feel sick in the stomach. And for a long while I haven't had McD fries.

Today I found myself stuck in a snowstorm in Chicago airport, and under this time of duress, I just really craved some fries.

And now I feel sick. I guess at least I proved that their product is nationally consistent. Good quality control.

My arteries and doctors will sure be happy to know that I have forever sworn off McD fries.

**This statment has no effect on fries by other dining establishments

Sunday, February 03, 2008

[code] Replay web server log

An excuse to play with Ruby while doing something that we can use at work for scalability and performance tesing.

Input -- Web server request log:
2008-01-01 08:36:01 - HTTP 80 GET /foo.htm - 200 100 1000 1 HTTP/1.1 Mozilla/4.0
2008-01-01 08:36:05 - HTTP 80 GET /bar.htm - 200 200 2000 1 HTTP/1.1 Mozilla/4.0

Output -- Result log:
2008-31-01 04:23:47|0.703|200|1000|
2008-31-01 04:23:49|0.093|200|2000|

Ruby program:
require 'net/http'
require 'uri'

# Wandy 2008 January
# Test utility that reads the log and then play it back by making the
# same http requests as in the log file with the same time delay

# Configuration
Domain = ''
PlayBackFile = 'PlayLog.txt'
ResultDetailsFile = 'PlayLogResult.txt'
PlayBackSpeed = 2 # Set to 3 for three times as fast. etc

# Init Variables and Result File
tLastTime = nil; nSleepTime = nil
open(ResultDetailsFile, 'w') do |f|
f << "Timestamp|ElapsedTime|RespCode|PageSize|Path\n"

# Read Page
def getURL(sURL)
thCall = {
tStart =
sPage = Net::HTTP.get_response(URI.parse(sURL))
nDiff = - tStart

open(ResultDetailsFile, 'a') do |f|
f << "#{tStart.strftime("%Y-%d-%m %H:%M:%S")}|#{nDiff.to_s}|#{sPage.code}|#{sPage.body.size.to_s}|#{sURL}\n"

# Main Program do | sLine |
sLogLine = sLine[/80 GET .* - .../]

if not sLogLine.nil?
tTime = Time.parse(sLine[0,19])
sPath = sLogLine[8,sLogLine.length-14]

if not tLastTime.nil? then
nSleepTime = (tTime-tLastTime)/PlayBackSpeed
getURL(Domain + sPath)
tLastTime = tTime
# Wait for all the threads to finish before quitting the main thread
# Though I can't seem to get multiple threads to run in parallel,
# so the use of thread is pointless until I figur out how to fix that
Thread.list.each {|t| if t != Thread.main then t.join end}

Wednesday, January 30, 2008

[log] Finally made Internet Explorer not start slow

IE on my new laptop has bugged the crap out of me. When I started it, it would spend a good 5 seconds mysteriously "Connecting..." to nothing, since I set my homepage to blank.

5 seconds isn't a lot of time to wait for, say, a cocktail. But it sure irritated me when I stared at my computer. One-one-thousand. Two-one-thousand. Three-one-thousand. Four-one-thousand. Five-one-thousand. Argh.

Today I finally found the fix -- From "Tools".. "Manage Add-Ons", I started looking for things I didn't think I needed. I knew that every one of these add-ons was a potential "start slow" switch.

After a few tries, jackpot. Disabling this add-on made IE started in a tolerable time of slightly over one second.

- Name: "CPwmIEBrowserHelp Object"
- Publihser: "Lenovo (United States) Inc.
- File: tvtpwm_ie_com.dll

Now let's see what other Lenovo crap I can dump!

Monday, January 21, 2008

[code] Parse XML in Ruby

Needed to call an xml feed bunch of times for work to prototype some algo. I just love how easy this is in Ruby.
require 'rexml/document'
require 'open-uri'
require 'cgi'
include REXML

def searchOne(searchTerm)
searchURL = ''+CGI.escape(searchTerm)
searchResult =

searchResult.root.each_element do |level0|
level0.each_element do |level1|
if == 'IWantThisNodeType'
print level1.text + "\n"
level1.each_element do |level2|
# Do something interesting


[recipe] Pumpkin Puree Plus

There are some really wonderful ingredients, like avocado and cheese, that if I never left Asia, I probably never would have learned to appreciate. And this year something new -- Pumpkin Puree.

I bought it originally to make pumpkin bread, which turned out killer good, but left me with quite a bit of pumpkin puree. Since then I have experimented and discovered that pumpkin puree, like tofu:
- sautees and modifies very well with savory sauces
- serves as a nice "base", giving substance to a dish
- keeps in the fridge for a long time

Some combinations I have tried, in each case I added some vegetables like mushrooms or peas.
- Pumpkin puree plus texas BBQ sauce
- Pumpkin puree plus Tikka Masala sauce
- Pumpkin puree plus hoisin sauce

And accoridng to the manufacturer, it is a ridiculously rich source of beta carotene.

Sunday, January 20, 2008

[outing] Santa Barbara with Jose

- When: 2008 Jan 20-21
- Who: Pierre, Jose, me

- Surprise!
- Perfect outdoor brunch weather and artichoke and bacon omelette at Summerland Beach Cafe
- "No pets allowed on furniture" at Marina Beach Motel. Right.
- The couple next door who are the parents from everybody loves raymond
- The great sales person at Game Seek. A lesson about Mancala, and the perfect gift of super jumbo playing cards.
- Jose and Vodka tonic make for great funny pics
- Evil Knievel Jose tried to jump up to the bridge railing
- Evil warm roasted almonds and parmesan chips at Ty Lounge at Biltmore
- Killer Lobster bisque at Enterprise Fish Co.
- Oyster po boy at Santa Barabara Shellfish Co.
- The amazingly nice people at San Yisidro Ranch
- Where the heck is the "Wieman" trail?
- Highly suspect map from the hotel, link to real hiking map for next time
- They must be counting columbian drug money inside the gigantic mansion
- We really tired Jose out!

Sunday, January 13, 2008

[tool] How to Send SMS with Email

Here's how to SMS someone via email:

Virgin Mobile:

phonenumber is the 10-digit cell phone number

Monday, January 07, 2008

[log] Win32:TratBHO [Trj], Win32:Agent-PCJ [Adw], Win32:Bojo-G [Trj]

Marc must have downloaded the Xmas specials malware pack. When we got the laptop, we could not even use internet explorer to download the anti-virus software. The browser was so jacked that the clicks would be intercepted to go else where and every few minutes a random browser window would open to "Secret Lovers".

- Changed the desktop background from a lovely picture of his daughters to straight black, windows explorer and start menu to "classic" mode. Yes, this had to be done before I could proceed.
- Downloaded FireFox by manually typing in the download path, all the while fighting off randomly opening windows
- Installed FireFox, and from there downloaded and installed Avast!, Ad Aware, and CCleaner.
- Ran CCleaner, which deleted 3.6 GB of crap
- Ran AdAware, noticed that there were still a huge number of cached files in Local Settings\Temp. No doubt downloaded by all the malware. Manually unhid the folders and files to delete them.
- Downloaded and ran Norton Removal Tool to uninstall Norton 2005, so that Avast! could function fully
- Ran Avast! which found the first two malware in the boot-time scan:

"Win32:Trojan-gen {Other}" found in "C:\WINDOWS\system32\tuvtqpq.dll"
"Win32:Bojo-G [Trj]" found in "C:\WINDOWS\system32\moywh.dll"

- Avast! easily removed these two. Though the power adaptor on the laptop had not been working right, and the computer decided to hibernate in the middle of the scan.
- Woke it up from hibernate, fudged with the power cord until it seems to be charging, and continued scan with blank screen with no sense of progress. Entertained myself by chatting with Jessica and watching Jose and Scruffy run around.

- Avast! scan finally finished. The computer is behaving much better now. But, malware still left clearly, since "Secret Lovers" were still popping up every so often, especially when I try to use IE.
- Ran Windows Updates to upgrade IE and Hotfixes to latest version. This took a while as it had to upgrade to IE7. Entertained myself by doing work on my work laptop.
- Finally it was done, and with Avast! now running resident, it started to alert on a new malware:

"Win32:Agent-PCJ [Adw]" found in "C:\DOCUME~1\Marc\LOCALS~1\Temp\wjsfldwg.exe"

- I had Avast! delete it. Only to find that after I reboot, Avast! would then complain about the same malware but in a different file name:

"Win32:Agent-PCJ [Adw]" found in "C:\DOCUME~1\Marc\LOCALS~1\Temp\cymqdwmk.exe"

- Checked the startup list in CCleaner. Noticed a suspicious entry that loaded a dll with the same random 8 letter file name from the system32 folder. I delete the entry.
- After a reboot, it got worse. Now the login just hung. I brought up task manager and killed explorer and restarted it, in order to be able to do anything again. I checked startup list in CCleaner again, and, voila, that entry is back, with a different dll!
- From command prompt, went to c:\windows\system32, and ran dir /O:D *.dll to see the DLL files order by create date -- Saw dozen of dlls with the similar random 8 letter names, but cleverly, all with slightly different file sizes.
- I deleted them all but could not delete the latest two -- "File in use. Access denied". Meanwhile, Avast! keep alerting me of the same Win32:Agent-PCJ with the exe file in the Temp folder.
- After repeating this a couple of more times, I came up with the idea of killing the explorer process from Task Manager, which finally allowed me to clear out the last of the random 8 letter dlls. Hurray!

- I reboot the computer, and what do I see? Another trojan horse alert from Avast!

"Win32:TratBHO [Trj]" found in "C:\WINDOWS\SYSTEM32\TUSQO.DLL"

- I asked Avast! to delete it. I reboot. Same problem.
- Did it again, and manually checked it in cmd prompt. I noticed that Avast! did not actually delete the file. I tried to delete it myself, and of course, the good old "File in use. Access denied" message showed up.
- I immediately tried the same "kill explorer then kill dll" trick. This time, no luck. I proceeded to try to kill a bunch more processes, still no luck. I tried regsrv32 /u tusqo.dll. Nope.
- Tried Avast! a few more times with Delete and Chest on the file, with "delete file on next boot as necessary". Reboot. Still nope.
- Finally, I got Avast! to Rename/Move, with "move file on next boot as necessary". Reboot.
- Voila -- Victory!
- (Who knows why the same did not work for delete, but I guess that's part of the challenge)

After ridding not 1, not 2, not 3, but 4 different malware, all freshies (TratBHO only made it into the virus definition file on 2008 Jan 4), this poor little Pentium III with 256MB RAM is one clean mean machine. IE actually loads faster on it than on my duo core laptop.

Now if only all that work had earned me some achievement points ...

Sunday, January 06, 2008

[buy] Zoom H2 Handy Recorder

What: Zoom H2 Handy Recoder
Cost: $175
Vendor: New Vista Sales via

- Amazingly lightweight
- You can sit it on a little desktop stand, or attach it to a handle or floor stand
- Play back the recording immediately through line out
- Save as WAV or directly as MP3 files
- Can be AC powered or runs on 2 AA batteries
- Multiple modes customized for recording single direction sound or surround

Saturday, January 05, 2008

[outing] Alibi Room

Where: Alibi Room
Who: Jess, Ray, Zee, John, Jamie, Tonia, Chris, Mike, Shelbey, Alan, CC, and quite a few more

- Zee: "Pierre, I will drink you under the table"
- Patron, more Patron, some other tequila, Mezcal, Hanger One, Bourbon, the bar tender bought a round of Jack, and then more Patron ...
- Last round of chicken tenders!
- Beautiful, laid back bar. Cool decor with a great atmosphere. So glad that we finally made it there.

Friday, January 04, 2008

[recipe] Assorted Vegetable with Quail Eggs

Made this up tonight. Not the healthiest, sure, but it's low carb and tasty.

- Four links of chinese sausage. Quarter and then quarter length-wise again into little sticks.
- Dice up a green pepper into the same shape as the sausage
- Clean a big handful of beansprout

- Start with pan roasting some garlic. Garlic is always good.
- Pan roast the chinese sausage. No oil needed since the sausage has tons.
- Then throw in a can of "assorted vegetables with quail eggs", and don't question what's in there
- Then throw in the green peppers. Season with Sriracha hot sauce to taste. Stir Fry.
- When done. Turn off heat and then mix in the bean sprout.

Tuesday, January 01, 2008

[outing] New Years Eve 2007

Where: Avalon Hotel
Who: Marc, Nikki, Brent, Marissa, Daryl, Nat, Raheem, Eliza, Jess, Ray, Mike, Zee, Carol

- "Would you prefer the cocktail cabana or the dining cabana?"
- First course: "Baked German butter potato, crème fraiche, domestic caviar" (A single Ruffle chip with some stuff on it)
- Second course: "Butternut Squash soup, butter poached lobster, shaved black truffles" (Now this is some good soup)
- Third course: "Organic greens, frisee, Belgian endive, shaved parmesan, citrus vinaigrette" (The other choice was Beet Carpaccio, which some had misread for Beef Carpaccio)
- Fourth course: "Petite Filet Mignon, crushed fingerling potatoes, sauce bordelaise Slow~Braised Short Rib, truffled brussels sprouts" (Filet Mignon is fabulous ... but where was the short rib?)
- Fifth course: " Chocolate champagne cake, hazelnut dacquaise, raspberries" (An absolute winning choice over the Strawberry gateau)
- Zee: "I am immune to alcohol"
- Matt pulling a Pierre
- Brent's new year resolutions
- Mike: "I am from a country in Asia". Zee: "Ireland?"
- Getting kicked out by Hotel Management
- Damn heels