Wednesday, 2021-10-20

30 minute offset

Some hacker tried to interest us in their new project, and was quickly torn to pieces corrected on HN.

This got me thinking, how large a percentage of the world’s population can’t use this tool?

  • Afghanistan, pop. 32.9M on UTC+04:30
  • Central Australia (Northern Territory and South Australia), pop. 2.017M on UTC+09:30
  • Central Western Standard Time (Eucla, Australia), pop. ~100 on UTC+08:45
  • Chatham Islands, pop. ~600 on UTC+12:45
  • India, pop. 1.353B on UTC+05:30
  • Iran, pop. 83.1M on UTC+03:30
  • Myanmar, pop. 55.6M on UTC+06:30
  • Nepal, pop. 28M on UTC+05:45
  • Newfoundland and Labrador, pop. 520k on UTC-03:30

That’s a total of 1.556B people, which is around 20% of the world’s population.

Needs more work.

Bonnie Prince Charlie: Charles Edward Stuart by Frank McLynn

A great biography, even if it’s showing its age (published in 1988). There’s a bit too much pop psychology and hidebound attitudes towards homosexuality for my taste. That said, even if the women in Charles Edward’s life are routinely described as “calculating” and “coquetteish”, the book does acknowledge that their situation was a difficult one.

There’s rarely a dull moment in this book, even if you’d think that after the excitement of the ‘45 and the “prince in the heather” things would get boring. On the contrary, it’s Stuart’s precipitous fall in health and wealth that grips you the most.

Thursday, 2021-10-14

“Sweden didn’t have lockdowns” and other COVID myths

During the height of the COVID-19 pandemic it was common to see Sweden singled out as “not implementing lockdowns”. It was as if Sweden didn’t take any action against the spread of the virus. This was used both as praise and condemnation, depending on the views of the person saying this.

The truth is a bit more nuanced.

First, “lockdown” is a slippery term, but I’ll define it as a situation where a citizen is not allowed to leave their homes except to get groceries, medicine or other essential supplies, and the authorities have a legal way to enforce this.

Sweden lacked the legal framework in the beginning of the pandemic to enforce anything like this. The constitution adopted in 1971 explicitly avoided implementing a “state of emergency” clause because it was seen as a gateway to tyranny. Any emergency legislation would have to be implemented by the Riksdag.

Sweden implemented a number of voluntary measures to enforce social distancing:

  • everyone who could work from home was encouraged to do so
  • the normal 1-day sick day without pay (karensdag) was waived
  • the state took over the payment of the first fortnight of sick leave from employers

(Sick pay is generally 80% of take-home pay up to a limit.)

Restaurants, theaters and sports venues were regulated by public health laws that were implemented to restrict attendance. But these laws do not extend to other venues such as hairdressers or general stores.

Controversially, this also applied to political demonstrations.

The net result was a marked decrease in the number of people traveling to work, going out to lunch, etc.

After a few months, legislation was passed that enabled the authorities to restrict opening hours in restaurants and bars.

As of Oct 2021, all restrictions have been lifted.

What all this didn’t really help with was with Sweden’s total deaths, which I personally believe had more to do with the shameful lack of preparation and protection of elderly people in care homes. But I do believe it helped limit the spread of the disease, thereby preventing health care resources from being overwhelmed.

Did this help Swedish businesses? Its hard to say. Those that relied on people coming in like restaurants, hotels, travel in general suffered a lot. Hardware stores and places that could deliver probably saw increased business.

Sweden’s per capita death rate is about average compared to other EU countries (and lower than Belgium’s which had famously strict lockdowns), but much higher compared to other Nordic countries like Denmark, Norway and Finland. This has been a source of great debate and is, I believe, attributable to different handling of the very old and infirm.

Sunday, 2021-10-10

Proposal for healthy webforums

This archived Kuro5hin post by user ‘anaesthetica’ poses a number of provocative questions, and although dated (posted 2009) still has relevance for today’s fora.

It’s a long read, I’ve reproduced the conclusion below.


There are serious problems with existing web forums’ institutional capacity to sustain constructive interaction over the long term. The foregoing has been an attempt to rethink what constitutes community and society on the web, and what the requirements for sustaining them are in an environment of rapid scaling.

The conclusions reached about the weaknesses of current forums are:

  • Eternal September presents web forums with an inability to avoid the dilemma that scaling creates for socialization.
  • Community and society, as forms of interaction, are not just different in scale but also different in kind.
  • Community doesn’t scale, and society is difficult to enforce.
  • User registration and barriers to participation do not prevent community-destroying behavior.
  • Scale quickly outpaces moderators’ ability to enforce socialization of new users.
  • Current forms of user moderation and trust ratings are vulnerable to gaming and attack.

Recommendations for a hypothetical forum structure are summarized as follows:

  • Forced anonymity fosters society by countering vanity, making users modular, and placing the focus on the content/comments.
  • Moderation can be improved by making it passive, scarce, and focused on comment quality rather than agreement with the substance of the comment.
  • Conversation, not isolated comments or voting scores, must be the central criterion of user interaction.
  • Communal groupings can emerge organically from society based on demonstrated constructive conversation.
  • Forums should discriminate between original content, link-n-blurb content, and personal content.
  • Story promotion and front page position should be determined by quality of conversation not voting.

It should be stressed that none of these are radical innovations. Most are already implemented piecemeal in some form or another in the various web forums, bulletin boards, chat rooms, and newsgroups throughout the internet. But there is no forum providing a coherent combination of these elements. I believe that these factors will provide the institutional foundation for a web forum that can achieve a greater scale-free status than any that we currently possess.

Wednesday, 2021-09-29

Setting up a Gemini server

I host my stuff on a Digital Ocean VPS.

I already have a webserver running, and my domain points to it.

I followed the steps in this instruction with some added wrinkles:

  • I could not get agate to start correctly, it would not bind to the ipv4 port 1965. After some desultory troubleshooting I used gemserv instead.
  • I didn’t bother compiling gemserv to use GGI, just static content.
  • The cert and key .pem files generated from the instructions worked great in gemserv
  • I used the systemd service example from the instructions, just replacing the call to agate with the call to gemserv

Update Wednesday, 2021-10-06

The main site can be reached on gemini://

I’ve set up a gemlog using Blosxom on gemini://

Tuesday, 2021-09-28

Gemini: the misaligned incentives

This is a followup to this post.

Since last time I took a dump long hard critical look at Gemini, I’ve decided to set up a server: gemini:// This article is reproduced there.

This has forced me to actually write gemtext, and boy do I not like it.

How does gemtext suck? Let me count the ways:

Long-ass lines

The Gemini protocol works line by line, so if you, like me, have been writing prose for time out of mind and have relied on your editor to justify paragraphs so the line isn’t just one long one… a client will probably mangle these, depending on the width it is using to display paragraphs. You get unbelievably ugly ragged borders.

But, the documentation says,

This means that, e.g. “dot point” lists or poems with deliberately short lines will be displayed correctly without the author having to do any extra work or the client having to be any smarter in order to recognise and handle that kind of content corectly. (sic!)

So, in order for simpler handling of “dot point” lists or poems, every author of gemtext will have to either live with long lines, or, more likely, introduce a software component before publishing to convert normally justified text paragraphs to long lines.

There’s another effect that I’ve noticed - boneheaded treatment of “text units” such as ISO dates and URIs. Most clients will happily treat a hyphen as an invitation to make a line break, regardless if this mangles dates or stuff like long command line options.

No inline links

I’ve already ranted about this, but now I’ve read some more Gemini content, and I still believe this is the greatest loss of Gemini. Hypertext is its own thing. Being able to be creative, or strict, or whimsical, or coherent with how you place your links or how you add the link text is a great expansion of human expression through text.

Gemini throws this away. It shows in most prose written in gemtext. The links are awkwardly placed, and the “placeholder” markers (such as numbers or brackets) to connect the text to the link below has not gelled to a standard.

No text markup (italics or bold)

Centuries of typographical refinement and tradition, thrown away for no good reason.

Note that this extents to newer conventions like code fragments, these are only supported as blocks, not inline.

What I don’t actively despise

The limit to 3 header levels and lack of numbered lists are personally ok for me.

Gemini culture prioritizes developers to a fault - but only up to a point

Just today I found a link about something called “favicon.txt” - essentially a single emoji that the console client I use (amfora) could use as a site identifier in its tabs.

In any normal project, this would have been seen as a cool feature, but in Gemini it is seen as a harbinger of the adtech apocalypse. The protocol is fixed in stone - for the stated reason that it should be easy for a normally talented developer to code a client over a weekend.

There’s nothing inherently wrong with this ambition, but it must be realized that it turns the usual developer/user dynamic on its head. Normally, the user’s requirements are interpreted by the developer, who makes concessions based on the user’s explicit and implicit actions. For example, the ubiquitous hashtag was something that emerged organically among Twitter’s users, and which the service incorporated as a new feature.

This makes economic sense as an expression of comparative advantage. Generally, users are prepared to “pay”[1] to not have to code something themselves. The developer can be seen a domain expert, prepared to spend time and resources to craft a product that appeals to the most users.

But Gemini states, as part of its explicit goals, that the protocol should be easy to develop for. This shifts the burden from the few (developers) to the many (users). To accommodate the ease of developers, users’ expression must be hobbled.

But it also means that developer’s natural curiosity has to be limited, lest they stray from the one true path of being able to easily develop a new client, should they wish to.

In short, Gemini is aligned towards a new developer, not invested in the ecosystem, to come in and develop software - but once they try to transition to a seasoned developer, or a user, the ecosystem denies them room to grow, to identify the pain points that have been overlooked by the original designers, or to take the project in a new direction.

As I’ve stated before, I’m sympathetic to the goals of Gemini, but the means are entirely inadequate to reach those goals. It’s an exercise in technical asceticism, dressed up in idealism.

Update Wednesday, 2021-09-29

This piece was submitted to and Hacker News and I think generated some interesting discussions. I urge the reader to peruse these to see where I am utterly incorrect above.

[1] this payment need not be monetary, as in the case of deep breath Free/Libre and Open Source Software.

Tuesday, 2021-08-31

Thursday, 2021-08-26

Summer reading, 2021

Mostly Leonard novels

  • Rum Punch
  • Pronto
  • Riding the Rap

I used to be a great fan of Leonard, and seeing Jackie Brown on the telly the other day prompted me to re-read Rum Punch. I also enjoyed the TV show Justified so that prompted me to read the two novels where the protagonist Raylan Givens is introduced.

I’m afraid the bloom has gone off the rose, or rather that the fact that these novels are almost 30 years old is very apparent. Leonard isn’t exactly a reactionary but the lack of representation other than white males, and the fact that men of color are routinely killed off feels very dated.

Saturday, 2021-07-31



Jul 2020 | Jul 2019 | Jul 2018 | Jul 2017 | Jul 2016 | Jul 2015 | Jul 2014 | Jul 2013 | Jul 2012 | Jul 2011 | Jul 2010 | Jul 2009

Wednesday, 2021-06-30


Sergels torg

Continuing with the Sergels Torg theme…

Jun 2020 | Jun 2019 | Jun 2018 | Jun 2017 | Jun 2016 | Jun 2015 | Jun 2014 | Jun 2013 | Jun 2012 | Jun 2011 | Jun 2010 | Jun 2009

Tales from Earthsea by Ursula K. Le Guin

I’ve somehow missed this collection of short stories, a slight ret-con of the Earthsea universe. Maybe it’s for completionists only but I enjoyed returning to Earthsea.

Tuesday, 2021-06-15

A Farrago of Freenode Fuckery

Well it’s been a crazy few weeks.

  • 2017 - in a shady deal, Andrew Lee acquires some assets related to Freenode.
  • 2021-mid May - rumblings about weird goings-on at Freenode appear online. Draft resignation letters are leaked.
  • 2021-05-19 - Andrew Lee asserts control. Former Freenode staffers formally resign, is opened
  • 2021-05-22: seizure of channels mentioning begins
  • 2021-05-26 - in an attempt to take over channels that had moved to Libera and set to invite-only, someone fat-fingers a script and takes over all channels mentioning Libera in its topic. Reportedly, over 700 channels are affected. Here’s my side of the story. See also
  • 2021-05-26 - support channels on Freenode erupt in anger over the channel seizures. Someone “accidentally” blocks a CIDR /16 block
  • 2021-06-01 - Fosshost enters partnership with Freenode
  • 2021-06-09 - a server restart leaves service accounts (NickServ, ChanServ) wide open to be taken by regular users - thereby potentially exposing user passwords. The user who takes NickServ is swiftly promoted to staff.
  • 2021-06-10 - an attempt to k-line cloaked users who had chatted in ##moving-to-libera backfired when the entire IRCcloud was k-lined
  • 2021-06-11 - Fosshost ends Freenode partnership
  • 2021-06-11 - Wikipedia GC k-lined
  • 2021-06-11 - #python channel terminated, group contact Ned Batchelder k-lined, 800 users kicked out
  • 2021-06-12 - #linux, #fsf and #gnu channels are forcibly taken over by Freenode staff, and access lists rewritten. Topics changed. My logs (provided to Freenode boosters Techrights because they did not believe what had happened)
  • 2021-06-13 - IRCcloud is banned again, on purpose this time. Staff let’s us know this was the plan all along, as a paid service IRCcloud is “leaching” off Freenode
  • 2021-06-15 - Freenode moves to a new IRCd and drops all existing nick and channel registrations. The shell of the old Freenode is no more
  • 2021-06-16 - after a chaotic day with two incompatible networks, Lee pulls the plug on Freenode “classic”. A deathly silence spreads across the field, only broken by raucous crows feasting upon the bodies of the slain.

Today, I checked my existing connection to Freenode. I still had access to the old NickServ.

07:39 -- MSG(nickserv): info gustaf
07:39 -- NickServ (NickServ@services.): Information on gustaf (account gustaf):
07:39 -- NickServ (NickServ@services.): Registered : Jul 28 22:07:55 2004 (16y 46w 3d ago)
07:39 -- NickServ (NickServ@services.): Last seen  : now
07:39 -- NickServ (NickServ@services.): Logins from: gustaf
07:39 -- NickServ (NickServ@services.): Nicks      : gustaf gustaf_ gerikson
07:39 -- NickServ (NickServ@services.): *** End of Info ***

07:47 -- │ NickServ (NickServ@services.): The account gustaf has been dropped.


What was all this about? In three weeks, an IRC network that’s lasted for twenty years was flown into a mountain. Was that the plan all along?

Or is it wrong to ascribe to malice or forethought that which can be more adequately explained by stupidity or drug-fueled mania?

Anyway, watching Freenode implode is a bit like being on a ship that’s foundering. Almost everyone makes it over to another safely, and we’re standing at the railing, seeing the old ship slip beneath the waves. Some rats and trolls follow it down. It’s a sad memory, but in the end, it was only a name.

Friday, 2021-06-11

Why Gemini is not my favorite internet protocol

TL;DR: the Gemini protocol removes too much functionality for it to interesting to me.

What is Gemini?

Gemini is a simple web publishing protocol. It can be seen as a descendant, successor of Gopher. Gemini primarily emphasizes developer simplicity, and secondarily user privacy.

This comes with significant trade-offs for the author, however. Compared to standard vanilla HTML4, there are no inline links, no provision for media other than text on a page, and the styling of the content is left to the client.

My background is in web publishing - I’ve been fascinated by publishing since I was a kid and I’ve been involved in printing zines and in student newspapers etc through the years. The idea that I can publish what I want, when I want, at whatever lengths I want, for effectively free, is still mind-blowing to me, almost 30 years since I copied some HTML code and made it mine.

Here’s where Gemini falls down for me.

First, there’s no official client. The fact that it’s so easy to implement a client means there’s a Cambrian explosion going on, and the filtering die-back has not yet occurred. This might change in the medium future.

Second, the styling limitations are crippling. I can probably survive without having images etc. on the same page, but the lack of inline links (each link has to be on its own line) leads to stilted, quasi-academic jargony text like this:

Check out my cool blog[1]! It’s full of cats!


I’m not going to abandon three decades of hypertext authoring habits to make a developer’s life slightly easier.

Third, Gemini puts the cart before the horse when it comes to privacy. The solution to widespread tracking and user surveillance isn’t a bespoke hairshirt protocol that no-one is going to use. The solution is widespread legislation that makes using people’s personal data for targeted advertising illegal or very expensive. (This is not limited to Gemini. A great many influential Internet people are convinced politics is utterly broken, so “technical solutions” are all that’s left).

Gemini, to me, is part of the nostalgia for a past that never really was — the halcyon days of the Internet, before the Eternal September. But time is the great filter. What has survived from that era is not the spam, the pointless Usenet arguments, the shitposting, but finely polished nuggets. If you weren’t there, it might have seemed a paradise, but I was, and it wasn’t. It was today’s internet, but text-only and with proportionally even more white dudes.


This entry was submitted to and spawned an interesting discussion. Among others, this piece was posted (comments), and this post was also mentioned.

I suggest those interested in Gemini and what it means to people to read the linked items and discussions.

I’d also like to clarify that I wrote this rant basically to have a single place to point Gemini proselytizers to. I need to emphasize that if you personally use Gemini, or find Gemini useful or fun, more power to you! I am not suggesting you stop or that your efforts are in vain.

Sadly, there are some Gemini enthusiasts who are the equivalent of people handing out flyers for some obscure club, and who get shirty when you try to politely explain that you’re not interested in attending. Those people are annoying, and they give Gemini a bad name.

Saturday, 2021-06-05

Death of a channel

This is a short write-up of how a channel on Freenode was hijacked by staff, and how it was effectively deleted.


The channel #photography was founded on Freenode in 2001, as a channel to discuss photography. Its single-hash status was challenged by Freenode staffer lilo, and it was changed to #photogeeks to comply with the requirement for single-hash channels to be associated with a project.

In 2006, the channel #photo was registered to discuss photography per se, and not gear. Quite soon the channel became social in nature, and it was hidden and a password set.

Over the years, about a dozen people used this channel as a social space to discuss everything under the sun.


When the takeover of Freenode by Andrew Lee occurred, the channel was registered on, and on 2021-05-21, the topic was updated to say

09:07  -!- gustaf changed the topic of #photo to: this channel is now up and running on (same pwd), but this place is still the primary! | Discord bolthole -

On 2021-05-26, the channel was hijacked:

05:02  -!- freenodecom <~com@freenode/staff> has joined #photo
05:02  -!- mode/#photo (+o freenodecom) by freenodecom
05:02  -!- freenodecom changed the topic of #photo to: This channel has moved to ##photo. The topic is in violation of freenode policy:
05:02 <@freenodecom> This channel has been reopened with respect to the communities and new users. The topic is in violation of freenode policy:
05:02  -!- mode/#photo (+o freenodecom) by OperServ
05:02 <@freenodecom> The new channel is ##photo
05:02  -!- mode/#photo (-s+t) by ChanServ
05:02  -!- mode/#photo (+spimf ##photo) by freenodecom
05:02  -!- freenodecom <~com@freenode/staff> has left #photo ()
05:02  -!- mode/#photo (+f ##photo) by freenodecom
07:37 < gustaf> <abbr title="what the fsck">wtf</abbr>
07:37  -!- #photo Cannot send to nick/channel

(all times are in CEST).

A few hours later, Andrew Lee (rasengan) sent a network-wide wallop informing users that an attempt to enforce newly instituted rules against advertising other IRC networks had been overly broad and targeted more channels than intended.

It’s clear that our channel was included in this.

Users were encouraged to submit a request to Freenode staff to get their channels back.


The “regulars” of the channel were contacted via PM and informed that the Freenode channel was now closed. Most moved over to Libera. A few mentioned that they were permanently leaving Freenode.

As a good faith effort, prompted by Freenode promoters, I attempted to regain control of the channel at Freenode, but was informed that having a single-hash channel was not according to policy. The request was denied.


I’ve written this post to present my side of the story. Over the last weeks, I’ve been told on Freenode that the widespread channel hijacking of 26 May 2021 (some reports say that 700+ channels were affected) was either not as widespread as reported, or “justified” to stem the flow of users to Libera.

I’m also a member of the channel #lobsters, which suffered the same fate. However, in that case, the project had officially moved, and the Freenode channel was locked. Based on Lee’s rationale, I actually find the hijack justified, as there were presumably people who would prefer to remain on Freenode and discuss the site there. However, note that there very little warning before this happened. There was no attempt to contact the project to present Freenode’s case as a better IRC host than Libera. Freenode instead unilaterally decided they knew better than the project’s themselves.

When Libera was announced, I did not feel that the urgency presented by the staff there was entirely justified. Never would I imagine that Andrew Lee would, within a week, exceed those warnings by a wide margin.

He and the current Freenode staff have proven that they cannot be trusted to be stewards of communities, by hijacking channels and disrupting them. They have proven to be incompetent, by affecting more channels than intended. They have proven to be discourteous, by requiring channel owners affected by their incompetence to apply, hat in hand and papers in order, for their channels to be reinstated. And finally, they’ve proven to be bad business people, by alienating their future customers and torching their future income stream.


I’m nostalgic for my almost 17 year old Freenode account. But the more time passes, the more bitter I become. I’m going to hang around in some channels to see how things work out. I’m open to a more humble approach from Freenode staff and boosters. But if I feel I can’t be a part of a network that treats its users as peons to be exploited, I’m out.

Monday, 2021-05-31