Hi. I'm Mike.

I make apps for web and mobile. I want to use those skills to solve your business problems.

I've been building software professionally for nearly ten years, at places like Pivotal and the MIT Media Lab and working on products like Words With Friends, Timehop, and Etsy. I mostly work on rich web apps, native iOS apps, and custom hardware.

If you're interested in working together, shoot me an email at [email protected].

What I Do

Build rapid prototypes and MVPs. Whether you know what needs to be built or are still exploring a possibility space, I can help get you get your product to a v1 as quickly as possible. The work I do often spans the whole spectrum from design to product to full-stack development. I have particular expertise in prototyping novel interfaces and interactions in cross-platform JavaScript, most notably those taking advantage of smartphone data sensors (e.g. geolocation and motion).

Write high-quality, sustainable code. Need an extra hand on your app? I can serve as staff augmentation to build out new functionality quickly and robustly, or help whip your more troublesome codebase into shape. I also have experience mentoring clients on engineering and product process, aiding adoption of techniques like test-driven development and pair programming.

Make playful things. I make games and toys with novel interaction methods, particularly experiences combining the digital and the physical. My work has been featured everywhere from alt.ctrl.GDC and IndieCade (as a finalist) to the Smithsonian Museum of Art and NPR's All Things Considered. While at the MIT Media Lab, my research (in collaboration with the Metropolitan Museum of Art and a Pulitzer-nominated playwright) focused on using fiction to connect people to real-world spaces. Check out my portfolio for examples.

Who I've Worked For

Some of my former clients and employers include Cover, Electric Objects, Etsy, Lore, Rotunda Software, SF Playhouse, Sensible Object, Timehop, XO Group, Zulip (acquired by Dropbox), and Zynga. I've worked on projects like:

  • Voice Originals / When In Rome: Design and development for tabletop games augmented with Amazon Alexa
  • Twenty Day Stranger: Design and development in collaboration with the MIT Media Lab and the Dalai Lama Center for Transformative Ethics and Values.
  • Electric Objects: I built the original pre-release iOS app that went out to Kickstarter backers
  • Timehop: I led development, from initial design prototypes to v1 on the app store, of the original Timehop iOS app.
  • Words With Friends: I helped launch the Facebook HTML5 version of the game, and built/maintained the mobile HTML5 port.

This is on top of a rich portfolio of personal projects and commercial products, ranging from a location-aware caffeine-tracking app to one of the most popular third-party NYC bikeshare apps to a game played on a 90-year-old telephone switchboard. See my portfolio for more info.

As a writer and speaker, I've contributed for popular iOS publications such as NSHipster and objc.io. My site Fucking Block Syntax is one of relatively few external community documentation resources taught internally in Apple training courses.

As an open-source contributor, I regularly contribute to impactful OSS projects such as CocoaPods. Projects of my own, such as IntentKit, are used by thousands of developers in the iOS and web dev communities. Most recently, I've been Twitch-streaming live development of a domain specific language and JS runtime engine for interactive narrative in AR/MR. See my GitHub profile for more.

How I Work

I use whatever tools are appropriate for the job. On mobile, this usually means native Swift (or Obj-C) code; on the web, Rails or Node on the back-end and modern JS technologies such as React on the front-end. In general, I:

Deliver working software. Putting a flawed prototype in the hands of real users answers questions that user interviews or low-fidelity testing often can't. I deliver working software early and often.

Sketch directly in code. A tight feedback loop for iterating quickly is easiest when working in software rather than static artifacts. When doing design work, I prefer experimenting straight in code.

Measure, but only to a point. I've worked in metrics-driven environments. I once increased installs 40% on a Facebook game with 4 million DAU in a single A/B test. But data-driven design that can only take you so far. Knowing how and what to test can make your product better; knowing when to rely on intuition instead of numbers is just as important.

Seek active collaboration. Talking about "my work" vs "your work" gets in the way of building the best possible product. I believe the best work comes from tight-knit, ego-less collaboration.

How We Can Work Together

Shoot me an email at [email protected] and we can take it from there.