Modern-day computing is fast. Incredibly fast! For most tasks, the feedback can be considered instantaneous. Even the slowest languages used in production, like Python, are considered fast enough for the majority of tasks, and if not, there are almost always faster alternatives you could choose from.
I’m continuing my work on fennel-cljlib, my port of clojure.core and some other core libraries, focusing on porting missing functions and features to it. One such feature, which I sometimes miss in Lua and Fennel, is dynamic binding.
The Lua VM doesn’t provide dynamic scoping as a language feature, and Fennel itself doesn’t introduce any concepts like Clojure’s Var.
Let’s set the tone for this post right away, I just want to get this out of my system: I despise the rise of AI in tech. Coding assistants, chat-bots, vibe-coding, agents. Oh, the vibe coding… WTF?
Figure 1: This will be an “old man yells at cloud” type of post.
If you know Python or do a lot of shell scripting (or even write in Perl), you’re probably familiar with the ability of these languages to reference variables or even expressions from string literals.
In a shell, it is possible to do this:
I’ve been working on adding a dynamic font-locking for fennel-mode for a while now. The first attempt started years ago, in July 2022, and were quite crude. It consisted of sending a special code to the REPL that would return me a list of macro names, and then I created a regular expression that matched all these names for syntax highlighting.
Somehow I’ve missed the fifth anniversary of my blog! Oh well. Well, it’s not that big of a deal, but I want to reflect on my blogging a bit.
I started this blog on January 27th, 2020 with the following line:
This is the first public post that I wrote because I’ve finally thought that I’m clever enough to do so.
I just released a new version of the deps.fnl project!
After getting some feedback on the 0.1.0 version and addressing most of it, I’m ready to present a new version with improved dependency and conflict handling.
Major changes The deps.fnl file format The :deps field was changed back to use maps, as it was during the prototyping stage:
I’d like to present a new project, aimed at one of the areas where the Fennel ecosystem can be improved - project dependency management.
Other programming languages have tools to pull in, build, and load external dependencies. Java has Maven, Clojure has Leiningen and other projects like this, Python has Pip and Poetry, and Lua has Luarocks.
Recently I was participating in a conversation about popular programming languages and I brought up Lua. I was met with a response like this:
Lua? Can you even do anything with this language?
The conversation then shifted towards discussing modern dynamic languages, mostly Python, and how it gives you everything Java does without being as complicated as Java.
What a year!
Not as productive as last year, with only 18 posts this time (19 including this one), but I decided to post less for several reasons.
The first one, is that right at the start of this year I had some events in my personal life that had an impact on my passion for writing.