Inspiration

Unlike my second kid, this project arrived late, borne out of a longstanding frustration with my former newborn: as every young parent knows, you’ll often sleep in different rooms to attend to the kids. But you might not be the first to wake up when the baby cries, even if it’s your turn. The natural solution my wife landed on was to wake me up with THE FIND MY ALERT SOUND, a whiplash which was subsequently seared into my nervous system.

I’d just been saddled with on-call rotation at work, with PagerDuty set up to fire critical alerts, with configurable notification sounds. This got me thinking. Perhaps I can implement critical alerts with a gentler sound? Unfortunately, Apple has this entitlement locked down, and rejected my use case. I resigned myself to Find My and parked my dream.

What it does

It's simple: add a friend, and once they accept, you can record a message to them. This message is delivered to their device, and immediately plays on their speaker: through silent mode, through do-not-disturb, and interrupting whatever they're doing. It's for when you need to tell something important to someone important.

The app also boasts a characteristic skeuomorphic design resembling the classic iPod.

How we built it

I found this to be more of a system-and-product design exercise. The most intensive work was a slow burn of playing around with AlarmKit for a year, figuring out everything it is good for: my v0.1 actually worked by geofencing my house and reminding my ADHD brain to do some house chores when I got in. This slowly evolved into realising that custom alarm sounds work via pushes, and you can even download custom sounds in a notification extension before scheduling.

With this proof of concept working, I worked through designing the backend layers of object storage, application server, and database to set up message storage, APNS delivery, and pairing logic.

Finally, the technology proven and working end-to-end, I prototyped more than 10 designs to explore the possible visual story I can tell. I landed on an iPod-style design and began iterating on flourishes like haptics, shaders, and menu design to lock in the classic look-and-feel.

Challenges we ran into

I had to carefully tune my skeuomorphic design to evoke the iPod of yore, both with look (metal shaders) and feel (very thunky wheel haptics) without being so close as to get me sued (or, more likely, to fail App Review).

Accessibility subsequently became a key concern, given the entire UI was driven via a novel gesture-based scrolling and clicking wheel. I took the painful, necessary route: if you're using a screenreader, I kill the wheel entirely and add a Back option to each screen in the UI.

Accomplishments that we're proud of

I believe I'm the first person to figure out that you can deliver near-immediate, interrupting, full-screen-takeover-through-silent-mode recorded sounds to a backgrounded app using APNS, a notification service extension, and AlarmKit.

What we learned

  • AlarmKit is the funnest framework Apple has released in the last 10 years.
  • I finally found a pleasant way for my wife to wake me up from across the house.
  • I totally screwed the pooch by getting a Zune back in 2008.

What's next for UltraPing

I've got a relatively basic monetisation setup: 6 free messages per month, $4.99/month for unlimited messages. Figuring out how to optimise my SKUs and free tier is priority #2. Priority #1 is actually learning a little bit about app marketing and ASO.

Built With

Share this project:

Updates

Submission history