Blogging in Lisp


Lisplog is a templating system that blends Apache and Hunchentoot to aid in the maintenance of a blog-like web site.

It is open source, written in Common Lisp, and the code is at

I'm looking for work. My resumé is at

Elm Digital Ocean Interface

Submitted by Bill St. Clair on Sat, 11 Feb 2017 01:01:19 GMT

I have built an Elm interface to a subset of the Digital Ocean HTTP API.

Add comment   Edit post   Add post

Fixed: Slow Macintosh File Dialogs

Submitted by Bill St. Clair on Tue, 07 Feb 2017 11:05:34 GMT

I have been plagued for quite a while now with a two or three second wait every time I invoke the open or save file dialog on my Macintosh (running El Sierra). I finally did a Google search and found a solution. Less than a second now! Yay!

In a shell:

cd ~/Library/Caches/CloudKit
rm CloudKitMetadata
rm CloudKitMetadata-shm
rm CloudKitMetadata-wal
killall cloudd

Add comment   Edit post   Add post

Kokuro Dojo for Android

Submitted by Bill St. Clair on Tue, 17 Jan 2017 16:49:29 GMT

My Kakuro puzzle game, Kakuro Dojo, is now available from the Google Play Store. You may now play on iPhone, iPad, iPad Touch, Android phones and tablets, and a web browser on any device.

Download on the App Store  Get it on Google Play

Add comment   Edit post   Add post

Android Version Hell

Submitted by Bill St. Clair on Mon, 16 Jan 2017 16:05:48 GMT

I spent a number of hours over the weekend determining which version of Android was required for my Kakuro Dojo app. It appears that I need at least KitKat, version 4.4, API 19. It puts up a page with a couple of notches out of it in Jelly Bean, version 4.1, API 16, which is the default oldest version for Cordova, but none of the links work.

KitKat, version 4.4 is the shipping version for the Samsung Galaxy 5 phone and the Galaxy Tab E, the under-$100 tablet that I considered yesterday at WalMart before buying a Galaxy Tab A for $139.

I have it working now, modulo the in-app purchase of the additional puzzles. If you'd like to give it a try, head over to, and click on the "android-debug.apk" link. My Galaxy Tab A (Android Lollipop, version 5.1.1, API 22) offered to override the security setting disallowing installation of random apps. You may need to enable "Unknown sources" explicitly in "Settings / Lock screen and security" before attempting the install.

The image below is from the "Android Virtual Device Manager" in Android Studio. It's compressed to fit. Click on it for full-sized image.

I tested in each of the downloaded versions. The Google Play Store requires phone screen shots and both seven-inch and ten-inch tablet screen shots.

Android Virtual Device Manager

Add comment   Edit post   Add post

Kakuro Dojo iOS App Ships!

Submitted by Bill St. Clair on Fri, 13 Jan 2017 17:00:03 GMT

My Kakuro puzzle game, Kakuro Dojo, is available from the iOS App Store.

Download on the App Store

You can also play it online at

Full source code (Elm and JavaScript) is at

Next: Android version

Zen Master

Add comment   Edit post   Add post

Elm Tutorial on Commands, Subscriptions, and Ports

Submitted by Bill St. Clair on Thu, 27 Oct 2016 01:10:42 GMT

I wrote an Elm Tutorial, and posted it at Steemit: Elm: Commands and Subscriptions and Ports. Oh My! It's also in my Steemit archive on GitHub.

Add comment   Edit post   Add post

Kakuro-Dojo Is Good Enough to Play

Submitted by Bill St. Clair on Tue, 25 Oct 2016 17:35:37 GMT

My Kakuro puzzle game, written in Elm is now quite usable on in iOS browsers, at least it works well on my iPhone 6S Plus and iPad 2. If you have an Android device, please give it a try, and let me know in comments how it works for you.

In order to properly size it on the small screen, I changed my original HTML table-based layout to SVG, giving me full control of all sizes. Works good.

Here it is running on my iPad:

Kakuro Dojo on iPad

You have to scroll it vertically into game-playing position, but pinch and zoom are disabled by the game, so you don't need to size it. I will eventually add a checkbox to turn off everything on the page but the game controls.

The game remembers your state in every game you've played, in your browser's "database". But this doesn't port across browsers or devices, so I'm working next on a backend for that.

I'm planning to write the backend in Haskell, using PostgreSQL or one of the key/value stores for persistence. It will be a general-purpose, but very simple, web-enabled key/value store, which I'll use for mapping appid/key to JSON strings. I have other plans for the backend, which I'll share when it's working and I start development.

Add comment   Edit post   Add post

SVG Rocks!

Submitted by Bill St. Clair on Sat, 22 Oct 2016 10:01:57 GMT

I laid out the tables at as, well, html <table>s. There's a problem, though. They tend to squish sometimes, and it's bloody difficult, for me, to get them to auto-size properly for the small screen (e.g. iPhones). So I've decided to do it all myself, in SVG, and it doesn't look like i's going to be that hard. Below is my test code. Now I just have to parameterize it with the screen dimensions. The new code is likely to be simpler than the old. View source to see what the SVG looks like.

16 17 9 8 7 9

Add comment   Edit post   Add post

What Are You Listening To?

Submitted by Bill St. Clair on Thu, 20 Oct 2016 17:11:36 GMT

I snarfed from an old IRC client, that I no longer use, nor remember the name of, an AppleScript that inserted the current tune playing in iTunes. I modified it to make it work in the "Services" menu.

First, download the script. If it doesn't automatically uncompress, double click it so it does.

Now, in the Finder, go to the "~/Library/Services" directory. "~/Library" is usually hidden, so you need to use the Finder's "Go / Go to Folder..." menu item:

Finder "Go to Folder..." menu item

Type "~/Library/Services" into the resulting dialog, and click "Go":

Finder "Go to Folder..." dialog

Open up your "Downloads" folder, and drag the "iTunes.workflow" file to the "Services" folder (it's actually a directory, but one that Finder treats as a file):

Drag to Services

After what is on my machine a random delay, the new script should appear in the "Services" sub-menu of each application's application menu, when a text field is focused for input:

iTunes menu item on Services menu

If you select it, after a bit of a delay (AppleScript is slow to start), it should insert the tune to which you're currently listening. The text is designed for IRC clients (and Skype and probably a few other copycats), where "/me" turns into your username, but you can edit that.

Tune pasted

Add comment   Edit post   Add post

Wake 2011 iMac from Sleep

Submitted by Bill St. Clair on Tue, 18 Oct 2016 06:51:14 GMT

I've been having a problem with my late 2011 iMac. I wrote about it back in April, in Mac OS X 10.11.4 Beachball on Wake from Sleep. With my upgrade to macOS Sierra, the problem has changed. It no longer beach balls, but it wouldn't wake from putting the display to sleep (which I do with a hot corner in System Preferences / Dekstop & Screen Saver.

I discovered a month or so ago that momentarily pressing the power button, on the back left corner of the iMac, wakes it up. I've been very happily using that since then. Today, I discovered that clicking the mouse button also works.


Add comment   Edit post   Add post