Skip to main content

Introducing Myself

· 3 min read
Arvid Nicolaas

Programming has, from a young age, been one of my passions. I remember starting in the early days in Basic. It felt like magic, being able to write infinitely many programs to do all kinds of fun and useful things. As I grew better at it, I remember my programs began to get larger as well. Soon, I discovered that the limited support for subroutines (primitive procedures) quickly made a mess of my programs, and I lost oversight.

Then I moved on to Turbo Pascal. Again, I was really happy with the way I could use modules, functions and procedures to better structure my code, so I could scale my programs up without everything becoming one big mess, but it still had its limits. It wasn't until university that I really became aware of the importance of structured programming to keep complexity at bay. I became really interested (as many I guess) in pure functional programming, and actually did my Master's Degree in this topic. Composing functions and having no mutability were things that really struck me as being game changers for scaling programs.

Then, after university, reality kicked in: almost no company was (is?) using pure functional programming. So I went back to Java, C#, etc. I did spend a lot of my free time using Scala, which I still think has a great mixture of different paradigms, including immutable collections. But Scala, unfortunately, was also not really used inside the company.

Then the projects I worked on for my company led me to learn JavaScript, and later TypeScript. It was not love at first sight, but TypeScript, being a quickly evolving language with unique takes on types and soundness, did quickly resonate with me. It's far, very far, from perfect, but in return it is extremely expressive, especially concerning types. The sole support of union types makes any other language that doesn't have that feature feel like a major step back.

So after many years, programming is still my passion. And with TypeScript I am able to express most of my needs, even though it also often requires work-arounds or tricks that slow the compiler down quite a bit. I hope the language will continue to evolve and thrive, but especially improve. I like the fact that there are new developments like NativeScript to take the language out of the JavaScript sandbox. Unfortunately, NativeScript had to drop support for union types, which makes it a no go for me. I am really excited about Deno, a follow-up of Node built on Rust, and hope it will grow.

Did I expect TypeScript to be my go-to language a few years back? Definitely no. But right now I think it is the best language for me to write what I want to write, like, for example, the Rimbu Immutable Collections library.