« Oatmeal

My programming language odyssey

While I wouldn’t say I’m wicked adept at any one language, I’ve dipped my toes into many different languages. Here, I try to roughly recreate my programming language journey.

I can make websitez gud; HTML, CSS/SASS, JavaScript > CoffeeScript > TypeScript, and PHP

The web. A marvel, a terror. I started here, more out of ease of access than necessity, but was able to get far enough to make a career out of web dev. I should also add SQL to this list.

Elm is something I’d like to dip my toes into.

Want make thingz go brrrr; Common Lisp

I don’t honestly know how I first came to Common Lisp, I think through a blog post, or maybe a cute book. While I don’t use it much these days, I still carry a torch for it in my heart.

Want lovely tooling; SmallTalk

I sort of wish I’d never played with SmallTalk. It broke me. SmallTalk opened my eyes to a really integrated development environment.

Oh snap! Parenthesis are rad!; Clojure

Clojure remains my white whale. On paper it is the perfect language for me:

  • lots of parenthesis
  • good at web stuff
  • fine for game dev
  • friendly with emacs

But I’ve never felt cozy in it.

The JVM is hard, but scheme is rad!; a million flavors of scheme and scheme-like languages, (Chicken Gerbil s7 Racket Guile Chibi)

Parentheses baaaby! If I was forced to stick to a single language and never touch another, I’d probably pick a scheme…the question is then which scheme!?

Racket isn’t strictly a pure” scheme, but who cares and it can be…and has a bananas gigantic library.

Chibi is adorably tiny and the most fully featured R7RS scheme I’ve found.

Chicken has some great docs…and is called chicken,” I mean, come on!? That is lovely.

What about games though? I wanna make games!; Lua (especially using PICO-8 or Love2d)

I have in recent years become pretty jaded about the state of software and what most software is used for…but I love games, so, Lua is pretty rad for making games. Lua is also a really great teaching/learning language.

But I missing the parenthesis; Fennel

Yeah, but what if Lua was a lisp-like language?

I’ve found that many programming languages are made or broken by their community. Fennel has one of the friendliest, most supportive communities I’ve ever witnessed in a programming language.

This is neat, but what if I wanted weirder?; Janet

Janet would be another contender for a forever language — it is weird, sort of a Clojure clone, sort of a Lisp, but totally its own thing at the same time. It is tiny, portable, and fits into similar spaces that C does…but also not really. Janet is a beast utterly of its own…also the name of my grandma.

Hold up now! I said weirder!; BQN, APL, K

Alright, this was probably me going off the deep end…

Okay, too0ooo weird and my brain is goo; gforth, pforth, and lbforth

I adore languages that I can hold entirely in my head. A big thing that helps me hold a language in my head is limited semantics. You don’t get much more limited than Forth!

The ethos at the heart of Forth is clearly articulated by its inventor,

The concept that programming is something that you need special education to do is not right. It is something that is promoted by the priesthood.

— Chuck Moore

Hold those horses…I’m in love!; RetroForth

Readers of this blog will have seen me talk about Retro before…while it makes no sense as a forever language…here I am…I’m stricken…I’m totally lovesick for it. It is tiny, it is portable, it is well documented, it assumes literate programming as the norm!

That’s a mighty nice little vm you’ve got there; Uxntal

Like Forth, this is another system that strives to be pretty much completely understandable. A system that can be held in 1 person’s head…it also offers everything you need to make little graphical programs and games.

But what if assembly?; 6502 and z80 assembly

Again, this was me going off the deep end a little bit.

What if I wanted a job though?; C, C++, Go, Java, Kotlin, and Swift

Blergh — remember when I said that SmallTalk broke me? Yeah, that broken-ness really comes to rear its head when I try to use these gigantic enterprise languages that have terrible tooling (Go, C, and C++ are almost passable, but Kotlin and Swift are laughable).

I also once upon a time tried Rust but it literally melted a component on my laptop so I gave up.

Fuck it! Those are no fun! Go go gadget make your own programming language!; Guava

I mean…did I really make my own programming language? No. But, Guava does carry with it a lot of what I’ve liked about other languages along the way.


So, where next? What next? I’m a habitual breadth over depth kinda person. I wanna say it is time to go deep on one language…but…who knows!?