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.

2019-07-21 PureOS, Debian, and updates

I use PureOS, which is derived from Debian. Debian recently had a new release, so I was interested in learning how they handled it. Apparently not too well.

I had already added the following line to my /etc/apt/sources.list because I needed the GNU manuals:

deb http://http.us.debian.org/debian testing non-free

That’s why I wasn’t surprised when apt told me that something or other had changed from testing to something else. Whatever, I accept. For the purposes of this blog post I commented that line.

But something still isn’t right:

$ sudo apt update
Hit:1 https://repo.puri.sm/pureos green InRelease
Reading package lists... Done                               
Building dependency tree       
Reading state information... Done
All packages are up to date.
N: Skipping acquire of configured file 'main/binary-i386/Packages' as repository 'https://repo.puri.sm/pureos green InRelease' doesn't support architecture 'i386'

I wonder what that means.


Add Comment

2019-07-21 Not trusting a Mac

Here I am, sitting next to my wife’s unattended Mac. Suddenly the Mac’s fan is spinning up. What the hell?

I open a terminal and run top. Apparently load was up to 6, slowly going down but still around 3. How strange. I use the o key to change the sort order and use cpu as the primary key. The process using about 50% of the CPU is photoanalys. It’s shortened. I assume it’s photoanalysisid. Other people have reported something like it back in 2016.

Today, I had loaded some pictures onto the external disk. That would explain it? So I’m trying to eject the external disk, but that doesn’t work because it’s “being used by another process”. I still have top running. So now I’m force-ejecting the external drive. In the top window I see ReportCrash for a moment. What the hell is it doing?

This blog post says “it’s designed to saves the application state to aid developers in working out why the app crashed” (ReportCrash High CPU & How to Disable reportcrash in Mac OSX). OK, I guess?

But I think my main problem is I don’t trust systems that have a ton of processes starting up and doing stuff and shutting down and maybe all of that is required, and perhaps it’s “modular design”, but I also get a vague feeling of dread as the design of our machines complicates.


Comments on 2019-07-21 Not trusting a Mac

Just so you know I dislike this complexity in all systems, here’s what happened to me today with my GNU/Linux laptop: I pulled out the SD card including the adapter from my camera, marvelled at it, pulled the micro (?) card out of the adapter, showed it to my wife, put it back, and plugged it into my laptop. I heard the typical beep-bop sound, but the drive didn’t mount. I removed the card and heard the typical bop-beep sound. Repeated it a few times, but it didn’t mount. I asked for help on Mastodon, got some good replies, with ideas ranging from lsblk to mount to fdisk. But the thing that fixed it was trying the same thing on the Mac, seeing that it failed, pulling the micro card out of the adapter and inserting it again, and then trying it all over again. And then it worked.

So, the problem was that something about the contacts in the card adapter was good enough for the laptop to recognize a card but not good enough to recognize a filesystem on it? Or something? And the suggestions revealed the abyss of layers upon layers of architecture required to make external drives and plug-and-play and USB all work. And for a short moment, I wanted it all to just go away. What have we done?

– Alex Schroeder 2019-07-21 21:22 UTC

Every problem in computing can be solved by adding another layer of indirection, except the problem of having too many layers of indirection.

Ed Davies 2019-07-22 10:49 UTC


– Alex Schroeder 2019-07-22 14:10 UTC

Add Comment

2019-07-14 What I'm listening to

Not much has changed, I think. Podcasts I’m currently “listening” to. These are the podcasts I listen to, and the ones I am subscribed to with the intent of listening soon.

There also podcasts I am still subscribed to but I suspect I will unsubscribe soon enough, and a long list of unsubscribed podcasts.

None of my podcast subscriptions are set to download episodes automatically. Been there, done that, ran out of storage on my phone. 🤨

New additions:

  • Futility Closet, short, quirky and eclectic people stories ❤️
  • The Anthropocene Reviewed, also with short and quirky stories about what it means to be human ❤️
  • Blogs on Tape, with RPG blog posts

Old favorites:

  • In Our Time is about history, science and philosophy, one of the best podcasts out there ❤️
  • Thinking Allowed is about sociology, perfect smalltalk material ❤️
  • What Trump Can Teach Us About Con Law is about US politics and the US constitution ❤️
  • 99% Invisible is about design, architecture and the like ❤️
  • Dan Carlin’s Hardcore History is about history, with very rare episodes, but each episode is about 4h long ❤️
  • The History of Byzantium, which picked up where the History of Rome left off
  • The British History Podcast, excellent history stuff as well
  • Daydreaming about Dragons is the only RPG podcast I listen to on a regular basis
  • History of Philosophy Without Any Gaps, calming, excellent for walking to the office in the morning
  • History of the Crusades, I just haven’t had the time to listen to any episodes in a very long time
  • Revolutions, by the guy who did the History of Rome before that and I listened to all the episodes
  • The China History Podcast, more meandering history stuff, jumping all over the place but China is important and I love his super positive attitude
  • The Dungeon Master’s Handbook Podcast (sadly discontinued)


Comments on 2019-07-14 What I'm listening to

I think I might have mentioned the History of India podcast here before. It is also meandering but there are some awesome bits.

If you would like to hear about modern India and are tolerant of some amateur libertarianism, The Seen and the Unseen is a good time.

The History of Byzantium podcast reminded me about the BBC documentary Fall of Eagles(1974) about the precipitous decline of the major royal houses of Europe in the first quarter of the 20th century.

Podcasters are modern day storytellers and bards. Don’t retain much after a week but it does leave me with a warm glow of accomplishment.

AlokSingh 2019-07-11 02:46 UTC

Hah, good point, there! I’m not sure how much I retain when listening to things. I think it’s an interesting question of how memory works. My current assumption is this:

  1. we retain only a small number of things
  2. we reconstruct memories based on a small number of things

Thus, if a podcast can be reduced to a small number of things that allows the reconstruction of a coherent message, then we can recollect it easily.

I think that’s why, generally speaking, Thinking Allowed provides the most anecdotes for my small-talking life. There are so many conversations I start with “I recently heard on that sociology podcast that...” That’s because findings in sociology are interesting and can be reduced to a short snippet. The weird stories of Futility Closet might end up in the same genre.

History, science, and philosophy are different, however.

History is a long series of events that have to be remembered because that is the message; sometimes conclusions or highlights remain but it turns out to be hard to remember how it came about: the long list of events leading up to the interesting thing doesn’t stick.

Science and Philosophy are similar: it’s about the life of a scientist, a philosopher, their papers or their books, and so where as you might remember a snippet here or there, the overall picture continues to elude you unless you sit down and study the material.

All you’re left with is the memory of having heard something interesting.

– Alex Schroeder 2019-07-11 08:39 UTC

Add Comment

2019-07-14 Blogging Spirit

@wilfredh recently said:

… blogs are too time focused. There’s a pressure for novel ideas, ideas must be polished, and they assume you don’t want to edit old ideas.

Perhaps a bliki is a better model?

(Sadly the Bliki page on Wikipedia was deleted. 😞)

I’m not so sure about the wiki benefits. I love wikis. I’ve been using this wiki of mine since 2003 but honestly it mostly degenerated into a simple blog running atop a wiki engine.

The expectations of others is a pressure you will feel when writing on a bliki.

I use my site mostly like a blog. I like the ability to edit past pages and restructure stuff but mostly when I “restructure” something I just rename tags or I end up writing new category pages which contain a sentence or two and then they list the ten most recent tagged day pages on the subject.

When I write regular pages, I write them like blog posts. I sometimes revise them for a day or two, but soon I’ll add new information as comments on my own post. One way I feel pressured to this is my model of my readers: I think they aren’t glued to RecentChanges like I am but use a feed reader (or a Blogspot blogroll more likely) and so new pages are the signal that actually gets out and that’s what they expect. They don’t care to be notified of later edits have made to an existing page.

Another issue is that after a while you are happy that your thoughts are time stamped. Once you have blogged for a few years, your opinions change. I had some pretty strong opinions on the US invasion of Iraq, for example. When I comment on timeless things, pages can live in the WikiNow. But when commenting on events either in the news or in my life, I can’t go back and look at thousands of pages, editing them to reflect new insight. Newer pages must overrule older ones.

This wiki has currently over 7700 pages, comment pages and uploaded images.

Editing a wiki as a community establishes a territory, pages you care about, pages of compromise, of synthesis. Writing a wiki is a conversation. But if you’re basically the only author and readers just leave comments, then all of that doesn’t work. Thus, the Wiki Way is lost and the Blogging Spirit takes over.


Comments on 2019-07-14 Blogging Spirit

Absolutely agree with you on the benefits of blog posts being timestamped; a post represents one’s thoughts on the subject at the time it was posted but there’s no implied promise that it’ll be updated as thoughts evolve. This is liberating.

Further, it’s somehow cheating to go back and make a change without clearly marking that change (other than typo fixes and the like which don’t change the sense of the post and for which markup would just be clutter).

Ed Davies 2019-07-14 22:08 UTC

I haven’t spent much time contemplating the subject, but I have recently been thinking that what you have here is really a sweetspot between blog and wiki. As you will have noticed I really like the ability to quickly correct small typos/grammos that slipped through (something I never bother with if it involves emailing the author or pointing them out in a comment) and am thinking that if I would get into blogging I would want to do it on a wiki too.

I also think you get the best of both worlds in having the choice of putting the date in the title or not. When you do that it is clear that the ideas expressed are possibly fleeting. And when you want a “timeless” page for some topic I think omitting the date in the title but having most of the content be a living list of links to dated posts is a good model (living in the sense that you would update the list as your thoughts evolve, adding new dated posts and removing links to dated posts that have “expired”).

(Sidenote: You should let me know if my edits annoy you. I think what I like about it is that it feels like I am contributing back in a small way as thanks for the content you provide. I hope you take it as an acknowledgement that someone reads and enjoys it enough to care!)

– Björn Buckwalter 2019-07-15 08:33 UTC

And this is why I decided to decommission the old PmWiki on my personal website after nearly 12 years, while the OddMuse on No Time To Play is only proving more useful by the day. Can you guess which of them is being used for what it was built to do best? 😝

Felix 2019-07-15 12:20 UTC

Björn, I love your edits. Thank you very much! 🙂

Felix, I hadn’t seen the No Time to Play Wiki before. I like this not on your Recent Changes intro:

27 January 2019: one year after the big migration, it seems to be decided: long-form articles will go straight to the wiki, with suitable announcements posted to the new blog, and all the usual places. The blog will still be used for the more time-dependent write-ups in addition to the newsletters.

Heh! 🙂

– Alex Schroeder 2019-07-16 16:38 UTC

Oh dear, could’ve sworn you knew about it already. And yeah, that wasn’t planned, it just turned out to be the way I ended up using it after a while. By the way: no other wiki engine I’m familiar with treats Recent Changes as an ordinary page that can have manually edited content at the top, and that enables uniquely interesting uses.

Felix 2019-07-17 08:38 UTC

Thanks! If you have any ideas or things you’d like to try, let me know. 🙂

– Alex Schroeder 2019-07-17 20:16 UTC

Add Comment

2019-07-12 Morrowind

I played Morrowind for a bit on the old Xbox. The first one! I felt super retro. People tell me I should play it using OpenMW. Sadly, that isn’t packaged for my laptop’s distro (PureOS). I guess I need to use flatpak.

Get flatpak:

sudo apt install flatpak

Get OpenMW:

flatpak install --from https://flathub.org/repo/appstream \

Update the system?

flatpak update

Run it!

flatpak run org.openmw.OpenMW

More info here: How To Play The Elder Scrolls III: Morrowind On Linux With OpenMW. Got my GOG copy. And it seems to work! This didn’t work when I tried it back in March. But now it does. Happy!

Morrowind works!

To allow the Xbox 360 controller to be used:

sudo apt install xboxdrv
sudo rmmod xpad
sudo xboxdrv --silent

There’s a more permanent solution involving blacklisting the default xpad driver on How To Use And Configure Your Xbox 360 Controller on Linux. I haven’t tried that, yet.


Comments on 2019-07-12 Morrowind

Switching from the console to a laptop keyboard + touchpad isn’t easy. Mostly because I cannot use the touchpad while pressing a key, apparently! I guess I need to play with the Xbox 360 controller, or I need to get a real mouse.

– Alex Schroeder 2019-07-12 20:15 UTC

Add Comment

2019-07-11 The breaking of the web

Today I was looking for some info on the Mozilla Developer Network (MDN). It’s a great resource for us all. They asked me to partake in a survey on the frustrations of web developers. I couldn’t answer this one question because the survey site broke: I was supposed to drag some items around to sort them, but it didn’t work. I could not skip the question, and I could not report the problem.

Thats the very problem! 🙄

The problem with the web is that is so great, so grand – we need a huge monster of a browser to use it as some people would like us to use it. Since other people are simultaneously attacking, distracting, abusing and confusing us, we need an array of defences at the same time.

  • Privacy Badger
  • uBlock Origin
  • uMatrix
  • HTTPS Everywhere
  • HTTPS by default
  • Decentraleyes

More attack surface, more moving parts, more parties to trust. That’s why we need a simpler web: we want smaller tools, too!

People suggested Pi-Hole. A good alternative to an adblocker. But still only an adblocker. The browser remains just as bloated.

And yes, I like text-browsers like lynx, w3m, or eww inside Emacs. But these don’t work on my mobile devices, they don’t look as good on a graphical display. I like bold and italics and underline and font families and font sizes. Just look at this site! 😅

I also contributed to two gopher clients, wrote a web based gopher client, wrote a simple text server, wrote a gopher server for my wiki, and more. It’s not perfect but it’s an important alternative we can point at and say:

“Look at it! It doesn’t need much and we could have an experience that wasn’t as distracting, as ad-filled, as tracking-encumbered, as malware infested as the current web.”

A very small subset of HTML should be enough. Basically: Markdown plus maybe another ten or twenty things? It doesn’t need much more than that!


Comments on 2019-07-11 The breaking of the web

“A very small subset of HTML should be enough” You know who else thinks so? Google. They call it AMP 😉

Andreas Gohr 2019-07-11 21:38 UTC

That is not the main problem with AMP. 😀

– Alex Schroeder 2019-07-11 22:21 UTC

The problem is that it’s a different subset for everyone.

deshipu 2019-07-11 22:39 UTC

Well, part of the simplification is of course the loss of features that a subset of people pushed to be included, for sure.

– Alex Schroeder 2019-07-12 09:09 UTC

If I were to try a text-browser on my laptop (with some version of Windows), what would you recommend?

Ynas Midgard 2019-07-22 11:42 UTC

Lynx. 😀

– Alex Schroeder 2019-07-22 14:17 UTC

Add Comment

2019-07-10 I need ideas for captains

I’m running the Razor Coast (Swords & Wizardry edition) using my own Halberds & Helmets rules.

⚠ ⚠ ⚠ Spoilers! ⚠ ⚠ ⚠

The book has various sections but generally speaking, there are two main plots, more or less.

  1. the coming of Dajobas, god of sharks, and the were-shark infestation
  2. the coming of Harthagoa, god of mad tentacles, and the sahuagin

My players have practically finished the first plot. Now I should be running the second part. They know about Harthagoa, they know how to recognize a member of the ring, they know the prime suspects... and now I’m stuck. Uninspired.

I drew up a list of captains, both known ones and new ones.

And… nothing. I’m drawing a blank.

How frustrating! I need to get into the groove and I’m hoping that posting about it here and writing some pages on the campaign wiki is going to get me started again.

We are 44 sessions into this campaign and I’m fearing stagnation! But I don’t want to!

I’ve pulled out The Pirate’s Guide to Freeport but it is a long text to read and I don’t enjoy reading most RPG books.

Sometimes I am at a loss when thinking about where to take the campaign next and then I pick one of the books from my shelf, looking for inspiration and I’m struck by how useless the books I have are for the problems I have. People and shops and gangs and councils don’t make an adventure. If only I knew what makes text magical adventure inspirational material. Perhaps it’s me, not the text? Do I have to be in the right mood and surrounded by the right things for this to work? 😭

I think in this case the problem is that this isn’t even pirate material. There are pirates in the area, but basically I’m concerned with the captains in the city.



Add Comment

2019-07-09 Web Requests

I have dozens of little scripts, bash functions and aliases...

This one, for example, shows me the distribution of HTTP codes Apache is returning. These are the codes you’re going to see in the list below:

200OK, page was served
301redirect (permanent, this should go down)
302redirect (temporary, this might change in the future)
304not modified (no need to serve page, this is the best)
404forbidden (this is a suspected bot or spammer)
404not found (should be changed into a redirect)
408timeout (this is a problem)
502bad gateway (this is a problem)
root@sibirocobombus:~# time-grouping 
   09/Jul/2019:12:40        524     5%  403 (41%), 200 (40%), 301 (7%), 404 (4%), 304 (3%), 408 (1%), 302 (0%), 400 (0%)
   09/Jul/2019:12:30        677     6%  200 (69%), 301 (14%), 408 (4%), 404 (4%), 304 (3%), 403 (2%), 302 (0%)
   09/Jul/2019:12:20        628     6%  200 (69%), 301 (10%), 304 (5%), 408 (4%), 302 (3%), 404 (3%), 403 (2%)
   09/Jul/2019:12:10        860     8%  200 (57%), 403 (17%), 301 (13%), 304 (3%), 408 (3%), 404 (3%), 400 (0%), 302 (0%)
   09/Jul/2019:12:00        936     9%  403 (42%), 200 (40%), 301 (8%), 408 (3%), 304 (2%), 404 (1%), 302 (0%)
   09/Jul/2019:11:50        578     5%  200 (69%), 301 (12%), 304 (7%), 408 (3%), 403 (2%), 302 (1%), 404 (1%)
   09/Jul/2019:11:40        705     7%  200 (65%), 301 (10%), 503 (9%), 304 (4%), 408 (3%), 404 (2%), 403 (2%), 502 (1%), 302 (0%)
   09/Jul/2019:11:30        719     7%  200 (72%), 301 (9%), 304 (6%), 408 (5%), 404 (3%), 403 (1%), 302 (0%)
   09/Jul/2019:11:20        740     7%  200 (71%), 301 (10%), 304 (6%), 403 (4%), 408 (4%), 404 (1%), 302 (0%)
   09/Jul/2019:11:10        673     6%  200 (68%), 301 (13%), 408 (6%), 404 (4%), 304 (3%), 403 (2%), 302 (0%)
   09/Jul/2019:11:00        694     6%  200 (70%), 301 (12%), 304 (6%), 408 (4%), 404 (3%), 403 (1%), 302 (0%), 502 (0%)
   09/Jul/2019:10:50        580     5%  200 (72%), 301 (14%), 304 (5%), 404 (3%), 408 (2%), 403 (1%), 302 (0%), 400 (0%)
   09/Jul/2019:10:40        707     7%  200 (76%), 301 (9%), 304 (4%), 408 (3%), 404 (3%), 403 (1%), 302 (1%)
   09/Jul/2019:10:30        805     8%  200 (71%), 301 (14%), 408 (4%), 403 (3%), 404 (2%), 304 (2%), 302 (0%)
   09/Jul/2019:10:20        174     1%  200 (70%), 301 (12%), 304 (6%), 408 (6%), 404 (1%), 403 (1%), 302 (0%)

The time-grouping is an alias for:

tail -n 10000 /var/log/apache2/access.log | /home/alex/bin/time-grouping 10

And /home/alex/bin/time-grouping is a Perl script to parse access.log:

#!/usr/bin/env perl
use Modern::Perl;
use Time::ParseDate;

die "Argument '10min' to use smaller bucket size\n" if grep { $_ eq '--help' } @ARGV;

my $bucket = '1h';
$bucket = '10min' if grep { $_ eq '10' } @ARGV;

my $ESC = "\x1b";

sub red {
  my $text = shift;
  return '' unless $text;
  return "$ESC\[31m$text$ESC\[0m";

sub bold_red {
  my $text = shift;
  return '' unless $text;
  return "$ESC\[1;31m$text$ESC\[0m";

sub green {
  my $text = shift;
  return '' unless $text;
  return "$ESC\[32m$text$ESC\[0m";

sub yellow {
  my $text = shift;
  return '' unless $text;
  return "$ESC\[33m$text$ESC\[0m";

sub color_code {
  my $code = shift;
  return '' unless $code;
  return green($code) if substr($code,0,1) eq '2' or $code eq '304'; # or not modified
  return red($code) if substr($code,0,1) eq '5' or $code eq '408'; # server errors or timeout
  # return yellow($code) if substr($code,0,1) eq '3'; # redirects
  return yellow($code) if substr($code,0,1) eq '4'; # error messages
  return $code;

my %latest;
my %status;
my %count;
my $total;
while (<STDIN>) {
  m/^(?:(\S+):\S+ )?(\S+) \S+ \S+ \[(.*?)\] "(.*?)" (\d+)/ or die "Cannot parse:\n$_";
  my $host = $1;
  my $ip = $2;
  my $ts = $3;
  my $url = $4;
  my $code = $5;
  my $time = parsedate($ts);
  my $label;
  $label = substr($ts,0,14) if $bucket eq '1h';
  $label = substr($ts,0,16) . '0' if $bucket eq '10min';
  $status{$label} = () unless exists $status{$label};
my @result = sort {$latest{$b} <=> $latest{$a}} keys %count;
foreach my $label (@result) {
  printf "%20s %10d   %3d%%  %s\n", $label, $count{$label}, 100* $count{$label} / $total,
      join(', ', map { sprintf("%3s (%d%%)",
			       100 * $status{$label}{$_} / $count{$label})
	   } sort { $status{$label}{$b} <=> $status{$label}{$a} } keys %{$status{$label}});


Add Comment

2019-07-09 Burning Wheel

There are basically four areas where my preferences differ from Burning Wheel.

It’s strange to post summaries of blog posts written so long ago. But today I was talking to @awinter and @PresGas about Burning Wheel and I realized that I hadn’t put it all together in a single post. But now I do – to be used in another eight years as a point of comparison. 🙂


Add Comment

2019-07-08 Square Traveller

OK, square maps instead of hex maps, for Traveller, right?

This is the sort of map the Traveller Subsector Generator creates. It’s pretty good, I like it.

Original map

If you use the same data and rewrite it somewhat, you can use Text Mapper to generate the same map, but now with rounded communication and trade lines:

Hex map

And since Text Mapper recently got the ability of creating square maps instead of hex maps, all I had to do was fiddle a bit with the data, move the black frame around, move the labels into the correct positions, and we’re nearly there:

Square map

There are still so many things wrong: the symbols overlap the coordinates and the labels; the lines intersect the labels, so basically everything is terrible and unreadable at a second glance. But it will have to do for the moment. Perhaps if square Traveller maps make a breakthrough one day! 🤪

The map generated uses a separate map, Which in turn uses a separate library. If you want to regenerate, you need to put the following in the text area:

include https://campaignwiki.org/contrib/traveller-square-example.txt


Or take a look at the map and modify to taste.


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: ((nil) is (not(null))): April 2015 Diary Diary Diary