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.

Book a free call