The creation of Soulver
How two teenagers made a new kind of calculator
I had the idea for Soulver at the end of my summer break, just before the start of my final year of high school. The year was 2005 and I was 16 years old, living with my parents in a leafy suburb in Sydney.
My friend Nik had built a classic calculator app over the summer as a hobby project, but I wasn’t particularly impressed. I couldn’t understand why it only displayed a single number at a time, and why it wouldn’t evaluate an entire mathematical expression like you’d see written out on paper.
It seemed to me like the traditional calculator design that had been copied on computers just didn’t take advantage of all the power of a Mac’s graphical interface with its powerful text processing features.
The solution to “the calculator on computers” problem came to me in a flash of insight one morning in January. I drove over to Nik’s house to share my idea with him: what if the calculator was actually part of “the page”? Instead of duplicating work (first writing your expression on a pad, punching it into a calculator, and going back to the pad to write in the answer), we could stick an “answer column” to the right of a standard text editor, which would calculate line-by-line as you typed. It would be like a calculator, a pencil and a notepad rolled into a single tool!
This seemed like a revolutionary idea to us, and so we resolved to figure out how to build it. Nik’s task was to create a math engine that could evaluate full math expressions, while I set to work on the user interface.
Neither of us knew much about coding but we’d been dabbling with an easy to use programming environment called REALbasic (now Xojo). I’d used it to build a simple geography game the previous year, and though far from a professional coder, I knew just enough to get the job done.
After a few months of work we proudly released version 1.0 of our new calculator design on May 16, 2005.
To mark the occasion we invited classmates and teachers to a “keynote” in our school’s main hall. Attendees were surprised to say the least, given that programming wasn’t even a subject taught at the school at the time!
We were disappointed to only get a few hundred downloads of the app, and less than 50 sales but we still felt we were on to something good. The problem was (we thought) that as a piece of Mac software, it didn’t feel completely native. It turned out that REALbasic was using a transitional Apple technology called Carbon under the hood, instead of the Mac OS X native framework Cocoa which produced the most beautiful apps.
From REALbasic to Cocoa
Nik was confident we’d be able to teach ourselves Cocoa, and rewrite Soulver as a native Mac app. I wasn’t so sure. First we would need to learn a notoriously low-level programming language called C, followed by yet another language called Objective-C, along with object-oriented programming concepts, and finally the Cocoa framework. This was real software engineering, and not something that seemed designed for amateur teenage coders like ourselves. Nevertheless, once a week we’d get together to work through a series of video lectures on C, bit-by-bit becoming more competent and confident programmers. Our parents thought we were nuts trying to learn C when our final high school exams were just a couple of months away! Everything turned out fine though: Nik and I topped our school in the exams, and the following April (2006) we released a new version of Soulver completely rewritten in Cocoa. We also added a stack of additional features we’d thought would make Soulver more useful, like global variables and live references to previous lines.
Words & Numbers together
That year Nik and I entered university. Nik began a degree in electrical engineering and computer science, while I started a bachelor of arts program, with a focus on languages, history and philosophy. As university students with a decent Mac app in the world, Nik and I were fortunate to win student scholarships to WWDC, which at the time included flights, tickets & accomodation near the Moscone center. Being in the room at a real Steve Jobs keynote was a dream come true, and for the first time, we got to hang out with other Mac developers working on great “delicious” apps, like VirtueDesktops, AppZapper and CoverSutra. It was inspiring to feel part of a community, and it was this feeling that stimulated our continued development on Soulver and our next breakthrough idea: allowing words to be used alongside numbers and calculations.
This feature seems kind of obvious in retrospect, but to my knowledge Soulver was the first tool to let you do this. With this feature you could now write an expression like “$50 for lunch + $15 for the taxi” and get a useful answer. To me, this feature represents the “soul” of Soulver and it was this flexibility that allowed the tool to enable workflows we had not foreseen, and over time develop a fan base of passionate users. It also, in a way, mirrored the skillsets of its creators. I had contributed the “liberal arts” design side of things (i.e. “the words”), while Nik had built the number crunching side of things (i.e. “the numbers”).
Impressively, Soulver 1.4 from 2006 (which was built for 10.4 Tiger) still works on 10.14 Mojave. If you’d like to try it out you can still download it from here.
Note that the latest version of Soulver is version 3 (released in 2019), and is available from soulver.app.