Jasper Horn


I always have a lot of hobby projects that I'm working on. Or, of course, that I have worked on and I do plan to work on again at some point in the future. On this page, I will tell you about some of these projects.


I have long since had a fascination with electronic paper displays (also known as Eink, or "ereader displays"). I think that a laptop with such a diplay would be something that I and many others would enjoy. That's why I bought an Eink screen and started trying things out.

My main idea is not to just hook up a screen as if it was an LCD screen. Rather, I would have an interface that is specifically built to work well on an EPD. That interface would support a number of features such as editing text, programming and terminal access (ssh or locally). Those would be the only things available on the laptop without connecting it to an external screen.

That's a whole lot more than I have actually made, though. I'm still in the phase of experimenting with the screen and trying to get performance that is good enough for my plans.

Wifi Business Card

I designed my own business cards. They are special, though: there's a D1 Mini board (which contains an ESP8266) glued to them. When you plug it in, it will create a wifi network and provide a digital part of the card.

The Good Suite

The Good Suite is one of my oldest projects and it's basically a collection of PHP libraries. There are basically two main functionalities it provides. That would basically be "GoodLooking" and "the rest".

GoodLooking is a templating engine. Of course, PHP is already usable as a templating engine itself, but I decided it wasn't good enough at that in my opinion. A heavily regex-based parser parses a slightly different syntax and compiled it to a php file. The result is syntax that makes it impossible to put business logic into your template. More importantly, though, it automatically calls "htmlentities" to convert < into &lt; so rather than being able to forget it, you have to be explicit when you do not want it escaped.

GoodRolemodel, GoodService, GoodManners and GoodMemory are all parts of the same functionality. It's highly modularized, which means that other functionality could be built that uses only some of these modules. At the moment, though, they provide only one thing: database access.

In the past, I have often described this as "an ORM with a twist", but recently someone pointed me at the fact that it's basically "protobuf but for a database instead of serialization", which perhaps describes it better. The basic idea is that you define your data model separate from your code, and that PHP classes are generated for you based on that. Instances of these classes can then be stored in a SQL database without much effort.

I have recently picked up working on The Good Suite again and it's future will hold a number of changes. The first thing that I am working on is the addition of some very big missing feature. After that, I am planning to separate the modules a bit more than they are now, and work on making it a lot easier to install them using the language's standard tools. I also plan to rename the modules, as the current names are fun, but not very clear.