Good Software Analogies

One of the most common criticisms of software is that it's buggy, but anyone who's ever written a modicum of software is not in the least bit surprised by this. The layman does not share this understanding, to put it mildly. Since the process of programming, debugging, and shipping is not a readily understandable topic if you've never thought about logical implications to the 4th or 5th degree, one needs a good analogy. Here's mine:

Imagine most everyone has a robot in their home that takes blueprints for any object (a toy, a piano, a house, etc.), can build said object really quickly, but can't make any intuitive decisions. That is, the robot follows the designs on the blueprint exactly, for better or worse.

Most of the time objects come out of the robot just fine, but what if whoever wrote the blueprints didn't think about how his toy design would work when covered in baby slobber? What if the house the robot built was designed for 3 people but 7 people are trying to live in it? What if the blueprints for the desk the robot built didn't account for handicapped people?

Writing software is tantamount to making blueprints for builder robots that people end up making in their own home. When you're writing the blueprints you don't really know how people are going to use your stuff. You might not properly get the Feng Shui right in your house blueprints and people across the country using your blueprints get depressed. You never intend all of this stuff.

The blueprints are the code. The builder robot is your personal computer. The door that doesn't quite close is a bug.

Productivity Rules

I know many, many people out here in Silicon Valley who, despite being extremely bright in some areas, are stupid when it comes to being productive. Young, single males with ambition are incredibly likely to pull long hours and get at worst little sleep, and at best poorly-timed sleep. 

The basic rule of thumb is that If you are pulling > 40 hour weeks for more than a couple of months you're being less productive. "Not me", you say, " I was the smartest kid in my class and I have incredible mental endurance!"

Wrong. Even you, Mr. 1600 SAT, makes worse decisions after working 60 hours a week for a few months. For all the coders out there, think about it like this: How many genious decisions have you made at 3am after working for 15 hours? Now think about how many egregious hacks you wrote at 3am to get something out the door. Compare the two. I thought so.

How to Make Egg Rolls

Egg Rolls are a delicious finger food that are actually quite easy to make, if a little time consuming. Most of your time will be spent hand-rolling, so this is a great thing to make with friends or a date.

Step 1: Make the Egg Roll Mix.
Just follow the instructions on the back of egg roll wrappers that you can find in your grocery store. It's really not much other than "chop up ingredients and stir-fry. Let cool."
  • You can substitute soy sauce for the more-rarely-used fish or oyster sauce.
  • You really do need to use ground pork. I've tried ground beef or turkey and they don't come out very well at all.

Step 2: Rolling the Egg Rolls.
This is the time-intensive step where it's much nicer to have company. Or, if you're like me and you're bored one afternoon while your girlfriend is off traveling you can listen to NPR and do it yourself.

  • Place the wrapper on a cutting board and wet the edges using a brush (this will make the wrapper stick to itself as you roll it up).
  • Place 2 tablespoons of the mix in the center of the egg roll horizontaly from left-to-right.
  • Fold in the left and right corners.
  • Fold up the bottom corner.
  • Roll snugly.

  • After doing this for a while you'll have egg rolls ready for frying.

Step 3: Frying
This part isn't too tricky, but you can burn them pretty easily. 
  1. Heat a frying pan with about 1.5" of oil on a medium/high heat. Let the oil get hot (if it's starting to smoke it's too hot).
  2. Place egg rolls carefully in the pan, cook for around 15 seconds. 
  3. Flip the rolls onto the uncooked side, cook for another 15 seconds
  4. Remove to a second plate. I like to put a paper towel over this plate to soak up some of the oil.

Step 4: Eating.
You can eat the egg rolls as is, but some condiments are often delicious. I've tried mustard and teriyaki sauce but I'm sure anything that would go well with asian food in general would work.

Final note: I learned this from observing my mom while growing up. Thanks, Mom!