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.

2021-06-17 The Smartphone Camera

I just finished reading The Smartphone vs The Camera Industry by Nasim Mansurov, on Photography Life. He argues that the camera industry is done for, and that photography is moving to smartphones. It’s a good read and it matches my experience.

I bought a new camera back in 2013, with a 17mm lens. It took gorgeous landscape pictures and pretty good portraits. I loved it! However, when I switched from the iPhone 6S to the iPhone 11 back in 2019, I realised that the pictures this new phone was taking were better. They weren’t much better, but they were still better. Dramatic skies, glowing fields, flower closeups, they all looked great. Portraits were pretty good. Zoom was useless, but my “real” camera didn’t have a zoom at all.

That changed in 2017 when I bought a 75-300mm lens. Now I had a zoom but I ended up never using it. My hands are too shaky and I wasn’t bringing a tripod along; birds in flight were far off and hard to track and focus; other animals were hard to see; distant mountains were disappearing in a blueish haze. I wasn’t using it much. I used it at the zoo. The animals were close, and I have enough time to fiddle with the settings and the focus.

Two years later, however, it really paid off. We went to the Galápagos; the animals here are not afraid of humans so you can see them up close. And if they are close, and don’t move, and I have a zoom, then I can take wonderful portrait of these animals. Check out the Galápagos albums. Those marine iguanas… 😍

Now that I’m back in Switzerland, though, I once again have little use for the 75-300mm lens.

This year, I started taking a lot of pictures of flowers using my iPhone 11. So beautiful! I loved those details. I wondered: would the pictures be even more glorious if I had a macro lens? I bought a 35mm macro lens and gave it a try. And it’s true. You can get a little bit closer. The depth of field is very small. So small in fact, that I often wonder whether it would be better if I were using a different lens and just cropped the image. Or used the smartphone. Or bought a new camera with multi-focus image fusion.

See where this is going? It’s what Mansurov means when he talks about the “big camera complexity problem”. If you just use a good smartphone camera, your landscapes and your portraits will be excellent, your closeups will be good enough… and you probably don’t need a zoom unless you’re going to the zoo. At least that’s my take by now.

Practically all the pictures I share on Mastodon (@kensanata) are made with the smartphone. It takes too much time to wait until they’re transferred to the laptop, processed there, and sent to the phone. The immediacy of being somewhere, taking pictures, and posting about the experience is lost.

Add Comment

2021-06-16 Programming for Money

A post by @jalcine had me think about programming for money. This topic is dear to me because I program for money. After highschool I did not do the mandatory military service in Switzerland because back then I was a foreigner and I had managed to avoid the French military service by telling them that I was planning to do the Austrian military service but then I never went to Austria so I had a few months off. My friends at the time were also foreigners or otherwise unfit for the military and thus the whole bunch of us spent a few months as interns at ABB, programming for a weird kind of “operative reporting system”.

I learned SQL on the job, and I learned a programming language on the job, obscure stuff nobody knows anymore: SQLBase and SQLWindows, both by Gupta Technologies. You can read about it on Wikipedia. It was a long time ago. The development environment was installed from more than thirty 3½-inch floppies. Remember those? They were so much better than the old 5¼-inch floppies. Now I feel old.

Anyway, towards the end of my stint I had decided to study biology and I did a major in zoology, with a focus on the navigation of ants and bees. I still love plants and animals more than anything. Sadly, it turned out that there were hardly any jobs for zoologists. At the same time, this was the dot-com boom or bubble. There were programming jobs to be had and I had some experience.

While I was at university, the department that was responsible for the “operative reporting system” did a management buyout; the manager got the rights to the software and the OK to take all the clients with him, because ABB felt this weird reporting thing wasn’t their core business. And when I went back to work for the same people, the software transformed into “customer relationship management” (CRM) and I’m still there, working for them, more than twenty years later. We’ve branched off into many things, written all sorts of business software, but the same old CRM is still central. We started using version control software, eventually. We used Visual Source Safe, then we switched to Subversion, now we’re using Git. We used all the Oracle versions from 7 to Oracle 12, sometimes we used DB2, but now we like to use PostgreSQL. We moved to Java in the early years, and we still use it. Who remembers Java Web Start? Our framework got rewritten multiple times. We moved from AWT to SWT to Swing to a web UI. We added Struts and then we removed it again. We added OSGI and then we removed it again. We were totally into Eclipse and now we’re moving towards IntelliJ. Twenty years is a long time.

Currently, our framework is a quick way to create business software that consists of a database layer to store data, a server layer to handle the data, a UI layer to handle the presentation, and the browser to actually present the user interface. The lowest layer of our framework is free software, too.

I like using it at the office. It gets the job done. I’d never set up the necessary infrastructure at home for my own private projects, though. Working as a programmer is hard. I’m still on my first job, more than 20 years later, but I’ve also learned to do whatever is necessary at the job without listening to the online crowd. Lisp is better! Haskell is cool! But business software is boring, it uses Java, which is considered to be very uncool. I recently heard somebody say they’d rather use COBOL. I guess we’re playing in the same league, now. Business software has millions of lines of code and more layers than developers on the team. It takes many weeks of full time engagement with the code to get into it. And there are so many tangents. The build system itself needs a specialist to set it all up; there’s Ant scripts and Maven files; there is a company-wide cache; there’s Jenkins and automated tests; there’s GitLab and how to hook it up for Merge Requests and Pipelines and all of that. Forget everything they say about lightning speed and innovation. At this size, the framework is like a supertanker. It moves in the right direction and it’s expensive to change course. So many projects depend on it. Millions of dollars are bound up in it. If it’s done well, it can quickly spit out new business software that looks more or less the same, uses more or less the same architecture, that’s more or less easy to adapt to a customer’s requirements. The joy of programming does not happen, here. The joy I find in my job is talking to new customers, learning about new industries, translating new requirements into solutions, finding the right trade-offs. Programming itself is the work that enables it all.

But really, the complexities of the framework, of the build system, it’s an endless headache and heartache. This is not the programming most of us dream of. This is business software! Imagine me, with a beard, screaming this at foreign emissaries. And there’s more: since we program for money, we don’t do extra programming for free. Under capitalism we make the code as good as necessary for the client to accept it but no better, since they’re not paying for it. If they thought it was important, they’d pay for it. It’s very different from programming for myself. Everything is done for money. Is this meeting worth it? Scrap it if we should be doing something else instead. Is this feature worth it? Scrap it if we should be working on something else instead. Is this thing nice to have? Not if nobody is going to pay for it. It’s a weird mindset where we don’t strive for perfection but for the best trade off.

All of that to say that at the office, I might sometimes make a comment about our code quality, or some disparaging remarks about Java as a language, but I don’t get angry, and I don’t get sad, it is what it is and I do it for money, not for love. I don’t know if that helps? This thought is what kept me from quitting all these years. When I thought I couldn’t take it anymore, I started working part time. Luckily, we live in a small apartment, we don’t have a car, we don’t have kids, we both have jobs that pay well, so I don’t need to dedicated my life to it. I’m never 💯 about the job. I just do it for the money.

Sometimes people at the office are shocked when I put it that way. Of course I enjoy working with good people, friendly people, funny people, I feel good because we are lucky and there don’t seem to be any narcissists in the company. That alone is one of the best aspects of the job. But think about it: if I weren’t paid, I wouldn’t show up, no matter how nice my coworkers are, no matter how interesting my projects are. I’m giving away years of my life in order to get paid, and that’s it.

And finally, after all of the above, think about this: what makes a good programmer?

I have no idea.

Comments on 2021-06-16 Programming for Money

Related: The Mediocre Programmer, by Craig Maloney. I mentioned it a while back: 2020-05-25 The Mediocre Programmer.

– Alex 2021-06-16 07:51 UTC

Some comments by Jeremy Friesen on this blog post, Amplifying the Blogosphere.

Add Comment

2021-06-14 Jirait is a Gemini-based MUSH

Did you play in a MUD or MUSH, when you were younger? I did! I did spend some time in the Lochness MUD and on the Elendor MUSH. These were multi-user environments that felt a bit like a text adventure: you typed things like “look” and “north” to look around and move about; on a MUD you’d also fight monsters, on a MUSH it was all about the roleplaying. I loved it.

Well, I thinking: shouldn’t it be possible to reproduce this kind of environment using Gemini, the network protocol somewhere between Gopher and HTTP, and text format somewhere between plain text and Markdown? I’ve been working on a little extension to Phoebe to allow me to do that. Phoebe itself is a Gemini-based wiki and I don’t actually use any wiki features in this new game. Phoebe simply handles the server startup, configuration, and so on. The game is called Ijirait, the plural of Ijiraq, a shape-shifter in Inuit legends and also a moon of Saturn. I’ve created a little wiki for it. It has four pages. 😄

Imagine the biggest and bestest Code of Conduct and adhere to it. Right now, Ijirait has no permissions, no objects, no containers, no programming… but you can connect and talk to other people. Your words hang around for 10 minutes – I might have to extend that, perhaps 10 minutes after somebody else has seen them?

You can create new rooms and add new connections between rooms, and you can rename and describe them, but you cannot delete any of them. I thinking of implementing something that I’ve been championing for a long time with regards to data: software should forget stuff that isn’t important. Thus, I’m thinking of rooms that haven’t been visited in a long time of fading away. Similarly, characters that haven’t seen any play time should fade away.

Use the “type” link to just type the commands...


And there’s even a simple client script in the “script” directory of the repository. It doesn’t look like much but it works!

alex@melanobombus:~/src/phoebe$ script/ijirait --url=gemini://campaignwiki.org/play/ijirait --cert=$HOME/.emacs.d/elpher-certificates/alex.crt --key=$HOME/.emacs.d/elpher-certificates/alex.key
Use 'quit' to leave the game.
Outside The Tent
You're standing in a rocky hollow, somewhat protected from the wind. There's a large tent, here.
* A tent flap leads inside. (tent)
* A diamond-encrusted mahogany door (door)
* Didia (you)
* look
* help

Comments on 2021-06-14 Jirait is a Gemini-based MUSH

I guess the most important part right now would be for it to find some players. Then we can start thinking about further developing it.

– Alex 2021-06-14 15:59 UTC

I love it when I get to meet other people!

Glass staircase
Your steps echo down this long staircase spiralling up and down the
magnificent glass tower.
* Climb down to the ground floor (down)
* Didia (you)
* Arinte
5 minutes ago, Didia said “Welcome, Arinte!”
5 minutes ago, Arinte said “Hello! Thank you.”
Butterflies are dancing up and down the glass staircase.
3 minutes ago, Didia said “Where will the glass staircase go?”
Didia sit down at the edge of the stairs, letting her feet dangle down
the shaft in the center of the spiralling glass. A beam of sunlight
illuminates the scenery.
72 seconds ago, Arinte said “To the top! Maybe this tower is some kind
of astral lighthouse?”
Just now, Didia said “Indeed, maybe it is! If so, perhaps there's also
a harbour for ships sailing the astral sea.”
* look
* help

– Alex 2021-06-17 12:40 UTC

Remember, if you’re looking for other people, use “who” to see if there’s anybody active, and use “rooms” to see where things are happening.

– Alex 2021-06-17 12:49 UTC

Add Comment

2021-06-01 The Office

Summer break is here. Four months of not doing much. Certainly nothing “productive” or “efficient”. It’s all going to be chill, it’s going to be done leisurely, and there won’t be any “point” to it. I bought myself a musical instrument and I want to get better at music stuff.

And then… who knows. Is the pandemic over in September? I just read Employees Are Quitting Instead of Giving Up Working From Home, by Anders Melin and Misyrlena Egkolfopoulou, for Bloomberg Wealth.

The recruiter that approached her … asked what it would take to get her on board. She replied that she would prefer something 100% remote. “They said, ‘we can do that for you immediately.’”

Right on.

I get so much more done at home. No babbling, no phone calls by other people, no discussions at the next table. Ugh, dreadful! I understand people preferring the office life, perhaps they have small children at home, or they live with other relatives. It can be distracting at home as well!

The office wants us back for two reasons, I think. The first reason is that project managers feel more in touch with their teams if they can see them. Then again, many project managers aren’t sitting right next to the table every day of the week. Also, I’m suspecting many project managers did not change their interpersonal routines. What steps have they taken to replace the physical proximity and activity awareness they used to benefit from in the past? If the answer is, “uh… what?” then I’d say the problem is theirs, not mine.

The second reason is that management feels working with clients is good for business. We see how they work, they see how we work, we get to know each other on a slightly more personal level, and all of that is good. Then again, what steps have they taken to replace the physical proximity and activity awareness they used to benefit from in the past? If the answer is, “uh… what?” then I’d say the problem is theirs, not mine.

I recently told somebody at the office the simplest, most basic step I’ve taken: show up a few minutes early for every call. If other people are there, waiting for a meeting to begin, don’t just mute yourself and keep on working: act as if you’re sitting in that meeting room and start small talk. The weather, the weekend, family life, simple stuff. Get to know other people, make yourself vulnerable and let them know about you, too.

I discovered that physical presence in an open plan office is a very high price to pay for little gain.

I keep thinking about that quote in the Bloomberg Wealth article:

JPMorgan Chase & Co.’s Jamie Dimon said at a recent conference that it doesn’t work “for those who want to hustle.”

Good riddance, hustlers!

Add Comment

2021-06-01 Music Software

I think I need to make a list of the sound-making software available via my package manager. Free software, for music making wannabes like me. A page to return to and improve as I start to understand this all a bit better.

  • Ardour A digital audio workstation (DAW), a program to record, mix, and master music. That is, recording multiple tracks, moving these tracks around, splitting and joining them, applying effects to them, and then creating a single file ready for distribution and playback.
  • Audacity A digital audio editor. This appears to be the simplest kind of DAW. It’s what I used for my podcast. There’s currently some discussion about the future direction of Audacity as it has been acquired by the Muse Group (see MuseScore, below).

Generally speaking, these programs have a plugin architecture, where “applying effects” involves the loading and running of plugins which then apply the effect.

But how to make the music? If you have external sources, like audio ins, microphones and the like, you can simply record them. On my laptop, however, there is no audio-in! Therefore, I need a USB microphone to record my voice, and I need an analog-to-digital converter (ADC) to record the audio of my electronic instruments. This is a little box with an audio in on one side, and an USB plug on the other side.

How to make music directly on the laptop?

  • MuseScore A scorewriter. That is, it looks like you’re writing sheet music. It looks very fancy.
  • VCV Rack A software modular synthesizer. That is, it simulates modules for a modular synthesizer: you then plug the virtual patch cables into the virtual plug and it makes a sound.

Other use cases:

  • Mixxx Mixing software for a DJ to do live mixes with digital files. Since I don’t plan to be a DJ at parties, I’m guessing that I won’t be needing this.
  • snd A sound editor, modelled loosely after Emacs, i.e. it can be customized and extended using either s7 (a Scheme dialect), Ruby, or Forth. What fascinates me the most is that it comes with a Scheme file to generate various bird calls! I was able to load the file and to run make-birds, but then I couldn’t play it. How anyoing.
  • libsndfile A library for reading and writing files containing sampled sound (such as MS Windows WAV and the Apple/SGI AIFF format); it also comes with a bunch of command line tools such as sndfile-info etc. On the homepage it says that the author isn’t planning on adding MP3 support.

Comments on 2021-06-01 Music Software

A couple of other FOSS music projects you may like:

  • Giada – “hardcore loop machine” (git)
  • ChucK – “strongly-timed, concurrent, and on-the-fly music programming language” (git)

pwr 2021-06-03 03:48 UTC


– Alex 2021-06-03 20:13 UTC

I’ve been doing audio prod on Linux for a number of years now. Unfortunately it’s my perception that it’s one of the areas very far behind its proprietary counterpart, though things are improving.

My reccs, should you want them (all free s/w):

  • QTractor is another decent DAW
  • amsynth is a good subsynth with 2 oscs, has LV2 and VST versions. However it uses GTK which is bad for plugins so you will get crashes with some DAWs. (Unless your DAW can run plugins in separate processes, this issue is unresolvable and may plague other plugins.)
  • Helm is a good similar synth
  • Sitala is a good simple sampler pad
  • ZynAddSubFX is the most powerful (hence confusing) free s/w synth I’ve seen

Unfortunately, if you’re serious about being productive and developing skills, I expect a proprietary Linux or Wine DAW would be miles better. Switching to REAPER really showed me what I was missing.


Tom M 2021-06-04 19:50 UTC


– Alex 2021-06-04 20:44 UTC

Add Comment

2021-05-22 Looking to buy a synthesizer

This is me thinking about buying something. Perhaps writing things down helps me make a decision. Feel free to comment.

Recently, I ended up wondering about the Theremin. It’s an electronic instrument from 1928 and it looks like a little bread sized blob with two antennas. The hands of the performer influence the electrical fields around the antennas, with one hand controlling the pitch and the other the amplitude or volume. The Moog Theremini just adds more electronics to that. I wondered: would I like to play such an instrument? I think I might!

Then I started wondering. I’m not much of a music maker. I dabble a bit with a micro sampler (the PO‑33 by teenage engineering), a small synthesiser (OP‑1 by teenage engineering), and some programs. The ones I like best are PixiTracker, Synth One, and a bunch of related programs by the people making the Synth One, Retro Piano, Bass 808, 909 Drums, FM Piano 2, Digital D1, as well as some other emulators: iVCS3, Animoog, Model D; and the world instruments in GarageBand, the Erhu in particular.

The programs that I didn’t get into were emulations of modular synthesis like Model 15, VCV Rack, Klankwelle, as well as various programming environments such as Orca, Sonic Pi and Overtone.

So now I’m thinking: I’d like a physical device, something that allows the aimless dabbling, the dilettante sound exploration that I love to do late at night when I should be going to bed. So, what should it be? I don’t have a talent for handicrafts and tinkering. I don’t want to solder stuff. That’s why I think I don’t actually want to get into modular synthesis. I do love turning knobs and pressing buttons, so perhaps a little bit of modular synthesis is fine, and perhaps hooking two or three things together can be fun. In fact, the Model D emulator by Moog is something I’m enjoying a lot, and I love playing stuff on the Animoog emulator. I don’t really understand the Animoog and it’s gazillion presets and timbres, so I’d say I need something simpler than that. I just love the ethereal quality of actually playing on it. I guess something on the Model D level of complexity would be fine, a little bit more options for growth would be great.

So here’s what I’m thinking: the programs by Moog have made me like the company. I know their products are expensive, but that isn’t much of an issue if I can avoid setting up a hodge podge of things. I’d rather have a few modules sold to me as well integrated packages so that I don’t have to think about these details.

This makes me think:

The Moog Subsequent 25 looks like just the thing I need in terms of complexity, but the gazillion presets make me think I might find myself trapped by them, unwilling to go beyond them. Also, if I ever wanted to move to some modular synthesis, I’m stuck. Or am I? It also seems to me that I’d appreciate aftertouch and a sequencer.

The Moog Grandmother looks like the next best thing. It has a sequencer but no aftertouch. It has no presets so it might all about the exploration of sound.

Well, for more than twice the price, there’s an alternative: the Moog Matriarch. The features are definitely more than what I need. Is it room for growth, or confusing? I guess it depends. The OP‑1 confuses me because the systems are so different and underdocumented it’s hard for me to explore them. Everything is a mystery. Whereas I’d say that once I understand a thing such as oscilators and filters, adding more oscilators and filters doesn’t add the same kind of complexity.

Somewhere inbetween is something else that I find fascinating: the Moog Subharmonicon. The polyrythm idea reminds me of Music for Airports, where Brian Eno uses loops to create complex patterns from simple pieces of music. I think I’d love something like that for evening musical meditation. Probably paired with a DFAM at first, maybe with the addition of a Mother‑32 later.

Oh, and since I’m collecting reviews… I wonder whether people hook up the Theremini to the other elements?

I guess the main reason I stuck to looking at Moog products was that I was feeling comfortable with the Model D emulator and the Animoog program, having spent many an evening dabbling with them. It seems like making these programs available is paying off as a marketing strategy as far as I am concerned! At the same time, I’m already overwhelmed with all the choices I have. Do I need even more alternatives? I don’t think so. I already feel terrible.

I also had a long and difficult discussion with my wife: do I “need” such an expensive musical instrument? Of course not. Nobody “needs” the things one needs for a hobby, unless one loves a hobby. And many hobbies sadly require equipment you have to rent or buy before you get to see whether you have it in you. So yes, I had the tendency to buy more computer games than I played, and to buy more books than I read, but that doesn’t mean I’m on my way to buy more musical instruments than I play. At the same time, I cannot promise that I will make good use of them! I cannot know the future. It’s tricky.

Something to add for sure. A book about patching the synthesizers. And perhaps reading the book will help me make the next decision.

Comments on 2021-05-22 Looking to buy a synthesizer

Grandmother is definetily a majestic beast, but dif you consider a Korg Prologue (or any of the “logue” series)? To me top quality : potential : price ratio. VCO + digital osc which can add ‘mods’ to the base syth.

Also on a €2k price tag you could check the Novation Summit, and the Sequential Pro 3.

DFAM is more hostile than you might think. Hard to tame if you don’t go with a beatstep pro or similar. No preset saving and monophonic. Requires a certain mind frame.

– Ton 2021-05-23 10:28 UTC

Thanks for the warning regarding DFAM! It did look weird in the videos I looked at. I wonder how I’d figure out whether I have the right mindset? I need a friend who has them all and let’s me borrow the equipment! 😄

I did see some recommendations for the Minilogue and Friends. I think my main problem would be that the hundred presets would lead down the road of trying them all, and installing more of them, playing a few lines, trying to figure out which one I liked best, all of that instead of turning the actual knobs and exploring the sound by myself.

The Novation Summit looks great but perhaps there just too many options in addition to what I said above. I think what I can comfortably explore right now is in the complexity range of the VCS3, or the Model D. Maybe a bit more, but all the other stuff, multiple filters, combining patches, I don’t know.

– Alex 2021-05-23 10:50 UTC

I think it’s pretty much decided, now. It’s going to be a Moog Matriarch. I’m still interested in DFAM, Mother-32, Subharmonicon, and Theremini, but they’ll have to wait. First things first. And who knows. Soon I’ll be unhappy with the headphones and I’ll be digging up the old stereo from the cellar where it’s been lying for seven years and then we’ll see. 😄

– Alex 2021-05-23

If you’re fine with the emulators, stay with them. They are more powerful and flexible than any synth. I get you want some tactile feedback so you can buy a midi controller (or many, for the price of any Moog device) like Akai MIDImix, full of knobs and faders. Your wife will thank me 😄

edkalrio 2021-05-25 18:13 UTC

Haha! 😀 Good point, actually!

– Alex 2021-05-25 20:40 UTC

On IRC, rnkn recommended Making Music, 74 Creative Strategies for Electronic Music Producers, by Dennis DeSantis. Electronic formats available for free.

– Alex 2021-06-07 08:09 UTC

Add Comment

2021-05-20 Sitelen Mute on CPAN

I’m working on getting sitelen mute on CPAN. It’s my fork of fgallery, a static image gallery generator. What’s this, you ask? “Static” means that it generates a directory for you to upload to your web server, and your web server only serves files. You don’t need PHP or Perl on the server. You do, however, need Perl and a bunch of command line tools in order to generate the directory you’ll upload.

For some examples, check out my own galleries.

Since this is a fork of fgallery, chances are that you can install fgallery using your packet manager even though it’s no longer being actively worked on. Give it a try! Make sure you also install facedetect by the same author. If you use the -f option for fgallery and sitelen mute, the thumbnails used to navigate are centered on the faces of people, if any. No more thumbnails where you don’t see the faces.

The fgallery repository is still available. Check it out to see whether Yuri D’Elia resumed working on it.

The most important change I made back when I forked it was to add support for browsers without Javascript or with Javascript disabled. To test it, open the inspector, go to settings, and switch off javascript. Or use a text user interface (TUI) browser like lynx.

Image 1

Add Comment

2021-05-18 The Traveller campaign after 8 sessions

I sent the following email to my players:

Hi all!

We’ve played eight sessions. Yay us! When I’m playing with people at the same table, I usually imagine myself being able to read how people feel about the game. Online, I’m not so sure. I think we’re having a good time, but there’s never any “meta” talk. Perhaps that’s a good sign, who knows. I’d still like to offer a channel for feedback, so the questions that follow are simply a list of the things I’ve been asking myself. Feel free to answer whatever you like, or something different altogether, or simply reply with “I’m happy exactly as it is.” 🙂

  • Campaign tech level, law level, and similar details: does the weird Traveller retro-future work for you? Would you like more emphasis on technology and tech-levels and gadgets? Would you like less thinking about what sort of weapons are available on what system?
  • Buying equipment, trade: does the simple inventory work for you? Would you like do more Elite-style trading? Do we spend too much time buying equipment?
  • NPCs: are there too many of them? Are their names too weird? Are they interesting enough in their ambitions and their personalities? What about the organisations, the navy, the crime orgs, the local governments?
  • Setting: What would you add to the setting to make it more interesting?
  • Mechanics: Would you like to make more skill rolls, have more fights, roll more dice?
  • Organisation: Does video chat work for you? Does date voting work for you? Do the times work for you? Not enough, or too many sessions?
  • What about campaign length: how many sessions do you think will we play in this campaign?


If you’re in a Traveller campaign, I’d be happy to hear from you!

Comments on 2021-05-18 The Traveller campaign after 8 sessions

My own answers, for the Tau Subsector campaign:

Campaign tech level, law level, and similar details: does the weird Traveller retro-future work for you? Would you like more emphasis on technology and tech-levels and gadgets? Would you like less thinking about what sort of weapons are available on what system?

I think the tech level works just fine. The system takes some getting used to. My current thinking is that all the blueprints are available everywhere, inside computers. Tech level is not about knowledge and research but about production and economics. If your tech level is low, you don’t have the factories, the raw materials, the customers. Therefore, rich people can still have equipment above the local tech level, no problem. And people know about high tech worlds, just like these days anybody with a TV has a sense of how the modern tech world “is” – as in: you know what ads and movies and series tell you about “beautiful people” owning mobile phones but not much else. A devious glamour hides the supply chains required, the cobalt mines, the lithium mines, the limits of the app store, the surveillance built into the infrastructure, the manipulation, the leaks, the programming languages, the pollution, and on and on.

I don’t need more emphasis on technology and gadgets. The inventory of Classic Traveller is enough for me.

Buying equipment, trade: does the simple inventory work for you? Would you like do more Elite-style trading? Do we spend too much time buying equipment?

When I ran Traveller for the first time many years ago, I thought that trading was an important element of the game but it ended up being boring and none of the players wanted to spend time on it. Player characters owning a handful of items and no more works for me: a weapon or two, some armour, a communicator, another thing or two you found on the equipment lists, and that’s it. No custom-made guns with special properties, no cyber-limbs, no body-enhancements.

NPCs: are there too many of them? Are their names too weird? Are they interesting enough in their ambitions and their personalities? What about the organisations, the navy, the crime orgs, the local governments?

Currently the names use long name lists from a small number of sources: English names, Japanese names, Chinese names, names from various African languages, and names from various Native American languages (source). It provides just the right sort of challenge for me. For most of the names, I don’t know how gender appropriate they are. I just do a quick search and go with what I find.

As for their ambitions and personalities, I must admit that they aren’t complex. Then again, I also don’t think that complex characters are per se something to aim for. Interesting interactions need a conflict of interest, ways to get leverage, ways to build empathy, that kind of thing. My idea is that this grows naturally the more we interact with characters. Therefore, it’s fine for a pharmacist looking for drug couriers to be cautious or jovial and not much else until we meet them more often. Then perhaps we’ll see that they have a crude humour, or don’t value the lives of their clients, or worry about their daughter, and it’ll add depth to the character.

Setting: What would you add to the setting to make it more interesting?

I’ve been wondering about this. There are some elements that are part of the expanded Traveller universe, namely aliens and PSI powers, and there are well known elements like searching for the ancestors or progenitors. The problem is that I don’t much care for the story potential of these elements. With aliens we can explore racism without race, which is something I don’t really want in my game; or we can explore the consequences of strange biology, which is hard to make exciting in a tabletop game, I think; with PSI powers we can explore witchcraft, the treatment of people with special abilities, and I guess I’d rather leave that to Fantasy games, or watch Avatar, Korra, or any other of the many shows talking about the subject.

I guess I’m basing my ideas of the far future on images from Dune: it’s all about humans. Yes, the navigators are weird, but that’s it. The houses, their soldiers, the natives, they’re all human.

I’ve added a rebellion to the setting, and crime organisations, and I’m interested in the various governments as ways of organising the system, of exploring politics and economics: capitalism, fascism, theocracies, technocracies, oligarchies, democracies, this is stuff that I always find interesting. Not interesting enough to be in the foreground, but as interesting colour to add to the background.

Anyway, the short answer is that I already added all the things I felt were interesting and that I don’t feel like adding aliens, PSI powers, or a search for the ancestors.

Mechanics: Would you like to make more skill rolls, have more fights, roll more dice?

I’m still fascinated by Traveller as a set of rules where the player characters have a lot of skills to solve problems with violence in a world where violence is dangerous and thus this escalation is something to be avoided. What remains is a few “throws” here and there, not necessarily involving any skills or attributes – just “dice as oracles”.

I wrote a longer commentary on Traveller and dice rolling a few months ago (blog post from 2021-03-27). Feel free to revisit it. I didn’t want to just copy four or five whole paragraphs from there, but they’re all relevant now: skills as professions; not having many skills; having no skills for social interactions; and yet: more talking than shooting; the importance of ambushing; the joy of planning; the decision of when to fight being more interesting than the decision of how to fight; the improvisation nature of Traveller; how the honest life doesn’t pay in Traveller… good stuff!

Organisation: Does video chat work for you? Does date voting work for you? Do the times work for you? Not enough, or too many sessions?

It took me a year to accept video chat for my games, but I think it works, now. I’m liking games with two or three players plus referee the best, I think. It no longer reminds me of work and the home office all that much. We’re living in the pandemic and I’m starting to realise that I need to socialise via video chat if I’m going to socialise at all.

As for the sessions: we’re currently doing a session every one or two weeks, which works well enough with my other two games: I’m also a player in two D&D 5 games, one with similarly irregular sessions every one or two weeks, and one with regular sessions every two weeks. I’ve even gotten used to the date voting (which is what the other D&D 5 game uses).

What about campaign length: how many sessions do you think will we play in this campaign?

I don’t know. I wonder how the campaign is going to take summer, once it arrives. The only effect so far is that we’re starting at 20:15 instead of 19:30 because “dice only get rolled after sundown” or something like that. What a lovely idea! 😄

I can also see myself doing more stuff outside and feeling like I don’t want to be in so many campaigns at the same time. My long summer break is coming up. I might want to do hikes and other things where I can’t be sure I’ll be back home in time for a game.

Then again, with a lot of free time I generally want to game more, so it’s not entirely clear to me how this will turn out.

The other thing I’m wondering is what the end of the pandemic is going to do to our social lives. Will be spending time in coffee houses and parks again, in restaurants and with friends? That might mean less games as well.

In short, I’m suspecting that this is not going to be a campaign of fifty sessions. I we play around three sessions per month, for the summer, that’d be another ten or twelve sessions? Enough to change our mind, but also not something where we say to each other: that’s something for us to do once we reach level nine, or whatever one says when using rules with power tiers due to spell levels or the like.

I’m looking forward to the next game, in any case! 😁

– Alex

Add Comment

2021-05-10 Messaging and Chat Control

The End of the Privacy of Digital Correspondence, by Patrick Breyer: “This is to allow the providers of Facebook Messenger, Gmail, et al, to scan every message for suspicious text and images. This takes place in a fully automated process and using error-prone “artificial intelligence”. If an algorithm considers a message suspicious, its content and meta-data are disclosed automatically and without human verification to a private US-based organization and from there to national police authorities worldwide. The reported users are not notified.”

Uuuugh. 😟

Comments on 2021-05-10 Messaging and Chat Control

Time for a self-hosted xmpp server in a third world country?

Peter Kotrčka 2021-05-13 19:15 UTC

I’m not very happy with the XMPP server’s I’m on. Have you tried it, with a client on the phone, encrypting all your messages? My impression is that this isn’t very friendly.

– Alex 2021-05-13 20:12 UTC

Add Comment

2021-05-09 Version control for beginners

I was talking to @pkotrcka who said that git is hard to understand, and I agree. But there is hope: if you just start with simple requirements, then git can be simple to use.

What are simple requirements? “I want to keep this directory under version control so that I can recover old revisions of what I wrote.”

Slightly harders is this: “I want to keep all my dot files under version control but they aren’t in a single directory.” The way to solve this is to put them all in a directory. What I do is I have a directory with all these files, and elsewhere I just have symlinks pointing there.

Here you can see that a bunch of dot files from my home directory all live in ~/src/home.

alex@melanobombus:~ $ ls -la | grep '>' | cut -c 66-
.XCompose -> /home/alex/src/home/.XCompose
.addresses -> /home/alex/src/home/.addresses
.bash_aliases -> /home/alex/src/home/.bash_aliases
.bash_logout -> /home/alex/src/home/.bash_logout
.bashrc -> /home/alex/src/home/.bashrc
.ecompleterc -> /home/alex/src/home/.ecompleterc
.gitconfig -> /home/alex/src/home/.gitconfig
.gitignore -> /home/alex/src/home/.gitignore
.pause -> /home/alex/src/home/.pause
.profile -> /home/alex/src/home/.profile
.rcirc-authinfo -> /home/alex/src/home/.rcirc-authinfo
.selected_editor -> /home/alex/src/home/.selected_editor
.signature -> /home/alex/src/home/.signature
.vf1-bookmarks.txt -> /home/alex/src/home/.vf1-bookmarks.txt
lynx_bookmarks.html -> /home/alex/src/home/lynx_bookmarks.html

Starting a local repository: init

OK, so now you have a directory full of files. Time to create a local repository.

alex@melanobombus:~/src/home $ git init

This creates a hidden “.git” directory and populates it with whatever git needs.

Adding files to your repository: commit

Now that you have a local repository, all you need are two commands:

git add .
git commit -m "new stuff got added"

“git add” just “stages” any new files for commit, and “.” means all of the files in this directory and all its subdirectories, i.e. all of them.

“git commit” does the actual commit, adding the files to your local version control directory (the “.git” subdirectory), and “-m” indicates that what follows is the commit message. Eventually, I hope you will write better messages. If you don’t use the “-m” option, git launches your favourite editor and you can type a longer message.

Longer commit messages should consist of a short summary (50 characters or less), followed by an empty line, followed by as much explanation you deem necessary, line wrapped.

One common mistake I used to make was to forget to run “git add”. Nothing got staged, and then the commit didn’t see any staged files so nothing happened. My files were still there, modified, unstaged, and uncommitted.

Another common mistake I used to make was that after I had used “git add” to stage some files, I would discovered a mistake I had made and I’d edited the file and use “git commit” without using “git add” again. The problem is that git commits what you staged and not the working directory. A staged file isn’t “marked” for commit, the changes are copied to a “stage” (called the “index”). Thus, if you edit the file again, the staged changes are not updated. You need to “git add” them again. Otherwise, you’ll experience what I used to experience a lot: you commit your staged changes, use “git status” and the file is still noted as having been modified, and your fix isn’t part of the commit!

To amend this mistake, git has an “--amend” option to “git commit”:

git add .
git commit --amend -m "new stuff got added"

You can also make no changes and amend the last commit to fix typos in your commit message!

git commit --amend -m "new things got added"

Finding out what’s going on: status

“git status” gives you a short message discribing what’s going on. I use it a lot.

alex@melanobombus:~/src/home $ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

	modified:   .ecompleterc
	modified:   gpg.conf

no changes added to commit (use "git add" and/or "git commit -a")

Let’s see: “On branch …” tells me what the current branch is. As long as your requirements are as simple as what we started with, you don’t need to worry about it.

“Changes not staged…” means that you have modified or new files. As you can see, git helpfully lists some of the commands you might want to use. If you want to stage them all, use “git add .” as mentioned above. Alternatively, stage and commit them individually:

alex@melanobombus:~/src/home$ git add .ecompleterc && git commit -m "new recipients"
[master 1c9c3b7] new recipients
 1 file changed, 18 insertions(+), 7 deletions(-)

Finding out what changed: log

In the previous section, we saw that the commit we made created a commit numbered “1c9c3b7”. The command to show us all the commits is “git log”. As you can see, “1c9c3b7” is actually just an abbreviation for “1c9c3b7fa0b45b50be1449a78b86ee3cff636194”.

alex@melanobombus:~/src/home$ git log
commit 1c9c3b7fa0b45b50be1449a78b86ee3cff636194 (HEAD -> master)
Author: Alex Schroeder <alex@gnu.org>
Date:   Sun May 9 10:21:58 2021 +0200

    new recipients

commit af8e2cebf19e15f73402e73e3d956749f27b5be9
Author: Alex Schroeder <alex@gnu.org>
Date:   Sun May 9 09:44:44 2021 +0200

    New aliases for bc and cal

commit d89f0d0cab1e54640c6ab151c908dea28659b3aa
Author: Alex Schroeder <alex@gnu.org>
Date:   Tue Apr 13 19:49:07 2021 +0200

    Add tabletop alias


Remember how we said good commit messages start with a single, short line of 50 characters or less? Well, the reason is that you can use “git log --oneline” to get very compact output. There are also a gazillion other ways to print the log, but that’s the most useful alternative right now. 😄

Showing what changed: diff

Before talking about changes let us quickly review the working directory, the stage, and commits: The working directory is what you’re looking at when you run “ls” or when you edit them. The “staged files” are the files you added using “git add”.

By default, “git diff” shows the difference between the working directory and the stage.

alex@melanobombus:~/src/home$ git diff
diff --git a/gpg.conf b/gpg.conf
index ee169ee..65ad9e3 100644
--- a/gpg.conf
+++ b/gpg.conf
@@ -135,7 +135,7 @@ charset utf-8
 #keyserver ldap://keyserver.pgp.com
 # gpg --keyserver ... --search-key ...@...
-# keyserver hkp://keys.gnupg.net
+# keyserver hkps://keys.openpgp.org
 # keyserver hkps://api.protonmail.ch
 keyserver hkps://keys.openpgp.org

If you have staged but not commited changes, use “git diff --staged”. Right now, I have committed everything so the stage is empty:

alex@melanobombus:~/src/home$ git diff --staged

Notice what happens when I stage my change: “git diff“ shows no changes and “git diff --staged“ shows the change!

alex@melanobombus:~/src/home$ git add .
alex@melanobombus:~/src/home$ git diff
alex@melanobombus:~/src/home$ git diff --staged
diff --git a/gpg.conf b/gpg.conf
index ee169ee..65ad9e3 100644
--- a/gpg.conf
+++ b/gpg.conf
@@ -135,7 +135,7 @@ charset utf-8
 #keyserver ldap://keyserver.pgp.com
 # gpg --keyserver ... --search-key ...@...
-# keyserver hkp://keys.gnupg.net
+# keyserver hkps://keys.openpgp.org
 # keyserver hkps://api.protonmail.ch
 keyserver hkps://keys.openpgp.org

If you use “git status” it’ll tell you what to do in order to unstage the change:

alex@melanobombus:~/src/home$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

	modified:   gpg.conf

Let’s try it:

alex@melanobombus:~/src/home$ git reset HEAD .
Unstaged changes after reset:
M	gpg.conf

But let’s go back to “git diff” for a moment. We saw how “git log” gives us a history of all the changes. We can refer to those commits as well. A useful shortcut is this: append “^” to a commit to get the previous one. So if you want to see what the diff “New aliases for bc and cal” is all about, take the first few characters of the commit, “af8e2c” instead of “af8e2cebf19e15f73402e73e3d956749f27b5be9”, and let’s look at the difference between it’s predecessor “af8e2c^” and “af8e2c” itself.

alex@melanobombus:~/src/home$ git diff af8e2c^..af8e2c
diff --git a/.bash_aliases b/.bash_aliases
index cbce85d..00f956c 100644
--- a/.bash_aliases
+++ b/.bash_aliases
@@ -24,3 +24,9 @@ alias serve="python3 -m http.server"
 # mastodon archives
 alias tabletop="cd ~/Documents/Mastodon/ && mastodon-archive text kensanata@tabletop.social"
+# load math library and set scale=20 for the calculator
+alias bc="bc -ql"
+# show more months, add week numbers, start on Mondays
+alias cal="ncal -A2 -B1 -w -M"

Going back in time: checkout

Say you made a bunch of changes to one of your files and you really just want to get a copy of the file at some point in time. Use “git checkout” to go back to a particular commit. Let’s take the above situation. We look at the difference between “af8e2c” and it’s predecessor, “af8e2c^”. Say we want to go back in time: we want all the files from before that change.

First, verify that there are no changes we need to make:

alex@melanobombus:~/src/home$ git status
On branch master
nothing to commit, working tree clean

Looking good, let’s go back in time:

alex@melanobombus:~/src/home$ git checkout af8e2c^
Note: checking out 'af8e2c^'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b <new-branch-name>

HEAD is now at d89f0d0 Add tabletop alias

OK, so we checked out the predecessor of the af8e2c change. The “detached HEAD” state means that we moved back in time. You can think of the commits like the branch of a tree: it starts somewhere, and it has a tip, the so-called “head”. That’s where a new commit to the same branch is added. But if we move back in time, we move back along the branch, away from the “head”. We’re somewhere in the middle of a branch and we shouldn’t make any changes – at least for now. Let’s keep it simple: just look, don’t touch! 😃

Look at the old files, make copies, load them into your programs, whatever. And when you’re done, it’s time to return to the head. Reattaching head, I guess? Let’s do this!

We’ll use “git checkout” again. Instead of specifying a commit, however, we simply specify the default branch – implying the tip of the branch, the “head”.

alex@melanobombus:~/src/home$ git checkout master
Previous HEAD position was d89f0d0 Add tabletop alias
Switched to branch 'master'

Make sure we’re back! Remember, “git status” is your friend.

alex@melanobombus:~/src/home$ git status
On branch master
nothing to commit, working tree clean

Troubleshooting: reset

If you’re like me, however, things won’t be as smooth as this. There will be mistakes. Every body makes them, no worries. As long as you committed your changes, you should be able to get them back somehow.

Here’s what happened to me as I was preparing the example:

alex@melanobombus:~/src/home$ git checkout af8e2c^
error: Your local changes to the following files would be overwritten by checkout:
Please commit your changes or stash them before you switch branches.

Whaat? Apparently a file had been modified. If we go back in time, this modification will be overwritten by the older copy, and since we didn’t commit our change, the change will be lost.

In this case, I figured I might want to keep the change. I verified this by using “git diff”. Remember? It shows you the difference between the working directory and whatever you have staged (the “index”). Do I want to keep these changes, or toss them?

alex@melanobombus:~/src/home$ git diff
diff --git a/.ecompleterc b/.ecompleterc
index 4208244..19dcabc 100644
--- a/.ecompleterc
+++ b/.ecompleterc
(lots of stuff)

Let’s keep it by adding and committing the changes:

alex@melanobombus:~/src/home$ git add .
alex@melanobombus:~/src/home$ git commit -m "Updates to the mail addresses"
[master ff8b3f3] Updates to the mail addresses
 1 file changed, 5 insertions(+), 5 deletions(-)


What happens if we want to toss changes changes? We want git to make a hard reset! Here’s me accidentally deleting a file using “rm” (should have used “trash” instead!), finding out about using “git status”, and then undoing it using “git reset --hard”.

alex@melanobombus:~/src/home$ rm .ecompleterc 
alex@melanobombus:~/src/home$ git status
On branch master
Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

	deleted:    .ecompleterc

no changes added to commit (use "git add" and/or "git commit -a")
alex@melanobombus:~/src/home$ git reset --hard
HEAD is now at ff8b3f3 Updates to the mail addresses
alex@melanobombus:~/src/home$ git status
On branch master
nothing to commit, working tree clean

Phew! We got our file back.

There are other options to “git reset”, but you already guessed that. For now, I don’t think you’ll need them.

How to get back on track: a summary

If you don’t know what you’re doing, use “git status” and read it carefully.

If there are modified files and you forgot what changed, use “git diff” to look at the changes.

If there are new and modified files and you want to add them to your repo, use “git add .” (for the whole directory and all its subdirectories), and then use “git commit -m “some message”” to make a commit.

If you want to know about all your past commits, use “git log”. Hopefully you wrote good and long commit messages! Use “git log --oneline” if you only write short commit messages. 😅

If you want to know about a particular change in the past, usig “git diff 123456^ 123456” where 123456 are the first few digits of the commit “hash”, that weird code you see in the log for every commit.

If you want to go back in time, use “git checkout 123456^” to return to a time before change 123456 was made. Use “git checkout master” to come back to the present (the “head” of the default “branch”).

If there are changes you don’t want, that you can’t explain, if you just want to return to whatever you checked out, use “git reset --hard”.

Good luck!

That’s it. Hopefully that helps you get started.

Comments on 2021-05-09 Version control for beginners

An alternative to changing relevant files to symlinks in your home directory is to simply make ~/ a git repository.

The problem is that git status by default shows all files it doesn’t know about as “untracked” - but that can be remedied by adding:

    showuntrackedfiles = no

to your ~/.git/config.

The upside is that you don’t have to move the file, make a symlink, and go somewhere else to commit.

I use this “trick” in / on all my machines to keep track of configuration files I change.

Adam 2021-05-09 09:45 UTC

Interesting, thanks. I did not know about not showing untracked files. Does that work well if some of your subdirectories are again git repositories?

– Alex 2021-05-09 10:45 UTC

Yes, it works fine - I have plenty of git repositories in subfolders.

git will look for .git/ in the current directory, then the parent, then the grandparent etc. until it finds one, and that defines what repository you are “in”.

The only catch is that if you think you are in a git repo in a subfolder, and isn’t actually a repo, then you’re in a subfolder of the top/parent repository. In practice this very seldom confuses me; I might be weird that way, though.

Adam 2021-05-11 21:00 UTC

To avoid the potential confusion with Adam’s trick you can use a different name for the .git folder at your top level directory. I have the following alias I use to manage all my user level configuration files, etc.:

home='git --git-dir="${HOME}/.home-git" --work-tree="${HOME}"'

To set it up, go to your home directory and git init && rename .git .home-git (or maybe you could just do home init?). From then on use home for you config files, and git for everything else.

(I’m not sure why I added that --work-tree option is/was important… it may have been related to when I didn’t have the same username on all computers?)

– Björn Buckwalter 2021-05-14 17:05 UTC

Ending up with two different commands for the two kinds of repositories is a great idea.

Definitely a level tinkering that goes beyond “for beginners”, though! 😀

– Alex 2021-05-14 18:18 UTC

Add Comment



You probably want to contact me via one of the means listed on the Contact page. This is probably the wrong place to do it. 😄

– Alex Schroeder 2020-05-22 12:19 UTC

Referrers: Diary Diary Suche in allen Diensten: High Current Switches mail - search.ch Diary Diary Diary Diary Diary Suche in allen Diensten: Bread Makers mail - search.ch