What If Fixing Bugs Was More Like Driving With Waze?

Eric Allam
Tiny Matter
Published in
3 min readJan 20, 2016

It was 6pm and I still didn’t know what was leaking memory. I had spent the day exploring the depths of Instruments and my app’s allocation history, and yet the leak did not reveal itself. It was “submit day” and instead of sending off the latest release of Qiktionary just in time for the Christmas deadline, I was banging my head on any nearby surface. I put down my proverbial pen for the day and the next morning I finally found the leak lurking in an obscure Malloc, 20KB of abandoned memory every time the app played a sound. The offending API was a SpriteKit method for playing sound called [SKAction playSoundFileNamed:waitForCompletion:].

After a mini celebration at my desk, I typed the method name into Google to see if anyone else had discovered this issue. I landed on a forum post from 2 months prior where another developer already stumbled upon and solved this exact problem. I implemented a similar fix for Qiktionary and finally readied it for submission.

StackOverflow, Twitter, Google, Apple Developer Forums, Blogs, Gists, etc. are all great. When it’s time to put our code detective hat on, we go rattling their great corpus of knowledge in the hopes of catching our perp. We start by searching; for method names, error codes, vague descriptions of our problems. Or maybe less like detectives and more like someone desperate for validation. Someone else out there knows what I’m going through right now, if only I could find them! Maybe I’m not so alone in this big cruel world.

This is the current state of software development.

Programmers have many tools to share knowledge and as a community we are discouraged from hoarding that knowledge, which is one of the reasons I love programming as much as I do. But we all end up doing a ton of work looking for that knowledge instead of having that knowledge find us.

After the memory leak experience I allowed myself to imagine a world where coding was more like driving with the power of an app like Waze; real-time and community-driven information updates. Just like how all other users of Waze are notified of a traffic incident (if it’s close by) as soon as one Waze user encounters and posts about the incident, why isn’t there a tool to do the same for coding?

The Programmer’s Map

Waze works for driving because it’s built upon The Map, a shared global infrastructure that is the same for all its users. Programming is similar but instead of roads, gas stations, intersections, etc., we have methods, classes, error messages, build flags, warnings and libraries. And just like how Waze allows its users to post traffic jams, police cameras, accidents, etc., on the “Map”, the equivalent tool for coding could allow its users to post memory leaks, bugs, crashes, best practices, etc., on its “Map”. Similar to how Waze automatically gathers traffic data from its users driving patterns, the coding tool could automatically gather knowledge from around the web (Stack Overflow, Twitter, Github, Blogs, etc.) and from its users (anonymised) codebases.

Introducing Dockit

Waze is a fantastic tool that helps its users save countless hours of time and money. I think we need the equivalent for coding. And so @tiny_matter we have started working on just that: a “Waze for Code” that we are calling Dockit. It’s going to start life as a tool for programmers of Apple platforms since that scratches our own itch but we can see it expanding in the future. We are in the very early stages so if you sign up for beta access at dockitapp.co you’ll be the first to try it out.

--

--

Eric Allam
Tiny Matter

Founder at Trigger.dev, the open source background job framework. Creator of jsonhero.io.