Writing
Articles
Essays on thinking clearly, working for yourself, and doing real work while AI rewrites the rules. Two decades of them.

You Are Not Your Creations
A story from my Groupon days: A/B testing killed a feature I'd poured two months into, and it taught me to stop being emotionally attached to my code.
2020.11.10Read →
Why Mobile is Not the Future …
Why I think the web browser, not native mobile apps, is the real future platform, and why even the Gmail app is mostly just a WebView.
2020.11.02Read →
Freehold Township Logo
Couldn't find a vector version of the Freehold Township, NJ seal online, so I made one, free to download in PNG, JPG, AI, and SVG.
2020.10.06Read →
Code Comments
My rule for code comments: refactor confusing code first, and when you can't, document the why, not the how - the code already explains that.
2019.10.25Read →
Dagger Open JDK Version Mismatch
Fixing 'not a valid name: <set-?>Provider' in Android Studio - it's a JDK version mismatch between your terminal and Android Studio.
2019.10.25Read →
How To Fix: Jest Did Not Exit
Jest hanging after your test run finishes? It's probably an open Knex connection, destroy it in afterAll() and the hang goes away.
2019.10.23Read →
Fix: Deploying Docker Instances to AWS Elastic Beanstalk without Default VPC
Docker on Elastic Beanstalk failing because your old AWS account has no default VPC? Here's how to get AWS to convert you from EC2-Classic to VPC.
2019.08.21Read →
Flutter Just Might Work
After 11 years of Android dev and testing React Native, Xamarin, and Kotlin Multiplatform, here's why Flutter is the cross-platform bet I'd make.
2019.05.23Read →
What Blog Platform Should I Use?
Medium, WordPress, Ghost, or a static site generator? A blunt comparison of blogging platforms, and why WordPress still wins for most writers.
2019.05.09Read →
Podcast Equipment and Software
Our full podcasting gear guide: the mics and interfaces we use on Fragmented, a travel rig, fixing room echo, and Auphonic post-production.
2019.04.28Read →
You Need a Blog
Why you need to blog: it landed me a contract that turned into an Android book deal, all because a stranger found my blog through a Google search.
2019.03.18Read →
That One Person
My rule for talks, blog posts, and podcasts: if it genuinely helps just one person, it was worth doing, regardless of audience size.
2019.02.27Read →