A New Look, Some Updates

Wynn Wolf Arbor

It has now been approximately one year since the initial publication of this site and its new design. Looking through the commits that changed the CSS I can’t see any big changes; overall the core design remained very stable. That is (or, rather, was) especially true for the design of the landing page. Why was? Well, as you might have noticed, it now has a whole new look.

Gone is the previous brutalist, blocky, beautifully Oriole-yellow page, replaced by a simple minimalist top-to-bottom list of articles. I even decided to throw in a quick introduction as well. Whilst I still love the old design very dearly (it was based on countless design iterations, ideas, and experiments spanning about 6 months in total), it always clashed with all other content on this site. That was, of course, in a way intentional - the idea was to be as uncompromising as possible. For the time, it was the right thing to do. I was going through an extreme amount of turmoil (both externally and internally), and finally had something completely for myself with that design. It became a sort of safe haven, a space where I did not have to care much about the needs of others; a space in which I expressed myself without worry.

The old landing page
oriole.system's old landing page

Over the last 5 months I have had lots of time to think and reflect, and learned a lot about myself. The current design therefore reflects a new-found confidence, and is more an example of easiness than of uncompromising and extremely idiosyncratic design. Maybe some time in the future I’ll be lucky enough to re-use parts of the old art style and keep it around for something that is more in tune with its complicated and personal history.

git-http-backend(1)

As mentioned in the previous post, an outstanding item for git.oriole.systems was support for the “smart”1 HTTP protocol as supplied by git-http-backend(1). This is now implemented via a small patch for cgit: Whenever cgit is asked to handle a “cloneable” item, instead of caching and serving it itself, it executes git-http-backend(1) and lets that handle the rest. The advantage of this approach is that there’s no additional configuration needed on the side of the web server, barring the addition of the environment variables GIT_PROJECT_ROOT and GIT_HTTP_EXPORT_ALL required for git-http-backend(1) itself.

To my knowledge, it is not easily possible with Caddy 1 to set up the complex2 structure needed to run cgit and git-http-backend(1) at the same URL. Caddy 2 brings much improved path matching support, so I may change this again once I have migrated everything. For now, this simple setup suffices.

Testing The Waters

I’ve also been working on getting things ready for the inevitable migration to Caddy 2. There’s still much to be done, and I don’t think I’ll be ready for at least another month. Firstly I want to give Caddy 2 some more time before I use it as a stable service (2.1 is already in beta and contains a lot of fixes). Secondly I have to make sure that every single part of my infrastructure will continue to work with Caddy 2, and that means a lot of testing.

Since I had been working on setting up cgit anyway, I decided to draft a new Caddyfile that is compatible with Caddy 2. For the most part, it went surprisingly well. I generally prefer the new syntax, and pretty much all new features are integrated very cleanly. The documentation could be improved in a few places, however. Most of the time there is a clear lack of cross-references, and if you don’t know how a certain part of the configuration is called, it is very hard to search for it.

There was one minor hitch to this effort. It seemed that no matter what I did, I couldn’t get the fastcgi transport to work with slowcgi: the PATH_INFO variable would just remain empty. After a few hours of testing and digging, I could finally identify the root cause. Turns out there was an ever-so-subtle bug in Caddy’s handling of the split directive. I reported the issue upstream and sent along a small pull request that was promptly merged.

Dark mode and prefers-color-scheme

Finally, just yesterday I updated the whole site to respect the prefers-color-scheme CSS media feature. Whoever prefers dark websites and has told their operating system or browser3 to use dark mode when available will hopefully rejoice in not having their eyes burnt out when visiting my site. This is arguably a small change, and inconsequential in the grand scheme of things, but it was lots of fun to work on after the rather more stressful crunch of getting cgit to work nicely.

The landing page in dark mode
The landing page in dark mode

I’m still playing around with the overall colour choice and composition, so you may see more or less significant changes down the road. The main focus will still be the default light design (as that is the one I prefer), but dark mode will not just be an afterthought. Feedback on this is very much welcome.

And by the way, if you are interested in how this site is put together, check out its Git repository.


  1. I really wish it had a better name… 

  2. Read: it needs regular expressions, which means that now I have one more problem. 

  3. For Firefox, try setting ui:systemUsesDarkTheme to 1 in about:config.
    Note: As of Firefox 87 this is no longer needed. You can now toggle between dark and light mode in the developer tools.