Nearly a year ago, I started a project to teach myself
Clojure. It’s been feature complete for a very
long time now. I had just neglected to announce its availability.
The project is called arche. It
is a hypermedia resource discovery service. A full description of the
design is described
project itself, incidentally, is an exact duplicate of a project I
wrote in Ruby on Rails for my current company).
The following Clojure libraries were used to build the Clojure version:
- liberator - state-machine API framework
- compojure - Equivalent to Ruby’s Sinatra micro-framework
- ring - Equivalent to Ruby’s Rack
- speclj - like Rspec
- environ - instant 12-factor app-ness
The overall experience was fantastic. I’ve programmed in Scheme, Racket, and Emacs Lisp, and Clojure was a pleasure. Clojure’s syntax and the APIs of it’s data structures are clear and concise. Its Java interop mode is suprisingly pleasant. A programmer literally needs some Lisp background and this cheatsheet and the rest is fairly straightforward.
Today, I’ve released my first Emacs package. It is a
helm source for searching
gems on rubygems.org. When provided a search
pattern, the package uses rubygems.org’s API to search gem names
that match the pattern. Helm, then, presents a list of possible gems.
Simply selecting an item in this list, and pressing the return key
saves a description of the gem suitable for a Gemfile to the kill ring; e.g.,
gem ‘guard-rackunit’, ‘~> 1.0.0’.
The package can be installed using Emacs’ package manager. The package
is accessible via melpa.
The melpa page is here,
but the best reference can be found in the package’s source code
respository on github
The README has details for how to setup and use this helm source.
After all the gems I’ve written for my employer, I’m finally releasing one
of my own: guard-rackunit.
The gem is a Guard plugin which runs
Racket’s RackUnit unit tests.
The source code is hosted on
github. Consult the
README for details about installing and running the gem.
It’s been a while since I’ve posted anything, but I’m going to start
posting about personal projects that have worked on over the years,
as a publish them on my github account.
The first project I have pushed to github is called
“Announce My Agenda”. It’s
an Android app that uses Android’s Text-to-Speech capability to read
out-loud your day’s agenda, given the Google calendars you have
selected, and the invitations your have accepted. It was written over a
year, and I never gave it the final polish to publish it in Google’s
I’m releasing it under the GPLv3 license.
Please keep in mind that I’m not a Java developer, but a Ruby
developer by profession, so this might not be the most elegant Java
code. The app, though, is nearly fully functional.
I have scrapped the original Radiant site for a Jekyll static site.
Jekyll is fantastic. The original styles have been thrown out too. Both changes are designed to
make the site easier to update and maintain. Many of the site’s pages do not match
the home page/post styles, but resemble docbook html pages; that’s because they are.
I doubt I’ll ever migrate them.
I managed to invoke REPL on Android’s Dalvik VM. I encountered a
number a problems, but amazingly I managed to get the REPL to
instantiate and manipulate a Java class that ships with the Android OS.
As far as I know, this is the first time that anyone has managed to get a Scheme implementation to run on Android
Read this tutorial if you want to find out how I did it.
I just released a XSL stylsheet that can be applied to a
GEDCOM 5.5 XML document. It will produce an XSL-FO
stylesheet that can in turn be converted by fop into a pdf document.
The PDF resembles forms produced by ProGenealogist.com.
For more information:
lyX is currently my favorite text editor,
especially when it comes to writing software documentation. LyX’s
support for Docbook XML is slightly cludgy, though, because the application is really
designed to help create LaTex documents. I have written a tutorial
on how to use lyX to produce Docbook XML which can be transformed
into XHTML or PDF documents. This tutorial shows how to
leverage XML technologies, such as XSL, to create customized versions
of Docbook XSL stylesheets that fix some of lyX’s Docbook problems.
The tutorial can be read here.
I have just released a Ruby Script that will download your
Google Contacts using their Contacts API.
I am pleased to announce the release of a Usplash screen branded for the Debian GNU/Linux distribution