What finally piqued my interest in Lisp?
As a CS student I was aware of Lisp in a historical sense, and as a viewer of Handmade Hero I was aware of Emacs Lisp, but I never really dipped my toes into that language family in earnest.
I felt content with my C-family and Python-family languages and didn't really understand the value-add of S-expressions. To me the whole idea seemed very confusing, and Lisp code seemed intuitively difficult to read, what with all those parentheses and illegal-in-C characters in identifiers.
I don't fully remember each nudge that ultimately curled me down the path of experimenting with Lisp, but I do recall a few specific things which I'll attempt to outline below.
I enjoy good typography. In 2020 or so I discovered the work of Matthew Butterick who is a lawyer, programmer, typographer, and author (wow!). I bought a few of his fonts and read some of his articles. I happen to be writing this blog post in "Triplicate A Code" right now.
It turned out that he is an enjoyer of Racket, and has written a whole book on the subject: Beautiful Racket. Matthew uses Racket to write his books using Pollen, a Racket DSL and publishing system specifically for creating beautiful digital books.
Here's what he has to say about why he chose Racket for this purpose: Why Racket? Why Lisp? With the benefit of hindsight, this is a really good thing to read if you too are considering learning a Lisp. It is more practical and concrete than many of the writings you can find from others among the Lisp-initiated.
I wanted to like Racket, but I didn't feel comfortable in the IDE, didn't have any Lisp appreciation at the time, and bounced off it quickly. It was too foreign to my C brain.
At some point in 2023, I heard that the first version of Reddit was written in Lisp. This too made me curious. I tend to fall in with iconoclastic weirdo communities, niche languages with strong philosophies like Nim and MoonScript, languages that people write servers and websites and games and all sorts of software in, much to the surprise (and sometimes skepticism) of the average dev.
I tend to want to "hear things out" even if they seem odd, because it is in those moments that beautiful new relationships can be forged and where opportunities present themselves. Sometimes this tendency gets me into trouble!
These brief exposures, and seeing what some could accomplish in Lisps, helped to recategorize it in my mind from the "academic history" pile to the "maybe useful to me?" pile.
Later in 2024, I checked in on the latest Nimconf , and I learned about the Nimony project: A fully new compiler for the upcoming Nim 3, using an S-expression based IR format for incremental compilation and other niceties. This was an interesting talk, and made me aware of some of the nice properties of S-expressions, both in reading them as a human, and in writing parsers and generators for them.
At some point in July 2026, I watched The Amazing Digital Circus and some of its themes impacted me a lot, but aside from that, it was filled with retro digital delights: references to Mario 64 and early 3D rendering, old Windows desktops, and Lisp files. I don't know to what degree if any this affected my timeline here, but I noticed the nod and it was yet something else reminding me about Lisp in general.
Lisps aren't the most popular languages by most measures, but they have a mysterious staying power, and what's more, their enthusiasts appear to enjoy massive productivity, joy in programming, and sharp mental acuity.
From the outside, it can be confusing: Most "real" software you know about is written in C-family languages with massive compilers and toolchains spanning decades of R&D. All such languages have flaws that become apparent after prolonged use, and in team settings or in particularly large codebases, these flaws become more painful, sometimes fatal to a project.
Then you see some lone wizard doing alchemy in Racket and seeming to have a great time, joyfully prolific in his work, and fully unencumbered by whatever stupid argument about C++ or JS or Go is happening this week on The Internet.
What gives? Can I join this cabal of Lisp wizards? Why doesn't everyone just do that? Who are these reptilians pretending to have enthusiasm for Java and adding custom tags to Jira tickets?
I kept hearing about this language in Lua and LÖVE spaces, but I hadn't yet felt the pull to investigate or try it out. At a glance, I thought "Well this is certainly more terse than plain Lua, but I already have MoonScript for that!"
Something about Fennel seemed to attract people, but I couldn't see it yet, so I studied it from afar.
Eventually, in March 2026, I would take a "real" look at Fennel finally, during the course of LÖVE Jam. For the jam, I had settled on MoonScript to write my game in, because it has been my favorite way to write Lua since at least 2017, and perhaps earlier.
For my jam entry, LINOVICTUS, I wrote a super simple entity component system with heavy use of predicates, where systems looked like this (I wouldn't design it quite this way today, but that's what jams and prototypes are for!):
world\each {"pos", "vel", "enemy"}, (id, pos, vel, enemy) ->
return if enemy.spawning and enemy.spawning > 0
player_pos = enemy.decoy_target or real_player_pos
switch enemy.ai
when "dart"
dx, dy = vec.normalize(player_pos.x - pos.x, player_pos.y - pos.y)
vel.dx += dx * enemy.accel * dt
vel.dy += dy * enemy.accel * dt
speed = vec.len(vel.dx, vel.dy)
if speed > enemy.speed
vel.dx = vel.dx / speed * enemy.speed
vel.dy = vel.dy / speed * enemy.speed
pos.angle = math.atan2(vel.dy, vel.dx)
-- et cetera!
During development I saw some other entrants discussing Fennel and things like this, I read some Fennel libraries, and I wondered if my ECS could be written in a more elegant and automagical way using Lisp macros.
I briefly experimented with Fennel at this time, but I didn't really "get it" yet, didn't want to commit to a rewrite either, and so finished LINOVICTUS in MoonScript with a lot of ill-advised crunch time.
Once the jam was over, I kept working on LINOVICTUS for a couple months and it grew into my first Steam release. It's not the game I wanted to be my first Steam release, and it has a LOT of rough edges and bugs that could be polished off with more time, but it just isn't worth the opportunity cost. I learned a lot from that game, but it was time to move on.
So, I went back to my regularly scheduled freelancing, applying to shitty tech jobs, scrounging, and working on other projects. Fennel stayed in the back of my mind as something I needed to seriously try "when a good opportunity arises."
I was also aware of GOOL , the custom Lisp dialect created to write all the gameplay code for the first three Crash Bandicoot games in, and later revised for Jak and Daxter. I knew of the language as a point of trivia, but I didn't know much about it, and I hadn't seen any code examples.
I didn't actually read the above post about GOOL until, well, yesterday morning, when it was a much needed source of encouragement and inspiration.
I remember this exposure as one that started to shift my thinking.
At some point, I was checking out Square Prism by Solarium Technology. I was intrigued because rather than try to write a portable build script or use nob or something like this, the author chose to vendor the source for TinyScheme and then write their build script in TinyScheme!
As someone who has never really enjoyed maintaining shell scripts for any platform, this choice fascinated me. I tend to avoid complex build tools like CMake when I can, and in general I avoid even simple Makefiles! Most of my projects are built with a simple bash script or batch file. These are, of course, annoying to write and annoying to read and tend to be brittle. The nicest version of a bash script to build something I've seen is the one for RADDebugger, and I've borrowed its ideas for some of my projects' build scripts.
So, I read through the TinyScheme build script for this isometric art tool, and thought "wow this is really easy to read and follow!" In fact, it was so easy to read and follow that I was able to edit it and get the project to build on my Mac. Maybe LISPs weren't so intimidating after all?
In August 2026 I watched a recommended YouTube video about Symbolics Genera and I think that may have been the final straw. I was interested in Lisp. I had been messing around a bit with Picotron and watching videos about it, and wondered about writing software for this fictitious desktop in Fennel.
I shied away from Picotron though because it's early and kinda rough around the edges, there's limited documentation at present, it's closed source, etc. So for a month I was again doing other things, thinking of the right moment to Lisp it up, and when it might arrive.
I've been job hunting for nearly a year now, and I'm very, very broke. Like, on SNAP and Medicaid broke. I feel really vulnerable saying that. It hurts my feelings. I worked so hard for so long, and pushed myself, and endured a LOT to get a start in my career.
It's hard to find tech jobs as the market shrinks, my experience and resumé are fairly niche, there's much less money in games to hire people with, and for most of my time unemployed, I've been forcing myself to apply to a lot of things for which I am qualified but harbor a strong distaste for.
One job I applied for was a remote job writing TypeScript to create digital slot machines. I felt gross even trying to get that job, but I justified it to myself with "Well, I'd rather the money go in my pocket so I can do something more ethical with it than someone else might" which is a feeble excuse.
We all want to support our families. As more jobs become evil-with-hand-waving, what are we supposed to do? The default for people with psychology like mine is to put their personal feelings aside and try to be unobjectionable, reasonable, "responsible," and palatable to others. It is a fool's errand.
You can play it safe and still lose. You can be a short poppy and still be cut. If you feel small and weak and bend over backwards to stay agreeable and respectable to the forces that are actively harming you, you will never win. Fuck 'em.
So many jobs I could have gotten historically are now being done in a "passably average" way by subsidized AI agents for people without the discernment, taste or skill to know better, a deliberate move by the companies to destroy careers, fuck over juniors and students, and establish market dependence on AI tools in prep for some "too big to fail" government bailout if no way to bring down costs materializes in the near future.
The jobs that remain are things like "Uproot your life and move across the country to glue together Claude and AWS using Claude and AWS, then get laid off in one of the most expensive places to live so masked goons can abduct you off the street." No thanks!
I'm tired of dutifully applying to these things that disgust me only to be ghosted or get an automated rejection email months later. I'm tired of revising my resumé like it's ad copy from a weight loss website in 2003. I'm tired of making excuses to myself about the jobs that are left for me to apply to. I'm tired of doing the work to psychologically prepare myself to interact with AI subordinates, AI overseers, and AI-brained brass. All my efforts to "play ball" have been unsuccessful, I only succeeded in playing myself!
At some point I decided FUCK IT, I'M DONE. I'm not applying to things I think are unethical or plain stupid any more. I'm not spending hours applying, scheduling interviews, picking out an outfit, and showing up for some empty-headed man to cancel the interview at the time of the interview.
I'm not using AI, I'm not keeping up with the latest harnesses and frontier models, I'm not "accelerating my workflows" with "the new industrial revolution" and keeping mum about how I really feel about all this shit in hopes of getting scraps from the tables of the worst people on Earth. Take your airhead LinkedIn slop opinions and blow 'em out your ass.
(cough) So this change in attitude has been a relief for me: My financials are as dire as they were before, but my feelings about it are much less those of an intimidated, helpless serf. Fuck these people, and fuck their shitty companies. I will work whatever job in whatever field I can, and the computer will again be a place of magick, again be lifeblood, again be the thing that makes reality tenable to me.
In this headspace, I no longer want to make myself palatable, no longer concern myself with pragmatism and practicality, no longer wish to choose the "reasonable" option that I feel some strange, meta guilt about. I don't have to write in C because it "makes sense", I can be as niche and bizarre as I fucking like. Nobody's paying me for this, it's up to ME what runes I write, and if I want to write Nim or Fennel or brainfuck that's my choice.
It's finally my choice again.
I started getting back into Nim and MoonScript, started thinking about old projects I've abandoned due to prior work demands or other circumstances, and started being more active in online communities.
I found entire game engines written in SBCL and other LISPs, and whole communities around them. I found other people feeling the same frustrations as me. I even think the wind may be starting to change; I've seen several videos and articles floating around recently about early-career devs putting their feet down about AI use and abuse.
I read a lot of blogs about LISPs, and explored what different languages are in the family. I read an article called "The Bipolar Lisp Programmer" and, annoyingly but also reassuringly, saw a lot of myself in the CS student described and warned about.
Being your true, weird self is always the answer. The best you can hope for by hiding in shells upon shells is that you succeed in surrounding yourself with people you don't actually like in environments you don't actually want to be in.
Keeping this hard-learned lesson in mind, I could finally recover my damaged wonder and curiosity at the computer. I was finally ready for Lisp. I was finally ready to be free and rediscover the joy in programming I have been sorely missing for a long time due to... Everything else.
In late August 2026, I discovered a grant program for helping marginalized people make puzzle games: https://grants.draknek.org/ Well slap my ass and slap my face and slap my hip and slap my arm and slap my call me slap my Sally call me Sally.
Some grant money (and mentorship) would be really helpful to my little family right now, and could lead to cool further opportunities in the future, I thought. I didn't know things like this even existed.
It was August 28. Applications closed on September 28th at 2:59 AM EST. Oh no! None of our existing game prototypes met their definition of a puzzle game, because I'm mostly an action games girl and even my puzzliest projects have real-time elements, which is a wholesale disqualifier for the grant.
Shit! I briefly entertained the idea of trying to come up with a puzzle game and put together a prototype by then, but quickly dismissed this as absurd, and exactly the sort of harsh deadline cycle I needed to get away from to heal my burnt out squirrel brain.
Then I took a walk with my partner and we came up with an entire game premise and a list of mechanics. Double shit! I was so excited I was vibrating. This could be a good opportunity to learn Fennel. LÖVE already enables rapid prototyping and has a great community, and Fennel could allow me to work faster and type a lot less, which matters on such a time scale.
So, after our walk, I sat down, made a new directory, and wrote all our ideas down in a text file. Then, I started setting up a LÖVE project with Fennel.
I'll write about how that went in Part 2!