Wobbles in the SpectrumUsing Doppler Spectroscopy to Find Software Bugs
Web developers are known to come up with jargon to describe different software programming situations. One of our favorites is the term Bugfoot, the mysterious bug discovered by one person that no one else can reproduce. Creative classification of all things programming is fun, but it also helps the team communicate with one another in a common vernacular.
Inevitably, we come up with jargon that is only meaningful to our development team, but is very descriptive and direct. The Intervals development team has coined some jargon of our own. One term that has stuck is “Wobbles in the Spectrum.” Before I explain what this means, I’ll need to share some background on where this term comes from.
Doppler Spectroscopy and the Discovery of Distant Planets
This photograph was produced by European Southern Observatory (ESO).
Astronomers have been using a technique called Doppler Spectroscopy to deduce the location of planets, or what they call exoplanet candidates, since 1993. Because telescopes are not powerful enough to see distant planets, astronomers came up with a way to deduce the location of distant planets.
The theory is that planets orbiting a star will cause the star to experience changes in position and velocity as they both orbit a common center of mass. These changes produce small fluctuations in the light travelling from the star to earth. Astronomers are able to observe wavelength changes in the spectrum of light emitted by the star, using this information to deduce the presence of a planet orbiting the star.
When Software Experiences Wobbles in the Spectrum
Wobbles in the Spectrum are like Bugfoot’s footprints. Some of us have seen muddied remnants of them, but we can’t determine if they are real or not. Software bugs will sometimes leave footprints, without revealing their location, or much less, whether or not they are actually real.
When we encounter such a bug we call it a wobble in the spectrum. The software development team has noticed something, a small shift in the usual day-to-day spectrum of the application’s expected behavior. The app chewed up too much RAM without explanation. The job queue got stuck. A few users experienced white screens when trying to use your app.
When we experience wobbles in the spectrum, we have to decide if these nuances are being created by an actual bug, or if its an “artifact of stellar activity.” In other words, these wobbles have to be watched closely so we can conclude whether it’s a legitimate bug or just a fluke.
Finding Bugs Using Doppler Spectroscopy
The methods used by astronomers to detect planets can be analogous to detecting bugs in software development. When we can’t pinpoint the exact location of a bug we identify the areas of the application that it is affecting.
No portion of a web-based app is completely isolated. If there is a bug in one area, it will have an effect on other areas. By looking at the affected areas of the application we can deduce where the bug is located. And if we can figure out where the bug is located, we can fix it.
I’ll use an example using our own application, Intervals. Several years ago we noticed our app was having minor performance issues each Sunday afternoon. We wanted to get it fixed before it became disruptive. We dug through log files, looked at usage graphs, and brainstormed with the development team. We could not figure it out.
The culprit turned out to be a job queue that reviews current timesheets and determines whether or not to mark them as overdue. It was using database transactions improperly, but didn’t become problematic until it was Monday in time zones east of GMT.
We changed one line of code and the problem was resolved. It took one minute to fix a bug that had required several hours to deduce.
It took astronomers some 40 years to go from the theory of Doppler Spectroscopy to developing the instruments accurate enough to measure a star’s light spectrum with the precision necessary to detect distant planets. One day we may have web development tools powerful enough to find the most remote, outlandish bugs. Until then, we’ll have to keep working with our finely honed skills in deduction and intuition.
Photo credit: j-dub1980
Click here to read the full post