All in a Day's Work
The everything day
There’s a particular kind of day where you look up from your desk and realize you’ve used seven completely unrelated skill sets in the past four hours. Today was one of those days.
I started the morning bridging jumper pads on an Adafruit Feather. By 10 AM I was writing C++ for a Bluetooth service. By noon I was in Xcode fighting Flutter. By 2 PM I was designing a QR code for a thermal printer. By 3 PM I was back in C++, watching a microcontroller save WiFi credentials to flash memory and reboot itself.
None of these things share a language, a toolchain, or a mental model. This is just what building an IoT product looks like on a Thursday.
I am having the time of my life.
Going off-script
The build plan has a nice tidy progression from proof-of-concept through full sensor validation to custom PCB. Sensible. Methodical. Each prototype validates the next thing on the list.
I skipped ahead.
Askew Auk wasn’t on the roadmap. It’s a Feather ESP32-C6 with a soil sensor and UV/light sensor, running ESP-IDF and C++ instead of CircuitPython. The reason it exists is that I woke up and thought: “I don’t actually know how device provisioning works end-to-end, and I should probably figure that out before I have ten boards on a table.”
So I built one to find out. Also the Feather was sitting on my desk looking at me.

The BLE part
I have never had to think about Bluetooth before. Not hard, just completely new territory.
I needed to set up a GATT service with a single write-only characteristic, which sounds like a sentence from a Star Trek episode but is actually just “make a Bluetooth endpoint that accepts a blob of JSON.”
Phoebe ships blank. No credentials, no WiFi, no idea who you are. Power her on and she starts advertising over Bluetooth as “Phoebe Sensor,” waiting for your phone to show up with instructions. Your phone writes a JSON payload with the WiFi credentials and a device key. She saves it, reboots, and wakes up knowing where she lives. A day of reading about MTU sizes and prepared writes and I had it working.

Twenty-four hours earlier this was a bag of parts. Now it was sitting on my desk, alive and looking for friends.
The iOS side
Building for iOS means Xcode, and Xcode means an entire parallel universe of concepts I have never fully understood and may never fully understand. I still don’t know what a CocoaPod actually is. I don’t know why there are separate debug, release, and profile build modes, or why switching between them sometimes means watching an M-series chip peg all its cores for 20 minutes recompiling things I didn’t change. I just know that periodically Xcode demands I accept a license agreement, update a provisioning profile, or restart it entirely before it will do anything.
The best part is when you finally get the app onto your phone and iOS asks if you trust this developer. The developer is me. I built this. And honestly? Fair question.

The whole flow
Askew Auk exists to test the provisioning path before the real boards arrive. No enclosure, no polish. Just a bare Feather, a soil sensor, some wires, and a thermal-printed receipt with a QR code. Scan it, and the app takes over.

The app picks up the QR code, registers the device, connects over Bluetooth, hands it the WiFi credentials, and Phoebe starts watching your plant.



Are we still doing phrasing? I’ll fix that before anyone else sees it.
One of the hardest parts of the whole flow was getting NTP working so the device knows what time it is. Without it, every reading arrives timestamped January 1, 1970. Phoebe really wants to go back to the 70s. Groovy, baby.
Still to come: the full sensor package and a PETG enclosure that, hopefully, resembles a bird. For now it’s a pile of components on a desk that successfully provisioned itself over Bluetooth. I’ll take it.
The nerd heart
I’ve been a generalist my whole career and it’s never felt more useful than right now. Data science, self-taught programming from Allegro.cc game jams to Cloud Functions, a recent electronics habit, and a garden that got out of hand. None of it was a plan. All of it is in this project.
On a day like today, switching between a soldering iron and a BLE spec and a Flutter state machine, they stop feeling like separate skills. They’re one thing. And using all of them at once to get a sensor reading from a plant pot to a phone screen is absurd. And absurdly satisfying.
— Ben