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.

2017-12-06 Emacs on Windows

Getting M-x eww to work:

  1. get libxml2-2.7.8-w32-bin.zip from https://sourceforge.net/projects/ezwinports/files/
  2. put the dll files from the bin subdirectory into the Emacs bin subdirectory
  3. add the Emacs bin directory to your PATH environment variable

That’s what they say. But it doesn’t work.

The Emacs Wiki agrees.

Suspiciously, the names differ: libiconv-2.dll, libxml2-2.dll, and zlib1.dll.


Add Comment

2017-12-01 Python and PyPI

I recently rewrote my Mastodon Archive tool to be uploaded to PyPI. Steve Ivy provided the initial push and code, as you can see in this Mastodon thread. But eventually I was stuck.

I was setting up Travis CI to publish my code to PyPI and I was seeing “UnicodeEncodeError: latin-1” at the very end of the deployment. I didn’t know what I was doing. Everything finished without an error?

I decided to give this a try myself, locally. Mark Pilgrim had written something about Packaging Python Libraries but I always ended up with an error:

$ python3 setup.py sdist upload
running upload
Submitting dist/mastodon_archive-0.0.1.tar.gz to https://upload.pypi.org/legacy/
Upload failed (403): Invalid or non-existent authentication information.
error: Upload failed (403): Invalid or non-existent authentication information.

Finally, Joe Friedl was able to help me, as you can see in this Mastodon thread. The official documentation on Uploading your Project to PyPI had already mentioned twine. Apparently we no longer use python3 setup.py sdist upload – now it’s python3 setup.py sdist and twine upload dist/*.

Installing twine ran into a permission issue on this laptop (running macOS and Homebrew):

$ pip3 install twine
PermissionError: [Errno 13] Permission denied: '/usr/local/man'
$ sudo mkdir  /usr/local/man
$ sudo chown alex /usr/local/man
$ pip3 install twine
$ twine upload dist/mastodon_archive-0.0.1.tar.gz 
Uploading distributions to https://upload.pypi.org/legacy/
Enter your username: kensanata
Enter your password: 
Uploading mastodon_archive-0.0.1.tar.gz


And I can tear down the Travis CI integration. :)

Here it is: mastodon-archive.


Add Comment

2017-12-01 Monit Self-Signed Certificate Expired

Monit runs a web server on a separate port so it doesn’t depend on your “real” web server. That also means it uses its own certificate. I just discovered that mine had expired.

Kallobombus Monit explains the basic setup. The main config file is this: /etc/monit/conf.d/monit.conf.

set httpd port 2812 and
    PEMFILE /etc/ssl/localcerts/monit.pem
    allow admin:*secret*

I wrote a note to myself in /etc/ssl/localcerts/README.


sudo openssl req -new -x509 -days 365 -nodes -config monit.cnf -out monit.pem -keyout monit.pem
sudo chown root.root monit.pem
sudo chmod 0700 monit.pem
sudo service monit restart
sudo openssl x509 -noout -in monit.pem -fingerprint -sha256

The content of my monit.cnf file just provides some defaults.

# http://www.howtoforge.com/server-monitoring-with-munin-and-monit-on-debian-wheezy-p2
# create RSA certs - Server

RANDFILE = ./openssl.rnd

[ req ]
default_bits = 2048
encrypt_key = yes
distinguished_name = req_dn
x509_extensions = cert_type

[ req_dn ]
countryName = Country Name (2 letter code)
countryName_default = CH

stateOrProvinceName             = State or Province Name (full name)
stateOrProvinceName_default     = Zürich

localityName                    = Locality Name (eg, city)
localityName_default            = Zürich

organizationName                = Organization Name (eg, company)
organizationName_default        = Alex Schroeder

organizationalUnitName          = Organizational Unit Name (eg, section)
organizationalUnitName_default  = Head Desk

commonName                      = Common Name (FQDN of your server)
commonName_default              = alexschroeder.ch

emailAddress                    = Email Address
emailAddress_default            = alex@gnu.org

[ cert_type ]
nsCertType = server

The last command gives me the new fingerprint of the service. When I reconnect to my monit, I’ll still get an error telling me that the cert authority is invalid, which it obviously is, since I self-signed this certificate.

Firefox uses it’s own certificate store. Thus, click on Advanced, Add Exception, View Certificate, and compare the SHA-256 fingerprint with what I just got on the server itself.

SHA256 Fingerprint=51:C8:A6:5E:2F:FB:F6:06:07:FE:B7:62:C3:03:4B:B8:BC:0D:43:AC:25:3C:40:B3:06:75:2F:70:5E:93:AC:78

This looks ok, so close this window and Permanently Accept the exception. Yay!


Add Comment

2017-11-30 Entourage

I run my game using traditional retainer rules and I tell players that all retainers within their limit (4+CHA bonus) are 100% loyal, but any surplus hands hired will have to roll morale check like monsters do. War dogs, horses, raptors, war bears, any sort of mount or pet you want to be 100% loyal also counts against this limit. This rule has worked ok for me. But nothing special ever happened. Some people like a lot of retainers, some don’t. We have a lot of players, so we often have up to 20 characters in the party, everybody 100% loyal. On rare occasions (once or twice a year?) there are sessions with mass combat and dozens of mercenaries hired, so morale rules practically never affect “ordinary” adventures. I’m not sure if, given the choice, players would not rather have fewer retainers instead of unloyal ones. And if retainers have characteristics that affect other retainers, I feel like I’m playing two characters interacting instead of giving players agency. So, long story short, I’m no longer tinkering with this. :)

This was inspired by David Bowman’s Entourage Approach.


Add Comment

2017-11-29 What to do with Mastodon

On Dice Camp, Meguey Baker asked:

A follow up question: what are we doing now that we’re here? Let us gather for a purpose beyond “talk about stuff and things!” What gives us meaning, individually and collectively? There is a massive massive massive flood of “content” in the world; we are super saturated with it. Lots of us make it. Im not saying anyone stop, I’m saying what could we make together if we had a plan?

I think instances which are small and focused on a project could exist for a distributed team. But that sounds a lot like work. But that’s one thing that people could do: work.

I know a thing I don’t want to do: promoting, and reading promotions. I am saturated with content, and products.

But there are models for the things in between: book reading clubs (not buying books); social clubs (talking about thing but aiming at an improvement of self and society along some axis).

Personally, I’m mostly interested in what differentiates a salon in Paris a few decades ago from a public space. Curation of members, curation of topics, invitation of guests, these are the obvious outer limits. But there must have been expectation management as well. What did members hope to gain through their membership? Entertainment? Advancement? How much bowing was expected? How much free labor? I understand so little about this.

Also related: Royal Society of London for Improving Natural Knowledge. Could this be a Society for Improving the Art of Role-Playing Games? All games? Pushing envelopes? Feedback sessions? Criticism? I don’t want to deny the negative aspects of all these ideas (thinking of criticism and self-criticism in communist countries), but these limitations will need buy-in from a starting pool of people.

One thing that I have always enjoyed on G+ and blogs was posts that succinctly summarized an event, mostly during a session, or the setup of a one-shot, and discussed how they handled or solved it. This also extends to comments on other people’s activities (i.e. back to criticism). In the office, I’d talk about describing best practices and building a community of practice, but essentially, I think it needs some sort of scaffolding and we might as well call it a salon.

Thinking more about building a “community of practice”. What would that entail? I’d expect one consequence to be that we talk more about the things we do rather than about the things we make. So, while we are running games, playing games, designing games, writing games, we notice things and talk about them, instead of advertising the finished products we made. It’s less about the things we make but about the making of these things. (He says, trying to sound smart, haha.)


Add Comment

2017-11-28 DRM

DRM's Dead Canary: How We Just Lost the Web, What We Learned from It, and What We Need to Do Next. How DRM is used to squash the competition, silence security researchers, make sure movie are only available in certain region, who gets to fix your car, who gets to supply the toner for your printer. And then the article pivots to the W3C, Encrypted Media Extensions (EME), and browsers.

And this is why I support the EFF: “EFF is suing the US government to overturn Section 1201 of the DMCA.”

There is a a report by εxodus listing of Android apps and the trackers found within and the permissions they require. Consider using a mobile website instead. Mastodon apps, for example: no trackers for Tusky, one tracker for Twidere, two trackers for Tootdon; but Amaroq isn’t listed because it’s iPhone only.

Why is that? Cory Doctorow links it back to DRM: “But iOS is DRM-locked and it’s a felony – punishable by a 5-year prison sentence and a $500,000 fine for a first offense in the USA under DMCA 1201, and similar provisions of Article 6 of the EUCD in France where Exodus is located – to distribute tools that bypass this DRM, even for the essential work of discovering whether billions of people are at risk due to covert spying from the platform.”


Add Comment

2017-11-27 Lisp

I still love Lisp. Mostly Emacs Lisp, but other lisps, too.

This page is a link list...

I’m also interested in Lua. MoonScript is CoffeeScript for Lua.

  • Bussard. A space flight programming adventure game.
  • LIKO-12. LIKO-12 is an open source fantasy computer completely written in the Lua programming language where you can make, play and share tiny retro-looking games and programs.
  • PX8. Open source Fantasy Console in Rust (with Python and Lua).


Add Comment

2017-11-23 Thor

I recently saw the third Thor movie (Ragnarok, 2017), and then I decided to get the first (2011) and second (The Dark World, 2013) movies as well and watched them over the weekend. I liked the third one the best. It took all the elements I liked about the first two and skipped the boring parts.

I never thought I would like superhero movies since I’ve spent my youth with Franco-Belgian comics, Lucky Luke, Asterix, the Adventures of Tintin. But when I saw the visuals of Jupiter Ascending (the story was weak but the space ships were fantastic), and then Guardians of the Galaxy and Guardians of the Galaxy Vol. 2, I discovered that I liked this baroque style. (Wikipedia: “exaggerated motion and clear, easily interpreted detail to produce drama, tension, exuberance, and grandeur”)

This is what my high level D&D campaign should be about! And I feel vindicated for using Norse mythology as the cosmology for my campaigns. In the Halberds and Helmets Referee Guide, there are three pages on Gods and Demons, talking about it.


Add Comment

2017-11-23 Laptops

This Apple laptop takes so long to boot and to switch accounts, it is so much slower than it used be, I feel that I’m probably not going to buy another Mac. This is what we have:

  • MacBook Pro (13-inch, Mid 2010)
  • 2.4 GHz Intel Core 2 Duo
  • 4 GB 1067 MHz DDR3
  • NVIDIA GeForce 320M 246 MB
  • Hitachi HTS545025B9SA02 (250GB)

Yes, it’s old. It still makes me angry because the specs should be good enough.

I just got an email from the FSF with a link to their Ethical Tech Giving Guide which led me to the Vikings X200. It’s refurbished, which is sound from an environmental point of view.

  • Vikings X200 ultraportable laptop - FSF RYF certified (300€)
  • Keyboard Layout: QWERTY (U.S.) (+25€)
  • Battery Pack: New 9 cell battery pack (7800 mAh) (+69€)
  • Memory: 8 GB RAM (new) (+80€)
  • GNU/Linux Distribution: Trisquel GNU/Linux (+25€)
  • Storage (SSD recommended): SSD Samsung 850 EVO 500 GB (+140€)

Total: 649€

The alternative would be a Librem 13:

  • Purism Librem 13 ($1399)
  • Memory 8GB (+$69)
  • 2.5” SATA 3 SSD 500GB (+$199)
  • AC Adapter Power Plug EU
  • Keyboard English (US)

Total: $1667

OK, so that’s the range.

AC adapter power plugs—don’t get me started. The Swiss have a different system.


Comments on 2017-11-23 Laptops

In a discussion on Octodon, it was suggested to simply replace the HDD with a SSD and replace the 4GB RAM with 16GB.

Looking at my system information, trying to figure out how the HDD is connected to the laptop, I find this:

NVidia MCP89 AHCI:

  Vendor:	NVidia
  Product:	MCP89 AHCI
  Link Speed:	3 Gigabit
  Negotiated Link Speed:	1.5 Gigabit
  Physical Interconnect:	SATA
  Description:	AHCI Version 1.30 Supported

Hitachi HTS545025B9SA02:

  Capacity:	250.06 GB (250'059'350'016 bytes)
  Model:	Hitachi HTS545025B9SA02                 
  Revision:	PB2AC60W
  Serial Number:	100806PBL200CSHY1MMN
  Native Command Queuing:	Yes
  Queue Depth:	32
  Removable Media:	No
  Detachable Drive:	No
  BSD Name:	disk0
  Rotational Rate:	5400
  Medium Type:	Rotational
  Partition Map Type:	GPT (GUID Partition Table)
  S.M.A.R.T. status:	Verified
  Capacity:	209.7 MB (209'715'200 bytes)
  File System:	MS-DOS FAT32
  BSD Name:	disk0s1
  Content:	EFI
  Volume UUID:	85D67001-D93E-3687-A1C2-79D677F0C2E0
Macintosh HD:
  Capacity:	249.2 GB (249'199'591'424 bytes)
  Available:	37.12 GB (37'120'630'784 bytes)
  Writable:	Yes
  File System:	Journaled HFS+
  BSD Name:	disk0s2
  Mount Point:	/
  Content:	Apple_HFS
  Volume UUID:	EA695A3A-437E-39B5-A8B9-4B5883F265A1
Recovery HD:
  Capacity:	650 MB (650'002'432 bytes)
  File System:	Journaled HFS+
  BSD Name:	disk0s3
  Content:	Apple_Boot
  Volume UUID:	7981E96A-0868-350E-B49D-6F474233EFFD

The website of a local shop has 36 candidates in the “SATA III” and 250GB range for me. Yikes! Which one to pick? I’m leaning towards the Crucial MX300 (525GB, 2.5”) for CHF 165.-

– Alex Schroeder 2017-11-23 19:36 UTC

What FSF’s giving guide doesn’t say yet (the “Sales Details” link is currently broken) is that if you use the voucher code “fsfftw” there’ll be a 5% discount and Vikings donates 15 EUR to the FSF for each sale. We also don’t charge extra for Swiss chargers...

Those laptops are also available from Technoethical (Romania) and Libiquity (U.S.A.)

May I add that Purism isn’t a good choice since their hardware comes with Intel ME. @RaptorEng: “Intel ME hardware is always present at high privilege level. Given the inability to completely disable the hardware, malware will always be able to be injected via physical access. Since signing keys in ME hardware can’t be changed, difficult-to-detect malware will remain possible in affected platforms forever.”

Contact us if you have any questions.
Twitter: @vikingslibre
Quitter: https://quitter.se/vikings

Thomas 2017-11-24 13:30 UTC

Heh, oh well. I’ve been using X200 for quite some time, and only “upgraded” from it to X230 just a month or two ago. I did install libreboot on it once, but unfortunately it didn’t last for long because it seems that not all X200-s are alike, and in my particular case I wasn’t able to control the backlight (or maybe it was something else, never really figured it out). Sad, but at least with libreboot flashing the original bios is possible without taking your laptop apart again :)

In my opinion, we are fucked. I switched to x230 because shit has to be done, I can’t be using hardware that is 8-9 years old now. I mean, I can, but then I’m just wasting my time on waiting for things to finish.

Maybe there’s a light in a sense that if we manage to libre-ize some modern laptop, it will be possible to use it for many-many years to come. But x200 is not it, unfortunately. :(

Oh, and 300€ for a laptop… I don’t really understand that. Freedom my ass, but I just bought x230 for 120€ locally (used, great condition). So x200 currently is just a tad under 100€, with practically an infinite supply given than all local IT companies are getting rid of them all in bulk (although maybe nowadays it’s easier to buy x230 than x200). Yeah, you’ll have to flash libreboot yourself, but that’s a fun little weekend project.

– AlexDaniel 2017-12-04 04:04 UTC

Then again, there’s the fact that laptop assembly, flashing and installing is not my hobby so I’ll happily pay somebody else to do it... In this particular case I have already ordered the Purism Librem 13 and I will be getting an SSD for the old MacBook Pro.

– Alex 2017-12-04 07:51 UTC

Yesterday I went to a local shop to buy the SDD, RAM and screwdrivers required to replace the MacBook Pro disk. They told me that Apple did not allow them to sell the necessary screwdrivers (#00 Philips and Torx T6, apparently). I told them them that I could buy those at the mail order and that without them, there was no point in buying the other stuff. They said they couldn’t and they’re sorry.

I really don’t want to buy another Apple laptop. I hope the Purism laptop does all I need.

And now I’m ordering the stuff from the mail order shop.

– Alex Schroeder 2017-12-10 12:09 UTC

I ordered:

1 x OEM Tool Kit Schraubenzieher und Bit Set CHF 26.90 incl.
1 x Samsung 850 EVO Basic (500GB, 2.5”) CHF 177.00 incl.
1 x Corsair Memory (2×, 4GB, DDR3-1066, SODIMM 204) CHF 79.00 incl.

I’m going to pick this up in a few days.

– Alex Schroeder 2017-12-10 19:42 UTC

Add Comment

2017-11-20 Twenty and One Questions

Back in 2014, I answered Jeff Rients’ 20 questions. (I had forgotten that I had already answered them in 2012.) Here are my answers to Jez Gordon’s 21 questions.

Why were settlements founded here? Along the river systems, connecting some rich region in the west with some other region in the north.

What are the local funeral customs? People are buried except for elves. Elves are burned because a special elf fungus will grow out of their dead corpses, giving off a strange light, make otherworldly music when the moon shines, possess animals and drive people mad. Unburied dead will usually give rise to ghosts who try to possess or curse people nearby. At first, they’ll try to get a decent burial. Later, however, they’ll try to actively hurt and kill.

How do neighbouring settlements communicate with one another? There is trade along the river and on roads financed by player characters.

How dramatically does your campaign location change from season to season? Not at all. I have trouble remembering snow in winter.

What are the three biggest local celebrations each year? Haven’t thought about it.

Where is the safest place for someone to stash a considerable sum of coins and treasure? Generally speaking, in town is “safe”.

What is the local standard of medical technology in replacing missing bits and body pieces? The streets are full of victims of the Death & Dismemberment table. People have lost countless arms and legs to the dungeons. If you lost a leg, you can have a wooden peg and suffer no other penalty but the inability to run and to move silently. If you lost an arm, you can have a hook and suffer no other penalty but the inability to wield a shield. Captain Hook is my role model.

What are some local superstitions? No idea.

What is the scariest local myth? No idea.

Who collects tribute and taxes for the powers that be? No idea. Taxes are not important in my game.

What are the best places to get a drink round here? No idea. A handful of establishments are mentioned on the campaign wiki page for the local settlement but drinking and carousing is not important in my game.

Where can you buy animals round here? The humans sell war dogs for 25gp. The dwarves train bears to be war bears. The bears they get from a druid who stopped delivering them. We haven’t investigated. The bears used to cost 500gp. The lizard men used to train war raptors. We got some as a gift and they’re still breeding. They are no longer available because we killed all the lizard men when their relations with the dwarves took a dive.

What is the local settlement missing? No idea.

What is the local mascot of the town or region? No idea.

Where’s the best place to pick up a few hired hands? The town provides an endless supply of surplus kids, desperate to make some money. Also, amateur spies are available for 200gp per job.

What’s the local take on the end of the world? No idea.

Is there a local hedge wizard, witch, or shaman of no great power but one who cares for the locals and helps deal with their tribulations? No. Sascha is the local big priest, a former player character. The temple of the local elementalist schools is perhaps the most useless with magic-users around level two and three.

What games do the locals like to play? No idea.

What crimes are punishable by death? Bandits are hanged by the Lady Kyle, the local noble woman. Recently the players saw that a bunch of dwarves was able to buy their freedom even though all the human bandits would hang. Food for thought.

Have any great disasters destroyed local settlements? Laketown was destroyed by froglings in recent years. The survivors fled, or were captured by the froglines to serve them in their swamp temple. As no other settlement was built near the swamp or lake, nobody else fears them.

Where can you find maps of the region? The campaign wiki has the in-game knowledge of the area. I keep adding to the map as the players explore.

That’s a lot of “no idea”... Tags:

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: Planet Emacsen