How I got into programming: a love letter to the TI-83+ graphical calculator
Back when I was still in school, at the start of the seventh grade, we all had to purchase a specific graphical calculator: the Texas Instruments TI83+.
Even back then, the device was rather unimpressive. With its 6 MHz CPU, 32 KB RAM, and monochrome 96x64 pixel display, it handled basic calculations quickly. But as soon as you asked it to draw anything, you could see each pixel appear individually.
What’s more, it was ridiculously expensive. Even after deducting the school discount, you still had to pay somewhere between 100 and 200 EUR. For a family that used to wrap their rented textbooks in foil to protect them from damage, this was a lot of money.
But we needed the calculator for school, so my mom ordered one without hesitation (even though this amount of money probably caused her a fair amount of worry).
Once we had received our calculators, we learned how to use them during math lessons. We covered basic use, plotting functions, and solving linear equations, but not much beyond that. It was presented to us as just another tool, and thus I didn’t pay much attention to it at first.
But then, one day, I spotted a game running on a classmate’s calculator. Admittedly, it took me a while to recognize it as such due to the crude graphics (try to draw a racing game using nothing but circles, crosses, and spaces in 16 columns and 8 rows). Once I realized that I was looking at a video game, I became really interested in these calculators.
I realized that the device I was looking at wasn’t merely a calculator, but rather a complete (albeit slow) computer.
And since my calculator didn’t come with any games at all, I deduced that not only was there a way to add software, but also that I should be able to make my own.
Unfortunately, my classmate didn’t know anything about making games. The game I was looking at had been copied from someone else via a special data transfer cable. That person had received their copy from someone else too. And that person ... you see where this is going, right?
So, I couldn’t find anyone to teach me programming. That didn’t stop me from learning though. The thought of writing my own games fascinated me so much that I found other ways to learn what I needed.
Luckily, our calculators came with a built-in editor and interpreter for a programming language called TI-BASIC.
Although there were some archaic constraints (e.g. single-letter variable names, no user-defined procedures), it was actually a great language to learn programming. It had everything you needed plus some nice utilities like interactive menus, a list data type, and even an eval function for strings.
What helped most was the built-in editor though. Thanks to it, I was able to write, edit, and run my code on a single device, all in a very tight feedback loop.
The editor wasn’t limited to my own code either. It opened any other TI-BASIC program too. Since most games were written in that language, I had a plethora of practical examples to learn from.
And that’s really how I learned programming: not by carefully reading a book on the topic, studying a manual, looking stuff up on the internet or anything like that; but by tinkering with existing applications, changing stuff, and trying to predict what would happen as a result.
Even at that time, I found two like-minded classmates. Together, we formed a little user group, where we exchanged learnings, came up with new ideas, and showcased our work. This, too, helped me tremendously on my journey.
Eventually, I was able to write my own little programs. The first ones I wrote were little demonstrations. Later, I managed to write my own utility programs, eg to use the pq formula more quickly. And finally, I managed to write my own crude games, even though I constantly struggled with making my code run fast enough (I never got to assembly programming).
To get there, I had to put in dozens, nay, hundreds of hours. Hours during which I solved ever-new puzzles, learned about programming, and turned some of my ideas into actual programs. Along the way, I gained plenty of experience, acquired a growth mindset, and developed an intuition for computation.
Interestingly, my desire to make my own games faded over time. Slowly, it got replaced by a desire to understand how computers, such magical machines, actually work (something that still motivates me to this day).
At some point, I felt like I had outgrown the calculator’s capabilities, but I was still hungry for more. So I decided to venture into computer programming.
Computer programming was a different world entirely. There were so many opportunities, but there was also so much to learn. It was just what I was looking for, so I stuck around and began to build my career in this field.
Meanwhile, my trusted little calculator sat in a shelf, gathering dust, until one day I gave it away to another family struggling to afford one.
But even though my TI-83+ is no longer physically with me, it still holds a very special place in my heart.