A fun update this month: as of Saturday my website has a sponsor dashboard where you can see all previous issues of these emails, after logging in with GitHub. Eventually it’ll be home to other goodies, like Discord invites, downloads or feature previews. I think it’s a pretty sleek setup. The blog remains a static site at heart, but Cloudflare lets you sneak in a little server-side JavaScript, in my case about a hundred lines to negotiate with GitHub and gate the private content. It’s free to host, completely stateless, updates in seconds, loads as quickly in Melbourne as in London, and took a day to get working on top of my existing Hugo setup. Beat that, WordPress. Cloudflare’s architectural sensibilities have always appealed to me – there’s not many organisations I’d say that about – so it’s cool to see how it plays out.
The other thing I’ve being trying this month is Zig, for a small but tricky project in my day job. And I have thoughts, which I’ve just published in detail. On the face of it, Zig and Raven are polar opposites: one a low-level, fussy and manually-managed C-like, the other an interactive and customisable Lisp with as few explicit rules as possible. But the languages’ approach to compile-time evaluation gives them a deeper similarity than first appears.
Both Zig and Raven are fairly minimalist languages, designed to provide features that are usually built in, like parametric types, by combining a simple data model with partial evaluation. Raven does lean on the trick more heavily; even basic types are really just tuples with a constant length and tag element, rather than declared structs with a defined layout. But both allow any code in the language to run at build time, and allow programs to be specialised to any kind of data, at least in principle.