susam.net
Wander Console 0.4.0
Wander Console 0.4.0 is the fourth release of Wander, a small, decentralised, self-hosted web console that lets visitors to your website explore interesting websites and pages recommended by a community of independent website owners. To try it, go to susam.net/wander/ . A screenshot of Wander Console 0.4.0 This release brings a few small additions as well as a few minor fixes. You can find the previous release pages here: /code/news/wander/ . The sections below discuss the current release. Conte...
Mar '26 Notes
This is my third set of monthly notes for this year. In these notes, I capture various interesting facts and ideas I have stumbled upon during the month. Like in the last two months, I have been learning and exploring algebraic graph theory. The two main books I have been reading are Algebraic Graph Theory by Godsil and Royle and Algebraic Graph Theory , 2nd ed. by Norman Biggs. Much of what appears here comes from my study of these books as well as my own explorations and attempts to distill th...
Accessing Fork Commits via Original Repository
I ran a small experiment with Git hosting behaviour using two demo repositories: cuppa : The original repository. muppa : Fork of cuppa with questionable changes. Here is a table with links to these repositories on Codeberg and GitHub: Name Codeberg GitHub cuppa codeberg.org/spxy/cuppa github.com/spxy/cuppa muppa codeberg.org/spxy/muppa github.com/spxy/muppa It is well known that GitHub lets us access a commit that exists only on the fork via the original repository using a direct commit URL. I ...
Wander 0.3.0
Wander 0.3.0 is the third release of Wander, a small, decentralised, self-hosted web console that lets visitors to your website explore interesting websites and pages recommended by a community of independent website owners. To try it, go to susam.net/wander/ . This release brings small but important bug fixes. The previous release, version 0.2.0 introduced a number of new features. Unfortunately, two of them caused issues for some users. A new feature in the previous release was the ignore list...
Wander 0.2.0
Wander 0.2.0 is the second release of Wander, a small, decentralised, self-hosted web console that lets visitors to your website explore interesting websites and pages recommended by a community of independent personal website owners. To try it, go to susam.net/wander . This release brings a number of improvements. When I released version 0.1.0, it was the initial version of the software I was using for my own website. Naturally, I was the only user initially and I only added trusted web pages t...
Wander 0.1.0
Wander 0.1.0 is the first release of Wander, a small, decentralised, self-hosted web console that lets visitors to your website explore random pages from a community of personal websites. Anyone with a personal website can take this tool and host an instance of a Wander console. Each Wander console loads personal websites and pages recommended by the Wander community. Further, each Wander console can link to other Wander consoles, forming a lightweight, decentralised network for browsing the sma...
Wander the Small Web
I have put together a small tool to explore the small web of personal websites. It is called Wander . Please visit susam.net/wander/ to try out my Wander console. There are only a few pages in it right now, so you cannot use it to browse the small web endlessly yet. It is just a beginning and I hope it grows. If you like this idea and want more websites to explore, you can set up your own Wander console so that I can link to it from mine. That is how the Wander network grows. Please take a look ...
Git Checkout, Reset and Restore
I have always used the git checkout and git reset commands to reset my working tree or index but since Git 2.23 there has been a git restore command available for these purposes. In this post, I record how some of the 'older' commands I use map to the new ones. Well, the new commands aren't exactly new since Git 2.23 was released in 2019, so this post is perhaps six years too late. Even so, I want to write this down for future reference. It is worth noting that the old and new commands are not a...
HN Skins 0.4.0
HN Skins 0.4.0 is a minor update to HN Skins, a web browser userscript that adds custom themes to Hacker News and lets you browse HN with a variety of visual styles. This release introduces a small fix to preserve the commemorative black bar that occasionally appears at the top of the page. When a notable figure in technology or science passes away, Hacker News places a thin black bar at the top of the page in tribute. Previously some skins could obscure this element. This update ensures that th...
HN Skins 0.3.0
HN Skins 0.3.0 is a minor update to HN Skins, a web browser userscript that adds custom themes to Hacker News and allows you to browse HN with a variety of visual styles. This release includes fixes for a few issues that slipped through earlier versions. For example, the comment input textbox now uses the same font face and size as the rest of the active theme. The colour of visited links has also been slightly muted to make it easier to distinguish them from unvisited links. In addition, some s...
HN Skins 0.2.0
HN Skins 0.2.0 is a minor update of HN Skins. It comes a day after its initial release in order to fine tune a few minor issues with the styles in the initial release. HN Skins is a web browser userscript that adds custom themes to Hacker News and allows you to browse HN with different visual styles. This update removes excessive vertical space below the 'reply' links, sorts the skin options alphabetically in the selection dialog and fixes the background colour of the navigation bar in the Termi...
HN Skins 0.1.0
HN Skins 0.1.0 is the initial release of HN Skins, a browser userscript that adds custom themes to Hacker News (HN). It allows you to browse HN in style with a selection of visual skins. To use HN Skins, first install a userscript manager such as Greasemonkey, Tampermonkey or Violentmonkey in your web browser. Once installed, you can install HN Skins from github.com/susam/hnskins . The source code is available under the terms of the MIT licence. For usage instructions and screenshots, please vis...
Feb '26 Notes
Since last month, I have been collecting brief notes on ideas and references that caught my attention during each month but did not make it into full articles. Some of these fragments may eventually grow into standalone posts, though most will probably remain as they are. At the very least, this approach allows me to keep a record of them. Most of last month's notes grew out of my reading of Algebraic Graph Theory by Godsil and Royle. I am still exploring and learning this subject. This month, h...
Nerd Quiz #4
Nerd Quiz #4 is the fourth instalment of Nerd Quiz, a single page HTML application that challenges you to measure your inner geek with a brief quiz. Each question in the quiz comes from everyday moments of reading, writing, thinking, learning and exploring. This release introduces five new questions drawn from a range of topics, including computing history, graph theory and Unix. Visit Nerd Quiz to try the quiz. A community discussion page is available here . You are very welcome to share your s...
Deep Blue: Chess vs Programming
I remember how dismayed Kasparov was after losing the 1997 match to IBM's Deep Blue, although his views on Deep Blue became more balanced with time and he accepted that we had entered a new era in which computers would outperform grandmasters at chess. Still, chess players can take comfort in the fact that chess is still played between humans. Players make their name and fame by beating other humans because playing against computers is no longer interesting as a competition. Many software develo...
Soju User Delete Hash
In my last post , I talked about switching from ZNC to Soju as my IRC bouncer. One thing that caught my attention while creating and deleting Soju users was that the delete command asks for a confirmation, like so: $ sudo sojuctl user delete soju To confirm user deletion, send "user delete soju 4664cd" $ sudo sojuctl user delete soju 4664cd deleted user "soju" That confirmation token for a specific user never changes, no matter how many times we create or delete it. The confirmation token is not...
From ZNC to Soju
I have recently switched from ZNC to Soju as my IRC bouncer and I am already quite pleased with it. I usually run my bouncer on a Debian machine, where Soju is well packaged and runs smoothly right after installation. By contrast, the ZNC package included with Debian 13 (Trixie) and earlier fails to start after installation because of a missing configuration file. As a result, I was forced to maintain my own configuration file along with a necessary PEM bundle, copy them to the Debian system and...
Stories From 25 Years of Computing
Last year, I completed 20 years in professional software development. I wanted to write a post to mark the occasion back then, but couldn't find the time. This post is my attempt to make up for that omission. In fact, I have been involved in software development for slightly longer than 20 years. Although I had my first taste of computer programming as a child, it was only when I entered university about 25 years ago that I seriously got into software development. So I'll start my stories from t...
Jan '26 Notes
In these monthly notes, I jot down ideas and references I encountered during the month that I did not have time to expand into their own posts. A few of these may later develop into independent posts but most of them will likely not. In any case, this format ensures that I record them here. I spent a significant part of this month studying the book Algebraic Graph Theory by Godsil and Royle, so many of the notes here are about it. There are a few non-mathematical, technical notes towards the end...
QuickQWERTY 1.2.1
QuickQWERTY 1.2.1 is now available. QuickQWERTY is a web-based touch typing tutor for QWERTY keyboards that runs directly in the web browser. This release contains a minor bug fix in Unit 4.3. Unit 4.3 is a 'Control' unit that lets you practise typing partial words as well as full words. In one place in this unit, the following sequence of partial and full words occurs: l li lime lime The full word lime was incorrectly repeated twice. This has been fixed to: l li lim lime To try out QuickQWERTY,...