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

Airport Extreme and Brother 2170w Setup
Step-by-step fix for pairing a Brother HL-2170W wireless printer with an Apple Airport Extreme when the official setup instructions don't work.
2012.02.01Read →
Minimum Viable Programming
Stop over-engineering your MVP. Minimum viable programming means shipping the ugly hack first and cleaning up code only once it makes money.
2012.01.10Read →
The Wrong Time and Wrong Market (or Failing in the Entertainment Industry)
How I sank $140K over 7 years running an indie record label, why it failed, and the hard lessons on accounting, contracts, and cutting losses early.
2011.12.14Read →
Building an Android Notification Bubble
How to build an iOS-style red notification bubble in Android using an XML drawable and FrameLayout, with no 9-patch images required.
2011.12.02Read →
Android Validation with EditText
Skip the validation dialog box. Android's EditText has a built-in setError method that shows an inline icon and popup message instead.
2011.11.23Read →What’s New in Android Development Slides
Slides from my 'What's New in Android Tablet Development' session at AnDevCon, covering the latest tablet APIs, tools, and SDK changes.
2011.11.07Read →AnDevCon Tablet Programming Workshop Presentation
For those of you who attended todays workshop at AnDevCon II, here is the PDF of the presentation that we covered today. Enjoy!
2011.11.06Read →Android Tablet Programming Class at AnDevCon III
Logistics for my Hands-On Android Tablet Programming class at AnDevCon III: prerequisites, what to install, and what to bring to keep up.
2011.10.26Read →I’m Teaching a Free Android Tablet Programming Class Oct. 25th in AZ
I'm teaching a free, hands-on Android Tablet Programming class October 25th at Gangplank in Arizona -- seats are limited, register only if you're sure.
2011.10.13Read →Android’s Locale Implementation Is Broken
Android devices only ship with a subset of locales installed, so Currency and DateFormat can render wrong or garbled for locales you need.
2011.08.23Read →Android: Centering text between two other Views
Use layout_weight on a middle TextView to spring-load a bullet separator that stays centered between two dynamic-length text views in Android.
2011.08.03Read →Android: Rounded Corners with a Bevel/Drop Shadow
How to give Android layouts rounded corners with a bevel/drop shadow using one XML layer-list drawable instead of many 9-patch images.
2011.08.01Read →