Lemontea is a Math lover who is in awe of the beauty and power of high level programming languages. Unfortunately he has been sitting on the side for way too long, looking at everything passing him by while lots of awesome people arround him (as well as other awesome people around the globe) do amazing things.

One day, the switch flipped and he decided enough is enough: he’s just gonna jump into the water and do whatever he wants to anyway.

And the result is this blog, as well as working his censored off on Open Source Projects.

But Why?

The selfish reason is, of course, that programmer wants to write program - but not any program - rather it’s the program that he wants to write because the code is too beautify, or the result too cool, to not to. (Okay, I admit that brownie point is also a factor - but who am I kidding - I’m not at that level yet at this moment.)

But it’s also about contributing back to Open Source what I have taken and benefitted from. It’s about taking matters in my own hand, to try to help good programming languages that deserve a chance, by building more libraries (or more likely, just contributing to existing ones).

Long Version of my Story

You really wants to know (and are not afraid of getting bored)?

Okay.

Lemontea, just like many tech geek, has been dabbling in programming since a small age. By fate and chance the “first languages” he’s seriously tried to learn are PHP (The Horror!) and C. You would think that’s not bad provided I really learn it - while high level language may be better suited for beginner, knowing C exposes you to how the bare metal work in a way no other languages can. (See: Pointer, Call stack)

I think I did a reasonably good job given the age, alas, my next language is C++. And I got it mostly wrong. (Reading books that pretend to teach C++, but actually teaches the concept of OOP, and only does so through C++ code, requires maturity to not fall astray - to put it mildly) I didn’t really recover from that misunderstanding until much later.

Skip forward in time to when I have just started out my career as a programmer, and has landed a rig in my Alma mater’s research institute. Thankfully the environment there allowed me to freely explore technology. And it is then that I begin to study various advanced/high level/dynamic programming languages such as Haskell, Python, and (!) Lisp.

I am instantly hooked by (Common) Lisp. Hard to say why in a single sentence, but I think it’s a combination of:

  • Interactive development experience through REPL (Other dynamic languages have it too, but to Common Lisp’s Credit it has an unconventional system for handling error)
  • Functional Programming (It’s almost a given nowadays, but a few years back, not so much)
  • Macro/Homoiconicity (The secret weapon)
  • List as universal data structure/Uniformity of the language (The principled explanation of how an interpreter/compiler works for a Lisp is both an eye-opener and a game-changer - my world is never the same after that - it is this event that dislodged me from my misconception of C++ by letting me know that it is possible, perhaps even desirable, to study the semantics of programming language rigorously, in a math-like fashion)
  • Just the general elegance and artistry of Lisp, in total. Taken together with homoiconicity I begin to appreciate how programming can be more than a tedious labor, that it can be beautiful both conceptually and visually (when you stare at Lisp code, you are staring at the Abstract Syntax Tree!)

Enough hard selling. After this rig I cruised along a few more years, until I have a stable job. But I am still not fully satisfied. This is a “Civilization and its Discontent” situation. And this loop back to where I am now.

References