ARKit, visionOS, and on-device ML
— done right.
Senior iOS consultant specializing in spatial computing, RealityKit, and Mobile MLOps. I rescue production AR apps and ship the visionOS work other teams can't.
Available for audits, fixed-scope rescues, and 3–6 month visionOS / Core ML projects. Typical engagement: $8k–60k.
Previously shipped iOS / AR work with:
Sound Familiar?
Performance Issues
Your app is slow, laggy, or draining battery. Users are complaining and ratings are dropping.
Production Crashes
App crashes in production. Can't reproduce locally. Deadline looming and stakeholders are worried.
Technical Debt
Previous developers left a mess. The codebase is unmaintainable and every fix creates two new bugs.
8+ Years
iOS Experience
50+ Apps
Shipped to Production
Published
CNN sign-language paper
Since Launch
visionOS + RealityKit production code
What I'm Useful For
Production rescue
Your AR app crashes for 5% of users and you can't reproduce it. ARKit session lifecycle audit, memory profiling on real hardware, and a targeted fix — without rewriting the codebase.
visionOS launch
You have an iPad or iPhone app and need a visionOS version that doesn't look like a port. RealityKit, spatial UI, and immersive interactions built from scratch — not lifted from a UIKit screen.
On-device ML rollout
You can't send data to the cloud — RODO, HIPAA, or trade-secret constraints. Core ML pipeline, model quantization, Neural Engine targeting, and inference optimization that ships on device.
How I Actually Work
Diagnosis before code
Most ARKit and RealityKit bugs don't reproduce on the developer's machine because they aren't really bugs — they're lifecycle, memory, or session-config issues that only surface under real-world device thermals, backgrounding, and ARSession resets. A real audit starts with Instruments (Allocations, Time Profiler, Metal System Trace), os_signpost logs around session delegate transitions, and on-device profiling on the exact hardware your users are running. The diagnosis usually takes a few days. Writing the fix takes hours.
Fix, don't refactor
Scope-creep is what kills rescue engagements. I commit to a fix window with a clearly defined problem statement, deliver the fix, and leave the codebase measurably better than I found it — but I don't rewrite the architecture on your dime. If the codebase needs a deeper overhaul, that's a separate, separately-scoped engagement, and I'll tell you that upfront instead of quietly billing for it.
Knowledge transfer included
Every engagement ends with a written technical document: what was broken, why it broke, what I changed, and what your team should watch for to prevent regression. Most contractors hand back a PR and disappear. I hand back a PR plus the reasoning, so the next person on the codebase — including future you — doesn't have to re-derive it.
Latest Technical Deep Dives
Why Your ARKit App Crashes After 5 Minutes
·8 min read
Memory management in ARKit is tricky. Learn the hidden patterns that cause delayed crashes and how to detect them before your users do.
3 Hidden Memory Leaks in RealityKit
·10 min read
RealityKit's resource management has subtle gotchas that even experienced developers miss. Here are the three most common culprits.
visionOS Migration: What Every Developer Gets Wrong
·9 min read
Migrating to visionOS isn't just about supporting a new device. These common mistakes will cost you weeks of debugging.