Baseball is a game of 3s

I noticed last night that baseball is a game of many 3s.

Everyone knows you get 3 strikes and each team gets 3 outs per inning.
But there’s also 3 x 3 innings per game
3 x 3 defensive men are on the field a time
There are 3 x 10 ft between bases
Bases are at 3 x 3 x 10 degrees from each other
Games last about 3 hours
Most series are played in 3s
There are 3 divisions per league
There are 3 x 10 teams in the MLB
There are three levels of minor league teams, the highest being triple A
Each team plays 3 x 3 x 3 x 3 x 2 games per year
Including spring training, players play 3 x 3 months of the year
Babe Ruth, who many consider the best player of all time, wore number 3
If you get a hit in 1/3 of your at bats, you’re doing really well
If your team wins 2/3 of your games, you’re guaranteed to win your division
If your team loses 2/3 of your games, you’re guaranteed to lose your division

Did I miss any?

The Engineer’s Job Search Battle Plan: 8 Simple Steps to a Dream Job

A while ago I wrote about how companies can hire the best engineers. Here’s the other side of that process: how to find your engineering dream job.

Battle of Laxington

Congratulations! Whether you’ve decided it’s time to move on from your current job, you just quit, or you were laid off, you already have a new job – finding your next job! Finding a new job can be more work than having a job. Yeah, the pay sucks, but it can be fun and rewarding in the end. During my last job search, I loved catching up with old friends to find out where they were and met a lot of interesting new people.

Disclaimer: as I noted in my last post, this is written more for engineering jobs where the market is very strong and you may be looking at lots of opportunities and multiple offers. Unfortunately the job market is not so sunny for many other lines of work, so some of the tips here may be less relevant.

Anyway, here’s how to approach your new job.

Step 0: Grieve your last loss

Changing jobs can be very stressful. It can be trying, especially if you didn’t leave your last job on your own terms or it didn’t work out like you had hoped. The first thing you need to do is take some time, grieve for your last job and process the end of it. The last thing you want is to be in an interview and let feelings of anger or sadness come out with a potential future employer. Take a weekend, take a week, take a month, but before you start looking again, make sure you feel closure on your last job.

Step 1: Stock your armory

I can’t fathom a serious job search these days without using LinkedIn. In fact, I used it exclusively as my resume. (For recruiters who insist on a PDF version, there’s an export link.) Fork over $25 a month for LinkedIn Premium to get all the bonus functionality, the best being able to see who’s been looking at your profile. You can’t do that with a PDF or Word resume you’re emailing around.

Update your profile with your latest job details, update details of your previous roles, add any awards, patents and solicit recommendations.

Step 2: Strategize

There are three questions every employer is going ask you, so you want to think hard about them and make sure you know exactly how you’re going to respond.

  • What drives you?

    What kind of work gets you so charged up you can’t sleep at night? What have been your favorite professional moments?

  • Why do you want to work here?

    Given your answer to the previous question, how does a company align (or not) with what you want to do? This will also help you figure out your targets for step 2.

  • Why did you leave your last job?

    This may be the trickiest one, especially if you didn’t leave your last job on great terms. Be honest without being disparaging of yourself or your former employer. Future employers don’t want to hire someone who has a history of bitterly remembering former employers.


Step 3: Pick your targets

Start making a list of potential employers. These may be companies you admire, places where friends work, or even places you’ve worked before. For Boston startups, I found Startups in Boston, BosInno, @ScottKirsner, and Xconomy to be good sources for figuring out who’s hot and who’s hiring. Look for companies that are growing or recently got funding.

At this point, I think it’s good to get organized with a spreadsheet that tracks all the information you’re going to gather on each company. Here’s a template of the one I used. Copy it and tweak it to your needs.

The last set of columns are a bunch of subjective metrics I used to rate each company. While I didn’t simply take the job with the highest score, it did help me rationalize and compare each opportunity.

Step 4: Attack!

It’s time to get yourself out there. Your LinkedIn updates may have already gotten you some bites, but now’s the time to be direct.

You may not want to hit all your companies all at once. Here’s why – in general, the bigger company, the slower their hiring process is going to be. If you apply to a big company and a tiny startup on the same day and you eventually get offers from both, you’ll likely get the offer from the startup way earlier. This puts you in a pickle: do you wait to see if the big company will give you an offer or take the startup’s offer? An offer may have an expiration date on it too, making it more complicated. Now, a company that really wants you will be generous with the expiration or offer to extend it if you need time, but you could still end up with a mismatch in timing.

It’s in your best interest to have as many offers in at the same time as possible. It helps you to compare the offers against each other and negotiate if the one you want is lacking in any way. That said, this is a tricky dance to pull off. Potential employers don’t want to have to compete and they also want you to want them just as much as they want you. So you may not want to volunteer information about what other offers you have or what you’re waiting on. Just as you want companies to respect you, respect them as well, because you want to start off the relationship right with the one you take and keep the door open with the ones you don’t.

Find the resume submission form on each of your target companies’ websites. If you can, try to get referred in through a friend or former colleague at that company via LinkedIn or email. It’s much more likely that you’ll hear back than submitting a faceless website form.

While this is a good start to finding your next job, it’s likely you won’t discover all the companies out there who are hiring or you find interesting. That’s where networking comes in.

Step 5: Infiltrate

Networking is key to building roads into companies and discovering opportunities, especially with small startups that may be hard to find otherwise.

A couple of good ways to meet people are through technical Meetups in your area and joining relevant LinkedIn Groups. Other social networks like Facebook and Twitter may be useful too, but probably less so than Meetup or LinkedIn.

Be sure to stick around after meetups, talk to the speakers, let them know you’re looking for a new opportunity and ask if they know of places where you’d be a good fit.

All of these activities I would consider active networking. It’s also useful to do more passive networking. For example, every once in a while I would post an update to Twitter and/or Facebook regarding a mildly amusing anecdote from my interview process. While it might have seemed that I was just sharing a funny story, I was also reminding people that I was in the market. Several leads came to me from friends and former coworkers who saw a post and pointed me to an opportunity.

Step 6: Engage in hand-to-hand combat

Eventually you’re going to end up in some interviews, either on the phone, in person and likely both.

To get the offer, you’re going to have to perform well in these and the only way to ensure that is to prepare as much as you can. Here’s some concrete activities to complete before each interview:

  • Research the company and make sure you understand their business. Come up with at least one thing (in your opinion) they could do better in case they ask.
  • Look for interview questions previously asked on Glassdoor. If you get one of these questions, consider yourself lucky as a good company will retire a question once it becomes public. But nailing a question because you studied it before hand can’t hurt.
  • Read Programming Interviews Exposed and The Algorithm Design Manual. They’re both good prep work and refreshers on the fundamental computer science principles that you have forgotten since your college courses. If you get asked any of the questions in these books, you’re very lucky. Most top companies will ask more complicated variations of them.

After the interview, follow up with the recruiter or manager to thank them and also make sure they have a reminder in their inbox to get back to you.

Also, make sure to write down some notes about the company. It’s easy to get cloudy on the details of each company once you’ve talked to a few and you don’t want to annoy a company by asking them the same questions again.

Step 7: Emerge victorious

After interviewing, the hardest part may be the waiting. You may get an offer immediately after the interview or it could take weeks. Again, it’s usually a factor of the company size and the layers of management that may need to be involved in a hiring decision. You can use your LinkedIn Premium account to see if your potential employers are still looking at your profile, even if they’re not directly communicating with you.

When you get an offer, make sure you get it in writing and get clarifications on any questions you have. Before you sign anything, make sure you understand

  • Health plan benefits. What’s your cost per paycheck?
  • Dental benefits
  • Vision benefits
  • Who your manager will be
  • Expectations for work travel
  • Vacation time
  • “Normal” working hours
  • Work from home policy
  • Target bonus and how bonuses are funded
  • 401k. Is there matching?
  • Transportation costs and time
  • Any other special perks

You may want to try commuting to a potential employer’s office during the time you’d normally arrive to make sure you understand how much time it will take and work out any public transportation logistics.

Stock options are very important to understand and many privately held companies may not volunteer all the information you need to calculate their value. What you need is the strike price (or a recent strike price), the number of granted options, and the valuation of the company. Be very suspicious of any company that won’t give you the details to figure this out. This information is often closely held, but they should give you what you need. If not, you may be getting screwed.

Once you have all the information you’ve organized, it’s time to make a decision. For decisions like this, I usually have a gut feeling. While the spreadsheet is there as a rational backup, I usually have one or two options I’m really excited about. That should be your choice.

Congratulations on your choice! However, once you start, it’s still not time to relax. Behave as you’re still being interviewed. Good luck!

4 Essential Tips for Hiring the Best Engineers

As I worked my way through my recent job search, I met a lot of people. Many of them were headhunters, corporate recruiters and hiring managers. They all worked differently, but I found the most effective ones had similar qualities.

While I don’t claim to be an amazing engineer, it’s a buyer’s market for engineering job seekers right now and if you want to hire the best talent, here’s some tips and some real examples from my search.


The best companies move fast. That’s not just the hiring folks, but the entire company. The recruiting process is direct reflection on the qualities of your company. By moving fast, you’re showing candidates what it will be like to work there and I don’t know anybody who likes slow-moving companies.

Example: Through LinkedIn, I was put in touch with the CEO of a mid-sized company. Within 2 hours, he had sent my info down to the engineering management and I had an interview scheduled for the next day. Within 24 hours I had a verbal offer. This wowed me.

Anti-Example: I contacted a recruiter at a company. It took him days to respond, but finally I set up a time to have a phone screen with him. After that, he set me up with a 1st round interview. That took a few days. A long period of time went by until I heard back about scheduling a second interview. In the meantime, other recruiters working for the same company reached out to me and asked if I was interested in talking with them, clearly oblivious to my current status. Finally, the 2nd round interview was scheduled. At the end of that round, they said that things went well and they’d  give me an offer the next day. I never heard from them again, even after I followed with them via email. If this is how you run your business, no thanks.


Unless you’re a giant corporation with thousands of positions to fill, you might not immediately see an open job description for any given candidate. But it’s critical that you look at what the candidate can bring and not if they line up with a set of bullet-point qualifications. If you find someone awesome who doesn’t fit your current job descriptions, make a new position for them. Finding people is really hard and it’s crazy try to fit people with all their odd shapes into idealized square holes.

Example: One company I talked to initially told me they didn’t have a position for me. They thought about it a bit and came back to have some initial conversations. While it didn’t work out in the end, I really respected their flexibility and openness. They really saw building a team as a puzzle, not as filling out series of checkboxes.

Anti-Example: I contacted one company because they had an interesting product. Their response was quick and dismissive: “You’re too senior for our current position.” There was no opportunity for discussion of what I was interested in doing or what I could bring to the company. Nor was the door left open for future openings they may have. I would certainly never recommend this company to my friends.


Hiring is an imperfect process. You’re trying to guess at how someone will perform at a job, often one they’ve never done before, using a series of 45-minute interviews. On the other hand, past performance is a great indicator of future performance and your employee referrals have first-hand information on that past performance. Put employee referrals at the top of your priority list!

For capturing candidates who may not know people at your company, just list a email address or allow them to apply via LinkedIn. Keep it simple and easy.

Example: With one company, I reached out to someone I knew there and I was immediately introduced to a recruiter and rushed into a 1st round interview. They solicited detailed feedback from other folks I knew at the company and their feedback had a big role in their decision.

Anti-Example: At one point I heard about a company that sounded interesting, so I went to their web site to find out more. I was confronted with several pages of forms (including salary history and complete references!) all in separate fields. Never mind that most of this information was already readily available on my LinkedIn profile, this was just to get a phone screen. Through some LinkedIn spelunking, I found out that a former coworkers was there, so I sent him an email. He said he would pass me along to a recruiter. The next day, I got a response from him that the recruiter said I had to apply using the website. I don’t think so.


Really, this is about doing what your mother taught you. Be nice, be courteous and timely. Follow up when you say you will. Keep the candidate informed of the process, even if it’s bad news. Don’t waste their time.

You can imagine the good examples here, so I’ll give a bunch of anti-examples:

  • On one phone screen, the first question the manager asked was my salary history. No discussion of what I wanted to do, but just what I meant in terms of money.
  • In one interview loop, I was left alone in a conference room for 10+ minutes between each interviewer while I saw the interviewers wandering by in the hall and chatting.
  • One interviewing manager spent several minutes telling me how much he didn’t like working with one of my former companies and how he never wanted their company to be like that.
  • During one interview, the interviewer stared mostly at his phone and appeared to be texting.

That’s it. Recruiting is everyone’s job and the recruiting process is critical in showing off your company. I don’t care if you have a massage room, ping-pong and free lunches if your recruiting process is slow, inflexible or disrespectful.

In the end, most candidates will make the decision about their next career move based on some gut feeling. If your recruiting process is broken, their guts will not lie.

A new year, a new home page

My home page was getting a bit stale, so I decided to “update” it. Unbelievably, it’s been nearly 20 years since my first web page, so I thought I would go retro with it, but using modern techniques.

Here’s how I did it:

ISINDEX search
This is just a form, using a Google Search restricted to

No FRAME tags here; it uses a div with CSS floats.

Weblog and Twitter
Something you used do with server-side includes can now be done with jQuery and jQuery plugins.

Visitor counter
Inserted with JavaScript, the dial numbers use CSS gradients.

Blinking text
Uses JavaScript to periodically toggle element visibility

Select box navigation
This used to be done with a form submit and a server redirect. Today, it’s a trivial amount of JavaScript.

Small caps
You used to do this with lots of font tags. Today, you can use the CSS font-variant: small-caps.

Thick table borders
There’s no tables in the page. The div uses the border-style: ridge style.

Formerly accomplished with an inline image next to each item, CSS supports this with
list-style-image: url(reddot.gif).

You can see all the CSS in my web10.css file.

The web surely has come a long way in 20 years. I’m sure in another 20, it will be nearly unrecognizable to us today.

Does a SodaStream save you money? Probably not.

We got a SodaStream soda maker several months ago and while I’ve enjoyed using it, I’ve wondered about SodaStream’s claims that it saves you money.

Does it? Probably not, or at least not for a long time.

Let’s assume you buy soda in the most economical way, in 2-liter bottles. You’ll probably pay about $1.50/2 liters. Assuming you buy CO2 refills at $15 and not $30 for a new CO2 bottle and you drink half a liter of soda a day, it will take you 2,376 days or 6.5 years to make back your investment in the SodaStream maker. Wow!


In fact, if you spent less than $1.33/2 liter on soda before, you’ll never make your money back.

However, there are other ways to decrease your cost per liter:

  • Buy a SodaMod, which allows you to attach a paintball CO2 tank which is much more cheaply filled than what SodaStream charges. A similar product is the FreedomOne-PBI.
  • Make your own syrup.
  • Since Bed, Bath and Beyond sells SodaStream supplies, take advantage of all those coupons they send you and buy syrup and CO2 there.
  • Buy one of the cheaper SodaStream models.
There are other reasons to buy a SodaStream, like reducing waste and not having to lug heavy bottles and cans of essentially water to your house, but economically, it’s not likely win.

You can run your own calculations by making a copy of the Google Spreadsheet I used.


How to install a treadmill

Correct Method

  1. Select any treadmill you like.
  2. Cheerfully hand over an additional $200 to have it delivered and installed.
  3. Enjoy a frosty beverage of your choice while a couple of burly men drive up to your house, carry your treadmill down your steps, unpack it and set it up while your children play and laugh nearby.

Incorrect Method

  1. Select a treadmill that weighs more than the combined weight of all adult members of your household, say 350lbs.
  2. Elect to pick it up yourself and feel superior to the suckers who pay $200 to have it delivered.
  3. Pick up the treadmill with vehicle clearly not intended to carry a 7.5ft, 350lb box, say a 1999 Honda CR-V.
  4. Ignore the doubtful looks of the treadmill store guy who helps you get it into the car.
  5. Breathe a sign of relief when it actually fits, hanging several feet out the back window.
  6. Drive home. Back up your car over your lawn to your basement bulkhead.
  7. Attempt to open the basement door, only to realize the deadbolt lock has fallen apart and into the stair area which locked on both ends.
  8. Spend a half hour disassembling the door, removing it from its hinges, and prying it off with a crowbar.
  9. Realize you somehow failed to eat a proper meal all day and are subsisting solely on birthday cake and ice cream.
  10. Slide the treadmill out of the car and down the steps.
  11. Determine that the box is a quarter inch too wide to fit through the doorway.
  12. Tear apart the box and attempt to take out individual pieces, hoping to lighten it.
  13. Surmise that the removed parts weigh less than 20 pounds.
  14. Strain to tilt the torn-apart box on its side so it may fit through the doorway.
  15. Perform all this sometime after usual dinnertime so your kids are overtired and hungry.
  16. Attempt to drag the 300lb treadmill, on its side, down the steps while your children are screaming and clinging to your legs.
  17. Somehow manage to get it down to the floor.
  18. Thank jeebus that it has wheels to move it the rest of the way across the floor.
  19. Reattach your basement door.
  20. Put the pieces of the treadmill together.
  21. Collapse.


Fixing “nested groups detected” when sending mail to Google Groups

I spent a few frustrating evenings recently trying to figure out why sending email from a WordPress site was failing when sending to a Google Group. It worked fine for a very long time, and then suddenly started failing, rejected with the vague message “nested groups detected”. There’s no information from Google about what it considers nested groups and what to do about it.

Eventually I narrowed it down to the “Precedence” header. Apparently, if Google Groups sees this header, it determines this is already being sent through a list and refuses to send it.

The solution was to remove the header and in my case, commenting out a line in the otherwise excellent Subscribe2 WordPress plugin. I commented out this line in class-s2-core.php:

$header['Precedence'] = "list\nList-Id: " . html_entity_decode(get_option('blogname'), ENT_QUOTES) . "";

I posted the solution in the WordPress forum and hopefully the author will add an option for it.

8 ways that watching TV will be different in 2020

Yesterday I finished reading Mike Proulx‘s book, Social TV. It’s a great primer on the past few years of connecting TV to social media. From reading it, you can get a pretty good picture of how you’ll watch TV in a few years. Let’s say 2020 just to be conservative.

Every TV will be wirelessly connected to the internet
This almost goes without saying, but any “TV” you acquire will configure itself to connect to the internet to update itself and stream content from any number of content services. You’ll be able to choose to subscribe to services like Netflix or Hulu, Verizon or Comcast, but it will be based on which service provides you the best content at the best price.

Every TV will be a computer; every computer will be a TV
You’ll be able to watch TV on all your devices, whether it be a phone (they’ll all be smartphones), tablet, laptop (desktops will be gone) or an actual standalone TV. We’ll finally be past the silly licensing issues that allow you watch content on one device, but not another. (See Hulu vs Boxee for an example.) That also means that current TVs will have to get a lot smarter. Manufacturers will stop wasting time on gimmicks like 3D TV and instead install Android or Apple’s iOS directly into their TVs. There will be no need for a set top box or game console because every screen will have a computer inside that is capable of those functions.

Almost all TV will be on-demand
While TV shows may still have an initial airing time, like 8pm on Thursdays, they will be immediately available for watching on any device on-demand thereafter. Live events will still be live (awards shows, breaking news, sports, etc), but most TV watching will be for shows that initially “aired” sometime in the past. Networks will realize that tape delays are subverted by social media and stop using them.

The DVR will disappear
The DVR has always been an interim solution for video on demand. If you can watch any show anytime, anywhere, why would you bother programming a DVR? Instead, your TV will be a lot smarter about presenting you with options on what you should watch. Imaging turning on your screen and being presented with the latest episode of a show you watch regularly, a movie a friend recommended and some other suggestions based on your past viewing history.

Every show will have bonus content that augments the experience
Think Pop-Up Video on steroids. As you’re watching a show, you can either overlay additional information about what’s happening directly on the screen or onto a secondary screen, like a tablet. That content will include facts, polls, quizzes, links to buy items in the show, behind the scenes photos, commentary from your friends, actors and general social media, all synchronized with where you are in the show. People will get very good at consuming both of these streams at once. The current Tower of Babel of different apps and platforms will settle on an HTML5-based standard that will run on any screen.

Remote controls will be obsolete
Remote controls have always been ugly, unintuitive and limited. You’ll control your TV with hand gestures, your voice or a far more intuitive and dynamic interface on your secondary screen. This is already happening with the XBox Kinect and Samsung’s latest TVs.

TV measurement will take into account social data
Today ad buyers and TV networks use services like Neilsen almost as a currency to determine how much to sell their ads for.  These buyers and sellers will have incorporate data about what people are saying about their shows as part of their worth calculation, as determined from measuring how people talk about it on social networks, not just how many people have watched it in the past.

All ads will be personalized
Every ad will be tailored to your interests or at least be customized to show local information, like your local car dealer’s contact information. If multiple people are watching, it will be customized to everyone in the room. Ads will be served dynamically, just like the ads you see on web pages today.

So where are we now?

The most interesting thing about this list is that there are no technical reasons why this couldn’t happen today. It’s all a matter of companies changing their business models to accommodate internet-connected computer/TVs and breaking the dominant model of buying a TV subscription from whoever your local cable company is. To get there, TV networks and show creators need to open up their licensing to on-demand internet viewing.

For an example of the change we’re going to see, let’s take my TV cabinet. It has 4 internet-connected devices in it right now:

  • A DVR that’s good at recording shows and watching live TV
  • A Wii that’s good at playing games
  • A WD Live box that plays video files and streams from services like Netflix
  • A Pioneer receiver that amplifies sound and switches between the other devices

Of course, my TV can be connected to the internet too, but I don’t bother leaving it connected, for the same reason I don’t watch Netflix on my Wii – it kinda works, but it’s terrible. All of these current devices do one thing really well and do everything else terribly. With a computer built into the TV, all of them become useless except perhaps for the receiver if my TV’s speakers aren’t great.

Interestingly, Apple seems to be in the best position to lead this market change. They already make the small-screen devices like the iPhone, iPad and laptops. Those devices already play games, video files and streaming services. All they need is a big screen version that can also show live TV. And that’s exactly what’s rumored to be coming out at some point.

I pay about $70/month today for Verizon FiOS TV for only one reason – it’s the only way I can watch Red Sox games live. While provides a service that would allow me to watch games on any device, I cannot watch in Boston because of archaic licensing restrictions designed to preserve the existing cable subscription business models. As soon as that changes (I’m not holding my breath), I’ll gladly pay for and only the other internet streaming services I really want.

I can’t wait.