Welcome! :-)

This is both a wiki (a website editable by all) and a blog (an online diary about the stuff Alex Schroeder reads and does). If you’re a friend or relative, you might be interested in reading Life instead of this page. If you’ve come here from an RPG blog, you might want to head over to RPG. There are other similar categories to be found on the SiteMap.

Für Rollenspieler gibt es ebenfalls eine eigene RSP Kategorie.

2018-12-10 Useful Information

I sometimes think about information and how the usual ideas don’t help me think about information overload, or disinformation, or propaganda.

So what is information?

“Information reduces uncertainty. The uncertainty of an event is measured by its probability of occurrence and is inversely proportional to that. The more uncertain an event, the more information is required to resolve uncertainty of that event.” – Wikipedia

I’m not sure how useful that is to me. Let me think about it in terms of something I know: weather forecast. If I don’t know what the weather is and I look outside and see the rain, then I know it rains. Let’s assume that I know any typical moment in Switzerland has a 5% chance of being rainy. So the uncertainty was 5%, and by looking outside I managed to gather information: I probability of rain is now 0% or 100%, depending on the outcome. And the information that it is currently raining is more valuable than the information that it doesn’t because I could have guessed that it doesn’t rain and I would have been right in 95% of all cases.

A similar idea is what I’ve heard say in the past about the weather forecast: if you just forecast the same weather for tomorrow as you’re seeing today, you’re going to be right 80% of the time. That’s why weather forecast is hard: you’re trying to push those 80% further up and it gets more expensive the closer to 100% you’re getting.

So now I’m thinking about this and I wonder.

If information isn’t actionable then I can’t do anything based on the information I learn. Learning about the weather in America isn’t useful for me because I can’t do anything with the information as I’m in Europe. Almost all the news that we see in the media falls roughly into this category. What are you going to do based on this? My guess is that the only information in traditional media that has an effect on my behaviour are items that make me buy things, and items that make me change my vote. Once I’m not buying stuff, and I’m set in my ways, traditional media has practically no value for me.

If information isn’t different from the mainstream then I can’t do anything different from what everybody else is doing. That’s similar to the weather forecast issue. I can always look at my friends and neighbours in order to figure out what to buy and who to vote for. Thus, traditional media needs to provide interesting and exotic information for me to read it. If everybody knows about Dieselgate and doesn’t buy a Diesel car, then what else is there to write about it?

Everything else seems to be a matter of entertainment (and feeling smug about the unwashed masses might count as a very simple form of entertainment). But it isn’t useful information. I find myself in this situation often enough. Somebody reads a newspaper and wants to talk to me about celebrities or crime or TV and I just can’t be bothered. I won’t change my behaviour. It isn’t novel and different enough from what everybody else knows. I am seldomly entertained.

I guess from the point of view of the state having citizens sharing a lot of values is a benefit. But sadly, my individual wishes go against this. As an individual, I prefer a disorganized, fragmented information landscape. But doesn’t that open the doors to the better organised parties? You just fake it: claim to be the underdog, the citizen reporter, show the outrageous material, emphasise the anger, the rage, the injustice, fan the fire, mobilise your readrs and push people to action when it’s time to get things done.

I’m stuck somewhere around here. Does that mean we just need to counter-organise? Feed the same outrage? Or resort to the ideals of the renaissance and write books like Nathan the Wise and hope for the best? I don’t know. I don’t know.

But something needs to be done!


Add Comment

2018-12-10 Handwritten Digits for Download

In 2017 I announced a git repo containing handwritten digits suitable for machine learning. Some coworkers and I wanted to get some hands-on experience with Deeplearning4j and that included the entire experience of collecting and preparing the data. That’s why we didn’t want to just use the MNIST database. («The MNIST database of handwritten digits, available from this page, has a training set of 60,000 examples, and a test set of 10,000 examples. It is a subset of a larger set available from NIST. The digits have been size-normalized and centered in a fixed-size image.»)

In addition to that, the MNIST database has handwritten digits by Americans. But here in Switzerland we don’t necessarily write the digits in exactly the same way, so that was an additional incentive to collect our own data. And we did!

This year, however, I talked to one of our customers. We had trained a neural network to recognise digits on a much, much larger set of data. I wanted to make these digits available, too. And they agreed! Thank you!

That’s why there are now more than 800,000 handwritten digits in this repository!


Comments on 2018-12-10 Handwritten Digits for Download

800000! gewaltig!

– Chris 2018-12-13 18:49 UTC

git add hat auf Windows 10 über 1h gedauert, also habe ich den Rechner über Nacht laufen gelassen. git commit hat dann nochmal etwa 1h gedauert. Hochladen waren dann relativ schnell, haha.

– Alex Schroeder 2018-12-13 22:24 UTC

Add Comment

2018-12-09 Indian Fascists

Today I had my first encounter with an Indian fascist, online. Here are some of the messages I wrote. It all started with me noticing their profile: “Proud Hindu. Nathuram Godse a hero.”

Nathuram Godse is the guy who killed Gandhi.

I asked: How do you explain “Nathuram Godse a hero”? That seems very distasteful to me.

I got back some blurb about opinions and freedom of speech.

I said: You have all the freedom of speech you deserve. I don’t have to support you or your words, though. That’s my freedom of speech.

I get back that it would be “hard” for me to understand Indian politics.

I said: I think it does come down to politics. If I get the impression that you support the denigration of Muslims (see that toot about the hijab), then of course I will draw a line to the massacres in Gujarat. If you think Nathuram Godse was a hero, then perhaps you think Gandhi deserved a death sentence without a trial, which I find objectionable... And nationalism is not a defence. We did have National Socialism in Europe, after all.

So all in all, I don’t think you have to bend over and self-censor your words. But I totally don’t support them. And just as I wouldn’t want to provide a platform for nationalists here in Switzerland, I don’t think I need to provide a platform for nationalists in India.

I get back lists of crimes from the wars of India and Pakistan, of the crimes that started it all in Gujarati, and so on. It was a long list. “Do a little research,” he said. Ah, same old same old, adding some insults.

“Fact dont care about your feeling. Hopefully You dont block me like liberals do😁😂😂😂” OMG, why do they all write like children?

I said: Well, I’m certainly not interested in talking to you, given all the things you just wrote. Do you not see who benefits when spreading this one dimensional thinking? Do you think another war, another persecution will fix things? Of course not. What’s your plan for peace in 50 years? Of course it’s always possible to find atrocities on both sides of a conflict. But if every act of violence justifies the next, then that’s what you’re going to achieve.

So given my Indian friends, and my Pakistani friends, and what I know about the history of India, Pakistan and Bangladesh, and of the recent political developments in India, I know that your brand of nationalism is the one that is going to drag the country down. Nothing will ever get better with that attitude. This is not the attitude required of a good soldier, it’s an insult to demand this kind of uncritical thinking. You can do better, and others are doing better.

I got more messages with crimes committed intermixed with jibes and insults.

I said: Stop sending me your insults (baby bubble etc) and learn to look across the edge of your world. The crimes you mention don’t justify an equally abhorrent policy. How will your Hindu nationalism solve this problems? Will you support ethnic cleansing? The facts are true but the conclusions you draw will result in more of the same: more war, more forced conversions, more rape. If you think Narendra Modi was never involved in a scam, you should start learning more him and his party.

Start some reading: “The purpose was to polarise Gujarati society and attract Hindu voters to the BJP.” (The candidate from Gujarat, 2014)

You are exactly one of the gullible ones who fell for the simple plot, as old as humanity.

I was told that western media are “always” making Hindu nationalism look bad. Oh well.

I said: Well, what if I had a dozen more articles to prove my point. All lies as well? How will we ever communicate, then. You have shut yourself off from reasonable arguments. Don’t be enraged by anecdotes of violence even if they are true. You are being made a tool to keep other people in power. People who don’t have solutions for your country and who think it’s not in their best interest of you learn more. I don’t have anything to gain from it. But the nationalists do.

Think about it! If foreigners can never understand your situation, then only your leaders can. How convenient for them!

And finally, when I said in a toot that I was “taking one for the team,” as I was talking to a Hindu nationalist, I got a public message. And that’s why I feel ok putting their name, here.

I said: @vaibhavgupta Well, as I told you in that long exchange I think you’re being a tool for your leaders and you don’t even realize it. Perhaps one day you will. You write about my filter bubble but when I link my sources you claim they don’t understand because only your sources know the truth. 🤷‍♂️ That’s why it’s useless to talk to you. Live your Indian fascist dreams, for now. See where they take you.


Comments on 2018-12-09 Indian Fascists

“...as used, the word ‘Fascism’ is almost entirely meaningless... almost any English person would accept ‘bully’ as a synonym for ‘Fascist’. That is about as near to a definition as this much-abused word has come.” --George Orwell

You’re basically accusing him of being a thought criminal. Which is not something you say to persuade someone, it’s something you say to shut someone up.

Which is why you’re getting back blurbs about free speech.

– Anonymous 2018-12-10 01:20 UTC

I think that quote has been superseded by Umberto Eco’s essay on Ur-Fascism.

I’d be interested in what you would have told him, particularly in terms of persuasion. I did have a plan, after all: to sow the seeds of doubt.

I also think you are misusing the term “thought criminal”. I’m not accusing him of thinking the wrong things. I’m accusing him of saying the wrong things, in public. Free speech means you get to say what you want and so do I. In his particular case he wanted something from me (to be listed on a site I run) and I denied that request based on the things he said. Hardly a case of free speech being denied but of speech having consequences.

– Alex Schroeder 2018-12-10 06:30 UTC

Indeed. It is a fine line that is sometimes not immediately clear in the heat of the moment. The fact that unpleasant people exist is a consequence of free speech.

AlokSingh 2018-12-10 13:22 UTC

Add Comment

2018-12-03 Fennel

Fennel is a Lisp that translates straight to Lua. I’d like to learn more about it because @technomancy writes a spaceflight progamming game called Bussard using it.

So I’m doing Advent of Code using Fennel. I’m three days in and I like it so far.

Some weird things I’ve noticed:

  1. There are no breaks from loops! Thus, while you can write a loop with an explicit exit condition like (while (not done?) ...) you have no way to exit a loop like (each [key value (pairs table)] ...).
  2. I miss so many Lisp things, like ... lists! There seem to be no lists in this language. How the hell is this a Lisp? Oh well. Apparently you can use Lua tables as lists, but I keep using them as maps/hashes/dictionaries.
  3. If you use let to create a local binding, you can’t set it! That’s weird for somebody like me who’s used to Emacs Lisp.

If you want to look at my code, take a look at the 2018 folder in my advent repository.


Add Comment

2018-12-02 Writing Science Fiction

Yeah, Science Fiction, speculative fiction. I think I like it best when the story is in “the future” but relatable. The only thing this adds is a sort of tech “magic”, the “tech babble” words that incite the imagination, and at least one extrapolation of a social idea. What if ... ? And so for my story of the Swiss ship Hoffnung I have decided to be inspired by the political conflicts shaping Red Mars by Kim Stanley Robinson. (See Mars trilogy on Wikipedia.) In particular:

  • What happens if there is no police?
  • How do you de-escalate a conflict?

Is there a way to return to peace? Remember post-war Germany was full of Nazis. All the judges were still the same. Almost the entire elite continued in their position of power. No wonder the younger generation was pissed. But it’s that old wisdom: people don’t change their mind, they die and get replaced by others with different opinions (which they then also don’t change). How do we break through this?

I have no idea how this story is going to end.

(Continued from 2018-11-30 Ship «Hoffnung».)

-+-+-+- Social Report -+-+-+- D33.112 -+-+-+- Orange -+-+-+-
Samuel Hochueli speaking in the name of the free anarcho-communist
commune-ship Hoffnung. We hereby declare our independence from
shareholders and all contracts the previous owners of Hoffnung entered
in. We consider these to be null and void. The resources of this ship
have been claimed by the people, for the people. The regular crew you
employed continues to sleep safely in its cryo sleep. While they
sleep, we woke early and plan the new future for TRAPPIST-1d. We
reject the old plans of a shipping outpost, a refueling station, an
industrial hell hole; instead, we proclaim intellar siblingtude with
all native life in the One ocean. We shall build a new society, free
from late stage capitalism. Philomena Auerbach has redone our recent
nav-vectors and we shall land the ship on TRAPPIST-1d. Do not expect
the promised refueling station when you come there. Instead, we await
new settlers willing to join the first interstellar utopia. Welcome.
-+-+-+ End of Report -+-+-+ Signed SAHOC -+-+-+ 

And today:

-+-+-+- Sidechannel -+-+-+- C33.257 -+-+-+- Ultraviolet -+-+-+-
Wullschlegel awake. Activating secret security protocol 9a.7.
-+-+-+ End of Sidechannel -+-+-+ Signed HEWUSC -+-+-+ 

See Cosmic Voyage for more.


Add Comment

2018-12-01 Thinking about the real RSS 3.0

I’m still sad about RSS 2.0 and Atom. Why didn’t we go the other way? Aaron Swartz had the right ideas and called it RSS 3.0! He was so ahead of his time.

Follow those links and read it. The introduction in particular is still gold! 😂


  1. Remove XML. XML is just too complicated and is against the spirit of RSS, which is Really Simple Syndication. [...] Instead, we’ll go back to RFC822-style fields. [...]
  2. Remove namespaces. Namespaces are just a waste of time. [...]
  3. HTML forbidden. No one needs HTML. Email has been just fine for years before Microsoft introduce their stupid rich HTML extensions. HTML is for those loser newbies. Any intelligent Internet user deals in plain text.

Clearly, it’s a joke. But the reason it burns is because it is so attractive.

And to be sure, it is a joke! Aaron Swartz was a member of the RSS-DEV Working Group which had developed RSS 1.0. He didn’t actually espouse the values expressed in the list above. But they still speak to me in an irrational way, like Gopher speaks to me.

Wouldn’t this make sense, in a retro kind of way? When some people start seeing a point in Gopher in an age of HTML 5 and rich multi-media hypertext, then perhaps we can also go “back” to a syndication format that never was. I don’t actually prefer Gopher to the Web. I prefer the spirit of Gopher. I like being able to write a client and a server in a few lines of code. i like the absence of Javascript and Cookies. I like the lack of surveillance. That’s because Gopher is simple. I want things to be simple. And I want feed parsing to be simple. Sure, there are libraries to help parse XML (like there are for HTTP, HTML, caching, headers, content negotiation, Javascript, and so on). But nothing beats a few lines of code.

sub ParseData {
  my $data = shift;
  my %result;
  while ($data =~ /(\S+?): (.*?)(?=\n[^ \t]|\Z)/gs) {
    my ($key, $value) = ($1, $2);
    $value =~ s/\n\t/\n/g;
    $result{$key} = $value;
  return wantarray ? %result : \%result; # return list sometimes for compatibility

Oddmuse uses this format to save data to disk. 🙃

Anyway, if you want to go for a deep dive, there is a lot more history and examples in the long, multi-page article The Evolution of RSS. The history section on Wikipedia is much shorter.


Add Comment

2018-12-01 Gopher space is growing

I love the tiny, expanding Gopher network. People hosting small public access shell servers, sometimes with only 128MB RAM, sometimes more, access via a restricted shell, sometimes with git, sometimes with a weird publishing system, all of them with Gopher hosting. 😍

It feels like the old days!

The old days that never were, to be sure. I do remember the old days. Applying for an email account at the department’s IT contact. Going into the cellar where the computer rooms were, and logging into an AIX. Rows and rows of computers, one or two other humans, practically no help, no search engines, everything was hard. We’re building a better past, striving for a brighter future!

And nobody – nobody! – was hosting anything, anywhere, outside of universities and some companies. People hosting stuff? By the people for the people? Not that I remember! Public access shell systems were rare and learning about them wasn’t easy. By the time I got an account I had already gotten used to free services like Geocities web hosting and Flickr image hosting and Google mail hosting…

As a reader, you need a Gopher Client.

As a writer, you need to ask the operators of one of the sites listed above for access. This will require you to use the shell and public key cryptography. Like a hacker! 😎 😂 But no worries: I wrote a short introduction here, for Cosmic Voyage. The instructions for how to generate your private and public keys and how to use the terminal, ssh, or PuTTY will be the same, however.

@dbucklin wrote a different introduction for Gopher authors: How to Gopher.


Comments on 2018-12-01 Gopher space is growing

Interesting, and timely. I installed pygopherd on an Ubuntu 18.04 VM yesterday to play around with it. Still learning the ropes but I’m intrigued with the uncluttered simplicity of Gopher.

– BedRockDocs 2018-12-11 13:26 UTC

Also, the archaic gopher menu files. 🙈

I have become so used to URLs, I’m confused when I realize that there’s no way to tell gopher clients that a particular link is with or without TLS. Which is why I was very confused when I started thinking about encrypted gopher.

– Alex Schroeder 2018-12-11 13:36 UTC

Add Comment

2018-11-30 Ship «Hoffnung»

I’ve continued writing on Cosmic Voyage.

(First instalment: 2018-11-28 Cosmic Voyage.)

-+-+-+- Regular Report -+-+-+- C98.204 -+-+-+- Orange      -+-+-+-
Dr. med. Ursula Hägi reporting on the second scheduled inspection. The
passenger status in cryo sleep is nominal. We have had no failures. My
companion for this round is Dr. phys. Hans Peter Frey. We've spent the
first two days reviewing the logs. Today Hans Peter found that the
cryo programming has been manipulated. I think he's a bit out of his
league. I tried helping out but in the end we just set the ship AI to
work. We're training an adversarial security network as we speak,
hoping to quickly isolate the misbehaving parts. The problem with this
approach is that we won't be able to learn what the saboteurs had
intended to do. Terrorists? Down-Earthers? Sometimes I wish we had
better military personnel on board. But who am I going to warm up? No,
we'll just let the ship work on it and if we get results in two days,
a warning for the next inspection team will have to do. Peace.
-+-+-+ End of Report -+-+-+ HAEUR -+-+-+ 

And my ship was mentioned by Tim Fletcher, Chief Engineer of the Garnet Star:

Herbert @ Hoffnung: Good to hear things are going well for you. I'm
glad you were able to catch that hydro leak early. Kell and I have
been running all over, looking over logs. We haven't found anything
amiss, which always bothers me. I'm sure something will turn up.

And so I wrote a reply for the Garnet Star, too:

-+-+-+- Inter Ship Relay -+-+-+- C98.204 -+-+-+- Orange      -+-+-+-
Dr. med. Ursula Hägi to Chief Engineer Tim Fletcher, Garnet Star. I
received your transmission and relayed your regards to Dr. med.
Herbert Wullschlegel. He's currently in cryo. I'm sorry to hear that
you have encountered navigational hazards on the way out. We're also
due in about 70 years, so hopefully we'll have some positive news to
report at around the same time as you. New results from TRAPPIST-1d
observations by our telescope indicate no changes compared to existing
data: very dry, having one ocean, orbiting the ultracool dwarf star
TRAPPIST-1, in the habitable range. I wish you good luck, Garnet Star!
-+-+-+ End of Report -+-+-+ HAEUR -+-+-+ 

And I have a new instalment prepared! I’m still trying to find a way to turn this from the Alien dystopia into Solarpunk. Spoilers, I guess? “Solarpunk is a Revolt of Hope Against Despair.”

(Continued in 2018-12-02 Writing Science Fiction.)


Add Comment

2018-11-30 Open Street Map in the Terminal

I will just leave this here:

telnet mapscii.me

Image 1

Image 2

Image 3


Add Comment

2018-11-30 Moku Pona and Gopher Feeds

I’m adding Gopher feed support to Moku Pona. In this context, a Gopher feed is a Gopher resource that returns a RSS 2.0 or Atom feed with gopher URLs as their links.

The URL could be in the text content of the link element like they do in RSS 2.0, or it could be in the href attribute like they do in Atom.

So with all of that out of the way, here are two Gopher feed URLs to look at:

  1. gopher://alexschroeder.ch:70/0do/rss
  2. gopher://gopher.leveck.us/0/phlog.atom

This should work:

alex@melanobombus:~$ moku-pona add gopher://alexschroeder.ch:70/0do/rss "Alex RSS"
alex@melanobombus:~$ moku-pona add gopher://gopher.leveck.us/0/phlog.atom "Jynx Atom"
alex@melanobombus:~$ moku-pona update
Fetching Alex RSS...updated
Fetching Jynx Atom...updated
alex@melanobombus:~$ vf1 ~/.moku-pona/updates.txt
Welcome to VF-1!
Enjoy your flight through Gopherspace...
[1] 2018-11-30 Jynx Atom/
[2] 2018-11-30 Alex RSS/
VF-1> 2
[1] Ship «Hoffnung»
[2] Comments on I don't like Bennies
[3] Influental Games
[4] Comments on Cosmic Voyage
[5] Cosmic Voyage
[6] Comments on What is Sandbox?
[7] Comments on Laptop Fan
[8] Gopher Module
[9] What is Sandbox?
[10] List of Open Books
[11] Fennel and Bussard
[12] Old Dwarf Drawings
[13] Petition
[14] Past and Current Reading
[15] 2019-02 Book Club

Now, it’s important to note that this is different from how Moku Pona worked before. Previously, it simply took the line from sites.txt and rearranged them in updates.txt. Thus, if you subscribed to alexschroeder.ch 😎 then the list of updates would also link to the same site. But this doesn’t work for feeds. If Moku Pona watches a feed, and it updates, you don’t want to get linked to the feed. You want to see a Gopher map of the links in that feed, right? So this is what Moku Pona does: it translates the feed into a Gopher Map and saves that into its cache. And when you look for the update, then it links you to the local cache.

This is what it looks like:

alex@melanobombus:~$ ls .moku-pona/
alexschroeder.ch-70-do-rss.txt       sites.txt
gopher.leveck.us-70--phlog.atom.txt  updates.txt
alex@melanobombus:~$ cat .moku-pona/sites.txt 
0Alex RSS	do/rss	alexschroeder.ch	70
0Jynx Atom	/phlog.atom	gopher.leveck.us	70
alex@melanobombus:~$ cat .moku-pona/updates.txt 
12018-11-30 Jynx Atom	/home/alex/.moku-pona/gopher.leveck.us-70--phlog.atom.txt	
12018-11-30 Alex RSS	/home/alex/.moku-pona/alexschroeder.ch-70-do-rss.txt		

This works well, locally. But if you’re sharing the updates.txt file, then people won’t be able to follow the link as the link to the updates leads to your local cache, on your local disk (in this case: /home/alex/.moku-pona). 😢


Comments on 2018-11-30 Moku Pona and Gopher Feeds

The page used to say that I was using the Gopher Module 1.0 but Tomasino convinced me that it wasn’t necessary. If you get the feed via Gopher protocol, provide a feed containing gopher links. If you get the feed via the web, provide web links. And never the twain shall meet, I guess. :)

– Alex Schroeder 2018-11-30 21:07 UTC

Add Comment



Please make sure you contribute only your own work, or work licensed under the GNU Free Documentation License. Note: in order to facilitate peer review and fight vandalism, we will store your IP number for a number of days. See Privacy Policy for more information. See Info for text formatting rules. You can edit this page if you need to fix typos. You can subscribe to updates by email without leaving a comment.

To save this page you must answer this question:

Please say HELLO.

Referrers: Diary Diary Planet Emacsen Gothridge Manor ZENOPUS ARCHIVES THOUGHT EATER HERR ZINNLINGS ARBEITSZIMMER Notes From Under the Kyak Alex Schroeder 🐝 (@kensanata@octodon.social) - Octodon Ynas Midgard's RPG Blog Dreams of Mythic Fantasy Diary