Calculator and the distractions of finishing a product
Tuesday, March 27th, 2007I just finished the first release of my calculator software. Anyone who has ever gone through the final days of finishing a software product can relate to this experience. It is a difficult time to update one’s blog thus the little hiatus. I recieved a lot of feedback on this release, but I would love more for future releases so download it and try it out.
This is actually the 3rd calculator application that I have created. The first one was built for Microsoft when I used to work there, it was called powercalc or PowerToy Calculator. It even got a mention on wikipedia, but only to comment that it did not graph some function correctly (not a problem in this release). Then I made a second version for a handheld, also while I at Microsoft. I could not find anyone interested in taking it to market so it died. Now I just finished a newer better version. Calculator software is essentially the origin of all software, even the name computer (device that computes) derives from the initial use of computers and thus the software than ran on them. Ironically, normal personal computers are not particularly well suited to do calculations they have many internal limitations, rounding errors, limited precision, etc. To build a useful calculator you first must build a math engine to perform abitrary precision calculations which means redoing all of the cos, sin, tan, log, sqrt functionality built-in to all computers. I like to aim high, so I threw in support for complex numbers which, trust me, seriously complicates calculating logarithms.
Despite all of these maths, the original motivation for working on a calculator was actually to tackle a difficult user interface design problem. At first glance, this calculator software differentiates itself. Instead of a sea of buttons you have two big white boxes for input and history followed by a handful of menus. Advanced functionality like graphing is hidden just below the surface and can be triggered simply by entering a function. Most of this user interface design is simply theory, so what I really want to know is how individual users respond to it. Please send me feedback.