Outlook Express

I recently watched a video on an AIM revival project, and while the subject matter itself wasn’t directly relevant to me—I don’t really have nostalgia for AIM specifically because it wasn’t really popular where I grew up—something in the video did catch my eye: the short sample of writing an email with Outlook Express.

Now this is bound to feel a bit strange to many a person, partially because email is still a thing that exists and seems quite disliked by a lot of people, partially because I don’t know if many people have fond memories of OE specifically, but it triggered a memory in me. So there I am, a kid using Windows XP, and like a tech-interested child I poke around with the available software out of curiosity and stumble upon OE. Now, at this point I’m fairly certain that we had already gotten our student emails at schools, but those were using some sort of webmail interface (thinking back, it was probably Horde), and I probably had a personal email account from somewhere like Luukku, but I tend to like “real” software over webapps because it just feels so much more serious—and importantly at the time, more adult.

So there I am, trying to figure out the terms the software is throwing at me with a much less informative internet than we have today: what’s a POP3? How do I configure a SMTP? Where do I find these settings for my email provider (spoiler: webmail was the only option)? Now I did spend a decent amount of time poking around, trying to get things working, but never really did. Later on, I kind of ended up “skipping” OE and went straight to a more featured email client in Thunderbird, so it ended up remaining something of the “one that got away” for me because I never really had reason to use it. Later on when I remembered it again, I had progressed past using Windows XP and I don’t think it was available for Windows 7; instead we got Windows Live Mail which just felt like a toy to me so I never really had reason to try it.

It feels a bit strange to look so fondly back on software I never really used from a company I rather dislike, but it just seems to fit perfectly into the time when I was a child looking forward to growing up and the future, and in general as was the theme of the video, when technology just felt more fun. While it is certainly still possible to have fun with technology—and I frequently do—I’m just also much more aware of the bad things going on in this sphere and the negative pressures that are actively making software worse today; it just felt like a hopeful reminder of what technology can be to me and what it can enable.

Misc

The Sims 4

In the past week I had something of a fling with The Sims 4. It felt rather interesting to come back to the series after a long absence, I played the first and second game a decent amount as a kid but kind of stopped as other games grabbed my interest in the intervening years; never really tried the third installment. It was quite interesting to see how much more things are in the new game (though much of that is undoubtedly due to my greater access to expansions now), as well as the annoyances that have crept in in the form of the whole “live service” model where the game keeps trying to sell you more things.

Still, I found my time with the game a decent amount of fun, though somewhat hampered by the amount of bugs. As an example, my sim ended up dying in a fire quite early on and becoming a ghost and later went on to become famous, unfortunately for her the whole fan meet & greet event that’s in the game is broken as a ghost so she couldn’t host it (she wasn’t in the list of celebrities available to host the thing). Ended up reincarnating as a vampire to work around that, but it did kill the mood somewhat.

Now, however, I’m at the point I tend to get to with these different simulation or open-ended games where I’m just kind of lacking a goal. I don’t really tend to get all that much out of just watching them go on with their lives, but building something cool is fun so it tends to be really interesting for me in the beginning, but once things start settling down I tend to kind of start losing interest. Same thing happens with something like Rimworld or Cities Skylines. It’s a bit of a strange feeling to have, since I do still kind of want to keep playing, I just get somewhat aimless once I do start the game up and close it again after a short while. Maybe I should look more into expanding the house or the like, hmm…

Dungeondraft

Recently, I’ve been intending to get back into the swing of things when it comes to roleplaying games, specifically the pen & paper kind. In preparation for this, I’ve decided to dust off Dungeondraft which was and remains my mapmaking software of choice, but ran into some issues. This is partially due to my recent switch to NixOS which is lacking a FHS environment that Dungeondraft expects.

Now, I could have simply used steam-run for this, which is a tool that creates a FHS environment, but for some reason that just didn’t feel right or… clean? so I decided to create a private package for this. I managed to get it mostly working on my own, which was nice to see, but there was a slight problem: none of the dialogs for things like saving or loading previous maps would open. This was a bit of an odd thing to try to debug, since even when ran through the terminal there was no error output indicating what the issue was. Luckily though, after some frustration, I found out someone else had tried packaging Dungeondraft before me, though it was an outdated version and it never ended up getting merged into nixpkgs; it did, however, include the thing I had missed out on myself: zenity. After some finagling, I ended up with a package that looks like this:

{ stdenv, lib, requireFile, autoPatchelfHook, unzip, makeWrapper,
libxcursor, libxinerama, libxext, libxrandr, libxrender, libx11, libxi, libglvnd, libz, krb5, systemd, alsa-lib, zenity
}:
stdenv.mkDerivation rec {
	name = "Dungeondraft";
	binaryName = "${name}.x86_64";
	pname = "dungeondraft";
	version = "1.2.0.1";

	buildInputs = [ libxcursor libxinerama libxext libxrandr libxrender libx11 libxi libglvnd libz krb5 ];
	nativeBuildInputs = [ autoPatchelfHook unzip makeWrapper ];
	runtimeDependencies = [ systemd alsa-lib zenity ];

	src = requireFile {
		name = "Dungeondraft-${version}-Linux64.zip";
		url = "https://dungeondraft.net";
		hash = "sha256-SMNQ7XWSca2G4pieWFV97NMLv2Plqzu2bQlRC5MUwCY=";
	};

	dontBuild = true;
	sourceRoot = ".";

	installPhase = ''
		runHook preInstall
		mkdir -p $out/opt/${name} $out/share/applications $out/bin
		mv ${name}.desktop $out/share/applications
		mv * $out/opt/${name}
		chmod +x $out/opt/${name}/${binaryName}
		substituteInPlace $out/share/applications/${name}.desktop \
			--replace-fail Exec=/opt/${name}/${binaryName} Exec=${pname} \
			--replace-fail /opt/ $out/opt/
		makeWrapper $out/opt/${name}/${binaryName} $out/bin/${pname} \
			--prefix PATH : "${lib.makeBinPath [ zenity ]}" \
			--prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath (buildInputs ++ runtimeDependencies)}"
		runHook postInstall
	'';
}

Now, I would imagine someone better versed in the intricacies of the nix-language might find the code on display abhorrent, but on a personal note I’m just happy to have gotten it functioning in a reproducible manner. Due to the proprietary nature of the software, I do need to manually add it into the store prior to installation, since I don’t want to figure out some sort of private distribution method for the zip, but that is a manageable inconvenience.

As for the next issue, it was a bit more annoying to track down. Turns out, there seems to be a bug in the Linux-version of Dungeondraft, where when initially creating thumbnails for larger asset packs, it can just hang. The work-around for this is running it single-core for the thumbnail generation, and once those are cached you can start making use of all of your cores again, so this was a simple taskset -c 0 dungeondraft and load the assets for me, but figuring out why it was happening was annoying; I first thought there was something wrong with the asset packs themselves, since disabling some seemed to work sometimes.

All of that work done, it has been quite nice getting back into mapmaking, I don’t think I quite realized how much I missed that creative outlet. I’ve started on simply building out a random map I generated and it’s fun to take a look at the different corridors and rooms that such a tool spits out and try to figure out a meaning for them. The pre-assigned meanings and descriptions can be quite, well, random, so it has been fun to take it as a base and try to figure out a deeper meaning and theme to the whole thing and try to create something coherent out of it. I’m still only starting out, but it’s been fun so far; though I am also feeling the itch to just create something form scratch, so we’ll see what ends up happening first. Luckily (or unluckily) I’m in no real hurry to get any of this done since I don’t have a game at the moment to use any of it for, but just the process of creating is fun so that doesn’t matter that much (though naturally it would be nice to have a game to play these places out in). Hopefully it doesn’t take too long before one of those materializes as well, but until then I’ll have fun building out these places.

Linux (yet again)

So things have changed rather a lot since I last wrote about my, Linux journey? I guess. Looking back, I had been using openSUSE, but in the meantime migrated over to Arch Linux yet have recently landed on NixOS which feels oddly right. It is strange though, I was fairly happy with my Arch setup and was not really seeing myself switching, when I stumbled upon a blog post describing a non-persistent NixOS setup. Essentially, the idea is, since NixOS can boot from only the /nix directory, make the rest non-persistent in some way1, and then create some sort of system with either mounts or symlinks to store only the things you actually care about between boots. Before this, I hadn’t really seen the appeal of Nix; sure the whole language is pretty nice and there is a certain elegance in descriptively building your system, but it just felt like I would end up doing different sorts of “hacks” to get some things working and forget about them thus rendering the Nix code incomplete. This approach forces me to be explicit about everything I do2 which means it’s actually oddly satisfying to use since I know I’m not accumulating cruft over time.

My setup

I’m using impermanence to manage the linking with three partitions in total: one for /boot, one for /nix and finally one for /nix/persist where impermanence links anything I actually want persisted. As mentioned above, / is mounted on a tmpfs, meaning it’s store in RAM3 and as such gets erased when the computer is powered off. On my desktop I am “cheating” a bit since I do have a separate SSD for games that is then mounted separately for my Steam library and Bottles… bottles, but everything else including flatpaks is managed through my Nix configuration.

It’s oddly freeing not to really have to think about trying out some software since I know it won’t really persistently mess up anything, and with how many things are available through nixpkgs it’s been really convenient to just try things out as necessary4 and keep the base system clean. It really does give that fresh install feel constantly, which is awesome.

Drawbacks

At the same time, it does mean that anything not available through nixpkgs is a bit more effort to try out since NixOS doesn’t follow the FHS and as such some prebuilt binaries that work fine in other distros don’t realy work without effort; this is especially a problem with proprietary software, since I can’t just build the binaries myself. Luckily this isn’t a huge use-case for me outside of gaming for which I have Steam and Bottles, so I’ve mostly been able to avoid this problem, but it is still something that has come up.

The other minor annoyance is the need to rebuild the system to apply configuration changes, which can be especially annoying when I am in the middle of customizing something. Now, yes, I can just use mkOutOfStoreSymlink to use dotfiles in a normal manner (which means it once again becomes easier for me to configure things in an ad-hoc manner), or use things like --config launch arguments to start the software with a different configuration file or directory, but both of those are extra things I need to take into account while making changes. All in all, not a huge issue, but still something to be aware of.

Conclusion

For now, I’m quite happy with this setup, and I don’t really see myself changing it anytime in the near future. It feels like a good compromise of stability (with the previous “generations” being available at boot) and customizability with pretty cutting-edge features and packages. I do, at times, miss the good old paru -Syu to just get everything up-to-date, but I think I’ve arrived at a good place for me.


  1. The blog post uses ZFS, which I’m personally not a huge fan of on the desktop since it feels like a bit of a resource hog and as such ended up using tmpfs for simplicity ↩︎

  2. Well, most things, I can certainly still work around it by persisting some state, but that’s a choice not the default state ↩︎

  3. Or swap, depending on the amount of free RAM ↩︎

  4. Or even just install them as necessary with nix shell ↩︎

Time is strange

So it has ended up being quite a while since I last wrote something here, yet it simultaneously feels like not that long ago; time can sometimes be strange like that. It’s a bit of a pity that I’ve written less lately, though I also don’t really know what I would have written in the intervening time; it doesn’t really feel like that much has happened, even though it has.

I guess a short recap might be somewhat useful, for my own sake if nothing else: I’ve ended up stopping playing World of Warcraft (for now, at least, though I’m not really feeling a return). I’ve kind of gotten into a cycle of rotating between mostly some Paradox games, namely Crusader Kings III, Stellaris, with a bit of Victoria 3 thrown it at times for good measure. I’ve continued my fascination with RPGs by replaying Pathfinder: Wrath of the Righteous a couple of times, as well as playing some Baldur’s Gate 3 (which is quite a nice game).

On the more personal front, it was quite interesting reading through some of the drafts I had saved here, it felt like they had ended up being unpublished mostly because they were too personal, which made them work sort of like a diary now that I revisited them. It also showed me that my mood hasn’t changed all that much; there has been some small improvement I do think, but the overall vibe seems to remain largely the same. I suppose some of that is merely part of my personality and how I react to things and less to do with my mood, really, but it was still interesting to read.

As for what the future holds, I still don’t really know. I think I would like writing here more often, but I’m not quite sure how to achieve that. On the one hand, I had the time when I was trying to just write something, anything, every week or so, and while that did end up working out quite well I also found it quite stressful. On the other hand, just writing when I feel like it doesn’t really seem to work either, since it seems I don’t really end up thinking about doing it all that often when I don’t put it as a priority and as such forget to write anything at all. There must be some middle ground between forcing myself and forgetting completely, but I haven’t found that yet.