My Coding Adventures in 2023
In moments of leisure, I find myself immersed in crafting personal tools and exploring the joys of computer programming. Sometimes a few of these endeavors evolve into concrete utilities that I feel comfortable sharing with others under a free software license. Below, I present some highlights and updates from this year's coding adventures:
-
Devil: This is a new Emacs package that intercepts and translates keystrokes to provide a modifier-free, non-modal editing experience. I wrote this directly in my
~/.emacs
several years ago to avoid typing key chords. This tool allowed me to use comma (,
) as the leader key for invoking key sequences involving ctrl and meta keys. I kept it private for a long time because I felt that the Emacs community may find some of the design decisions and the default choices to be outrageous. However, after extracting it into a separate package and sharing it on MELPA (and later on NonGNU ELPA too), I was pleasantly surprised by the warm and supportive feedback I received from many kind and generous community members. In fact, this package received several updates this year in order to address such feedback and enhancement requests as well as to integrate contributions from the community. This package has evolved a lot and become much better, thanks to the small and supportive community that formed around it. -
CFRS[]: This is my first contribution to the quirky world of esolangs. CFRS[] is an extremely minimal drawing language consisting of only 6 simple commands:
C
,F
,R
,S
,[
, and]
. See the file demo.md for a collection of some nice demos submitted by the small community around this language. -
FXYT: A tiny, stack-based, postfix, canvas colouring language with only 36 simple commands. This is one of my very recent creations. There is not much of a community around it yet. Nevertheless, I find it a lot of fun to play with. The README file at the preceding link has some interesting demos.
-
PC Face: This is a a collection of tools that I wrote early this year to generate bitmap arrays for rendering CP437 glyphs using free and open source fonts based on the IBM PC OEM fonts. The bitmaps are available in the form of JavaScript arrays and can be used quite easily to render glpyhs on an HTML5 Canvas. Additionally, this project offers a few Python and JavaScript functions to create similar bitmap arrays from other similar PC fonts and render them.
-
Andromeda Invaders: I wrote this game last year to fulfill my childhood dream of writing my own invaders-style game. This game received several updates this year around text rendering on canvas. In fact, it was the update for rendering text using IBM PC OEM fonts that led to the PC Face project mentioned in the previous point. The gameplay has been tweaked too to increase the difficulty level. Further, I wrote an autoplay algorithm for fun. This algorithm automatically moves the player to avoid falling boulders and hit the invader ships. To see the autoplay algorithm in action, visit invaders.html#auto.
-
NIMB: NIMB stands for NIMB IRC Matrix Bridge. Yes, a recursive acronym! ;) This is a simple relay client to bridge together different IRC channels and Matrix rooms. Growing dissatisfied with how the official bridge from Matrix assumed admin power level in a bridged room, removed idle users, etc., I wrote this as a small and simple tool for bridging my channels and rooms. Later when Matrix announced that they would shut down their official bridge, it had almost no impact on me because I had already switched over from their official bridge to this little tool for my bridging needs.
-
Clog: This is a tiny IRC chat logger written in Python. I use it to keep a local archive of the chats of some of my favourite IRC channels. This is perhaps my smallest personal tool. I have shared it at the preceding link in case anyone finds it useful but as far as I know, I am the only who uses this.
-
Emacs4CL: This is an old project that was first released in 2020. It provides a quick-starter-kit to set up Emacs for Common Lisp programming. It received a minor update to ensure that it works well with the latest version of Paredit. Apart from that, by popular demand, it leaves the menu bar enabled. Yes, the menu bar used to be disabled earlier which later turned out to be misguided. After receiving several suggestions about how the menu bar is essential for discovery of new commands relevant to the current major mode, the menu bar is enabled now.
-
Emfy: This too is another Emacs quick-starter-kit. However this one is meant to set up a general purpose editing and programming environment with Emacs. It was first released in 2021. It received one minor update this year. The variable
require-final-newline
is now set tot
, so that files with newlines missing at the end are automatically updated with a trailing newline while saving them. Further, the colour scheme of incremental search matches has been updated to have more contrast so that the matches are easier to spot and navigate through.
As I reflect on this year's coding adventures, I am reminded of the beauty of exploration and creativity in coding. The support and feedback I have received from the small yet friendly communities around some of these projects has been truly heartening. Here's to another year of solving problems with code, collaboration, and the boundless world of possibilities that computer programming offers!