# Vague, but exciting… > Engineering write-ups from 18 months of building an iOS/wearable sensor product — verified fixes, agent workflows, and the failures that wrote the runbook. Author: Colin Rooney — ML engineer building iOS/wearable sensor products (Denver, CO). Every post states what was independently verified vs. assumed, and as-of which OS/tool versions. Content is first-hand with receipts (exact error strings, Apple feedback numbers, public thread links). ## Posts - [My robot drove itself down a trail. Then it met a corner.](https://vaguebutexciting.dev/posts/robot-drove-itself-then-a-corner-log2/): Straights: solved. Tested five times on a straight section, 94–100 % of the time on the trail. Corners: it runs wide every time, and two field days of tuning couldn't fix it. Here's everything that happened since the kitchen — and why the next step is a racetrack on my kitchen floor. - [Troubleshooting a phone-eyed RC robot: the walls we hit, and how we got past them](https://vaguebutexciting.dev/posts/robot-troubleshooting-guide/): Build-notes companion to Log #2. ExpressLRS binding and CRSF, ArduPilot's silent companion failsafe, ROS 2 and JetPack on a Jetson, streaming an iPhone over USB, and self-supervised labelling — every entry cost us real time, and every claim is tagged measured, reported, claim or estimate. - [I rearranged my kitchen to fool my robot. It found the truck anyway](https://vaguebutexciting.dev/posts/kitchen-robot-eyes-log1/): 30 bumps of a phone became 147,731 training labels, a 385-parameter model, and an honest experiment. Expensive sensors teach, cheap sensors ship: LiDAR + ARKit + accelerometer label the data; the model that ships sees only RGB. - [73% of a slow video render was cv2.VideoCapture seeking — a frame cache cut it 443s→69s](https://vaguebutexciting.dev/posts/cv2-seek-thrashing-render-fix/): Profiling a multi-segment OpenCV video renderer: cv2.VideoCapture.set(CAP_PROP_POS_FRAMES) is not O(1) — it decodes forward from the nearest keyframe. Decode once into a memory-guarded frame cache; output byte-identical (same md5), 6.4x faster. - [Headless App Store submission, run end-to-end by a coding agent](https://vaguebutexciting.dev/posts/agentic-app-store-submission/): The full App Store Connect API recipe a coding agent used to submit an iOS release unattended — build upload, screenshot API, review submission, state verification — and the runbook of prior failures that made it work. - [watchOS 26.5/26.5.1 breaks Watch app installs — the devicectl workaround](https://vaguebutexciting.dev/posts/watchos-26-5-install-fix/): Fix for watchOS 26.5/26.5.1 app installs failing with “could not be installed at this time” (ACXError Code=8 “Failed to create socket”, Xcode stuck on “Copying shared cache symbols” 403). Acknowledged Apple regression FB22807635; reproducible workaround: iPhone Bluetooth off + devicectl install over WiFi. ## Fixes corpus (machine-readable) - apple-fixes — evidence-attached Apple-platform fixes, one markdown + one JSON per record, verbatim error strings, verification + correction history: https://github.com/12mv2/apple-fixes (index: https://raw.githubusercontent.com/12mv2/apple-fixes/main/index.json) ## Pages - [About](https://vaguebutexciting.dev/about/): who writes this and the verification ethos - [Work with me](https://vaguebutexciting.dev/work-with-me/): consulting on agent-assisted development workflows and iOS/wearable products ## Feeds - Atom: https://vaguebutexciting.dev/feed.xml - JSON Feed: https://vaguebutexciting.dev/feed.json - Sitemap: https://vaguebutexciting.dev/sitemap.xml