Notes

I’ve been publishing these for over 5 years.

2025

Building Chroma for Swift – Sep 5
How I built Chroma Swift, a Swift package that brings Chroma's vector retrieval to iOS and macOS — bridging its Rust core to Swift with local MLX embeddings, on-device storage, and cloud sync.
String Obfuscation in Swift Apps – Aug 25
In your app, you may run into times where you want to obfuscate the content of sensitive strings. In the case of an app that leverages AI by making …
TiktokenSwift – Aug 14
TiktokenSwift, an open-source native Swift wrapper for OpenAI's tiktoken tokenizer — an FFI bridge bringing GPT-3.5/4/4o tokenization to iOS and macOS apps.

2024

Working with Transformation Matrices in Swift – Sep 9
An intuitive guide to 4×4 transformation matrices in Swift — how their components control the scale, rotation, and position of 3D objects, with a visual demo app.
Working with the Opus Audio Codec in Swift – Aug 26
How to capture microphone audio on iOS, encode it with the Opus codec, and decode it back for playback — a guide to low-latency audio for VoIP and messaging apps.
Freelancing Tactics – Apr 3
Wanted to share some thoughts on lessons learned from doing freelance for the past few years. Several of these are lessons I’ve learned the hard way - …

2023

Designing for AI Notes – Dec 12
Notes from a Designing-for-AI panel (Notion, Adept, Slack, Hex) on weaving AI into real product interfaces — surfacing signal, designing trust, and the open problems in AI UX.
Keeping Time in San Francisco – Oct 21
I moved to San Francisco at the end of a cycle. The first few months I lived here, someone told me that you have to be careful with seasons in here. …
Thoughts on AI Hardware – Oct 4
There’s been a flurry of recent activity around AI hardware recently - from Humane’s runway debut to the rumoured partnership between OpenAI and Jony …
The Coming of Local LLMs – Mar 23
Why running language models locally matters for privacy, latency, and resilience — and how llama.cpp's 2023 breakthroughs put LLMs on M1 Macs, a Pixel 6, a Raspberry Pi, and an iPhone.
LLM Powered Assistants for Complex Interfaces – Feb 26
Why a text box isn't enough: an argument for LLM-powered, interface-aware assistants that help users operate complex software, instead of replacing the UI with chat.
Angel Investing Notes – Feb 7
For the past year or so, I’ve been putting small checks into various startups. A couple of friends simultaneously asked me recently for advice on what …

2022

Notes from Functional Swift – Nov 26
These are my notes from objc.io’s Functional Swift book. For a recent proejct, I’ve had to dive into a codebase that heavily makes use of functional …
Affine Transforms in iOS for Fun and Profit - Guest Post – Aug 2
Guest post from Warren Moore Imagine we want to build an iOS app that allows us to select regions of an image. These regions might be selected for …
Not Everything is an OS! – Jun 6
A pushback against tech's habit of calling every product "an OS for X" — what an operating system actually is, and why the metaphor is usually wrong.
Push Notifications and The Tyrany of Stolen Attention – May 2
It’s been said before that not building payment rails into the web browser was the original sin of the internet era. The ability to send arbitrary …
Distributing Frameworks via CocoaPods – Apr 20
If you’re developing an iOS SDK that you want to be able to license and distribute to customers via CocoaPods, but don’t want to be able to have your …
The Causes of Latency in Computing Systems, and Why Exactly It Frustrates Us – Apr 6
One of the most frustrating experiences about using computers is when you try to do something, and the system freezes up or is otherwise slow. This is …

2021

Notes - The New Typography – Nov 28
I recently finished reading Jan Tshichold’s “The New Typography”. Tshichold was a typographer and teacher who wrote this work in 1928 Berlin. He was …
Working with Server-Sent Events in Swift – Nov 16
In most mobile applications that work with networked data, standard HTTP GET requests are used to fetch the data from the server that you want to …
A Personal History of Visual Programming Environments – Nov 13
How visual programming environments like Max, Pure Data, and Quartz Composer pulled me into software — a personal history of node-based tools for making sound and visuals.
Re-Visiting Old Work - SOLI Sketches – Oct 30
A few years ago, I was a participant in Google ATAP’s Project Soli Alpha Developer program. The program gave access to early Soli hardware; a mm-wave …
Some Thoughts on Interfaces – Oct 24
The way we’ve interacted with computers has evolved considerably - from the early days of punch cards fed into a giant, room sized machine to the …
Memo - Roboflow – Feb 1
Company Overview Roboflow is a feature-rich platform for working with computer vision ML models. Roboflow makes it possible for non computer-vision …
Some Resources For Learning About HCI – Jan 22
I was recently asked what books or other resources to check out to learn more about the field of Human-Computer Interaction, and thought the best way …
Video Tools and Interfaces: Perspectives From Adobe Research – Jan 11
I recently attended an online seminar hosted by Mira Dontcheva of Adobe Research. Mira is a principal scientist and research manager working in …

2020

Thoughts on Projects Never Finished – Sep 22
Something that’s been on my mind a lot this year in relation to my work is that of unfinished projects. I know that starting and not finishing …
Objective-C Review for Swift Developers – Jun 26
I’ve been interviewing for new positions recently, and for one of the roles I interviewed for; was told it would be a good job to brush up on my …
Why Writing Should be Part of Your Team's Development Culture – Jun 8
Writing things down is the best way to prevent common knowledge around a team’s development processes from being misremembered or miscommunicated. …
Project Soli & the Coming Use of Radar in Human-Machine Interfaces – Apr 7
An overview of millimeter-wave radar as a human-computer interface — what Project Soli enables, how it reached the Pixel 4, and why radar-based gesture sensing matters for HCI.

2019

Classification of Sound Files on iOS with the SoundAnalysis Framework and ESC-10 CoreML Model – Oct 29
Earlier this year, Apple introduced the SoundAnalysis framework, enabling apps to “analyze streamed and file-based audio to classify it as a …
Machine Learning Development on Apple Platforms – Oct 14
An overview of how machine learning fits into the Apple developer ecosystem — Core ML, Create ML, and on-device inference — and how they map to the broader ML landscape.
Things a First Time PM Should Know About iOS Development – Sep 27
This post is a modification of some notes I wrote for a friend, who was recently hired for their first Project Management position at a startup that …

2017

Machine-Learning Powered Gesture Recognition on iOS – Oct 7
It’s almost hard not to be reading about machine learning these days — and that trend will only increase. Machine learning is opening up powerful new …
Jazz, Gestures, and Open-Source - Why & How I Learned to Code – Oct 3
Inspired by a conversation with Diana Berlin, I wrote about what motivates me as a technologist, and the personal story behind why and how I learned …
Integrating Arduino-Bluetooth Sensors with iOS – Sep 5
One area that I’ve been exploring recently is Bluetooth communication between sensor-circuits and iOS apps. I wanted to share one of these studies, …
Integrating the GRT into an iPhone Project – Aug 29
In this blog post, I’ll show you to add the Gesture Recognition Toolkit to an iPhone app. Created by Nick GIllian while he was a post-doc at MIT, the …
Real-Time Data Teceiving and Rendering in Processing – Aug 21
I wanted to talk a little bit about one of the technical challenges I had faced while writing the Processing receiver sketches for the Touché …
Touché, and Water as an Interface – Aug 15
After experimenting with learning how Touché could be used to interact with plants, I wanted to see how I could use it to interact with water. In the …
Talking to Plants: Touché Experiments – Aug 4
As I mentioned in a previous post, I was really pleased to see that the ESP-Sensors project had included code for working with a circuit based on …
Tools for Machine Learning and Sensor Inputs for Gesture Recognition – Jun 6
The past several years have seen an explosion in machine learning, including in creative contexts - everything from hallucinating puppyslugs, to …

2016

EYEO 2016: Observations on Toolmaking – Jun 13
I’m writing this having returned from the 2016 EYEO Festival, a gathering of creative technologists, designers, and artists from all over the world. …
Participating in the SOLI Alpha Developer Program – May 23
Last year, Google announced that they would be accepting accepting applications from developers to be part of the Project SOLI Alpha Developer …