Setting up static site generators is fun; making changes later is not. Having tried several, and always ending up hacking around other people’s code, I decided to write my own based on HTML rewriting. Elevator pitch: Write blog post content in HTML (no Markdown or whatever) Do all preprocessing with a simple, single-pass HTML rewriter Concretely: Posts are stored in ./blog/slug/index.html, at…
Getting into CUDA, I found that the general architecture is well explained, but did not find much in the form of best practices for CUDA C++. Below are some tips and tricks that I use. Feedback most welcome! 0. Check for kernel errors You might expect errors during kernel execution to crash your program. They don't. Use some error checking wrapper as described here . 1. Use…
When writing a web page, I try to avoid JavaScript. Relying on a general-purpose programming language for layout doesn't feel right, not to mention that JavaScript can be blocked or unsupported. In a perfect world, HTML is content, and CSS takes care of the delivery. CSS has come a long way, and websites like css-tricks.com are full of brilliant examples. With the coming of variables and calc() ,…
Wim Hegeman — 1964–2022 Wim Hegeman 26 januari 1964 – 17 september 2022 Begin dit jaar kregen wij de onwerkelijke boodschap dat Wim ongeneeslijk ziek was. Door het verdriet te kunnen delen en de steun die wij kregen bleven we overeind, en hebben we met elkaar nog veel moois mee mogen maken. Bang ben ik niet Met mijn dood kan ik wel leven voor jullie had ik wel graag nog even gebleven Nu het moment…
Henceforth I plan to copy the habit of other bloggers to post a monthly status update, to remind myself to write some code every month. While I plan to only talk about my hobbies here, I cannot ignore Russia's gruesome and deplorable invasion of Ukraine. It has to be stopped. Putin and his allies must be stopped. Their bloody and unjust attack on peace, sovereignty, democracy and human rights must…
It's February 2020 and my riot-desktop tray icon vanished . Electron (Chrome, rather) dropped support for the System Tray Protocol Specification : an old but widely used system tray protocol for the Linux desktop. Chrome moved to StatusNotifierItem (SNI), a D-Bus based protocol that — while still too complicated for my tastes — is simpler than the X based tray protocol, and ready for Wayland. The…
Matrix and DNS For a while now, I have been running a small Matrix homeserver for personal use. First in the cloud, now at home for privacy and cost efficiency. It works, but I've found that synapse can at times spit out hundreds of DNS queries in seconds. This is not unexpected, as federation means communicating with many different parties. But at home, this means connection issues for my other…
It has been roughly a year since I set up my static Jekyll blog on GitHub Pages. Back then, this free Jekyll hosting service was one of a kind. Nowadays, services like GitLab Pages allow free automated generation and hosting of static websites as well, and many limitations were removed. The new site is generated with the amazingly simple Metalsmith , which is based on Node.js instead of Ruby.…
If you've been looking for easy ways to make your application extensible using "plugins", surely you must have come across a GObject extensions library called libpeas . Its engine can seamlessly load GObject-based extension objects which act as "entry points" to the application. Currently, plugins written in C/Vala (shared object files), Python and Lua are supported. Note the date. This has not…