Archive
November 2026
October 2026
- Redacting a PDF So the Text Is Really Gone: Rebuilding Pages with pdf.js and pdf-lib, Then Checking the Result
- Generating Swift Codable Types from JSON in the Browser: Number Literals, Optional Merging and the convertFromSnakeCase Rules
- Background Removal in the Browser: U2-Net on ONNX Runtime Web, a Zoomed Second Pass and a Guided-Filter Matte
- Animating Algorithms in SwiftUI: A Step-Recorder Pattern for Visualising Sorts, Searches and Graphs
- Building a Chromatic Guitar Tuner on iOS: Real-Time Pitch Detection with AVAudioEngine and Accelerate
- Building a Hashtag Copier for iOS: Clean Tags, Editable Lists, Clipboard Privacy and Instagram's New Five-Hashtag Limit
- Building a Live Temple Darshan App for iOS: HLS Streaming, Picture-in-Picture, Time-Zone-Correct Aarti Reminders and Notification Actions
- Building a Live iOS Component Catalogue: UIKit and SwiftUI Side by Side, Real Demos, and Code Snippets That Don't Rot
- Building a Low-Latency Virtual Piano and Drum Kit on iOS with AVAudioEngine
- Building a Real-Time Mic-to-Speaker App on iOS with AVAudioEngine
- Building a Low-Latency Virtual Piano and Drum Kit on iOS with AVAudioEngine
- Building a Real-Time Mic-to-Speaker App on iOS with AVAudioEngine
- Building a Tap-to-Match Marble Game with SpriteKit and SwiftUI: Physics, Cluster Matching, Timers, Lives and Power-Ups
- Building an AdMob Earnings Dashboard for iOS: Google OAuth with PKCE, the AdMob Reporting API, Pacific-Time 'Today', and Offline Caching
- Building an Offline Quotes App in SwiftUI: a 50,000-Quote Library, a Daily Quote Without a Server, Honest Streaks and Share-as-Image
- Building an Offline eBook Reader for iOS: Downloads, Typography Settings, Reading Progress That Survives Font Changes, and Highlights in the iOS 26 Text APIs
- Building an Offline-First Bible Reader on iOS: Bundled SQLite, Full-Text Search and iCloud-Synced Notes
- Convert-As-You-Type Currency Conversion in Swift: Decimal Maths, Cached Rates and Locale-Aware Formatting
- Drag-to-Connect and Game Center Leaderboards in a SwiftUI Puzzle Game, Updated for iOS 26
- From Barcode to PDF: Building a Private, Offline Medication Tracker with VisionKit, WidgetKit and PDFKit
- Medication Reminders That Actually Fire: Local Notifications, the 64-Notification Limit and Supply Math
- Shipping a 4K Wallpaper App Without Running Out of Memory: ImageIO Downsampling, Core Image Blur and Add-Only Photos Access
- Stop Hand-Rolling Unit Conversions: Foundation's Measurement, Dimension and MeasurementFormatter in Practice
- Text Plus Audio, Fully Offline: Building a Prayer App with AVAudioPlayer and Lock-Screen Controls
- The Device Side of APNs: Building a Push Notification Test Client in Swift
- The Sending Side of APNs: A Mac Push Tester with Keychain Certificates, URLSession Client Auth and HTTP/2
- Tic Tac Toe in SwiftUI, Done Properly: Value-Type Game State, Win Detection and an Unbeatable Minimax Opponent
November 2024
September 2024
March 2023
January 2023
November 2022
July 2022
April 2022
January 2022
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
April 2021
March 2021
February 2021
September 2020
May 2020
January 2020
December 2019
July 2019
June 2019
May 2019
April 2019
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
- Masterless
- A world awaits
- Time is patient
- Visitors
- Bye bye
- Lethargy
- An old friend
- Resourceful
- Hardcoded
- Uncertainly Free
- Licenses are the death of freedom
- A definition of freedom
- A React Native tutorial
- Zzzzz...
- Meticulously Explicit
- You can be made to believe
- No Competiton
- Lossless Writing
- Launch
- The consumer isn’t stupid
- Melted
- The solution to fake news is more fake news
- Problem solver
- Win by one
- Fond Contempt
- Pure Capitalism
- Thoughtful
January 2018
- Spinning
- Write everything down
- I'll give today 2 stars
- Proof of work
- The Influence Multiplier
- Chaos. Pure chaos.
- Problem = solution
- Wildcard schedule
- Ideas prison
- The mere act of observing
- One thing a day
- The Great Shift
- Sorry, nothing today
- Hazy
- Clarity
- Don't do something every day
- The God Move
- What's your axiom?
- The flower and the bee
- When you have to, you will
- Chip Away
- The Last One Percent
- Easy
- Joint Pain
- What if dreams are...
- 2.1 Progress Update
- Pricing cannot be an afterthought
- There's no such thing as app ideas
- The story progresses
- The same person
- Loosened
December 2017
- I spread fake news today
- The myth of telling people about your goals
- @ing people
- Layer code instead of modifying in place
- When did stocks become boring?
- Daily Routine
- When to write
- Christmas Eve Worklog
- Unprofitable Days
- The first four hours
- Get into it
- Do nothing
- Some marketing advice
- All of man's problems
- The mind is a wild place.
- 10,000 hours is way too many hours
- Things I'm exploring
- The human function is to want
- Journal Entry #56
- Objectively Difficult
- I've gotten stupider with time
- Be Intelligent For Your Users
- Not everything is a complex problem
- You’ll get there faster if you slow down
- Growth Articles That Make You Feel Small
- Be absolutely resolute in what you do
- Things vs. People
- Productivity of the soul
- Never ever play the What If game.
- Immediately do the thing that scares you. Immediately.
- 100% chance of failure
November 2017
- Why is success scary?
- I enjoy struggling too much
- What is true, and what is beautiful.
- Life doesn't like to be observed
- When you're stuck, bash things together.
- A vision for how life should be
- Of the ground, and of the Sun
- The Courage That I Lack
- Why You're Resistant to Being Productive
- A class of internet-developing humans
- The Capitalism Squeeze (or, No One's Happy)
- Giving fate a chance to intervene
- Reality optimizes for the whole, not just you.
- Memories of Winter
- How does the universe look to nothing?
- A Photograph of the Mind
- The Romance of Another's Life
- Don't mistake stress for an existential crisis
- Is Nature Intelligent?
- Code Me
- How To Leave App Reviews Like A Decent Person
- PSA: Add dir="auto" to your inputs and textareas.
- When nothing happens
- Save yourself from Daylight Saving
- Do Everyday
- I'm glad I'm not doing hardware
- Post-Human
- The Secret Life of Software Bugs
- I'm not entirely sure you exist.
- Stop changing your homepage
October 2017
- Don't build features you can't afford to maintain
- Build a Business, not an App
- Stop Waiting
- You could be anything
- I don't know, a million times
- You should quit your job.
- How To Destroy A Company
- I've seen heaven. And it's written in JavaScript.
- If doing something wags your tail, keep doing it
- A falling tree doesn't make a sound
- The universe is lazy-loaded
- I hate marketing
- Niceness happens in pockets