An afternoon build: Unravelled

This morning's digest email

I use Raindrop.io to collect links at work to read later. Every now and then I'd go in to the Inbox and read some of those things. But it's outside my normal routine, and for a while now the links have been accumulating.

What I wanted was a service that'd email me a few of the links every week, as if it was a newsletter.

A few days ago, in my holidays, I finally got around to building it, and came up with Unravelled — a script that takes the latest 8 links from a Raindrop.io collection, sends me a newsletter email, and removes them from the collection.

This was the fastest project I've ever built from start to finish. I made a point to start with all the boring deployment bits:

  • writing a Dockerfile
  • building the Docker container in a GitLab CI script
  • getting Podman to run it via a SystemD timer

I hadn't used SystemD to actually run a container before (previously only to call start/stop), and it worked really well.

Once I had my script running, getting it to actually do what it needed to do was straightforward: calling out to the Raindrop api a few times and generating an email body. Sending emails isn't intuitive in Python, but at least it's short.

And now it's running. After a couple hiccoughs with podman, it's now reliably emailing me every week.

Programming language experiments

This details a project called language_design that I started September 2015 and worked on sporadically ever since. It was written in Scala.

The initial aim was to build a language that mixed aspects of Scala and Erlang. It would be strongly & statically typed, have actors, and be roughly functional. Functional in the sense that immutability was encouraged and functions were used everywhere, but purity wasn't a big concern.

Read more…

Battling Maven repository hosting

Write your post here.

title: Battling maven repository hosting date: 2014-08-08 08:53:07 categories: - Software tags: - java - note-to-self


Recently I've been working on a closed-source application for a client. It's an Android implementation of a recently invented card game, with both single player and multiplayer modes. I had to write a custom server for it (I chose the Play framework with Scala). The fact that the system had effectively two server implementations --- one for single player coordinating bots, and one for multiplayer --- combined with my lack of experience building such systems meant I created a lot of duplication when implementing the rules of the game.

Read more…

Rigid-body physics using particles

Towards the end of last year, I worked on a prototype physics engine based on a GPU Gems chapter --- a realtime physics simulation running on the GPU. So far I've only written it for the CPU as I've never done any GPU work before. (judging by the problems I've had with the physics side of things, it was probably a good idea not to heap on an order of magnitude more GPU problems...)

Read more…

Balloon Box

I've recently been working on a game called Balloon Box. It's a 2D desktop platformer in which the player controls a cardboard box, navigates through an abandoned factory which is known for its pneumatic material transport system. (When I implement it) you will have to avoid cardboard-dissolving acid and knife racks, and collect balloons and batteries. Read the story on Github.

Read more…