Recent Blog Posts

Lisp: Icing or Cake?

June 01, 2024

The Spring Lisp Game Jam 2024 ended one week ago. 48 games were submitted, a new record for the jam! This past week has been a time for participants to play and rate each other’s games. As I explored the entries, I noticed two distinct meta-patterns in how people approached building games with Lisp. I think these patterns apply more broadly to all applications of Lisp. Let’s talk about these patterns in some detail, with examples.

read more ➔

Optimizing Guile Scheme

February 26, 2024

Guile is a rather niche language that I love dearly. Guile is a Scheme dialect that features an advanced optimizing bytecode compiler, a JIT compiler, and a modest set of developer tools for inspecting and debugging. Through my time spent developing Chickadee, a game programming library, I have gotten quite familiar with how to get the most out of Guile in terms of performance. Every now and then I share a tip or two with someone on IRC or the fediverse and think “I should blog about this” so now I’m finally doing that. These tips are quite simple and apply to optimizing any dynamic language. The only difference is that there isn’t much in the way of helpful examples specifically for Guile… until now.

read more ➔

Haunt 0.3.0 released

February 19, 2024

Haunt version 0.3.0 has been released! It’s been just over 2 years since the last release, and many fixes and improvements have been accumulated so this is long overdue!

read more ➔

How to apply Hilltop's Boku no Natsuyasumi 2 English patch on Linux

November 08, 2023

Haven't blogged in awhile, so here’s a quickie. Last week, Hilltop released an English patch for Boku no Natsuyasumi 2, which finally makes the Japan exclusive PS2 game accessible to us English speaking folks. The README explains how to apply the patch on Windows or via a web utility. Having never patched an ISO before, I wondered how it could be done using a native Linux utility instead. Turns out it's easy to do via the xdelta tool.

read more ➔

Spring Lisp Game Jam 2023 Summary

June 05, 2023

Super Bloom gameplay GIF

read more ➔

Chickadee 0.10.0 released

May 24, 2023

I'm happy to announce that Chickadee 0.10.0 has been released!

read more ➔

Guile-syntax-highlight 0.2.0 released

December 11, 2022

I'm happy to announce that Guile-syntax-highlight 0.2.0 has been released! This is a pretty slow moving project but the last (and only) release was in 2018 so this release is long overdue.

read more ➔

Installing Guix on a 10th gen Thinkpad X1

December 05, 2022

The last time I bought a laptop, I got a used Thinkpad X220 from eBay. I loved that laptop, but time marches on and old hardware eventually becomes too slow for modern development needs. After a lot of indecision, I bought a 10th generation Thinkpad X1 with an Intel Core i7-1280P CPU, 32GB RAM, and 1TB NVMe SSD. While they don’t make Thinkpads like they used to, I’m still really happy with it and glad I chose it. Despite the keyboard changes, the TrackPoint™ is still there and I don’t think I could feel good using a laptop without it. Below I will explain all the steps I took to get the Guix distribution setup nicely on it. Maybe it can help you setup your own Thinkpad X1 or some other computer that requires more than what Guix provides for all of the hardware to work.

read more ➔

Guile-Websocket 0.1 released

November 12, 2022

I'm happy to announce that Guile-Websocket 0.1 has been released!

read more ➔

Catbird: An experimental game engine for Scheme programmers

October 25, 2022

I've been participating in the Lisp Game Jam for several years now, and the next one is starting on 10/28, and with each attempt I've been accumulating code that forms something resembling a game engine. I'm now attempting to solidify some of the concepts I've been exploring in order to make a game engine worthy of releasing in case someone else wanted to use it, too. I've named this engine Catbird, continuing the bird theme established by my game programming library, Chickadee, which the engine is built on.

read more ➔
Older 🡒