Last year, my friend Andrew Werner and I started a company — Data Ex Machina — with a mission to improve software observability and debugging. We’ve been working on Side-Eye, a debugger for cloud software written in Go. The following post on this blog will introduce[efn_note]test text footnotes[/efn_note] the motivation and thinking behind it.
In my software engineering career I worked on several large-scale systems with stringent requirements around reliability and performance (most recently both of us worked on CockroachDB). What has always bothered me is the fact that these systems are hard to service — when they misbehave in production, it can be very difficult to figure out what’s going wrong. Complex systems fail in complex ways, and it always seemed to me that the tools we have at our disposal for debugging are not up to the task. In fact, in some ways the tooling is actually going backwards because we’ve largely lost the ability to use debuggers for many of the pathologies we’re interested in understanding — we no longer have a way to “ask arbitrary questions” about the execution and state of our programs. This thought has eaten at me over the years, together with the belief that we could do a lot better than the state of the art. We eventually decided to do something about it and we started working on our ultimate observability and debugging tool.