05 7 / 2012

What are you forgetting?

How many projects are you working on right now? 5? 10? Whatever system you use to manage your work, it’s likely filling up. We’re all busy.

Projects and tasks often come to you from external sources: bug reports, partners, a favor for a friend. As your todo list starts to fill up, it’s easy to start seeing yourself as a piece of machinery built to work this list down to the bone.

By always working to reduce todos and never adding them, you don’t get time to think about the work that you’re uniquely positioned to recognize needs (or will need) to get done.

Try sitting down once a week to consider what you’re forgetting:
* Is a project close to launch forgetting about QA?
* Is test coverage company-wide slipping?
* Has it been too long since you caught up with a close friend?
* What will your team work on next month?

Getting work done is great, but make time to check your blind spots.

31 1 / 2012


You’ve been recruiting, doing outreach, interviewing, interviewing more, giving the sell, grabbing drinks, giving the hard sell. Finally, you’ve got them. They’ve agreed to join your startup. Now begins the ever-important task of taking a talented outsider and migrating them to a productive member of the team — onboarding.

There are a few variables in onboarding that can determine how long it will take them to become productive and comfortable.

• Did you know them previously?
• Did some or all of your coworkers know them previously?
• Do they know the tools you use? (the language, the source control)
• Are they new to your business?

If the answer to most of these is yes, onboarding may only take a week or two, otherwise you can expect several weeks and maybe months, depending on the position and job requirements. 

Below are a few key points that have helped me get new engineering team members up to speed. They may not be perfectly applicable to your company, but I think it’s a good general outline

Make them feel welcome
Starting a new job is a very stressful time (duh), so it’s important to make them feel as welcome from the moment they enter. All new employees at foursquare are greeted at their desk with a welcome package containing a foursquare hoodie, pins, dodgeball (of course), and other goodies. 

Once they get settled, do a little meet and greet, and finish some administrivia, they start the important day 1 task: running the build, and making a commit (not all employees do this, but it’s a good goal). The commit can be a small bug fix, or as simple as adding their name to the about page. That way within a few hours of arriving, they’re a contributor. Their name is in Git, we’re already better with them on board.

This point will manifest itself in many different ways. For us it generally means going to lunch with the team, grabbing coffee with @dens, and getting a few drinks. For you it may mean pair programming, or a team offsite. The details and scale don’t matter, what matters is making sure you’re helping build a fun and comfortable atmosphere.

Have a Plan
At the end of day 1 (or sometimes earlier), I like to share a document with them that shows the plan, starting today and ending in a few weeks with them fully up to speed and ready to jump into any project. The system I’ve been in favor of is roughly a 3 week plan:

Week 1: A handful of small bug fixes. 
Things that you haven’t gotten around to and take only a few lines to fix. Preferably scattered throughout the code base, to help them gain familiarity with the layout and structure. Not a lot of deliverables, but enough to feel progress.

Week 2: Big bugs and small features. 
Bugs that are things you may not know how to fix off the top of your head and may take a full day to figure out. At the same time, start on a small project, something that will take roughly 2-3 days. It’s a good turning point when you start working on features instead of just fixing bugs, more progress.

Week 3: Start on a big feature. 
This is the final step where they start working with the code they’ll be with for a while. Hopefully it’s something well defined, but even if it isn’t, it’s a great time to get involved in planning meetings, working with the people in other parts of the company, and gaining independence. 

At the end of the week is a good time to sit down, review all of the work that’s been done and assess where things stand. At this point they’re likely ready to move forward full speed, and you’re ready to start the recruiting process again!

22 1 / 2012

Interactive Historical NYC Maps

The NYPL maps division has done an amazing job digitizing historical maps and atlases (of varying degrees of completion). They provide exports of buildings, districts, POIs, transport and hydrography in ESRI Shapefile, WMS, KML, CSV, GeoRSS. They also provide a url where they host tiles themselves.

This makes it trivial to add these atlases as a layer on any map, I made a demo including 1857, 1916, and 1924 maps that you can play with here (try toggling to layers).

If you’re into this type of thing, consider contributing to their map rectification project


08 1 / 2012

Did You Mean?

I took some time this weekend to hack together a simple suggestion engine called ‘Did You Mean?’. 

Check out the demo

It creates a BK-Tree of words you provide, and compares those words to a query using Levenshtein Distance (edit distance). It’s basic, but useful for small dictionaries of words when you want to let the user know they’ve likely made a typo.


07 1 / 2012

Reading Harder

Over the last few years my reading retention has slowly regressed. I find myself re-reading emails, unable to finish long form articles, and generally skimming anything I set my eyes on. It feels like my brain has taken the way I read twitter and applied it to all text.

So this year I’m focusing on reading harder (term borrowed from @hotdogsladies). More books, more articles, and more focus. I’m paring down the number of people I follow, filtering out email I know I won’t read, and giving text the time and attention required for retention.

20 5 / 2011

Test Accounts

It’s always a good idea to give your test accounts the first name: <script>alert(‘you lose’)</script>

13 4 / 2011

Array length caching

Remember to cache your array lengths when iterating over big arrays (30-50% optimization with my tests in Chrome 12 and Firefox 4)

for(var i = 0, l = bigArray.length; i < l; i++) {
  // do something

10 4 / 2011

The W3C has a great page hosting HTML5 logo resources. Grab a badge for your site, a shirt, or some free stickers and help fight the good fight.


10 4 / 2011

Shady Characters is a stunningly detailed series of articles profiling uncommon punctuation. The first three part series went through the dramatic history of the Pilcrow touching on religon, politics and everything in between.

This week: the Interrobang!?


10 4 / 2011

Back to tumblr

After giving wordpress a fair shot, I’ve decided to come back to tumblr. Not sure if i’ll be porting my old posts over, though currently feeling unlikely.