Every now and again I stumble across some long forgotten memories. This time it was triggered by my daughter's quest to learn more advanced mathematics. She was busy playing on a web site where they ask for answers to equations like:
So I decided to show her that there is more than one way to look at algebra, one can also approach it from a graphical perspective. On Mac OS X I opened up Grapher and plotted this linear line graph and showed her how one can read off the answers to any value of x graphically. She wanted to have the application on her computer too, but unfortunately it is Mac OS X only. Then I remembered in 1993 I wrote an application called SciCalc that did this and much, much more. So I Googled it and found it here where I originally uploaded it to: http://garbo.uwasa.fi/pc/math.html. It was a trivial matter of getting VirtualBox on a Windows 7 machine with FreeDOS, and then installing SciCalc.
The whole process gave me a sense of longing for a time in my life long gone. A time when writing software was stimulating, exciting, new, unique, wonderful, rare, rewarding, mysterious, meaningful and personal. Before it became my profession and politics and economics took everything away from me. A time when I spent the night writing my first TSR DOS application in assembly language, that prevents the user from rebooting the machine by pressing Ctrl+Alt+Del. A time when you could understand each and every function in the operating system, each BIOS interrupt, and therefore be able to fully control the PC. That time has gone from me now. Today it is about web applications, e-commerce, time to market, profits, cost savings, egocentric business people, outsourcing, frameworks, RAD, compromises…
Software development is no longer an art. It is now purely a technical process to produce end results. It is not important to write secure code. Sure everyone is touting it as the panacea of today's issues, but look deep into the heart of many security vulnerabilities in today's software and you will see absolutely ridiculously stupid mistakes like using strcpy instead of strncpy, or allowing SQL injection attacks, or not securing your deployments from their default (non secure) configuration because the developer does not truly understand software engineering - it is purely a job to make a living, therefore he knows as little as possible to get by. It is not important to conserve resources, as the common belief of today is that RAM and disk space is cheap, software developers cost money. So then the developer releases an application to market under pressure from time and budget constraints, a lack of enthusiasm and pride in his work to deliver an O(n2) algorithm instead of spending 2 days longer to find that O(log(n)) algorithm instead. Why be concerned (or even informed) about the difference between using varchar(200) or nvarchar(200) in database design? Why worry about profiling an application to understand its performance characteristics and then tune the indexes and database parameters optimally when you can just stuff in more RAM or buy a bigger server? Because it is cheaper. And money is everything. Lost is the art and in is the practical cost benefits.
I digress. This is about a time in my life when I truly enjoyed writing software programs. I can honestly say that I've never worked on any commercial project that ever came close to the satisfaction I enjoyed from my discovery crusade between 1993 and 1996. That was the time of C++, assembly language, reverse engineering viruses, hacking, and other things best left unsaid. When I wrote SciCalc there were no (to my knowledge) API's or libraries or toolkits or frameworks or anything for that matter for what I wanted to do. To give you an idea of what it entailed to write SciCalc, here are some things I had to write by hand:
Today you will use Windows'/Java's UI toolkits like WPF, Swing etc. which provide convenient point, click, drag, drop support for adding UI elements. SciCalc is a DOS application, switching to graphics mode and rendering all the primitives in hand written assembly and C++.
Here are some screenshots:
Main Screen - About
More screenshots...
Main Calculator
Graph Options
Non Linear Graph
Periodic Table of the Elements - Basic
Periodic Table of the Elements - Advanced
Help viewer