Recent Blog Posts

Rendering HTML with SXML and GNU Guile

April 10, 2015

GNU Guile provides modules for working with XML documents called SXML. SXML provides an elegant way of writing XML documents as s-expressions that can be easily manipulated in Scheme. Here’s an example:

read more ➔

Reproducible Development Environments with GNU Guix

November 08, 2014

If you’re a software developer, then you probably know very well that setting up a project’s development environment for the first time can be a real pain. Installing all of the necessary dependencies using your system’s package manager can be very tedious. To "solve" this problem, we have resorted to inventing new package managers and dependency bundlers for pretty much every programming language. Ruby has rubygems and bundler, Python has pip and virtualenv, PHP has composer, node.js has npm, and so on. Wouldn’t it be nice to instead have a single package manager that can handle it all? Enter GNU Guix, a purely functional package manager and GNU/Linux distribution. Using Guix, you can easily create a development environment for any software project using the guix environment tool.

read more ➔

Guile-2D is now named “Sly”

August 11, 2014

Guile-2D has been the working title for my game engine written in Guile Scheme for over a year now. The name has become limiting since I realized that it wouldn’t be much extra work to support 3D graphics. After much indecision, I’ve finally decided on an official name: Sly. I think it’s a great name. It’s short, easy to type, and slyness is one of the definitions of “guile”.

read more ➔

Live Asset Reloading with guile-2d

May 04, 2014

Guile-2d provides a dynamic environment in which a developer can build a game incrementally as it runs via the Guile REPL. It’s nice to be able to hot-swap code and have the running game reflect the changes made, but what about the game data files? If an image file or other game asset is modified, it would be nice if the game engine took notice and reloaded it automatically. This is what guile-2d’s live asset reloading feature does.

read more ➔

Functional Reactive Programming in Scheme with guile-2d

March 09, 2014

Last month, the GNU Guile project celebrated the 3rd anniversary of its 2.0 release with a hacker potluck. Guilers were encouraged to bring a tasty hack to the mailing list to share with everyone. My dish was a simple functional reactive programming library.

read more ➔

A Cooperative REPL Server for Guile 2.0.10

January 24, 2014

The next release of GNU Guile, 2.0.10, is to be released “real soon now”. My contribution to this release is the new (system repl coop-server) module. This module introduces a useful variant of the REPL server that I’ve named the “cooperative” REPL server. It is cooperative because it can be integrated with single-threaded programs without the thread synchronization issues present in the ordinary REPL server.

read more ➔

Syncing Required Packages in Emacs

December 30, 2013

I use Emacs on several different computers. To keep my configuration consistent across all of them, I do what many people do and made the ~/.emacs.d directory a git repository. I don’t like to keep copies of all of the Elisp extensions that I use, such as paredit and geiser, in this repository. Instead, I prefer to use package.el (introduced in Emacs 24) with the MELPA repository. This saves me from having to manually keep all of the extensions I use up-to-date, but requires another method to keep useful packages in sync between computers.

read more ➔

Jump to Jasmine Specs with Rinari

December 17, 2013

I use the rinari Emacs mode to assist me when working on rails projects. One of rinari’s most useful features is the ability to quickly jump from one file to another related file. I use this feature almost exclusively for jumping between a ruby class file and its associated rspec file, but lately I’ve been spending most of my time writing javascript. At VHL, we use jasmine for our unit testing framework and the jasmine ruby gem to integrate it with our rails projects. Rinari doesn’t have any built-in jump settings for jasmine test files, so I wrote this quick hack to make it work:

read more ➔

First GNU Guile Patch and More Guix Packages

November 22, 2013

I have spent some of the last month working on contributing to GNU Guile and now I can finally say that I have contributed code to the project. Guile has several hash table implementations: a Guile native one, SRFI-69, and R6RS. SRFI-69 contains a handy procedure, alist->hash-table, which allows for a sort of hash literal-like syntax:

read more ➔

My First GNU Guix Patch

October 16, 2013

Over the weekend, I decided to try out GNU Guix: A fully functional package manager based on Nix and a distribution of the GNU system. I’m a big proponent of GNU Guile, thus I was excited to see a DSL for package management written with Guile.

read more ➔
🡐 NewerOlder 🡒