Version 1.2 of Moderately Austere, a personal blog WordPress theme, has been released

Version 1.2 of Moderately Austere, my personal blog WordPress theme, has been released to Github.

What is Moderately Austere?

Moderately Austere is a fork of the Twenty Seventeen WordPress theme. Themes are GPLv2 or later, and forking was the natural way for me to start evolving the theme in new directions (as opposed to starting a theme from scratch).

I initially forked Twenty Seventeen to remove usage of vh units, which causes stuttery scrolling on mobile. I really dislike that phenomenon, and I don’t think the mobile browsers (Chrome and Safari) are going to remove their “resize viewport on scroll” behavior any time soon.

What’s more, I plan to keep making other tweaks over time. Version 1.2 is one such set of tweaks.

What’s new in version 1.2?

See the README.txt for the summary. I want to highlight two changes.

The first highlighted change is adding a CSS box shadow to the logo element. I use the logo to display a square profile image. As you can see in the following image, without the box shadow, the profile image is too flat on the header. With the box shadow, the profile image has a pleasing amount of depth.

The second highlighted change is changing the site font from Libre Franklin to Open Sans. The following image shows that the two fonts are nearly indistinguishable:

Libre Franklin is slightly blurrier. Otherwise, most people won’t notice the difference. I’ve used Open Sans on my earlier pre-Wordpress website projects, and I like it.

So there you have it! For 1.3, I want to tweak the headers (font weight, size, etc), and start exploring a different front page approach.

Moderately Austere, or the Power of Fork–Exec

I recently started a new WordPress theme, Moderately Austere (GitHub link), as a fork of the canonical Twenty Seventeen theme from WordPress.

I started a new theme for a few reasons. Most acutely, Twenty Seventeen has real janky scroll behavior on iOS (Safari and Chrome, at least). Because the mobile browser’s navbar diminishes smoothly (from its original size down to a shorter read-only version) as you start scrolling, the viewport height increases correspondingly, but the web content definitely doesn’t update at 60 fps. For the Twenty Seventeen theme in particular, the result is stuttery updates to the header image size and positioning, since the header height uses vh units and the image uses position:fixed. So, my first order of business was making the header static. I don’t get the nice depth effect anymore, but the stutter jankfest was driving me crazy, so this is the better tradeoff. I’m much relieved, visually.

Beyond that, using a predefined theme is like renting a pre-furnished apartment. It’s reasonably suited to a wide audience, but is cookie-cutter and lacks personality. By forking, I can make my web home more homey and more me.

If I were a seasoned web developer, I might style a website from scratch. However, I’m not a seasoned web developer; I’m more a dabbler who just wants to get particular things done. So forking an existing theme is the pragmatic way to go.

Thinking more broadly, though, Fork–Exec really is one of the great patterns of Computer Science. Wikipedia describes it thusly:

fork() is the name of the system call that the parent process uses to “divide” itself (“fork”) into two identical processes. After calling fork(), the created child process is an exact copy of the parent except for the return value of the fork() call. This includes open files, register state, and all memory allocations, which includes the program’s executable code. In some cases the two continue to run the same binary, but often one (usually the child) switches to running another binary executable using the exec() system call.

https://en.wikipedia.org/wiki/Fork–exec

This is not the obvious first solution to process creation in operating systems, compared to the Windows CreateProcess approach, which creates a new process much more conventionally “from scratch”. See this StackOverflow post for a historical view of the origins of Fork–Exec: “it seems reasonable to suppose that it exists in Unix mainly because of the ease with which fork could be implemented without changing much else.”

Ease of progress: a pretty good guiding principle to learn. From Fork–Exec to Stack Overflow to Github, or languages like Python compared to C++, making programming progress easier improves the productivity of millions of developers. That’s big.

And it’s not just about saving time or energy in a proportional sense. Often times, these “progress hacks” are the difference between getting something done at all, or nothing. In my case, if I had to start a theme from scratch, I probably wouldn’t bother. For other people, it might mean the difference between learning to program or not. Rounding to zero is bad. On the other hand, enabling incremental, durable progress is a pretty good deal.

WordPress has explicitly worked to make themes GPL-based; see this blog post for some context. Kudos to WordPress for that effort, as it creates a lot of benefit for people like me and the bazillion other WordPress users. 

And why the name Moderately Austere? Well, that’s how the theme looks to me, and that’s the visual line I intend to follow.

Finally, some of you might argue that “new” and “fork” are incompatible and immiscible, that a copy can’t be a new thing in some grand First Cause view of the world. I disagree. Just as “new” ideas, like inventions or hit songs, don’t spring full-grown from the heads of toddlers, but rather from people who have experienced and processed quite a bit of the world, and have significant agency therein, so too the “newness” of my theme requires the springboard of experience inherited in the fork. The newness comes from the novelty of where I take it.