I strive to build things that compound. New platforms taking shape, architecture that opens markets, teams that punch above their weight — making the technical bet make sense to the business. I started when the iPhone was new and built a career on what came next. AI is poised to change how we build software more than anything since. It's big, it's undefined, and it's going to be messy, but turning chaos into clarity is where I do my best work.

18 Oct 2011

Xcode Archives – What a Buncha Jerks

Why your Xcode archive won’t validate and the one build setting that fixes it. If your static libraries are sneaking into the archive, ‘Skip Install = YES’ is the magic toggle you need.

Xcode Archives – What a Buncha Jerks

5 Oct 2011

Mistakes Were Made: Integral Bounds

Non-integral CALayer bounds don’t just look blurry — they actually chop off pixels. A forensic look at CATextLayer backing stores, with screenshots and sample code to prove it.

Mistakes Were Made: Integral Bounds

30 Sep 2011

Mistakes Were Made: Description Isn’t Enough

Turns out po calls debugDescription, not description. Oops. A correction to an earlier blog post, with the fix that keeps CALayer subclasses from hijacking your custom output.

21 Sep 2011

All in the Timing: Keeping Track of Time Passed on iOS

Why your freemium game’s clock is so easy to cheat, and what you can (maybe) do about it. A deep dive into absolute vs. relative time on iOS, and a hybrid server-based approach to keep cheaters honest.

7 Sep 2011

CFTree Is Leaking It’s Children

CFTree’s docs say releasing the root destroys its children. The docs lie. A late-night debugging adventure with proof via Instruments, plus a manual teardown workaround.

29 Aug 2011

CALayer Internals: Contents

Why CALayer’s contents property is typed as id, and the neat trick that makes possible. Spoiler: you can clone a layer’s contents — even a CABackingStore — without ever touching a CGImageRef.

24 Aug 2011

CALayer’s Parallel Universe

The view on screen isn’t the view your code talks to. Here’s what Core Animation is really doing. Learn about the model/presentation layer split and how to use presentationLayer to animate from a view’s actual on-screen position.

22 Aug 2011

Integers in Your Collections (NSNumber’s not my friend)

Skip NSNumber and use Core Foundation to store integers in collections, 100x faster. A deep dive into CFArray and CFDictionary callbacks that makes the whole thing surprisingly painless.

15 Aug 2011

Quick Tip: Drawing Right Side Up With Core Text

Why Core Text draws everything upside down on iOS and how to fix it. A quick walkthrough of context transforms, text matrices, and why CGContextSetTextMatrix alone won’t save you.

1 Aug 2011

Mistakes Were Made: Initialize Your Locals

An uninitialized float worked fine in debug and shipped a bug to the App Store. The fix is a compiler warning you should turn on right now — plus a lesson in why zeroing your locals matters.

27 Jul 2011

CALayers v. CGLayers, or, Which Layer, Player?

CALayer and CGLayer sound related. They’re not. Here’s why you should ignore CGLayer on iOS. A quick breakdown of what each layer type actually does and why CGLayer’s desktop advantages don’t carry over.

26 Jul 2011

(More) Descriptive Logging

Override description on your classes and stop staring at memory addresses in the console. A beginner-friendly walkthrough of making NSLog and GDB actually useful for your custom objects.

25 Jul 2011

Natural Scrolling is Natural

Lion’s reversed scrolling isn’t broken — you’re just thinking about it wrong. A history of scroll wheels, broken metaphors, and why moving the content instead of the scrollbar actually makes sense.

14 Dec 2010

Why The Best Developers Do Backflips

In 2010, Forbes profiled MeLLmo and its culture of hiring athletes and risk-takers. I was the centerpiece example — Senior Software Developer by day, professional jet skier on the side.

Why The Best Developers Do Backflips Why The Best Developers Do Backflips Why The Best Developers Do Backflips

8 Jun 2009

WWDC and PegJump

Spotting your own app icon in the Apple Store window, heading into the WWDC keynote, and the eternal struggle with App Store reviews.

WWDC and PegJump WWDC and PegJump WWDC and PegJump WWDC and PegJump WWDC and PegJump WWDC and PegJump WWDC and PegJump

19 May 2009

The Mellmo Days

Beer floats, Guinness ice cream, custom Adidas, a barista after launch, and CAKE at the WWDC beer bash. Startup life at Mellmo was something else.

The Mellmo Days The Mellmo Days The Mellmo Days The Mellmo Days The Mellmo Days The Mellmo Days The Mellmo Days The Mellmo Days The Mellmo Days The Mellmo Days The Mellmo Days The Mellmo Days The Mellmo Days The Mellmo Days The Mellmo Days The Mellmo Days The Mellmo Days The Mellmo Days The Mellmo Days

7 Apr 2009

Jetski Days

Lowering skis down cliffs, prepping for the world tour in France, and discovering why the ski wasn’t revving out. The freeriding life circa 2009.

Jetski Days Jetski Days Jetski Days Jetski Days Jetski Days Jetski Days

22 Jan 2009

The Never Ending Rehab

Two houses, one sabbatical year of swinging hammers, and lessons learned in floors, kitchens, caulk, and lumber prices.

The Never Ending Rehab The Never Ending Rehab The Never Ending Rehab The Never Ending Rehab The Never Ending Rehab The Never Ending Rehab The Never Ending Rehab The Never Ending Rehab The Never Ending Rehab The Never Ending Rehab The Never Ending Rehab The Never Ending Rehab The Never Ending Rehab The Never Ending Rehab The Never Ending Rehab The Never Ending Rehab The Never Ending Rehab The Never Ending Rehab The Never Ending Rehab The Never Ending Rehab The Never Ending Rehab The Never Ending Rehab The Never Ending Rehab The Never Ending Rehab The Never Ending Rehab The Never Ending Rehab The Never Ending Rehab The Never Ending Rehab The Never Ending Rehab The Never Ending Rehab The Never Ending Rehab

18 Aug 2008

Merlot the Weimaraner

A decade and a half of life with Weimaraners — from a young guy in the military picking up a puppy named Merlot, through fatherhood, loss, and eventually two new goofy grays named Gadget and Luna.

Merlot the Weimaraner Merlot the Weimaraner Merlot the Weimaraner Merlot the Weimaraner Merlot the Weimaraner Merlot the Weimaraner Merlot the Weimaraner Merlot the Weimaraner Merlot the Weimaraner Merlot the Weimaraner Merlot the Weimaraner Merlot the Weimaraner Merlot the Weimaraner Merlot the Weimaraner Merlot the Weimaraner Merlot the Weimaraner Merlot the Weimaraner Merlot the Weimaraner Merlot the Weimaraner Merlot the Weimaraner Merlot the Weimaraner Merlot the Weimaraner Merlot the Weimaraner Merlot the Weimaraner Merlot the Weimaraner Merlot the Weimaraner Merlot the Weimaraner Merlot the Weimaraner Merlot the Weimaraner Merlot the Weimaraner Merlot the Weimaraner Merlot the Weimaraner Merlot the Weimaraner Merlot the Weimaraner Merlot the Weimaraner Merlot the Weimaraner Merlot the Weimaraner Merlot the Weimaraner Merlot the Weimaraner Merlot the Weimaraner

11 Jul 2008

The Twitpic Archive

A time capsule of photos from 2008–2012 recovered from the now-defunct twitpic.com — dogs, sunsets, Datsuns, cake pigs, and the early iPhone era.

The Twitpic Archive The Twitpic Archive The Twitpic Archive The Twitpic Archive The Twitpic Archive The Twitpic Archive The Twitpic Archive The Twitpic Archive The Twitpic Archive The Twitpic Archive The Twitpic Archive The Twitpic Archive The Twitpic Archive The Twitpic Archive The Twitpic Archive The Twitpic Archive The Twitpic Archive The Twitpic Archive The Twitpic Archive The Twitpic Archive The Twitpic Archive The Twitpic Archive The Twitpic Archive The Twitpic Archive The Twitpic Archive The Twitpic Archive The Twitpic Archive The Twitpic Archive The Twitpic Archive The Twitpic Archive The Twitpic Archive The Twitpic Archive The Twitpic Archive The Twitpic Archive The Twitpic Archive The Twitpic Archive The Twitpic Archive The Twitpic Archive The Twitpic Archive The Twitpic Archive The Twitpic Archive The Twitpic Archive