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-10-17 Trunk Quality Program

I fear that a lot of the people that volunteered for Trunk have either fallen silent (a common problem), or they don’t actually toot a lot on the topics they signed up for. Perhaps they’re interested in following more people tooting about the topic and were confused about the purpose of the lists, or they do write about the topics but they also write about a gazillion other things, drowning out the signal people might be looking for, or it turns out that they mostly boost other people instead of writing their own toots (in which case we might be interested in adding the people they’re boosting to our lists instead).

It’s difficult! I’m considering going through all the lists (ugh!) and clicking on all the linked people. Removing people from Trunk feels like acting as the content police. It’s awful. I need to get into the mindset of “curating.” Perhaps I wouldn’t feel so bad if I were a curator at a gallery, picking and choosing the people that get exposure. But who am I kidding. I’d still feel bad.

But I want better quality for Trunk! So I need to get into the groove. I need to repeat this, like a mantra:

  • If people are no longer active, I’m going to remove them.
  • If people are mostly boosting others, I’m going to remove them.
  • If people are mostly writing about other stuff, I’m going to remove them.

Should I notify them? I wonder. Are they going to change? I hope not! But perhaps it would still be fair to tell them. Hm. 🤔

Like this, perhaps:

Hi! I’m slowly going through the lists on Trunk to see whether people actually write about the topics they volunteered for. I followed a link to your profile and didn’t see a lot of posts on the topics you were listed under so I’m going to remove you from the lists. I hope you understand. 🙇 If you’re simply interested in reading about a topic, you don’t need to be on the list, you can simply follow people on the list. 🐘


Comments on 2018-10-17 Trunk Quality Program

Yeah, I think that the slight reminder makes a lot of sense. I don’t remember what I supposed to do after joining some lists to be honest.

Jacky 2018-10-17 07:15 UTC

Add Comment

2018-10-16 Uplinked Intelligence Wiki

@seanmccoy started the Uplinked Intelligence Wiki. It aims to be a repository of links to blog posts for running OSR style games in Sci-Fi systems: Stars Without Number, Mothership, Traveller, Rogue Trader, etc.


Add Comment

2018-10-16 Tactical Transparency

I just read an excellent essay by Zak on what the OSR is all about. The term he uses is “tactical transparency” and it makes a lot of sense to me:

Tactical transparency is the degree to which a common-sense idea that would be effective in the “real” situation that the game-fiction mimics would also be effective in the game. – Drunk, Prone & On Fire (Tactical Transparency)

The rest of the blog post explains what is meant and I enjoyed it very much.


Add Comment

2018-10-16 Old School RPG Planet coming back

I’m resurrecting the Old School RPG Planet. I have a little page for you if you want to learn more.

If you want your Old School Renaissance (OSR) blog to be listed, apply by sending me mail, or leaving a comment, either here, on Google+, or send me some mail. See my contact information.


Add Comment

2018-10-16 Diaspora

I recreated a Diaspora account, just in case Diaspora takes off instead of Old School RPG blogging. All I know is I’m not following the gamers from one proprietary silo (Google+) to another proprietary silo (MeWe).

“Can Diaspora be G+ 2.0? It seems way less shady than MeWe. Aspects look to be exactly the same as circles. You can post publicly, like this, or privately to one of your aspects. Posts support all of Markdown, so you they can be much richer than what you can share on Google+ currently. You can’t edit your posts, though. (Like Twitter, I guess.) Still, everything about this seems better than MeWe.” – Ramanan, on Diaspora


Add Comment

2018-10-13 cgit

@aminb asked my about my cgit setup.

This is /etc/cgitrc:

# cgit config
# see cgitrc(5) for details

root-title=Git repositories
root-desc=Code repositories hosted by Alex Schroeder




This means that the /cgit path from all my virtual servers is going to end up serving cgit. I don’t mind.

The /home/git directory has all my repositories:

drwxr-xr-x 24 git  git  4096 Sep 13 23:14 .
drwxr-xr-x  4 root root 4096 Apr 20 15:20 ..
-rw-------  1 git  git   146 Apr 20 15:27 .bash_history
-rw-r--r--  1 git  git   220 Apr 20 15:20 .bash_logout
-rw-r--r--  1 git  git  3526 Apr 20 15:20 .bashrc
drwxrwsr-x  7 git  git  4096 Sep 10 10:38 bitlbee-mastodon.git
drwxrwsr-x  7 git  git  4096 Jun 21 11:10 character-sheet-generator.git
drwxrwsr-x  7 git  git  4096 Sep 14 23:41 emacs-setup.git
drwxrwsr-x  7 git  git  4096 Jun 21 11:10 face-generator.git
-rw-r--r--  1 git  git    39 Jun 21 11:07 .gitconfig
drwxrwsr-x  7 git  git  4096 Jun 21 11:10 gridmapper.git
drwxrwsr-x  7 git  git  4096 Jul 20 00:12 halberds-and-helmets.git
drwxrwsr-x  7 git  git  4096 Jun 21 11:10 hellebarden-und-helme.git
drwxr-xr-x  7 git  git  4096 Jun 25 14:50 hex-mapping.git
drwxrwsr-x  7 git  git  4096 Oct  8 23:26 mastodon-archive.git
drwxrwsr-x  7 git  git  4096 Sep 17 07:42 mastodon-blocker.git
drwxrwsr-x  7 git  git  4096 Jul 16 15:34 moku-pona.git
drwxrwsr-x  7 git  git  4096 Jul 24 15:50 mu.git
drwxrwsr-x  7 git  git  4096 Sep 13 18:08 oddmu.git
drwxrwsr-x  7 git  git  4096 Oct  7 20:54 oddmuse6.git
drwxrwsr-x  7 git  git  4096 Oct  7 18:15 oddmuse.git
-rw-r--r--  1 git  git   675 Apr 20 15:20 .profile
drwxrwsr-x  7 git  git  4096 Aug 30 23:52 qmk_firmware.git
-rw-r--r--  1 root root  122 Jun  4 08:44 README
-rw-r--r--  1 root root   49 Jun  4 08:43 README~
-rw-r--r--  1 root root  494 Jun  9 00:36 root.html
-rw-r--r--  1 root root   14 Jun  9 00:30 root.html~
drwxrwsr-x  7 git  git  4096 Jul 17 13:57 sitelen-mute.git
drwxrwsr-x  7 git  git  4096 Jul 31 11:47 spellcasters.git
drwx------  2 git  git  4096 Jun 13 09:13 .ssh
drwxrwsr-x  7 git  git  4096 Sep 11 09:08 text-mapper-mastodon-bot.git
drwxrwsr-x  7 git  git  4096 Sep 18 11:59 trunk.git
drwxrwsr-x  7 git  git  4096 Aug 31 00:04 typing.git

Because I’m evil, the .gitconfig says:

	denynonfastforwards = false

The README file says:

# https://git-scm.com/book/en/v2/Git-on-the-Server-Setting-Up-the-Server
mkdir project.git
cd project.git
git init --bare

My root user has a little script called add-repo which I have to run to create new projects:


if [ -z $1 ]; then
    echo Must provide the name of a new repo
    exit 1
elif [ ! -z $2 ]; then
    echo Must provide just the name a new repo
    exit 1
elif [ -e $1 ]; then
    echo This file exists already
    exit 1

# https://git-scm.com/book/en/v2/Git-on-the-Server-Getting-Git-on-a-Server

mkdir "$dir"
chown git.git "$dir"
(cd "$dir" && sudo -u git git init --bare --shared)
echo Provide description
read desc &&  echo $desc > "$dir/description"

Remember the /etc/cgitrc file also mentioned some scripts for formatting. /usr/lib/cgit/filters/syntax-highlighting-or-markdown.py is what I frankensteined together. See 2018-06-11 Highlighting Code and Rendering Markdown for cgit for more.


Add Comment

2018-10-08 User Interface

Thinking about adding extra functionality for administrators to Oddmuse 6. But how to do that without cluttering the interface? I really like how right now the bottom of the page is just two links:

Edit History

Compared with the above, adding a link for something most people will never click is a bit jarring.

Edit History Administration

Now what?

Or perhaps we can “hide” this on Changes and History: at the top there could be a link to lock the site, or the page. That will require you to log in if you aren’t already, and so on.

This might actually work.


Add Comment

2018-10-08 Setting up Oddmuse 6

Here’s what I needed to do in order to get the Oddmuse 6 wiki up an running.

I downloaded and compiled the latest Rakudo Star sources (2018.06).

Install cro and Oddmuse 6:

zef install --/test cro
zef install Oddmuse6

🔥 When installing dependencies using zef as shown, you could be running into an OpenSSL issue even if you have the correct development libraries installed. On Debian, you need libssl-dev but apparently versions 1.1.0f and 1.1.0g won’t work. See issue #34. You could decide to ignore SSL support and opt to have a web server act as a proxy which provides SSL. That’s what I intend to do. In which case there is a terrible workaround available: run zef install --force-test IO::Socket::Async::SSL before you zef install Oddmuse6.

Create a new application. Remember that installing cro printed a message telling you where the binary got installed. I’m assuming you added $HOME/rakudo/share/perl6/site/bin to your PATH.

Start with a stub and accept all the defaults:

cro stub http oddmuse6 oddmuse6

Now edit oddmuse6/services.p6 and replace use Routes with use Oddmuse::Routes.

You can delete the oddmuse6/lib/Routes.pm6 which cro stub generated for you.

Your default wiki directory is oddmuse6/wiki, so we need to tell cro to ignore it. If you don’t, you’ll confuse cro to no end as soon as you start editing files! Add the following section section to your in oddmuse6/.cro.yml file:

  - wiki/

Run it:

cd oddmuse6
cro run

Check it out by visiting http://localhost:20000. Your wiki is ready! 🙃

But this is not enough. I needed to get my own domain. My name service provider for oddmuse.org is Gandi so I logged in, found the entry and added a new subdomain called next pointing at the same IP, basically a copy of the www subdomain.

Next, I tell Apache about it. I’m using Dehydrated to get my oddmuse.org certificates from Let’s Encrypt and I’m just going to reuse them.

In the file /etc/dehydrated/domains.txt I added the new next.oddmuse.org domain:

oddmuse.org www.oddmuse.org next.oddmuse.org

Then I ran /usr/bin/dehydrated -c as root to check and possibly renew all my certificates.

I’m using Apache as my webserver. I edited /etc/apache2/sites-enabled/500-oddmuse.org.conf and added two new sections for next.oddmuse.org.

The first redirects HTTP traffic to HTTPS:

<VirtualHost *:80>
    ServerName next.oddmuse.org
    Redirect permanent / https://next.oddmuse.org/

The second redirects all HTTPS traffic it receives back to HTTP on port 20000, which is where Oddmuse 6 is listening.

<VirtualHost *:443>
    ServerAdmin alex@oddmuse.org
    ServerName next.oddmuse.org

    RewriteEngine on
    RewriteCond "%{HTTP_USER_AGENT}" "Mastodon"
    RewriteRule ".*" "-" [redirect=403,last]

    SSLEngine on
    SSLCertificateFile      /var/lib/dehydrated/certs/oddmuse.org/cert.pem
    SSLCertificateKeyFile   /var/lib/dehydrated/certs/oddmuse.org/privkey.pem
    SSLCertificateChainFile /var/lib/dehydrated/certs/oddmuse.org/chain.pem
    SSLVerifyClient None

    ProxyPass /             http://next.oddmuse.org:20000/


Thus, all connections to the wiki are encrypted. What about people connecting to port 20000 directly? Well, I have a file called /etc/apache2/conf-enabled/security.conf which has a few settings including this one:

# Setting this header will prevent access via HTTP.
# Requires mod_headers to be enabled.
# See https://tools.ietf.org/html/draft-ietf-websec-strict-transport-sec-14#section-6.1.2
# The number of seconds is the equivalent of one year.
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"

The rewrite rule for Mastodon is a simple defence against the spikes I get when I share links to my sites. In a second, all the servers seeing the link attempt to fetch a preview image and in order to avoid overloads, I just disallow these.

So now, finally, requests end up as simple HTTP on 20000. Unfortunately, the wiki is listening on localhost, not next.oddmuse.org.

So I wrote a little wrapper script to set all the options, write a PID file and all that. I called it ~/bin/oddmuse6.

if test -f $pidfile; then
    echo Killing $(cat $pidfile)
    kill -SIGTERM $(cat $pidfile)

export ODDMUSE_MENU="Home, Changes, About"
export ODDMUSE_QUESTION="Name a colour of the rainbow."
export ODDMUSE_ANSWER="red, orange, yellow, green, blue, indigo, violet"
export ODDMUSE_SECRET="rainbow-unicorn"
export ODDMUSE_HOST="next.oddmuse.org"
export ODDMUSE_PORT=20000

cd $HOME/oddmuse6
rm nohup.out
nohup /home/alex/rakudo/bin/perl6 service.p6 &
tail nohup.out
echo $! > $pidfile

But that still isn’t enough because ODDMUSE_HOST and ODDMUSE_PORT actually don’t match the environment variables used in oddmuse6/service.p6. Each cro service gets to environment variables that determine its host and its port. Their names depend on the name you provided when you called cro stub. If you called it oddmuse6 like I did in the example above, the two environment variables you need are called ODDMUSE6_HOST and ODDMUSE6_PORT. I just changed them to ODDMUSE_HOST and ODDMUSE_PORT in service.p6.

As you can see from the shell script, I’m not even using cro run to run my wiki. I’m using perl6 directly. I’ll have to think about that. I suspect there are benefits of using cro run when you use multiple applications. At the moment I don’t, so perl6 it is.

Since I’m not using cro run you could delete all these other files, actually. You really just need service.p6 and the wiki subdirectory.

The content of service.p6 is simple:

use Cro::HTTP::Log::File;
use Cro::HTTP::Server;
use Oddmuse::Routes;

my Cro::Service $http = Cro::HTTP::Server.new(
    http => <1.1>,
    host => %*ENV<ODDMUSE_HOST> ||
        die("Missing ODDMUSE_HOST in environment"),
    port => %*ENV<ODDMUSE_PORT> ||
        die("Missing ODDMUSE_PORT in environment"),
    application => routes(),
    after => [
        Cro::HTTP::Log::File.new(logs => $*OUT, errors => $*ERR)
say "Listening at http://%*ENV<ODDMUSE_HOST>:%*ENV<ODDMUSE_PORT>";
react {
    whenever signal(SIGINT) {
        say "Shutting down...";

Check it out: Oddmuse 6.


Add Comment

2018-10-08 Climate Doom

Ah... the IPCC!

They released a special report with more than 6000 scientific references outlining the need to act before 2040, and what happens if we don’t do it.

Final call, says the BBC, better known by the summary of a Greenpeace activist:

Scientists politely urge ’act now, idiots’

Anil Dash writes a blog post: We’re (still) not being alarmist enough about climate change. “There’s a long strain of anti-intellectualism and short-term profiteering that has led to this point, but the years of effort in undermining science and introducing doubt into the existence of scientific consensus have produced an awful, if inevitable, outcome.”

Just to get an idea of how terrible everything is, take a look at the climate change section of The Guardian:

Doom and gloom is everywhere

The article on the Trump administration being in denial is particularly illuminating but sadly it doesn’t just concern the USA: Switzerland signed the Paris accord and also refuses to take every possible action. An interesting summary, in German, at the CVS.

Trotz effizienterer Motoren ist der Verkehr nach wie vor für rund 40% der Treibhausgas-Emissionen in der Schweiz verantwortlich. Mit dem sogenannten CO2-Neuwagenziel wird der Hebel dort angesetzt, wo schnell und nachhaltig eine Verringerung des CO2-Ausstosses bewirkt werden kann.
Das Neuwagenziel, das seit 2012 gilt, legt den CO2-Durchschnittswert für neu importierte Fahrzeuge fest. Autohersteller, deren Flotte den durchschnittlichen Grenzwert von 130 Gramm pro Kilometer überschreitet, werden mit Strafzahlungen sanktioniert.
Trotzdem wehrte sich nun die Autolobby erneut und hat bereits erreicht, dass der Bundesrat den Volkswillen umging und in Eigenregie eine verlängerte Übergangsfrist auf Verordnungsstufe festgelegt hat.
Das Motiv ist relativ einfach zu durchschauen. Seit Jahren werden in der Schweiz vorwiegend Autos mit potenten Motorenleistungen und Vierradantrieb sowie SUV verkauft, welche den durchschnittlichen Ausstoss der Flotten anheben.



Add Comment

2018-10-07 Braune Scheisse

Telepolis: Von der Postdemokratie in den Vorfaschismus. „Wenn wir regieren, werdet ihr alle eingesperrt!“

Vom Ausland kann man nicht so gut abschätzen, wie wahr solche Artikel sind. Telepolis habe ich früher viel gelesen, dann verlor sich das ein wenig und der eine oder andere in der Internet Gesellschaft liess durchblicken, dass Telepolis irgendwie grosse Putin-Versteher geworden seien. Aber eben, habe dass dann nicht weiter verfolgt. Dies zwei verlinkten Artikel sind ja haarsträubend und scheinen ziemlich plausibel. 😑


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 Asshat Paladins ZENOPUS ARCHIVES: Gygax's D&D Revision Plans 1977 Diary ZENOPUS ARCHIVES: GAMMA WORLD IS HERE... Dreams of Mythic Fantasy