Writing on software engineering, AI, and building products.

Technical articles, random musings, and reflections on programming, architecture, and product development, collected in chronological order.

User Experience Is No Longer Just for Users

As AI agents become capable collaborators, modern software increasingly needs to be legible to both humans and agents.

Reflections
aiuser experienceagent experiencecollaboration

Beyond RAG: Agentic Context Construction

A look at how coding agents reveal a different abstraction for RAG: constructing context through navigation, iteration, and tool use.

Artificial Intelligence
AIRAGAgents

Announcing @taskade/temporal-parser

@taskade/temporal-parser brings a real lexer and parser to ISO 8601, RFC 3339, and IXDTF in TypeScript.

Web Development
TypeScriptISO 8601RFC 3339IXDTFParserOpen Source

How to Stop iCloud Calendar Invite Spams

Apple’s iOS and macOS users have been receive a lot of iCloud Calendar invite spams, here’s how to stop it.

iOS Development

The Bitcoin Experiment

Reflections on Bitcoin as the greatest economic and social experiment of the 21st century, exploring trust in financial systems and the evolution of currency.

Finance & Education

Highlight with Gesture Recognizer

Tap gesture can't highlight a view on touch-down. Learn the UIGestureRecognizer state machine (began, changed, ended, cancelled) and use a long-press gesture to make any view behave like a button.

iOS Development

The Many First Years

A reflection on Kickstarter's journey and the nine years of persistence it took to bring the platform to life.

Reflections

Status Bar Style Remains Unchanged

Status bar style won't change when you push or present a view controller modally? Checklist: override preferredStatusBarStyle and set modalPresentationCapturesStatusBarAppearance for custom/non-fullscreen presentations.

iOS Development

Shit Programmers Get Into

Reflections on challenging development situations inspired by Patrick Wyatt's Starcraft development stories. Exploring ridiculous deadlines, groggy programmers, and technical debt.

Software Engineering
patrick wyattstarcraftdeep questgame development

Quote from Doug McIlroy

Doug McIlroy's 1964 vision of coupling programs like garden hoses, which led to the invention of Unix pipes.

Software Engineering
doug mcilroyunix pipesquote

Walking the Talk

Apple's commitment to accessibility and Jonathan Ive's philosophy on care in product design. Featuring how blind users interact with Instagram on iPhone.

Reflections
applestephen van egmondjonathan iveiphoneinstagramblind

Reflect 2011

Some notable milestones I have achieved in the year 2011.

Reflections

The Trap of viewDidUnload

viewDidUnload is not the counterpart to viewDidLoad and isn't called on dealloc — so you leak views. Here's what it actually does and why Apple deprecated it in iOS 6.

iOS Development
iosuiviewcontroller

Keeping Index Within Bounds

A simple, robust approach to managing list indices using clamping. Learn how to prevent out-of-bounds errors with minimal code.

iOS Development

Recommendation: Yale Financial Market Course

A review of Robert Shiller's Yale Financial Market lectures, freely available on iTunes. An excellent resource for anyone interested in finance, from novices to experts.

Finance & Education