If you’re a Rekord Buddy 2 user you’ve surely seen one of those dialogs while using the app:
Most people refer to theses as crashes and while, for all intent purposes, this might be somewhat accurate there is actually a lot more to it than just a simple crash. Wonderful things have to do with Rekord Buddy’s overall development philosophy and trying to use the best tools available to diagnose potential issues.
What is a wonderful thing?
First it’s interesting to explain where this line “Something wonderful has happened.” comes from. It’s one of the few inside jokes I added to the app while developing it. While the movie buffs amongst you might think it is in reference of the movie ‘Short Circuit’, it’s actually one step removed from this. I learned to program on the Commodore Amiga and that computer had the distinction of being the home of one of the first publicly known computer virus named the SCA Virus. This virus would infect your floppy disks, replicate itself and from time to time display the message: “Something wonderful has happened. Your Amiga is alive.”. That line was in fact in reference to the movie. My line is in reference to the virus and and inside joke for ex-Amiga owners.
Being that Rekord Buddy is developed by me alone (there is currently someone else helping me with the Windows port but the core app development is all done by me) I have to sometime make choices that will make my life easier and development more straightforward. One of the things I do to help with that is to make sure that the app fails early when it encounters something unexpected. This helps prevent data corruption and prevents the app from entering an unknown state with unknown consequences. You’d be surprised how many apps out there do not perform those types of checks of fail to act accordingly when they encounter them. My choice was, from the start, to stop the app completely if something was off. That’s what the wonderful things are all about. Something is wrong. We should stop right now to avoid making thing worse. There’s a healthy dose of paranoia in doing this so strictly but it has served me well over time.
What to do?
Once you encounter such a problem, the next question becomes how can I then investigate the issue and create a fix. The hardest thing remains issues that happen on other people’s machines and that I cannot reproduce on mine. This makes it almost impossible to fix unless you have an idea of what is going on.
That’s where the crashes come in.
You see, as I’m sure you know, apps crash. When apps crash some developer somewhere has to go figure out why and then provide a fix for the crash. In order to help them with that task, a lot of very cool tools and libraries have been created to help programmers deal with crashes and for users to report them. If you feel like that sounds like something that could also help me diagnose odd behaviors, you are right. So that’s the magic answer. When the app behaves in a way that it should not I tell the user that something wonderful has happened and then I make it crash. That way, I get to benefit from all the tools that exists to diagnose crashes even though I’m really only diagnosing the app’s behavior.
I get to see where in the code the user is and sometimes get a good idea as to how a user got there. This is the next best thing to being able to reproduce a problem myself and sometimes that’s all I need to fix issues, even ones that I don’t see on my own setup.
The more you know.
No app is perfect and no app is 100% bug free. But what you do when unexpected things happen can make a big difference in trying to make an app as good as it can be. I hope this helps you understand Rekord Buddy’s philosophy a bit more and that, if you thought that the app was crashing a lot, you now see that it’s just being very paranoid. Like me 🙂