Wednesday, January 18, 2017

New blog URL

It's too much effort to post on blogger. Find me at

I even made a post for the first time in a long while!

Sunday, February 12, 2012

The day I grew up

Steve Jobs died on October 5, 2011. As a long time Apple fan, Steve was a hero of my childhood. When he stepped down as CEO 6 weeks earlier, I posted on Facebook, "Steve is a personal hero, and I congratulate him on his epic career. Now I hope he will take some time to step back, enjoy his family, and let us younger folks change the world for a while." To which a perceptive friend took up Steve's voice and replied, "Just don't ƒ*^& it up." This is a story about how I grew up on that day.

As far back as I can remember, my best friend and I decided to be Mac game programmers. I think, although I did not know them by name, we saw ourselves as the next garage startup like Steve Jobs and Steve Wozniak. We calculated how long it would take to save up our allowance to get our own computers. My friend had a slightly higher allowance than I, but I was no less determined to save for 1,299 weeks to get a Mac Quadra. That goal turned into a PowerMac, then an iMac as the years went by but I kept on saving.

Fortunately, in high school I started making more money by mowing lawns and working at Michael's craft store so my budget caught up with technology. I got an iMac, the blueberry gumdrop that was my prized possession. With it, I learned to render 3D animations, and develop websites, and played whatever shareware games I could get my hands on. Eventually that computer landed on my college dorm desk, where I upgraded it to OS X and learned how to use its UNIX underpinnings in my computer programming classes.

All the while, I was a fervent Apple fanboy, or as we preferred to be called, "Mac Evangelists". In elementary school I argued the merits of GUI interfaces and single button mice; graduating to topics like CISC vs. RISC instruction sets and big endian byte order in high school. In college I joined and helped lead the Mac User Group at CU and spent many hours in the club's office with the premise that students would come by and ask Mac questions. In reality, the Apple plug-and-play ethos I heralded meant nobody really needed our help. The office was just a nice place to do homework, or read rumors about Apple's latest developments. When I got a job at Apple, some of my friends said, "They just gave you the job because you've been such a fan for so long, right?"

Moving from Colorado to start at Apple was a trial of growth, since I did the 1,300 mile drive in a 22-foot U-Haul & car trailer all by myself. I drove through the mountains of Wyoming, Utah, Nevada and California in February, through whiteout blizzards and un-plowed roads. I was homeless, trusting my meager savings to afford necessities along the way. But I also saw a lot of beauty, such as the Great Salt Lake and Sierra Nevada mountains.

One powerful lesson was discovering that the $1000 limit on my only credit card couldn't be paid off fast enough to outpace the "holds" on credit for the truck and trailer and one night in a motel. On the second night I ended up sleeping in the cab of my rental truck at a rest-stop in the middle of Wyoming. I donned 2 pairs of pants and all the sweaters I owned to stay warm in the freezing February night.

When I finally arrived in Cupertino and without any local friends, I had to unload the truck myself. I got so lost returning the truck that I had to call back to Boulder, interrupting a super bowl party to have someone look up Google Maps and tell me where I was. That made me late to return the truck, which I hated driving so much that I decided to abandon it until I could return the keys early before work the next day. Because of that errand and my unfamiliarity with bay-area rush hour traffic on a Monday morning, I was almost late to orientation. I regret none of it, because the thing I remember most about that weekend was walking into the atrium of 1 Infinite loop, giddy with anticipation and awe. 

So when Steve Jobs died, a part of my childhood died with him. But that is not entirely why I feel I crossed into adulthood on October 5th, 2011.


I awoke to the sound of helicopters. One, two… there's a third one. What's going on? Doesn't matter, we have to get to an appointment and then go to work. It's hard to judge the distance to a flying object, I wonder if those helicopters are over Mountain View or closer to us in Cupertino? Ah well, it'll be cleared up before our appointment is over and it won't even bother us.

I go have breakfast and check Twitter for trending topics about helicopters. Nothing yet, maybe Twitter is not the omnipotent service I've been led to believe. Surely someone with a smartphone has seen the helicopters. Maybe Silicon Valley hasn't woken up yet? Can't blame them, it's early by engineer's standards. But we have that appointment so there's no time to waste.

After showers, my wife finds something in the news. There has been a work dispute at the Cupertino quarry causing an unstable employee to gun down his boss and coworkers. Huh, that's not like the typical, sleepy, best-schools-nationally, restaurants-close-by-9pm, safe city news Cupertino usually gets. But the quarry is all the way across town, and we have an appointment to get to. I silently, insensitively hope it doesn't affect traffic for us.

We arrive at the doctor's office where my wife has her scheduled appointment. In the waiting room, the news is on TV. "The gunman left the quarry and drove East down Homestead." Uh-oh, that's right by our house. But we're now in Mountain View, and I'm sure they'll catch him soon. Besides, it's time for our appointment.

After the doctor's visit, I drive my wife to work and head back to Apple. Having missed half a day of work, and already late for lunch, I scarf down some leftover pizza and get to work. An email from Apple facilities arrives, "There is a shooter on the loose at Homestead and Wolfe. He has shot a motorist leaving HP campus in an attempted car-jacking. All Apple buildings at Pruneridge are on lock down, please report suspicious activity." Wow, shit just got real. HP campus is right outside our window, Pruneridge is our home address. If we had left an hour sooner we could have been the target for the car jacking. Did we see this guy as we left home this morning? Retroactive memory is a powerful and corruptible thing.

The minutes tick away and he is still not caught. I have plans to meet up with the guys for our Wednesday night game night but I'm beginning to have strong man-stincts to stay home and protect my wife. She'll be taking the shuttle and I don't want her getting off the bus at Valco mall, less than 1 mile from the last sighting of the shooter any more than I want to wait there for her in the car. We make plans for me to pick her up in Mountain View, and have dinner at Google.

The whispers down the hall of my floor have been serious, but waning as the day went by. Suddenly, at 4:31 they pick up perceptively. I hear, "Is it true?" "He's dead?" I start to relax. Until I check my email. Tim Cook sent an email with the subject "Steve" informing us of his passing. For a moment, nothing else is important. My childhood hero, an impressive visionary and ultimately, my boss, has passed away. 

Tragedy and fear have a way of changing a person. To experience both on one day is a life changing moment. But even that is not enough to make a boy grow up. Ready for another thousand words of my life story? No, the moment of my transformation was a quick thing. That morning, at the appointment for which we unknowingly risked life and limb, I saw my unborn child on sonogram. 

In the weeks that followed his death, I read about Steve's accomplishments. One interview quoted him about having kids, "It’s 10,000 times better than anything I’ve ever done." I feel the weight of this responsibility now, knowing the grey blob on the sonogram is counting on me.

For everyone, including Steve Jobs – a genius who wouldn't accept mediocrity to Shareef Allman, a simple concrete miner trying to get by, life is short. There is a lot to fear in the world, but there are always younger generations ready to change it.

And that's how I grew up.


Friday, August 05, 2011

Minimalist Tip

Minimalist tip: Create a "To get rid of" category in your ToDo list. Clear the section ASAP.

Monday, January 24, 2011


I made this!

This is my second sewing project, and the first where I actually planned what I wanted, went to the fabric store, and put the whole thing together.

The reason-- besides having a hobby away from the computer when I go home from work, was to have some super comfortable lounge wear. "Oversized" sweatshirts are more like "vaguely appropriate" sized to me and I always get gipped on my gorilla arms. I figured I could make one myself with all the excesses size I desired.

I found a tutorial here:

I wanted to reclaim whatever manliness I lost by using a sewing machine so I bought some kickass skull and cross-bone pirate fabric. The fact that it's super soft fleece doesn't help, but I'm not wearing it out-of-doors so only the internet knows. Having but one sweatshirt to pattern from, I turned to my Strong Bad hoodie, which I also think is pretty sweet. My wife points out that I should have changed the quilt on the guest bedroom to maintain my image, but I guess it's too late for that.

The instructions start by folding the sweatshirt and cutting out the body with room for seams. I couldn't tell at the time I took this picture, but that cutout is MUCH larger than my sweatshirt+seams; this could probably fit André the Giant.

Sewing up the body and the sleeves was no problem, but I did have to turn to the internet to figure out how to sew the two together. This video was extraordinarily helpful.

Despite the fact that the sleeves were the most difficult, I made the most mistakes on the hood. I had already hemmed the neck, which was a mistake. I also found the neck shrank after putting it on, so I had to rip out the seam and cut a larger V-Neck. Fortunately, I over-cut the hood (like everything else) so I had room along the bottom to sew into the V.

The finishing touch was a pocket just the right size for my iPhone. Because of the crazy pattern, I can't take any good pictures to show it off so just call that a "feature" that the iPhone pocket is camouflaged.

My next goal is to make something I can wear out of the house without looking like a clown :)

Friday, December 17, 2010

Word Lens

This is so awesome:

I just downloaded the app to my iPhone, and it works impressively well. The app is free with a demo mode that reverses words, and language packs are $5. The best part is the whole app works offline, so it works, you know, when you actually need it.

I did buy the Spanish to English pack for emergencies, but this picture is really fun so I'll post it instead. Can you read it? (iPad is apparently not in their dictionary.) Note the crazy angles and it even got my keyboard keys!

Sunday, October 31, 2010

Put this on blog

I have begun to love reading the Put This On blog. It's a different perspective on life than I usually get. Granted, a materialistic one. However, a lot of the posts and links are paired with some pretty astute social commentary. For example,
You don’t need more. You need better.

Be sure to watch the episode videos.

Saturday, October 30, 2010

Awesome camera bag

I just got a new Nikon D3100 digital SLR camera. I've always wanted to learn more about photography and have more control over my photos, and with our honeymoon coming up it seemed like a good time.

The D3100 is a pretty entry level camera. I liked it because Nikon is what a bunch of people I know use so there's potential for Lens swapping. The main features I wanted were small body size, fast shutter, and the ability to shoot video and geotag (that part is an extra attachment).

Along with my camera, I decided to get a new bag. We are going to the caribbean so I wanted a bag that would protect my camera, had the highest quality, but didn't look like a camera bag at all. I found that at Saddleback Leather.

And it fits my camera, plus many future accessories very well. (That's my iPad sitting horizontally in the left side pocket too!)

That's the Chestnut large satchel. I love the size and quality of the bag. It's expensive, but as I told my wife, "It's the same price as a decent Coach bag, but it's got a 100 year warrantee." It also just looks so classy.

There are a couple cons to be aware of if you are considering this bag. It comes stiff, and without zippers and snaps (that could break) it's not the quickest bag to get into. I'm already noticing it get broken in and that's helping. It's also heavy, and the strap is too long. The length is so it can be converted to a backpack, but I don't see myself doing that.

But after using it this week, I am very pleased with my purchase and I think it will serve me well for a long time.

Engineer's guide to getting married: Pt 2

We've already covered getting the ring and proposal, so now let's talk about planning the wedding. If you're lucky like me, your fiance is a super organized planner. If not, here are some things you might want to recommend.

Spreadsheets. Our whole wedding, plus a dozen alternate weddings we could have had, is documented through spreadsheets. We used Google Docs because you can easily share and collaborate.

There are certain benefits to picking and choosing between existing customs and not being tied down to one. We chose to do an Asian banquet style reception, meaning the location, food and service were all wrapped up in one price. It was a big price, but only as much as just the food would have cost elsewhere. But we also had a christian wedding and a Vietnamese tea ceremony so it was a lot of fun.

Cake: trials are awesome, and I think cake makers are kinda lonely because they seemed to love to have us come try their cake and chat with us. In the end, we liked the cake best from a Vietnamese bakery and it was so much less expensive.

Photography: For us, having a strong director as photographer was really useful. He had the authority to move the whole group of people or tell everyone to be quiet. I'm sure there will be other strong personalities that want to take control, but I highly recommend getting a photographer who can and will direct.

I don't have as much to say about that as I thought I did. And that is the final lesson, guys. Have an opinion but don't say more than you need to keep the ball rolling. She has so many ideas and life long plans that she'll never need you to come up with an idea, just to put to rest the multitude of options she's set herself up for.

The last part will be honeymoons, which will have to wait because we haven't taken ours yet!

Engineer's guide to getting married: Part 1: Rings

Yup, long time no bloggy. I've been working on a special project that's going to reap rewards for my entire lifetime. That project is foreign to many men, especially engineers so I attempt to distill the past 10-11 months into one place.

~% man marriage
Usage: sudo marriage -proposal <>

You can't just walk into a ring store and choose the one with the best specs. Not only is the ring a girl's most anticipated piece of jewelry, it has to be with her every day for the rest of her life. So it has to fit her personality, her style, her lifestyle, and hopefully your budget. Therefore, I can't give any advice on what to look for in a ring but I can recommend that you look at rings together and strongly consider letting her choose or design the ring herself. In my situation, we went to a bunch of ring stores and she showed me a ton of characteristics about rings that she really didn't want. So I had to figure out what a ring would look like that didn't have those characteristics and try to convey that to the jeweler.

Some of the features I had to avoid were:
  • No bezeled gems: They don't let enough light in for full sparkly goodness
  • No barrel cut gems: They look glassy and fake
  • No encrustations (lots of little diamonds)
  • No asymmetric rings
  • Nothing that sticks out too much or has sharp corners
  • No yellow gold
  • Nothing too thick or heavy for her delicate hands
  • Classic looking without being common looking
  • No diamond as the main stone, but auxiliary diamonds ok
You would need to know where your girl stands on these issues, because some are make or break in either direction for your particular bride.

As for giving her the ring, you should know what the answer will be before you propose. The time and location can and should be a surprise. I ended up taking off a day of work unbeknownst to her so that I could get the ring before our trip to Colorado. She knew I'd propose eventually because of the ring store trips but really didn't think I'd have time to get it done. Us guys tend to act so abnormal on the day we propose that she always knows something's up by the time it happens.

That's really enough for one post, so I'll make this a series. Tune in next time, same Bat time, same Bat channel.

Friday, August 20, 2010

Using git for sync and backup

Nerd alert! I need to put this list of instructions for using git somewhere so it's going here. I hope it might be useful for someone else too.

Why: One of my most valuable assets at my job is a directory full of sample code projects I've created over the years. Sometimes, it's a command line tool such as "nsdictionary" which I created to test something with that API, or sometimes it'll be a full App like "ThreadedQCLayersAndBindings" which tests complicated interrelationships. They were quick and dirty, taught me something specific, and useful as templates for future exploration and now I can't bare to lose them.

As with any set of files, there's two main concerns: backup and synchronization. Backup is really two parts
  1. If the hard drive fails I want to have stuff stored on another disk.
  2. If I change a project by experimenting and that experiment fails, I want to be able to revert changes quickly and easily across all files.
Synchronization just means I want to have my desktop and laptop in sync.

There are lots of tools that could work... Rsync, svn, cvs, rcs, etc. Each have their merits, but in the end take too much time to maintain or don't provide enough features to be worth the time to set up.

Then I heard glowing reviews about Git and how it's a distributed version control system. So I gave it a shot. Here's a mini tutorial, if everything you've read (or skimmed) sounds good:

The setup: Mac Desktop and Mac Laptop and I mount the HD of one on the other over AFP. This is NOT a tutorial for setting up a git server. There may be plenty of those but that's more than I wanted to accomplish so I didn't even read them. Git is installed by default on Snow Leopard so this is also NOT a tutorial for setting up Git on Mac OS X. This is glorified Rsync with revisions.

1.) Create a Git repository for revisioned files
cd /Volumes/DesktopHD/Sources/tests
git init
git add -a
git commit

Yep, it's really that easy to set up git. At this point, you can track history through the log of commit messages, and roll back as necessary.

2.) Mount the LaptopHD over afp:// by browsing in Finder, or whatever you're used to. This also probably works for iDisk and other transport types but for now, we'll call it LaptopHD.

3.) Clone the repository of tests to the mounted drive
cd /Volumes/LaptopHD/Sources
git clone /Volumes/DesktopHD/Sources/tests tests
cd tests
git fetch

Wow that's pretty easy too.

4.) Add the tests I've already created on the Laptop to the repository
cp -r /Volumes/LaptopHD/Sources/old_tests/* /Volumes/LaptopHD/Sources/tests
git add -a
git commit

Woo I'm invincible!

5.) Then I wanted to push the new files back to the desktop (remember right now I'm at /Volumes/LaptopHD/Sources)
git push ##Don't do this

What the... NOOOOO!!!!!! What have I done!?!?

Only use git push if you are smarter than me, which isn't possible so just don't. The designers put this in by mistake and it's really horrible (I'm just being inflammatory now so somebody will come along and correct me. That's how the internet works; I don't question it.)

First, the correct thing to do in a setup like mine:
5.) Go back to each place that's out of date and pull the changes back
cd /Volumes/DesktopHD/Sources/tests
git pull /Volumes/LaptopHD/Sources/tests/.git

Now the reason git push sucks:
When I did git push, I went back to DesktopHD expecting the files to be there. They weren't so I did a git pull. Nope, files are up to date. I did a git status on the LaptopHD version, everything was checked in. Back on the DesktopHD version I did git status and all my files were in the status and marked for deletion. What??? So I killed that repository, started from scratch by copying files from the LaptopHD and did all the steps again, except with the second step 5 rather than the first.

Searching online, it looks like maybe there's a way to set up a --bare repository and use hooks to automatically forward to your main repository or something. Crap on that. It's easier to understand, "This is a distributed versioning system, you always pull your changes from elsewhere" and with a couple git remote add commands, pulling from multiple sources is pretty painless.

So there's my story. I really like git now, just so long as I don't use git push ever.

Tuesday, June 15, 2010

Kick Scooters

Thu and I got Xootr kick scooters last weekend. They are pretty awesome.

Despite California being so environmental, it's a major pain to ride a bike here. Yep, California, you suck at green. On the road, bikers are lucky to get a lane for themselves. But even then, the severe lack of driving skills scares me off the road. To top it all off, bike racks are super rare. I could take my bike in with me to my appartment I guess, but at the grocery store? restaurants? my office? Not so much.

Where scooters win is their portability. You can ride on the sidewalks and then fold them up and carry them with a shoulder strap.

In high school, having a car was freedom. Now I feel the same way with a kick scooter because I can go further than walking, but I'm free from using oil. With all the anger over BP's fuckup, it's nice to be able to actually do something about it.