Back in 1995 a family friend learned that I was fascinated with computers and he wanted to encourage a little bit of self-learning. He'd often said that computers were going to be big in the future — an idea that my parents often scoffed at, saying that computers were "toys" and that I should learn "a real skill" — and figured that I could make use of an old machine he had lying about. It was an IBM XT from 1986 running an 8088 CPU with onboard 640KB RAM and an additional 1156KB on an expansion ISA card. The machine had two hard drives, a 20MB Seagate ST-225, and a larger 60MB IBM device.
It was on this machine that I learned how to write software, first in Turbo Pascal and later in C++. The computer was not at all fast. You could practically hear every bit being read from the hard drives as the read arms jumped back and forth between the index and the data location. Booting DOS 6.22 required upwards of two minutes and the closes thing to a GUI you could hope for was DOS Shell unless you wanted to develop your own Operating Environment ... which I did.
One of the first "big" projects I took on was creating a Windows 3.11 clone which was stupidly called Doors. The Internet was still in its infancy and I didn't have a modem, which meant that everything that was on the machine came from floppy disks or the three fingers I could type with1. By the end of the summer holidays that year, I had completed the first version of the software and managed to sell it to a grand total of 8 people. Like Windows, it came with all the basics: a note editor, a calculator, a game (snakes and ladders in this case), and a very rudimentary spreadsheet that looked like Lotus 1-2-3, but didn't use nearly as many resources.
When my friends and I returned to school, we were ecstatic to see that there was an actual computer lab in the building with 12 brand new Pentium 90 machines connected via token ring network to a Novell box. Unlike the other machines in the school, these didn't run DOS. The Pentiums all ran Windows 95 and had 15" CRT monitors. Top of the line hardware for the time, and almost unheard of in an Ontario public school. After seeing what Windows 95 could do, Doors seemed stupid. The project was abandoned and I started working on other things ... such as finding ways to get onto the fledgling Internet, where people from all over North America seemed to enjoy talking about Star Trek.
The IBM XT saw daily use until it was replaced in the summer of 1997, shortly after I started attending a post-secondary school. My mum took the machine afterwards, but she rarely used it.
A lot of the lessons I learned about writing software back then have carried forward to today. I'll consider what kinds of loops should be used in applications to reduce the number of clock cycles an operation takes, and memory consumption is always at the top of my list of problems to watch for. Storage shouldn't be wasted as every KB counts, and just because a person has more MHz doesn't mean it's okay to be lazy about optimisation. Does anybody think about these things anymore outside of Raspberry Pi development?
Either way, no matter what modern device might sit on my desk, none will ever have quite as much an impact on my life as that old IBM had2. I couldn't go back to that level of technology, but I can certainly appreciate the lessons it forced me to learn.