Tuomas Jomppanen

My History with Programming Languages

31 Dec 2016

My Earliest Memory of Programming Language

My earliest memory related to programming goes way back into the 80’s. I was with my cousin, playing with He-Man figures. Obviously, we needed a portal. We tried to make it with pen and paper but there was nothing cool about it, it was a portal after all. Portals need to be cool.

I realised that if I would turn on my computer and change the background color, it would be a cool portal. Naturally, after few minutes, I wanted to change it constantly. That was probably the first time I wanted to read a book to actually learn something. It’s a good thing that Spectravideo 328 had pretty good Basic-manual. After reading through the manual I made a animation with for-loop and I had a portal beyond any coolness! I think I was about 10 year old back then.

The List of Programming Languages

Here is a list of programming languages I’ve had pleasure to work with. Since I learned programming it has been my hobby ever since, I don’t think there is a week that I haven’t written at least few lines of code.

Basic Programming Language

My first computers were Spectravideo 328, Spectravideo 728 and Commodore 64. I never got into anything more powerful, Basic programming language is what I was using. Newer tried Commodore 64 Assembler, even that was the thing the cool kids used.

Thank You Spectravideo for doing awesome job on the manuals. I thought myself programming from a books written in foreign language (English) in a method that pretty much looked like the method Zed Shaw used in his programming books.

I also used Basic when I got Atari 512 and STOS. It was an development environment built for making games. You have no idea how cool it was back then. Of course next year they released AMOS for Amiga and it had no line numbers! How you can write programs without line numbers?

My options were Atari ST and Amiga 500. The sales person in Atari-shop was so convincing with some image editor. It was so convincing that I didn’t even want to see what Amiga 500 could do…

Turbo Pascal

I got my first PC and I got a copy of Turbo Pascal. Pascal did not use line numbers, it used functions and procedures! It had a lot of memory, I could load images into memory and use them as sprites. I was walking on a very steep path of game programming. I could reference a specific point in memory, read and write bytes into it, but back then, I really did not find any use for it. I did my pixel drawing with Turbo Pascal standard library. There was no internet, there was only few BBS’s where I could download tutorials.

This was about the time I got familiar with Demoscene. The intros and demos for Amiga blew my mind several times, and I tried to replicate the easiest effects with Turbo Pascal. Even the easiest effects seems to be out of my reach.

C/C++

After a while, I grew tired of restrictions of Turbo Pascal. I somehow got my hands on DJGPP and Watcom-products. C was a total beast, it could do pretty much anything! I could reboot my computer by using variables in a wrong way. I found out I did not need any libraries if I would like to draw pixels on screen, there was a certain point in memory where I could write data and it would show up on my screen instantly. Crazy!

I wrote my own Sprite-libraries, Polygon-drawing libraries, keyboard handling by using interruptions, all sorts of things are taken granted in 2010’s. One great thing about C was that I could use inline assembler to do really fast things. I could fill my screen with specific color with just few commands. (rep stosb)

I did intros, demos and really simple games that used 3D, but it was really hard to write 3D engine in C. That led to me to C++ and object oriented programming. A 3D engine was much easier to write by using objects that are linked to other objects, inheriting positions and rotations from parent objects. That was the way I learned object oriented programming, even thought I didn’t know the terminology at all back then.

Java

I was about 20 year old when I first me Java and JVM. First, it was really weird not having direct access to memory and let the JVM worry about deleting all unused variables. Eventually I got over it. I’ve never written any big programs with Java as a hobby, I’ve only written bigger Java projects at work. I wasn’t the biggest fan of Java back then.

I eventually ended up in a game company that did mobile games. The mobile phones back then were using b&W screen and there was just few kilobytes of memory. My C/C++ skills came handy when I had to squeeze Java programs into small memory footprint, especially fixed-point maths.

PHP

During my Java-phase, I also got interested in writing web sites. I tried Microsoft ASP but PHP was much easier to understand. I did web sites with PHP and eventually I ended up writing my own MVC-framework. It never got into production-quality level, since PHP had bit of problems back then that prevented me to do the things I wanted.

Python

From PHP, I jumped on board with Python because it had pretty cool game programming libraries (LibSDL). I tried web programming with few frameworks but somehow I didn’t get along with Python. Every time I got frustrated with Python I jumped back to PHP. After a while I got frustrated with PHP so I came back to Python. This happened many times.

Ruby

One day I saw video that blew my mind like Future Crew’s Second Reality. I watched a guy writing a blog with this magical programming language, using really cool framework. I was instantly hooked. Even the editor the guy used to write the code was mind blowingly simple and powerful.

I met Ruby, Ruby on Rails and Textmate at the same time, introduced by DHH. Like many Rubyist, I met Ruby through Ruby on Rails. I remember many times confusing functionality of Ruby on Rails with Ruby, but so what? Writing code with Ruby and Ruby on Rails was so much fun!

I remember the restful changes introduced in Ruby on Rails 1.2 and the big merge with Merb and Ruby on Rails. The biggest factor of my warm feelings to Ruby and Ruby on Rails is the community. There has been so many cool & weird people, that it would be unfair to list them all.

I’ve contributes to few Ruby open-source projects but my biggest contribution to Ruby community is Rubysauna, which we have been organising with @polarblau.

Javascript

Everything that can be written in Javascript, eventually will be written in Javascript. I’ve written a ton of Javascript, I’ve built a typography tool with Ville Vanninen that has been rewritten number of times. I have a suspicion that next rewrite will be with React.

Even Javascript is a language that, in past 10 years, I’ve most likely written most lines of code, I still don’t consider myself a Javascript developer.

Elixir & Go

Even though Ruby is my weapon of choice pretty much everything, I’ve got to know Go and Elixir a bit. I’ve spent enough time with both of them to understand why people like them.

With Go, I like how the libraries are compact but still really powerful.

Elixir has been huge in Ruby community. It’s built one of the Ruby legends. Elixir has taken the best part of Ruby and put Erlang VM underneath.

I don’t know what’s my next favourite programming language is, but in 2016, I consider myself as Ruby developer.