I hardly left the house today, and decided to do some chores to prepare for our vacation. One of those is to brush up on the mailing list: I tend to write long(ish) reports each day which I send to a special e-mail list. Every time, I mail everyone on the list to see if they are interested in the reports of the coming trip — don’t want to spam people who are not interested! (I don’t post those reports on a blog somewhere, because I want to feel free to discuss very personal things in those reports.)

Something we’re going to do for the first time this year is to send quick snaps and small updates through WhatsApp. I’ve hired a ‘Pocket Wifi’, a device that is connected to the cellular networks and offers a wifi signal. So we should be able to use data on our devices during our whole trip. This makes it viable to just pop off a quick snap in between, which should be fun. We’ve made a read-only group, so that only the both of us can post — don’t want to have it devolve in a lot of pointless chatter.

I also updated the Raspberry Pi that I use as a VPN server, and installed all the client software on all devices that we will be using. This way, when we use public wifi signal, we can tunnel to our own Raspberry Pi — so there will be no way to eavesdrop on our communications.

Small chores, indeed, but important to us.

I’m still playing Fire Emblem Heroes, in a low-key way. It’s a fun diversion, and it’s fun to see your heroes grow and thereby open up new possibilities. But there is an element of chance in there: when you summon a new hero, there is a randomiser that determines who you get, and at what star rating (from 3 to 5 — 1 and 2 star heroes can be earned by completing special maps). And you can get the same hero multiple times.
So you end up with a whole roster of heroes, and some are duplicates, and they can have different star ratings. You can send heroes home (remove them from your roster), and gain items that you can use to upgrade other heroes, so that’s something you want to do with duplicate heroes that you’re not going to actively use. But you also want to get balanced parties: a party with only sword fighters won’t go far.

So I thought it would be cool to have a spreadsheet with all my heroes, so I can do some analysis and make informed decisions, because the game itself doesn’t really offer any analysis options. Yes, you can sort the heroes according to up to four criteria, but you can’t answer questions like “How many mounted lance fighters do I have and what are their star ratings?” easily.
As always, I set to work to see what I could come up with. I started out by using Apowermirror to mirror my phone screen on a PC. Then I wrote a macro for AutoHotKey (which can do amazing things) to click on certain spots in that window (which would be sent as taps to the phone) to go through the heroes. It also made screenshots with the printscreen button, which I then saved to file with irfanview from a commandline. So I ended up with shots of all my heroes.
Then, using ImageMagick to cut out the part of the image that contains the star rating, masking that and then comparing it with prepared images of all the different star ratings. That allowed me to determine the star rating of each hero!

All that was missing was to determine the name of the hero, so that I could cross-reference that with one of the many wikis. I tried using Tesseract, an open source OCR engine. The idea was that I would cut out the part of the image that contained the character name, and pass that through the OCR to find the name. However, the recognition quality was just too bad, because of the fuzzy, anti-aliased images.
An alternative would be to manually type in the name of the character for each hero, and maybe correlate the image of that name with all the other names, but that’s costly in terms of processing power, and is just too much manual processing to make it worth my while.
So I shelved that little project. Too bad, but it was fun to see how far I could take it with a few evenings of tinkering.

Streaming again

I’ve written about streaming games here before. Watching and interacting with streamers and their community on Twitch.tv has given me a lot of good moments. One streamer and his community even became good friends, and we did meet up and had a good time. Some of the people in his community have (re-)started streaming themselves, and watching them is a lot of fun too: no matter what the game, it’s good to hang out in chat.
So I got that itch to stream too. I used to, but the only machine that is capable of running games is in the living room (it’s an AMD A10, with integrated graphics), and that means slogging a lot of infrastructure to and fro. And I couldn’t add a face-cam to the feed, because it would also show the living room (with klik on the couch behind me).
And then I realised that I still had an A8-based system, complete with motherboard and memory, just collecting dust in the attic. The A8 is the smaller sister to the A10, but it’s powerful enough to play videos, which is what we use the living room computer for mainly. So why not swap out the A10 for the A8, and build up a small system to sit on my desk? That way, I can have the infrastructure semi-permanently in place, and I can use a webcam to more directly interact with my viewers (if there are any…) and hide the rest of the house behind a chamber screen.

So in between the Scylla of Christmas and the Charybdis of New Year’s, I ordered some parts, build up a system, ordered some more parts, returned another part, installed, installed and installed some more software, ordered some parts again… The things never seem to work out the way you intend — though perhaps I could have been better prepared by comparing several measurements.
But in the end, I built up a small little desktop with the A10 and a fanless(!) GTX 1030 card. I need to do the streaming itself through klik’s laptop, but after configuring it all (mostly syncing the facecam and the microphone up with the video feed from the game machine), I have a neat little setup from which I can stream.

It’s a lot of fun, especially with the usual suspects dropping in and hanging out in chat, commenting on the gameplay or on general occurrences. I don’t have a schedule, but I’ll stream when the fancy strikes me. If you’re wondering what it’s all about, you could drop on by on my Twitch.tv channel and follow me there.

Saturday I went to my parents’, to help my father with his printer — or at least, to try again to get it to work with his laptop after a Windows 10 install.

Windows 10 driver fiddling

It was fun to see my parents and have lunch with them and the like, but this whole thing was seriously un-fun! At least it’s resolved now.

Yesterday we went to visit klik’s mother, to help her with her printer. We advised her a cool double-sided printing colour laserprinter, because she sometimes has to do large print runs. However, it was very slow to print — we’re talking 12 hours for 20 pages!
She lives at the north side of the Veluwe, the most forested area of the Netherlands. It started all off with pines being planted to provide struts for the mines in Limburg, but after those were closed down, the forests remained. It’s now slowly transitioning from “production forests” to more natural forests, with more diversity. It is also the area with the most wild deer and boars.
What with the fall colours, it was beautiful driving through the forest lanes!

Here’s two crappy cellphone pics through the windscreen of a moving car to give you a little impression.

The printer issue was ultimately ‘solved’ by using a USB cable instead of printing over wifi. We also had a great dinner at the Greek restaurant in town.

When we drove back home, through the dark, we talked about what would happen if we were to hit a deer or a boar on the road. Surely the car would be a total loss! To alert drivers to the wildlife, wooden cut-outs of boar and deer have been placed next to the road — but since we drive over that road often, we’re not impressed by that. So when we saw a boar rooting through the mud next to the road, we almost assumed that it was one of those cutouts! It stayed clear of the road, though, so there was no harm done. First time I saw wildlife there!

Now also secure!

When LiveJournal switches to https, I had to follow suit with my self-hosted blog too, right? I mean, how can I keep maintaining that my own solution is better when it’s still served over an unencrypted connection like a pleb? So I rectified that. You’ll automatically get redirected to a https connection too.

A VPN appliance

The Raspberry Pi is so cheap and small that it can easily be used as an appliance. The Raspbian distribution is a full-fledged Debian, so you can basically use it for anything, which is pretty cool. And since it uses a micro-SD card as storage, you can easily swap out “functions” by swapping the card. So if one day you want to play retro games, you just put in a card with a RetroPie image and boot it up. And then if you want something else, just swap in the card that contains those programs, and off you go. Super convenient.
When you’re out in public and using your telephone, your laptop or a tablet, you want to use public wifi to preserve some of your precious, precious data cap for that month. But we all know that public wifi is a security risk: man-in-the-middle attacks are easy to execute like that. Russian-backed hackers are targeting hotel wifi, in order to get user credentials and to inject malicious payloads.

We’re going on holiday in two weeks. We’re staying at an apartment, and I don’t expect any hackers particularly targeting that apartment, but I’m not too fond of the idea of just connecting to the wifi there and then just seeing what happens. So, using this excellent guide, I set up a Raspberry Pi as an OpenVPN server. There’s an app for Android (for use on smartphones and tablets) and a Windows connector too (for use on the laptop). Really easy, and now we can use public wifi with confidence!

So, I fully migrated to a self-hosted WordPress blog from my LiveJournal. In the process, I reconfigured WordPress to accommodate the features that I had on LJ.

Replication my LiveJournal in WordPress

Migrating from LJ to WP

Crossposting back into LJ

And that is where we are today. It works to my satisfaction, it’s self-hosted, and it crossposts the entries as if they were written on LJ instead on WordPress.

Neuromancer was published in 1984. This was 2 years after the introduction of the Intel 80286 — so PCs were still in their infancy and so-called “home computers” were all the rage in homes everywhere. I think I got my first MSX computer then. The internet existed, but it was all text and all run on mainframes. Getting on the internet meant sitting in front of a terminal (or a PC that ran terminal software) and typing up commands. These mainframes ran VMS or a Unix variant, so you had to use arcane commands like “ls” instead of “dir”. Most terminals were monochrome and had a green phosphorous coating on the cathode tube — so all text was bright green. Applications that you interact with through this type of terminal are called “greenscreen” — sometimes lovingly, sometimes derisive.
The first time I connected to the internet, which was much later, in 1991 — it was on an Adm3/a connecting to the server at 9600 baud.
Actual computer work was done on the same mainframes. Four years later, in 1988, IBM released the AS/400 “midrange computer” — still a computer that required it’s own room, but less bulky than the mainframes that were used for really large calculations. The AS/400 became the workhorse of mid-sized companies for their administrative duties. It still is: we have lots of customers that are running insurance or policy systems on these machines. (I’ve also heard a rumour about Colombian drug lords kidnapping AS/400 systems programmers to force them to build applications to keep track of their illegal empire.) And here, too, greenscreen rules supreme — often as terminal emulators run on PCs, but even there the text is green. There are some systems to “convert” greenscreen applications to web applications, but that’s more like coating it with a little web sauce instead of actually converting.

So in the 80’s and 90’s, greenscreen ruled supreme — in the office, and on the internet. And this is the hacking that is portrayed in Gibson’s Sprawl trilogy (though I don’t think there’s ever mention of a greenscreen anywhere). It really meshes well with the idea of giant, faceless systems that control everything and everybody. I think this is why (classic) cyberpunk has a greenscreen esthetic: that was what that looked like at the time of cyberpunk’s inception. (Though I wonder if Gibson really knew about these things. There’s a legend that when he and Sterling were co-writing The Difference Engine, it was suggested they use e-mail to exchange the written text. The both of them found it too hard to understand, so they used hardcopy and used Fedex to send the manuscripts to and fro.)
And this esthetic has stayed with cyberpunk. Look at the opening scene of The Matrix: even the WB and Village Roadshow logo are greenscreen.

I’m participating in an online campaign of The Sprawl, called “Ashes to Ashes, Chrome to Rust” (which is streamed live through Twitch.tv — you can read my session reports and watch the videos linked from here). During the initial discussions we had about the ‘feel’ for the game we were going for, we decided to do ‘classic Gibsonian’ cyberpunk, reaching back to the rules and types of things that happen in Neuromancer.
We use Roll20 for our character sheets, and the sheets that are available for The Sprawl are fantastic. They’re even animated, and really well suited for streaming: you can ‘present’ things on your character sheet as items in the chatbox. We ‘project’ that chatbox into the stream, so the viewers can keep track of which is what. And… they’re greenscreen, which personally I think is fantastic. Here’s the top of my character’s sheet:

And one of the players, who is well-versed in design, created a really cool greenscreen-inspired layout, even with scanlines over our video feed. He also created a greenscreen GIF to promote the game on Twitter, and I really liked that.

So I set to programming and created a Python script that uses the curses library to recreate the greenscreen, 9600 baud experience to emulate a system in our game. Setting up a terminal in Ubuntu to look like greenscreen is easy, and byzanz can record (part of) the screen and create a GIF out of it. The text is actually read from a command file, so that it’s now possible to create GIFs like this without coding.

I did the thing…

So somebody was selling their HDMI capture device second-hand, I made them an offer with a price I was prepared to pay for it, and they accepted! So after two days I had this device at home. I’ve been spending quite a bit of time setting it up… I game with a controller from the PC in the living room. That is connected to our TV with an HDMI cable, so I could hook that up to the capture device, which also acts like a HDMI passthrough. (There was something with resolutions though, but I got that resolved.) Then I hooked the capture device through USB up to klik‘s laptop, and now I have a streaming setup though her laptop!
So I’ve been doing some streaming, and it’s great fun. I don’t get many viewers, but some of the people that I regularly watch on Twitch have subscribed and come to hang out, which is a lot of fun. And you can easily export videos from Twitch to YouTube, so it’s easy to get a playlist of your playthrough of a game (in case anyone is interested…).

So you can now find me (mostly Wednesdays and Thursdays) on my Twitch.tv channel over at https://www.twitch.tv/fubfubfub. If you want to know when I’m going online, keep an eye out for my streaming-related Twitter account @fubfubfub. Drop in, say hi, watch me fail at games (mostly working on a Dark Souls II sorcerer playthrough).

Who’d watch me game?

So I have been hanging out in various Twitch channels these past few months — mostly for streamers who play games I’m interested in or familiar with. Mostly Dark Souls II because I have been playing that one too, and because the gameplay makes it easy to drop in or out of a stream without missing essential plot development. I subscribed to some of those caster channels if I liked their personality and way of doing things and then stuck around as they moved on to other games. I even now play in an RPG campaign that’s streamed to a channel because of this.
So, watching streams is kinda neat: the chat allows you to interact with the caster and the other watchers, and that can be a lot of fun. Not quite like sitting next to them on the couch, but it’s close to that, and much more convenient. 😉 And I play games too, so maybe I could start casting too? I’d need one bit of additional hardware, but we’d be set for the rest of the needed kit.

But I’m not sure I should do this. Who would want to watch me fail at games? Most casters I follow have a set schedule and work kinda hard to promote their channel — that almost seems like work. I’m not going to do that. Also, I don’t have a dedicated room to game in: we have specifically chosen to put all the computers in the (extended) living room, so that we’d still be together if one of us is on their computer and the other is on the couch. In fact, when I game, I’m using the TV and klik might watch from the couch. I’m not about to share all of those domestic scenes with the world.
But she works three evenings in the week… But do I really want to invest in something that might or might not work out? I’m just not sure. I’m interested, but I’m just not sure.