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-04-20 GitHub Backup

I don’t like the fact that GitHub has turned out to be the de facto central hub for Free Software development. But I use it, too. It’s easy to track issues, it’s easy to accept merge requests and comment on them without using Email, and so on. And that’s cool. But if GitHub goes down, are you sure you have a copy of all your local repos still available or did you delete some over the years?

We use multiple URLs for Oddmuse and that works quite well. Basically we pull changes from one repository and push to three of them. That means that the other two repositories are our backups.

So, here’s what I think I need to do:

  1. have a local repo on my laptop for every GitHub project I ever maintained
  2. keep remote repo on my own server just in case
  3. eventually, in case it’s ever necessary, install one of stagit, cgit, gitea, or gitlab (whichever is simpler to install and maintain)

I’ve been following chapter 4.4 Git on the Server - Setting Up the Server in the book.

Start as root:

# check that git-shell is missing and add it
cat /etc/shells
echo /usr/bin/git-shell >> /etc/shells
sudo adduser git
chsh git -s /usr/bin/git-shell
# answer some questions, then switch to user git
su git
mkdir .ssh && chmod 700 .ssh
touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys
# back to root
# copy authorized keys
cat /home/alex/.ssh/authorized_keys >> /home/git/.ssh/authorized_keys
# make sure git can use ssh if you use AllowUsers to restrict access
emacs /etc/ssh/sshd_config
service sshd reload

In order to add a new project, as root:

cd /home/git/
mkdir hex-mapping.git
cd hex-mapping.git
git init --bare
cd ..
chown -R git.git hex-mapping.git/

On my laptop, using magit in Emacs, this is what the remoting popup looks like:

Configure origin
 u remote.origin.url     git@github.com:kensanata/hex-mapping.git
 U remote.origin.fetch   +refs/heads/*:refs/remotes/origin/*
 s remote.origin.pushurl unset
 S remote.origin.push    unset
 O remote.origin.tagOpts [--no-tags|--tags]

(The only complication is that I don’t run my SSH daemon on the standard port because of all the login attempts.)

Or on the command line:

$ git remote -v
origin	git@github.com:kensanata/hex-mapping.git (fetch)
origin	git@github.com:kensanata/hex-mapping.git (push)
origin	ssh://git@alexschroeder.ch:882/home/git/hex-mapping.git (push)

You can add URLs using git remote add origin <url>.

This works!

Continuing to the next chapter, 4.5 Git on the Server - Git Daemon.

Edit /etc/systemd/system/git-daemon.service as root:

Description=Start Git Daemon

ExecStart=/usr/bin/git daemon --reuseaddr --base-path=/home/git/ /home/git/





Then, as root:

systemctl enable git-daemon

And something to do for every repository you create:

cd /home/git/hex-mapping.git
touch git-daemon-export-ok

Todo: adding monitoring to Munin and Monit. Then again... Why go through all that? I think having a backup is enough for the moment.

systemctl stop git-daemon
systemctl disable git-daemon


Add Comment

2018-04-13 Social Media Goals

More Mastodon thoughts...

Initial tests with automatic anti-lurker measures: of my 513 followers 289 haven’t mentioned me in the last 12 weeks (same number if considering all the mentions, ever). That would be a strangely big list of people to block, if that was my strategy to block bots and spyware. But isn’t interaction what I’m here for? I feel like radio blocking listeners who never call in. Or should I feel like hanging up the phone when the other side never says a word? That’s creepy, too.

The social sniffer is what I’m concerned about. I guess I just want to make that harder. Then again, sniffers can just slurp the public timeline and get all the data, right... 😭

On Google+ and Facebook, I blocked all the accounts that looked like spammers and leeches to me. They had to have something, anything on their profile to indicate that they were interested in communicating with me, or a common interest. Just a signal. Anything.

I guess one other thing I could try is unfollow anybody who isn’t following me? I realize that such a mass unfollow and blocking tool is not for everybody but I keep wondering what kind of social media I’d actually want to see and I keep thinking I want to connect with people, and have conversations. If we’re not having conversations, perhaps we should just read each other’s blogs. Or perhaps I’m demonstrating to myself how conflicted I am about the entire notion of social media.

I just imagine sitting in a room full of people. I sometimes say a thing. Some people wink. Some people wave. Some people say something back. And some just sit there and listen. They’re eyes looking at me, at the people reacting, back at me. They never blink. It’s creepy as hell. What are they doing in the same room as I am. I want to invite them into the conversation but I don’t need them just sitting there, listening in.

Clearly some people have something to say to a lot of followers. They act like multiplicators. They can have a beneficial effect, like teachers. People learn by following them. Or they can be influencers, adsters, fakesters, propagandists, sniffers, marketeers, profilers, secret service, all sorts of unsavoury jobs. But if you follow somebody like you follow a blogger, clearly an intentional one-way communication, then that’s cool. But I think that’s not what I want.

Maybe I want a slow moving, asynchronous chat room.

I’ll think about this some more, for sure. I think writing the code and looking at what it would actually do, seeing those ratios, perhaps that’ll help me make up my mind. What is it that I want from Mastodon?


Comments on 2018-04-13 Social Media Goals

I think the shear amount of stuff that one can read is so big, that it’s really difficult to stop for a moment and talk back, instead of moving to your next favourite corner of the Internet. As for me, I often don’t know what to say!

I like Twitter for the ease of interaction. I like blogs for solid bodies of communication, with links, history, pictures... I don’t love G+, but all the interesting folks are there!

– Enzo 2018-04-17 16:17 UTC

Yeah, the big exodus from Blogs to G+ still hurts! 😅

– Alex Schroeder 2018-04-18 13:56 UTC

Add Comment

2018-04-13 Backup Format

A discussion on Mastodon about the file formats of backups led me to think it through again:

First things first: I have two sets of hard disks for backups, one for each laptop. We keep one set at the office at all times. We make occasional backups on one set, and take it to the office, and we bring back the other set. This protects us against theft and fire.

I started using Borg Backup last year.

I don’t care about the file format used per se. I still feel that a backup solution should be very robust and that robustness should be more important than deduplication and all that, and that’s why I really liked my old rsync based backup. But setting it all up to have multiple linked snapshots would have been hard, too.

My measure of robustness is perhaps colored by the occurrence of bad sectors in the old days of floppy disks. Thus, a format is robust if I can still read the rest using a tool. That disqualifies compressed data, encrypted data, or anything else that results in a dependency on bytes in the damaged sectors (virtual file systems and the like). Basically, anything but plain text. 🧐

In my situation, I decided I valued encryption more than robustness because I am keeping external disks outside our home. Given that this already results in an opaque byte soup, I decided I might as well use any other format (Borg Backup, whatever). That’s for making backups of my laptops to keep them outside our home.

On the other hand, when making backups of my servers to my laptop, the situation is different: encryption is not essential, and plaintext is robust, and that’s why I use rsync.

Anyway. The most important part is to make backups. Any kind of backup will do. And check whether you know how to recover files from the backup!


Add Comment

2018-04-12 Bad Wi-Fi

I am travelling in Japan and the hotel Wi-Fi networks I have seen are sometimes very bad. Sometimes I cannot connect. Sometimes there is terrible lag. Sometimes it feels worse than a 300 Baud modem, if you still remember those.

And I’m noticing that my Purism Librem 13 laptop feels a lot more sluggish than my iPhone 6S. Why is that? Does the iPhone have better Wi-Fi? Is this typical for laptops? Is the antenna in the wrong place? Interference? Cheap materials? Any idea?

Image 1


Comments on 2018-04-12 Bad Wi-Fi

Something to remember for alter when WiFi improves:

“Japanese Style Originator (TV show)”

Just now a friend recommended I watch this show on Japanese craftsmanship. Too bad I don’t have Netflix and hardly ever watch tv. It seemed super interesting. But I know myself: I’ll want to buy all the Japanese products, then. 😢

On Mastodon, Hannah wrote:

This is what an episode would look like typically (and actually a cute one because of the dog!) https://www.youtube.com/watch?v=aO890en86n4&list=PLUeD1nTTObMxeba37P5q4hzh-kFNC_F0p&index=54

One for crafts https://www.youtube.com/watch?v=0kz7bfImxaM

Netflix offered translations but you can also try to watch via automatic translation on YouTube.

– Alex Schroeder 2018-04-18 13:28 UTC

Add Comment

2018-04-11 Killing Gopher Servers From Russia

My Gopher server crashed and burned today. When my monitor finally killed it, it took so long to shut down that the address was still in use when the replacement got started and so it didn’t get back up. What was this all about?

alex@sibirocobombus:~$ bin/time-grouping-gopher < farm/gopher-server.log.1
         Hour Connections   [%]  Selectors   [%]
2018-04-10 06          60    1%         60   1%
2018-04-10 07          84    2%         84   2%
2018-04-10 08          77    2%         76   2%
2018-04-10 09          55    1%         54   1%
2018-04-10 10          40    1%         39   1%
2018-04-10 11          39    1%         39   1%
2018-04-10 12          81    2%         81   2%
2018-04-10 13          62    1%         62   1%
2018-04-10 14          36    1%         36   1%
2018-04-10 15          40    1%         40   1%
2018-04-10 16          72    1%         72   1%
2018-04-10 17          45    1%         45   1%
2018-04-10 18         151    3%        151   3%
2018-04-10 19        4202   83%       4182  83%

OK, so somehow somebody felt it was OK to write a bot that made 4202 connections in 3600s. Please don’t be this person.

What do we know about this person?

alex@sibirocobombus:~$ bin/ip-numbers-gopher < farm/gopher-server.log.1 | head -n 2
                  IP Connections   [%]        4162   83%

What does WHOIS tell us?

inetnum: -
netname:        Neo-CNT
descr:          BRAS E-320-32 DHCP-pool
descr:          Russian Central Telegraph, Moscow
country:        RU

Thanks, person.


Comments on 2018-04-11 Killing Gopher Servers From Russia

C-Keen says this same IP has had him implement the “tarpit”: gopher://vernunftzentrum.de:70/0/ckeen/phlog/2018-04-09-Dealing-with-rogue-crawlers.md

– Alex Schroeder 2018-04-11 23:26 UTC

Add Comment

2018-04-10 Updates

Not much to say. I’m enjoying my time in Japan. Sometimes, when we’re back at the hotel, I sit in my room and work on Hex Describe. Check out the activity on GitHub, if you’re interested.

If you want, reload the village description a few times. There’s more information for keeps, towers, and temples of Set, Orcus, and Thor. I still need to add more descriptions for the remaining major powers.


Add Comment

2018-03-31 Love and Death

Off to Japan for three weeks.

I don’t remember the last time I went on holidays with strangers, without visiting family and without my wife. I keep thinking about a hike along the Beara peninsula in Ireland, must have been when I was around 20 I guess. So, 25 years ago? She really is my most favorite person, ever. I hope you all don’t mind my rambling at the airport as I wait for the plane.

Pictures… A trip down memory lane... looking at an album I made with my first digital camera. Back then I thought 640x480 pixels was plenty. We sailed from Portugal to Morocco and back. Fifteen years ago. We look so young.

When we were young, we feared that we might not keep the relationship going. So many breakups all around us. We met in Highschool, both being each other’s first partner. It seemed so hard. So many misunderstandings. So many tears. But now we’re older and we fear simply dying of cancer, in air plane crashes, car accidents, and being left behind.

We used to not fear death. We never even thought about it. But then she got cancer and everything changed. It’s gone now, but it could be back anytime. And the fear is back whenever there is a lumps somewhere, whenever we go do the checkups. The feeling when she gets out of MRI and they didn’t find anything. Such relief!

Anyway, enough rambling. I need to go to the gate.

(Based on a Mastodon thread.)


Add Comment

2018-03-30 the Web is Broken

At the office, our app doesn’t quite work correctly at the client‘s site because of security issues, we think. Something about the Internet Explorer handling sandboxes when links are followed and how to enable JavaScript at the target location.

Just reading that paragraph gives me slight nausea. The simple fact that I need to know about Content Security Policy (CSP) tells me that some serious overengineering has taken place.

It should be as easy as 1-2-3!

  1. HTTP 1.0
  2. HTML 2.0
  3. CSS 3.0

Something like this.

I feel like I want a web browser for iOS that looks like lynx. I want to use the mouse to scroll and click. But I think I can do without pictures, videos, and JavaScript. I can even do without fonts and colors and text sizes.

I feel silly for saying it but reading gopher sites using VF-1 is so pleasant it amazes me every day. Just text.


Add Comment

2018-03-29 Moku Pona Update

I think I want my moku pona updates to be more compact, so I made some changes. If you want to be more careful, make sure you get v1.0.


[1] tomasino/
[2] ckeen/
[3] sparcipx/
[4] kensanata/
[5] jebug29/
[6] cat/

[7] ja/
[8] yargo/
[9] tfurrows/


[1] 2018-03-29 kensanata/
[2] 2018-03-29 tomasino/
[3] 2018-03-29 ckeen/
[4] 2018-03-29 sparcipx/
[5] 2018-03-29 jebug29/
[6] 2018-03-29 cat/
[7] 2018-03-27 ja/
[8] 2018-03-27 yargo/
[9] 2018-03-27 tfurrows/


Add Comment

2018-03-29 Generating Islands

Vague thoughts on randomly generating a map for a pirate campaign, or a colonialism, slavery, the spice trade, the silver train (and robbing it), and all that.

Think about the Haitian Revolution. Or Ching Shih. Pirates! The Philippines.

I think the first problem I usually have is island formation. Specially if we want atolls, or a chain of islands. Are we going to model a hot spot like Hawaii? Or something like the Caribbean, or the Pacific Rim? How many hexes per island are we going to aim for? If it is going to be just three or four per island, then questions of altitude are moot. But if we want to generate islands like Cuba and Tahiti, the result would be very different.


Add Comment



Please make sure you contribute only your own work, or work licensed under the GNU Free Documentation License. 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 Troll and Flame