Got my PocketCHIP yesterday.

And here it is running Emacs, with a Racket REPL via Geiser.


I have to say, this has been the dream for a long time … a cheap, portable device that runs Linux, has Emacs, git, rsync etc. And I can actually write and run Lisp on it.

It has a keyboard / screen that can be used in emergencies, but can also be accessed via USB-serial and PuTTY from any old Windows PC. (Useful when you want to go somewhere which may have a PC but don’t want to take a laptop with you.)

I’ve been excited by small computers before. I do stuff with Arduinos. I have a couple of Raspberry Pis sitting around. And last year got very enthused by the possibilities of the ESP8266 running nodemcu.

But in reality, the RaspPi and ESP have both proven more awkward to work / play with than the CHIP.

The RaspPi’s problem is its dependency on HDMI. And lack of ability to log in by serial over USB. I don’t usually have an HDMI screen to hand. And not in the same room as a network router I can connect an ethernet cable to. And without one, plus special keyboard / mouse etc. And wired internet connection, it’s hard to do much with the RaspPi. I normally only use it in the local hackspace.

The ESP8266’s issue is dependency on a 3.3v power-supply. Which is awkward. Even with an FTDI cable to connect it to the computer’s USB port, you need EXTRA power of the right voltage to talk to it. I have to use a spare Arduino, just to get that 3.3v power.

It kind of pains me to say it, as I really want to champion the British innovated Pi over the American innovated CHIP, but the CHIP guys have done a magnificent job of making their board easy to use straight out of the box. The PocketCHIP is a master-stroke. I unboxed it, plugged it into a USB charger, switched it on, and was exploring and playing with the CHIP within a couple of minutes. It combines all the extra gubbins you need to do stuff with the CHIP in one, obviously cheap, but pretty usable, package. Even the keyboard is OK for small bursts of typing.

I got a PocketCHIP and two extra CHIPs. Even without the Pocket, being able to communicate with a bare CHIP via a terminal over USB makes it far more accessible than the RaspPi. Once I’d figured out a terminal program (I found cu works well) I was able to log in, set up the wifi, update and upgrade the Debian and install the software I want to play with, without any hardware beyond the USB cable.

I really hope someone comes up with a Pocket equivalent for the Raspberry Pi Zero soon. It makes a massive difference to adoptability. And I don’t really understand why the Raspberry Pi can’t be accessed over serial. It’s got USB sockets. Why can’t we do serial over them?



I know I’m really (stupidly) late about this, but I’ve only just got into writing snippets in Emacs.

I’ve obviously known this was possible, like, forever. But somehow never got round to actually sitting down and learning how to do it and using them. But … damn! That’s useful. Why didn’t I bother to figure this out 20 years ago?

You idiot, Stimpy!

Having decided that this year was my Haskell year, I now find myself dabbling with … er … Clojure.

Why? Well, basically because of Quil which is a wrapping of the Processing library for Clojure. I need to do some Processing-like graphics, and I want to learn the FP way of doing it. Haskell would be great, but I’ve had a bit if hassle recently with trying to install some of its extra libraries so not I’m not so confident I can set it up as quickly as I need. Plus, Clojure / Processing also holds out a bit of hope I might be able to move what I’m doing to Android, which would be a bonus for what I’m working on at the moment.

So suddenly I’m back in Emacs. And writing Lisp as seriously as I ever have. It still looks somewhat verbose and cumbersome, especially compared to Haskell, but I’m finding that as I tweak and refactor, and get more familiar with the idiom, it starts to distil down to smaller and more elegant code. I’m enjoying.

I’m expounding my usual “late-bound” tabs model of IDEs again, over on StackOverflow.

… late binding between the buffer in the editor and actual concrete thing you’re working on, gives the editing environment more flexibility and power.

Think this is out of date? One place where the idea is back with a vengeance is in the browser, where you don’t have 1-1 correspondence between tabs and web-pages. Instead, inside each tab you can navigate forwards and backwards between multiple pages. No-one would try to make an MDI type interface to the web, where each page had it’s own inner window. It would be impossibly fiddly to use. It just wouldn’t scale.

Personally, I think IDEs are getting way too complicated these days, and the static binding between documents and buffers is one reason for this. I expect at some point there’ll be a breakthrough as they move to the browser-like tabbed-buffer model where :

a) you’ll be able to hyperlink between multiple files within the same buffer/tab (and there’ll be a back-button etc.)

b) the generic buffers will be able to hold any type of data : source-code, command-line, dynamically generated graphic output, project outline etc.