Thursday, May 27, 2010

Remembering Jennifer Lam - an open letter to Theresa and Brandon Lam

Dear Theresa and Brandon Lam -

My sincerest condolences on your loss. I've known your mother, may her soul forever rest in peace, for about 5 years now. We both worked for Sun Microsystems, and although we lived over a thousand miles apart, we worked together very closely on several different projects. I got to know her well, but probably in a very different way than you knew her. Jennifer was always a huge inspiration to me and the whole team, for many different reasons, and I wanted to share those with you.

First, she always had a smile on her face, and always spoke with a tingle of a chuckle in her voice. This must have been very hard to do, since the late 2000's were very hard and lean years at Sun Microsystems (and in the technical industry as a whole). Over time, we saw more and more of our colleagues be laid off, more and more projects fail, for all of us it was always easier to frown than to smile, but Jennifer always maintained a positive attitude, and encouraged the rest of us to do the same. Her smile always rubbed off on us, cheered us in her own unique way.

Jennifer also always stepped up above and beyond her responsibilities, and did whatever was required to get the job done. At one point, we decided to release our application to our site around dawn Eastern Time (so we could minimize impact on our users). I assumed those of us on the East Coast would take on that responsibility, yet Jennifer cheerfully volunteered to take care of it. Jennifer woke up early, and implemented our weekly pushes at 5am, never complaining. Her rational was that she could work for a couple of hours before you woke up, which allowed her to spend a couple more hours with you during the day.

At other times, when our work load exceeded the normal working hours, Jennifer would work ridiculous hours to get the work done. I remember several 2am chat sessions we had..

I've never heard the words, "I don't know how to do that" from Jennifer. In the technical industry, it's quite normal for us to be exposed to stuff that we don't know anything about. Many of us, however, avoid tasks that we don't know or understand, preferring to stay in our "comfort zone", rather than take on risky endeavors. Not Jennifer - she had a unique ability to learn extremely quickly, and was never afraid to accept tasks, knowing that she'd have to learn quickly (and under pressure) and adapt in order to get them done. Her passion for for constantly learning and adapting to the changing times inspired the rest of us to do the same.

Jennifer was also never afraid to try anything. One time, during a group get together in Menlo Park, we voted on what activity we should do, as a group, "just for fun". By a slim margin, the group decided to go indoor sky diving. While this wasn't Jennifer's choice, and she had the "what are they, crazy?" kind of look, she went along, and as always, had a smile on her face when she jumped in there.

Whatever she learned, Jennifer was always willing to share and teach the rest of us. If we were stuck on something, even though Jennifer had a busy schedule, she'd always take the time to teach, mentor, train, and support her colleagues and teammates.

Even though it was far from her job responsibilities, Jennifer also was the "honorary mother" of our engineering group, always keeping track of the details, always making sure that the rest of us were organized and knew what we had to do and how to do it. She always made sure that the docs were up to date, procedures were documented, knowledge was shared, and that communications happened. Truthfully, as the manager of the engineering group, many of these tasks were my responsibility, but Jennifer had the natural passion and talent for doing this.

In her last year of employment at Sun, I was honored to rate Jennifer a "1", the highest rating possible at Sun, meaning not only did she consistently exceed expectations, but also performed better than 90%+ of her colleagues. Jennifer regularly excelled during her years at Sun, and received this rating more than once. She truly was an outstanding engineer and teammate.

On the personal side, whenever we traveled (which we had to do a couple of times a year, typically to the San Francisco Bay area), Jennifer always prioritized time for her family. During the afternoon and early evening (which would have been your late afternoon and evening hours), we'd always see Jennifer spending hours on the phone, talking to you, listening to you play the piano, talking to you while you were in bed, the same way as if she were right next to you. It was clear that she loved you beyond all things, and you loved her.

I'm hoping that this gave you a glimpse into a portion of your mother's life that may not have been visible to you.

May her soul and spirit be comforted. Wherever she is now, I'm sure she's watching and protecting you. At the same time, I'm sure she's working hard, preparing a home with the same love and attention to detail, waiting for all her family and friends to join her.

Jennifer - your mother - will always be on my mind. Every year form now on, on May 4th, I will light a candle in Jennifer's honor and memory, and remember all the happiness and good that she brought into my life.

Regards Always,
Ari

Friday, March 6, 2009

Adding to iTunes via the command line

I recently had the need to add a whole bunch of files to iTunes. I'm a nutty Unix geek, so rather than spending the 10 seconds required to start iTunes, select File->Add To Library, and then select the files, I spent the 30 minutes required to figure out how to do it from the command line, and then the extra 15 minutes to write it up in this blog. But hey, that's what we geeks do ;-).

Actually, this is not as crazy as it sounds, I wanted to automate the whole process of file conversion using Handbrake and then adding to iTunes. In the past, I used iSquint for this, but alas, iSquint is no more. The new version of Handbrake supports conversions from files, instead of only from DVD's.

This is how I did it:
  1. Use HandbrakeCLI to convert the files to MP4 format, using a script along these lines. I found this HandbrakeCLI guide to be very handy. This script is not foolproof - it should check to make sure the file exists before calling HandbrakeCLI, etc., but it shows the concept.

    for i in $*
    do
    echo starting $i at `date`
    base=`basename $i .avi`
    /Applications/HandBrakeCLI -i $i -o $base.mp4 --preset="iPhone & iPod Touch"
    echo ending $i at `date`

    done


  2. Use AppleScript to add it to iTunes, as in this script.

    for i in $*
    do
    if [ -f $i ];
    then
    echo adding file $i
    osascript -e "tell application \"iTunes\" to open POSIX file \"$i\""
    fi
    done

    The trick here is that you need to specify the full path when calling this script, something like this:

    $ add-to-itunes.bash `pwd`/*.mp4

    otherwise the AppleScript will fail:

    29:63: execution error: iTunes got an error: Can’t make some data into the expected type. (-1700)

  3. And that's it! iTunes automatically starts playing the file, this is an option that you can turn off via preferences.

Thursday, August 7, 2008

Upgrading the hard drive in my MacBook Pro

The MacBook Pro that I got about a year ago came with a 100 GB internal hard drive. This seemed huge, especially compared to the laptop that I had before that, which only had a 60GB internal hard drive. But, lo and behold, a year later, the internal disk was full.

I blame two things for filling up my disk:
  • Virtualization: I had both Parallels and VirtualBox installed, but those installations took minimal amount of space. It was the Windows XP, Ubuntu, and OpenSolaris installations that took a lot of space... Unfortunately, I needed these guest OS images, since I use them frequently.
  • iTunes and some movies: I have an iPod Touch. But given that my music and videos are as important to me as air (perhaps even more important), getting rid of this stuff is not an option.
So, what to do?

In browsing newegg.com, I found the answer. I would get more than 3 times the disk space, and a performance improvement to boot. And, some of the reviews there talk about how MacBook Pro's perform with this drive. I was sold.

Replacing the hard drive in the MacBook Pro is not as simple as it seems. On my previous laptop (Toshiba Tecra M2), it was trivial - one screw on a side slot, and I had access to the internal hard drive. The MacBook pro is not that simple.

Here are the steps I took:
  1. Getting ready from a hardware perspective

    There are several things I did to understand what I would need to do and acquire the right tools.

    These two web sites were invaluable.


    Then I had to get the right toolset - a Torx #6 and a small Phillips head #0.. I knew that Home Depot had these tools (since I actually bought one a while back, but it disappeared in my house), but with gas at $4.50 a gallon, I wasn't willing to make the 20 mile trip to Home Depot just for the screw driver. Fortunately, the local Radio Shack had a toolkit. It had more pieces than I explicitly needed (even ones that I didn't even recognize), but hey, at $16.49, it was reasonable.

    I now had everything I needed.

  2. Getting ready from a software perspective

    The question I had was, "how do I duplicate the boot disk onto the new disk"? There seemed to be several options:

    • Using the asr(8) tool built into MacOS X. The suggestion was to boot off the installation DVD with both the new disk and old disk connected (one via an external USB chassis, the other inside the Mac), then use this utility to duplicate one disk to another.
    • Use Time Machine and do a full restore. This wasn't an option for me, since I quickly learned that setting up Time Machine to back up my virtualized Guest OS's quickly fills up the Time Machine backup disk. So on my system, Time Machine doesn't back up everything...
    • Use SuperDuper! This is what I endded up doing.

  3. Getting "mentally" ready

    I repeated to myself several times, "I think I can, I think I can, I know I can, I know I can"

    A little confidence goes a long way.

    The thing I feared the most was breaking the MBP, and not being able to show up to work the next day. I rely on the MBP to perform my job.

  4. A test run

    The real question in my mind was, "how long will this take?" I had to allocate that much time to get this done, and make sure I didn't need the Mac during this time period. The only real test run I could do was a disk duplication.

    I took the new disk and put it into an external USB chassis I had lying around. I set up SuperDuper! to do a full backup from the internal disk to the external disk, and then boot the Mac off the external disk when it was done. This process took 3.5 hours (!) for approximately 95 GB of data copied. Final data copy rate was around 8 MB/second.

    So now I had my answer, I needed approximately 5 hours of Mac downtime to perform the upgrade.

  5. The final leap

    Around 6pm at night, I logged off from work, shut down all the apps on the Mac, and started SuperDuper!. I came back around 9:30pm, saw that it was finished, then started the upgrade.

    I'm happy to say that by 10:15pm, I was up and running with the new disk. No problems at all.

    As for performance?

    Not a real benchmark by any means. The current software project I'm on takes approximately 25 minutes to build and run the unit/functional tests. With the new hard drive, I'm down to 14 minutes. Since I do this many times a day, this is a huge productivity benefit to me.
I learned something by reading Richard's notes and watching the video: Pay careful attention to all the screws - amazingly, they are all different. To keep track, used small notepad sheets of paper - 6 of them - labeled as follows. Then, as I took out each screw, I put it on the right piece of paper. This way, I didn't make any mistakes regarding which screw went where.
  • Outside memory case
  • Inside memory case
  • Inside Battery Case
  • 4 screws on the bottom
  • 8 screws, 4 on each side
  • 2 screws on the back
For now, I'm content. I've got a ton of free space. I'll never fill it up!

Tuesday, May 20, 2008

NYC Bike Tour 2008

On Sunday, May 4th, Evan Rabeck and I biked the NYC Bike Tour . It was the first time that I ever biked this event (actually, it's the first time I rode my bike for more than 4 miles!), though Evan has done it before. In a nutshell, it was a great event, I had a blast.

I started the morning quite early (for me), I left my house around 6:30am, got my usual coffee at the local Starbucks, and drove to Evan's house in Brooklyn. I saw many cars along the way that had bike racks strapped to their back, just like I did. I parked my car at Evan's house, and we started our ride to Manhattan. Somewhere in Brooklyn, Evan got a phone call from work, we had to stop while he resolved some issue. Truly, in these days, one cannot get away, huh?

Start of bike tour

We rode over the Brooklyn bridge into Manhattan, and joined the bike tour in progress. I expected this to be a "grownup" kinda thing, I was very happily surprised at the number of parents who brought the kids along! I told my kids that they are coming with me next year.

05042008(001)

We rode our bikes up 6th avenue. There was some fun stuff along the way, including this Jamaican band.

05042008(011)

There was also a lot of silliness, like this Scottish marching band who cut across the bike tour. We never quite figured out what it was all about, but it was fun!

05042008(007)

Next up, the entrance to Central Park. Unfortunately, it was a long wait to get into Central Park, that's what happens when 6 lanes merge down into 2 lanes. Some folks in the bike tour wore amusing costumes! This made it easier for them to find one another in the crowd, but I'm sure also got them a lot of attention.

05042008(009)

More to come...

Tuesday, May 6, 2008

My First Blog... ever!

This is my first blog ever, funny how these things happen. There is a long story here, I'll tell it over time...