Curing my chronic sinusitis

I am posting this, so I can point my friends to this post, instead of writing them long emails. I’ve been battling my sinuses since 1980s, and was cured in 2013. This is how it happened.

What was it like?

In mid 80s, I got a really bad sinus infection. Since then, sinuses were always slightly off, and every cold would last a long time, and couple of times a year a long cold would turn into chronic sinusitis, which required antibiotics.

Initial attempts

I started seriously trying to fix when I became a dad. I no longer had time to be sick. I started irrigating with WaterPik, then Neti pot (much better than the Pik). I tried to keep my nose clear. I quit smoking. I tried spraying various home remedies into my nose. None of this helped much.

The cure: antibiotics + steroids

I was going batty, and was ready for something radical. So I asked my Dr. whether I was a candidate for surgery. I was, I had a deviated septum. So I scheduled the surgery.

The day before surgery, I met with my kids allergist, Dr. Choy, who’s the best doctor I know. She said that before surgery, I should talk to Dr. Winston Vaughn from CalSinus. I cancelled the surgery, and scheduled to meet Dr. Winston.

His fix was targeted antibiotics + steroids. He took culture from my nose, figured out exactly what bacteria was brewing up there, and prescribed me targeted antibiotics. This cleared me up a bit, but not all the way. The next step was oral steroids, and they worked. My nose was finally really clear. I have not felt that good for 20 years.

I have not had a single sinus infection since. When I get a cold, I keep it under control like this:

  • I irrigate with Neti Pot to keep sinuses moist and draining. I do this whenever I feel stuffy, 2-5 times a day.
  • Overnight, I use a nasal steroid, Nasacort. It is finally available without prescription. This is the key!
  • If I get really stuffy, I’ll use Afrin in a single nostril overnight, but only for a short period, week or less.

I think that the cause of my chronic sinusitis was inflammation. With my narrow nasal passages, it only took a little inflammation to plug them up. That’s why I never got clear without steroids.

It is kind of silly that I had sinusitis for 20 years, and had 40+ antibiotic treatments, when all I really needed was a course of steroids.

Hope this helps,

Posted in Uncategorized | Leave a comment

Ô£ŅWatch: not as silly as I thought

I have a theory where Apple is going with the watch.

My initial reaction to the launch was “Ugh”. All I need in my life is yet another device to charge every night. If it had a SIM card & GPS, it would replace iPhone on my runs…. And those phones that look like Androids my geek friends have…. The launch did not add up, Apple is not that stupid.

Later that night, it all came together. Here is Apple’s plan: <10 years from now, we'll all be wearing Apple watches, and phone will be an optional accessory.

The transition will start when Apple watch gets a SIM card, battery life, and essential app parity with the iPhone. I'd love the know the forecast when this happens, my guess is 5 years out.

At that point, I will have a choice: should I wear my watch, or phone, or both. What decision will I make? Watch will be part of an ecosystem, and will be able to project to other screens via CarAirPlay. I think I'd pick the watch 80%+ of the time. Now my phone becomes an optional purchase.

This scenario works for Apple:
– Android is reaching feature parity. Apple does not want trench warfare.
– Brand new ecosystem (only Apple….)
– Simplicity: comes naturally

And I am looking forward to this new day, where "everyone staring at their phone" goes away.

Thinking it through farther, people wearing a watch instead of a phone has many implications. Ads are tricky. Reading news on the go becomes a decision to bring another device more suited to reading. Etc, etc…

I claim dibs to the phrase “wrist migration”

Posted in Uncategorized | Leave a comment


Part One of the Total Rewrite is finished,
and it looks very good.
Speed, simplicity, Bootstrap, jsdiffs, bindings
all very good.

Code is clean,
new features fit snuggly,
as they should,
it is a total rewrite

One step left before part one
is done
That one step reveals cracks
in my simple UI
Three words won’t fit in 200 pixels

lit on fire (not pleasant)
shortly after we were born
the fire continues
even when standing still

Posted in Uncategorized | 1 Comment

Finding a nanny in Palo Alto

tl;dr In the Bay Area, works. Start your search 3 months before you need the hire, many great candidates are hired right away.


Our nanny score for the last year: 5! That is 5 nannies in a bit more than a year. 1 part-time student left after summer was over. StanfordPark nannies candidate did not work out, fired after 3 months. Hired someone from Craigslist, fired after 3 months. Hired our old part time nanny, she left us for Montana after 3 months. Tried to use Stanford Park again, would not take us on as a client. Hired current nanny from, and we love her. She has restored our faith that great nannies are out there. Unfortunately, she leaves next July, and we’ll have to look again. Already dreading the thought.

The nanny search took six months. Our nanny had to be a great fit. We are stay-at-home mom, and work-from-home dad. Anything less than a great fit, little faults become big problems: kids want our company, not her, and we’ll hear about it every hour. And then we’ll get grumpy.

We’ve used Craigslist,, and two agencies: Town & Country, and Stanford Park Nannies. This is how it worked out for us:

Nanny market is funny. Being a great nanny is tough: you have to love kids, be creative, have lots of energy, and tolerate low pay. I find parenting tough, emotionally exhausting, and am in awe of anyone who can give even half of that to other people’s children.

Great nannies should be earning a lot more than they do. But they do not, the pricing is irrational. I’ve never seen parents in a bidding war over a great nanny, the salary range is narrow: $20 to $30/hr.

What this means that money won’t buy you love, no one will ever ask for $100/hr. Instead, you have to find the right candidate, at the right moment. Candidates we liked were always deciding among multiple offers.

Our search took 6 months. During this time, we had some part-time help, gave an offer, rescinded an offer, hired and fired a full-time nanny, interviewed about 40 candidates on the phone, had 10 trial days, and read an insane number of craigslist ads.

There was no clear right way to do the search. Craigslist is very labor-intensive, and our best and worst candidates came from there. was somewhat labor intensive, and yielded no candidates in the end. The agencies were the easiest, and fastest, but we did not find the right candidate (and had to pay finders fee for our one bad hire). We saw one of our favorite candidates in all 3 places.


I scanned all the posts every day, and posted my ad every week. Both scanning and ad posting yielded great candidates. Scanning was a slog, 50+ posts daily.

Well-written ads was the key to getting the most out of Craigslist. Most of the ads tell you nothing about the person writing it. “Trustline, CPR, love kids”, all these words eventually had no meaning. When I scanned the ads, I looked for a story, for someone I could relate to. This would yield 1-2 candidates a week.

My own ad also had to be well-written. My initial simple “Nice PA family with 2 boys looking for 40 hours” drew a zillion form responses. My well written ad drew a few really interesting candidates.

Most of our hires, or attempted hires, came from Craigslist. We loved our first serious candidate: amazing interview, kids in the palm of her hand, funky, educated, saving up for grad school. We even got in a bidding war with an Atherton couple. Then it all fell apart horribly 2 days before she was supposed to start.

We found our current nanny on Craigslist. She wrote to us, and we are a really good fit so far. She is almost everything we’ve been looking for. It has only been 2 weeks, but I am keeping my fingers crossed.

The agencies

After our first Craigslist hire fell through, we were desperate. Months and months have passed with very little help. End of September is a bad month to hire, most career nannies roll with the school year. I was in the “cost is no object, just get this fixed” mood. So we called Stanford Nannies and Town & Country both.

My problem with the agencies is that you do not get writing samples from the candidates. Writing samples were such an effective filter on Craigslist. It is a lot harder to get a sense of what someone is like by reading resumes prepared by an agency.

T&C is the big name in the Bay Area, we’ve hired part-time help from them before. They were very professional, interview was over the phone, and we immediately got 10 resumes. We interviewed a few, had a few workdays with them, but did not find anyone we really liked.

Stanford Park Nannies is smaller than T&C. The approach is more intimate, initial interview happens at home. I feel this might give them a slight edge in providing just the right candidate. Our 2nd Craigslist favorite (the one that got away, sweet Waldorf teacher) also got placed by them just a few weeks before ūüė¶ They sent us around 10 resumes, a bit better matches than T&C, and after interviews/workday we hired someone.

She did not work out. My wife disliked her after a few weeks, and it was all downhill from there. It was just a bad personality fit. She stayed with us until we found happiness on Craigslist.

Agencies might do a great job given enough lead time. One month was just not enough. is a .com nanny market. You get better search tools, and more candidates than Craigslist. And a crappy web ui. Posting an ad was not productive: zillion responses, most of them form responses, and just cleaning out the inbox using their horrible web UI was a pain.

Narrowing down the search was painful. I could not use their UI to express the exact query I needed, so I ended up with 500+ candidates. Advice: use “Hide” function immediately on every candidate you have no interest in. This will really help in subsequent searches. The search did yield a few interesting candidates, but no cigar.

It looks like the candidates we liked were getting snapped up quickly, I kept running into stale profiles of people I wanted. Again, the right strategy would be to start your search early, and contact candidates as soon as they sign up. They’ll email you new signups daily.

Posted in Uncategorized | 2 Comments

Migrating from Picasa to Lightroom on OS X

Picasa team must be grumpy. Their baby has failed to thrive in Google’s cloud, the desire for images to be managed locally incompatible with Google’s dream. It took me a while to give up on it, I have 20K images, and I did not want the switching headache.

The lack of drag and drop integration really hurt while I was creating a photo book at Nation’s Photo Lab. I switched to Adobe Lightroom: nice folder browsing support, metadata are kept in XMP, an open standard. I’ve never been a fan of iPhoto/Aperture’s straightjacket.

To migrate, I needed to preserve Picasa’s image edits, and star ratings.

Image edits were a breeze: just click on “Save to disk” icon in every one of your folders.

Preserving star ratings took a bit of coding: I had to parse Picasa.ini files, detect the stars, and modify the file’s XMP metadata. I wrote a script that does this Starting from the launch directory, it traverses all subfolders, finds all star-rated images, and gives them 5 stars in the format Lightroom recognizes. It won’t work on movies, and will write out all the failures in the error log, so you can fix this manually.

Before running the script, you need to install exiv2. On a Mac, use brew to get it. The script can easily be modified to deal with any other metadata stored in Picasa.ini.

Posting this just in case you’ve decided to switch, my Google search for this script turned up nothing.

Posted in tech tidbits | 10 Comments

Our Eichler Remodel in Palo Alto

This was my third remodel in 14 years. First one was a transformation of a cottage in Old Palo Alto into a modern. It ended up looking great thanks to my architect dad. It was also over budget, and a year late thanks to my contractor.

Next was a successful update of a 4000 sq ft Victorian in San Francisco. Great contractor helped finish this one on time & budget. The gotcha was that expensive double pane windows did not stop the chill or sound from drifting into our master bedroom; heat remained on continuously for the next 5 years, and 6AM trash trucks were our alarm clocks.

I did not want to move for the 3rd time. I did want my son to play on the street like I did, and my fancy neighborhood was not that street. “Streetplay daily” was our new criteria. After a long search, and lucky break we found a street in Palo Alto with many kids that played outside, straight out of 60’s. This playful street was full of ¬†Eichlers, and one of them was for sale. We were off onto our 3rd remodel.

Initially we just wanted to touch up a few things. Then old things started looking drab next to new things, and we ended up with a full-scale remodel. This has been the most successful and non-traditional remodel so far, and I’d like to share what we have done. We choose many less known options, and made them work.

The prep

The driving ideas behind the remodel were comfort, storage, and energy consumption. Our initial list of improvements was:

  • replace the single pane windows – old windows were inefficient, and unsafe
  • expand the master bathroom – bathroom was tiny, with a single sink, and sharing space with a walk-in closet
  • enclose the atrium – atrium was too small to be used as a room, and too large to be decorative
  • redo pergo floors – the floors were inefficient, and yucky
  • many minor fixes: take out some extra closets, put in new ones

By the time we were done, we also:

  • redid the whole kitchen
  • redid another bathroom
  • painted the house
  • updated all the pool technology: solar heat, new pumps
  • replaced the water heater with on-demand
  • replaced all the closet doors
  • installed new lighting everywhere
  • replaced shades on the windows
  • repainted everything
  • redid the garage
  • upgraded electrical

We bought the house in November, started work 2 months later, and moved in in June. Major work continued until September, and my house to-do list went to zero in January, 13 months after the purchase.

I decided to coordinate the remodel myself. If I hired an architect, most of the decisions would have to be made before the work started. We had strong ideas about what we wanted, and would be changing our minds a lot. On the recommendation from our realtor, we hired Palo Alto Home Improvement. They were local, knew how to get the permits, and did not mind our lack of complete plans before starting work. They were not a high-end outfit, but they tried their best, and were accommodating. Most of the time, this worked. Few times their lack of fear of doing stuff they know little about backfired badly.

The drawback of coordinating the work yourself is that you have to visit the job site almost every day. Your plans are not exact, decisions get made all the time, and many times they are not what you want.

Unlike the rest of my architect family, I have a hard time visualizing what something would look like before I see it. For this remodel, I did all of our plans in Google Sketchup. The work you put in to learn it pays off in mistakes avoided.

Going green

Every time I remodeled, I ¬†tried and failed to make my house “green”. Insulation, new windows, new furnace, no go, those power bills stayed high, I was hot in the summer, and cold in the winter. Luckily, in 2009 there were companies who would do this work for me. I hired a couple for an initial consult, and was very happy with Sustainable Spaces. They are now called “Recurve”. Which naming consultant came up with that name?

Recurve takes your $500, comes in, measures and models your house, and gives you a list of recommendations for cutting your energy/water use. Their recommendations made sense. Some were a bit too efficient for me, I would have happily installed 8GPM instead of 6 GPM water heater, and added a few more solar panels for the pool. They’ll also get subs to do the work if you’d like. I am not sure would I recommend their installers. They hire from all over Bay Area, and non-local contractors are tough to get a hold of once something goes wrong. But the stuff they recommend is usually cutting edge, and your local guy will happily take on the job, without having any idea how to actually get it done.

I followed most of their recommendations, and used their contractors. They also suggested a recirculating air pump because our house was so airtight. That was just silly, our doors are open all the time.

Double pane windows: I knew I wanted them, and the fact that we lost 50% of its heat through the windows made my decision to replace them all make engineering sense. This work was performed by Palo Alto Glass. Loved them, the windows went down and up in two days, ~25K for everything.

On-demand water heater/ radiant heater combo: How exotic! The steampunk looking device replaces water heater and radiant heat heater with one compact heater. It is a Trinity NTi 150. Recurve recommended a 6 gallons/min model, which I thought was a little skimpy. It barely drivex 2 showers at the same time. It turned out to be sufficient, but only after I replaced all my high-flow faucets with lo-flow versions. Another drawback is lack of knowledgeable service guys.

Update Apr 2011 I was getting tired of water rationing: “Ingrid, are your running the dishwasher when we are trying to give baby a bath?”. While installing my earthquake gas shutoff valve, guys mentioned that they can install an 8GPM tankless heater for about $3.5K, and fit it into existing heater space. Getting a new heater meant I was admitting defeat, and that I’ve blown $20K on a POS appliance. But that’s what I did, there was no getting away from it, and $20K was sunk cost. Quietside ODW-199A got installed, and now it pumps HOT water at 8GPM, 92% efficient, I love it so far. It is supposedly low-maintenance, have it looked at every couple of years, and if you are out of power, you can use your computer UPS to get hours of hot water. My installer was awesome, highly recommended to anyone in the bay area.

On-demand recirculation pump:¬†Metlund D’Mand S-70T this was my favorite suggestion by far. If your faucets are far away from the heater, you need this. You install a pump that pulls hot water to you without wasting any water.

Efficient pool pump: Pentair Intelliflo VS-3050. Argh, pool tech.

Solar heater for the pool: Gull Sun Coil No brainer if you have the pool, and the sunlight. Install is easy, and it pays off fast. This triggered a redo of all our pool systems, more about that below.

One question Recurve was not able to answer was what floors I should get. They could not tell us what the numerical difference in efficiency between concrete and cork was. We were a bit scared of cork. I knew Eichlers originally had cork, but there were very few cork floors left. Why were they all replaced? Supposedly, cork was easy to maintain, pleasure to walk on, and beautiful. What’s the catch? It turns out there were none. We went to Sue Olson Designs in Menlo Park, who lives for cork. She is a bit abrasive, has great cork selection, and a top-notch installer, Perry Cordova. We picked¬†Solida cork. Installation took a week. It is very important that the floors are perfectly level, and achieving that is the longest part of the install. The cost for cork+install was ~20K. We’ve had the floors for a year, and they are the best floors I’ve ever been on.

To match the cork, we installed rubber-cork flooring in the bathroom. I’ve never liked tiled floors, the tiles would get slippery, and grout messy.¬†Cor-terra by Capri Cork is a rubber/cork tile blend that is thin like cork, grippy, and easy to maintain. We found these in Reclaim Home in Menlo Park. It is a great store for a green remodel. The couple who runs it are true believers, and super sweet.

Another purchase from Reclaim was recycled glass counter tops. I’ve been a huge granite fan, and did a lot of reading trying to understand why would granite not be green. We are not running out of rocks. It comes down to the distance travelled, and extraction methods. I’ve tried and failed to source California granite. Instead, we ended up with kitchen counters made out of Vetrazzo, aka recycled beer bottles. Great conversation piece. I am not as confident in their longevity as I am in granite. So far, we’ve had one nick, and it is sharp. The cool thing is that these are produced 50 miles away, and we got to go to the factory and see them being made.

Operation “Greening” was a success. Our energy usage is:

Electric ~600KWh
Gas between 10 (summer) and 110 (winter) therms
Water 5 CCF. This will go up when we start irrigation.

Just for fun, I’ve installed The Energy Detective. You can see our daily electricity consumption graph on the right. The 10AM bump is the pool pump, 4PM is the induction range, late night is TV.

Going swimming

The house came with a pool, a pool that sucked energy. Ducking the “fill-it-in” trend, we decided to keep it, and see if it is worth the trouble. On Recurve’s recommendation, we upgraded our pump (Pentair Intelliflo VS-3050), controller Suntouch Auto Controller), and put in solar heat. The the trouble started. Pools need to be maintained weekly, and you want a maintenance guy who knows your controller. We went through 3 different companies who were misconfiguring the system, before getting a recommendation from the manufacturer for someone who can operate this. And those guys only serviced commercial pools regularly. Their controller’s has one of the worst UIs ever. 4 buttons that control 100 options, and an unreadable manual. It is so bad that you’d think that they run their training classes as a profit center. One of the failed guys admitted that he did not understand half the stuff they were talking about in training, and thought that variable speed pumps are just fashion. By the time we were done, we ended up replacing the whole system, booster pump, filter, and adding on a salt water chlorinator. This stuff will have to get ripped out and reinstalled when we redo our yard, as the chlorinator is installed in the wrong place along the pipe. Pool is still a sore topic here.

Going potty

I love redoing bathrooms because I know what like: showers for two, wall-to-wall mirrors, bright lights, and Toto toilets.

Our original master bath was awful (see left image). Tiny, dark space, with a walk-in closet right sharing space with it. It took many revisions of the plans, and a suggestion from my contractor to move the door until I was happy with it. The transformation feels miraculous now. On the new plan (right), you can see the spacious shower, and above picture shows you how nice it feels.

Lesson here is that moving walls and doors in an Eichler is easy and cheap. We removed another low wall in the kitchen, and even putting a new metal beam did not seem like trouble.

For the hardware, we picked Toto toilet, Pegasus 8 In. Sunflower Showerhead from Home Depot, and Hansgrohe faucets. I like picking quality faucets. When I was a kid, faucet maintenance was my chore. StarCraft Custom Builders: Faucet Reviews and Ratings is an awesome resource for picking the right one.

On the other side of our master bathroom is our new closet. We got the doors from The Sliding Door Company. They are beautiful, and smooth. We replaced all of the original doors with these. When you place your order, double-check. We got the wrong doors twice in a row.


I love redoing kitchens too. Here we repeated the old favorites, Miele dishwasher and a SubZero fridge (we tried getting a GE, it just did not do what we wanted). We ran into a lot of trouble with the contractor. He knew a guy who could bang a kitchen out in 2 weeks, cheap. What we got looked nothing like what we ordered, and it took another 6 weeks, and more money to clean everything up. Next time, I’ll listen to my instincts. Shiny new things we really like:

Pull out pantry

Extra wide drawer for silverware. We’ll never wonder “Where is that utensil?” again.

Induction range. Gas or induction, that was the question. Induction won, love the speed and ease of cleaning. No regrets. Ok, maybe I miss the wokability.

Sliding roof

Our atrium was too small to sit in, and too large be an indoor garden. We thought that the sliding roof would be ideal. It turns out that there is a company,¬†Rollamatic Roofs, that makes exactly that. They were a pleasure to work with. A few months later, it was here. We cooked underneath our first summer, and installed a rolling shade underneath. The only guys willing to take on the shade installation were¬†Blinds & Designs. We bought the rest of our roller shades from them too, they look pretty, and work well. The roof is now it just right, it’ll get us warm when it is cold, and cool us of in the evenings.

The rest

We bought most of our lighting at City lights. Wide selection of the stuff we like.

Our favorite furniture store is Room & Board. We like Ikea & Land of Nod too.

For paints, we hired a colorist. It is the best $400 we’ve spent. We’d have never come up with this list of colors, with many subtle differences, and they look great:

Ceiling: AF-70 Battenberg 508-1X Dresser frames: AF-545 (Solitude), 528-1X Dresser Drawer: 50% AF-20 528-1X  Front door: C2-392, Vicuna Hall + master bathroom: AF-70 Battenberg 526-1X Guest hall bath: AF-700 (Storm), 528-1X Kitchen accent: AF-420 (Agave), 522-3X Boy room walls: AF-485 (Crystaline), 524-1X Guest bedroom accent: AF-700 (Storm), 524-1X Family room accent: AF-225 (Firenze), 524-3X Master bed and bathroom: AF-470 (Flora), 532-1X Living room accent: AF-720 (Sparrow), 522-3X Main walls: AF-70 (Battenberg), 508-1X Bath ceilings: AF-70 (Battenberg), 508-1X Interior trim: AF-70 (Battenberg), 528-1X Exterior body: AF-720 (Sparrow), 634-3X Exterior trim: AF-720 (Sparrow), 632-3X Exterior fence: NO89-3B Eves: AF-70 (Battenberg), 634-1X

I really wanted to install a graywater system, rain catch system, but was unable to find the right person to design them.

We still have not gotten around to redoing our garden.

Posted in Uncategorized | 58 Comments

QTKitPlayer XCode 3 port

I am back to hacking the Mac. It feels wonderful, why did I ever leave? Oh yes, when I left, we had no socket library or virtual memory, and I was writing a browser, and OS X was still way out there in the future. I’ve never felt quite at home as much as when firing up the CodeWarrior and diving into PowerPlant. Windows APIs were just awful, and Unix, I just never mind-melded with it.

I am working my way through catching up to the last 10 years of development. I’ve just finished QuickTime Kit Programming Guide, and ported its sample code to XCode 3 as¬† Posting it just in case someone needs a shortcut.

Still pursuing my old love, AI. I’ll be playing with facial recognition algorithms.

Posted in Uncategorized | Tagged | Leave a comment