Home / Blog Menu ↓

I heard about Exercism’s 12in23 challenge and while I don’t care much about doing the official challenge, I do like the idea of learning more programming languages this year. (And every year, for that matter.)

As boring backstory, here’s a quick list of languages I’ve already written projects in and which therefore won’t be eligible. In very rough chronological order: BASIC (BASICA, GW-BASIC, QBasic), Pascal, C, C++, ASP.NET, VB.NET, PHP, Perl, Ruby, Python, JavaScript, Objective-C, MSP430 assembly, Java, GLSL, Go, and Rust. We’re also starting to use TypeScript at work, so I’m going to leave it out.

The languages I want to learn this year, in no particular order: Elixir, Zig, Haskell, Lisp, Clojure, Unison, COBOL, FORTRAN, WebAssembly text format, OCaml, Nim, 6502 assembly, Scala, and D. This list is subject to change.

I’ve read about some of these, and several years ago I taught some short intros on Haskell and Lisp for coworkers (which just entailed walking through the basic features of each language, nothing fancy), but I haven’t written any actual projects in any of them. That’s going to be my main focus this time, by the way: writing something real in each language. Probably a parser. We’ll see. (I also haven’t decided whether I’ll do the same project in each language.) And I’ll be blogging about each language as I learn it.

First up: Elixir. Several years ago I read a little bit about Erlang and the BEAM, and I’ve looked at the Elixir intro page two or three times, but I haven’t really read anything in detail. I know that Phoenix is a web framework, and PETAL is the new LAMP (in some circles, anyway), and LiveView is apparently amazing, but that’s about it. Here we go!

(I’m going to use the #12in23 tag for these posts, by the way, so that I don’t have to think of a new tag name.)