_why day
The first programming language I learned was REALBasic, quickly followed by ActionScript. I created my first websites with Flash and even earned a bit of money as a Flash programmer. Later, at school, I learned Java, but it never clicked for me. A school friend of mine sent me a link to an online book called "_why's (poignant) Guide to Ruby". I was hooked.
Some parts of the book went way over my head, but I read it and re-read it. I wrote my first Shoes app, my first camping app1. This led me to attend my first conference and user group, my first Chaos Communication Congress, join my first open-source project, start my first podcast, and organize my own CoderDojo. I made friends for life through all of that. And _why‘s whimsical book lit that fire2. That‘s why I have a quote from him on my about page that I try to follow and sometimes do.
Today is _why day. „On 19 August 2009, _why’s accounts on Twitter and GitHub and his personally maintained websites went offline.“. Someone doxxed the person behind the artistic figure, so the artistic figure ceased to exist. People just can’t respect other people’s privacy.
Halunke
In 2018, I invented and implemented a programming language called Halunke during four hacking days. A friend who was there with me wrote the first web application ever in Halunke, and another friend built a a browser based REPL. The language did not and does not have a goal. I don’t want to one day write my web apps in it. It just exists for the pure joy of programming: I wanted to combine what I learned about Smalltalk with what I learned about Lisp and Clojure. And most of what I learned about Lisp I learned in Land of Lisp. Especially this comic that helps you figure out if you should learn Common Lisp or Scheme, which is stuck in my head forever:
The thing that made me the happiest about Halunke are the True and False classes, and conditionals, and, and or are implemented as methods on them. All of that is implemented purely in Halunke itself, in a few lines of code. And to me they read a bit like a poem:
(Class new 'True
methods @[
"and" { |'self 'other|
other
}
"or" { |'self 'other|
self
}
"then else" { |'self 'true_branch 'false_branch|
(true_branch call [])
}
]
)
And that’s all it takes to make the following code work:
>> ((5 > 2) then { "Five is the greatest" } else { "Two is the greatest" })
=> "Five is the greatest"
A few weeks ago, my friend Basti sent me a PR to revive Halunke. Sometimes people say, “That made my day” and yes, that made my day. Thanks, Basti ❤️ So today I published a new version of Halunke on RubyGems so that Halunke works with current versions of Ruby. So if you want to play with it, read the docs, gem install halunke and jump into the REPL with halunke.
Conclusion
So here is to writing code for the fun of it. With no other motives, no goals. Here is to _why. I think we would need this whimsy even more today than we did 17 years ago.
when you don't create things, you become defined by your tastes rather than ability. your tastes only narrow & exclude people. so create. _why
Footnotes
-
I recently learned that Karl is soon releasing a new version of camping. I’m excited. ↩
-
If you want to learn more about _why, watch this video ↩