What I use
The tools behind my work, and what each one is for. Clients don't need to know any of this, but people sometimes ask.
Apple apps
- Xcode. Apple's app for building iPhone, iPad, Watch, Mac and Vision Pro apps.
- Swift 6 and SwiftUI. The language and screen framework for every new app I write. I still read Objective-C and UIKit for older projects.
- SwiftData, Core Data and CloudKit. Saving data on the device and syncing it through iCloud, including sharing between people.
- WidgetKit, Live Activities and App Intents. Home Screen widgets, Lock Screen updates and Siri shortcuts.
- RealityKit and ARKit. 3D and augmented reality, mainly for Vision Pro.
- StoreKit 2. Subscriptions and in-app purchases.
Testing and release
- Swift Testing and XCTest. Automated tests that run on every change. My active apps have around 6,250 of them.
- os.Logger. Apple's structured logging, set up in every app by feature area, so I can see what happened when something goes wrong.
- Instruments. Finding what's slow or using too much memory.
- fastlane. Scripts that build the app, take App Store screenshots and upload releases, so shipping is one command.
- TestFlight and App Store Connect. Beta builds for clients and testers, and publishing to the App Store.
- Git, GitHub and GitHub Actions. Version history for every project, and jobs that run tests or scheduled tasks automatically.
Backend, automation and web
- Firebase. Sign-in, real-time databases, cloud functions and crash reports for apps that need a server.
- Python. Automation scripts and bots, including the build script for this website and the bot that publishes Belize lottery results on a schedule.
- Node.js. Small servers, web tools and scripts.
- WordPress. Business websites that owners can update themselves.
- HTML, CSS and JavaScript. Hand-built sites when WordPress is more than a project needs.
AI in my workflow
- Claude Code and Cursor. AI coding tools I use to write, review and refactor code faster. Everything they produce still goes through tests and my own review.
- AI provider APIs. When an app needs an AI feature, I pick the right provider for the job, or use on-device AI when the data should stay on the phone.
I've used AI on production code since December 2022. It speeds up the work; it doesn't replace testing or judgment.
Want these tools working for you?
Tell me what you're trying to build and I'll tell you what it takes.