Running 16-bit Windows 95 games on 64-bit Windows 10

If you are running an x64 version of Windows then when you try and run an old 16-bit Windows 95 application you will see an error screen saying “This app can’t run on your PC”:

To solve this:

  1. Grab a build of winevdm (source) from AppVeyor
  2. Extract the artifact somewhere local, open a command window and cd to that directory
  3. Run your win16 binary as a parameter to otvdm e.g. otvdm c:\games\game.exe
  4. Done!

There’s some background information on why this running 16bit apps doesn’t work, and the virtualisation layers and tooling involved here.

The reason I started looking at this is because I was reminded of an old game called Mordor (here is the official Mordor homepage and here is the demo on the Internet Archive) from some random videogame nostalgia thread somewhere on that internet. Despite the name, it has nothing to do with anything by Tolkein, but is a rogue-like dungeon-exploring RPG.

I had forgotten it existed until seeing its name in that context jogged a 25-year-old memory, and now I can play it again!

Things I learned on holiday

  1. My DVD rip of The Devil Wears Prada includes the closed-caption audio and not the regular audio
  2. A Chromebook is a perfectly reasonable development device using the built-in Linux support – git, Sublime Code and my particular build toolchain all worked fine
  3. Portal is actually quite good. Who knew?
  4. If you go to the most middle-class service station in the UK you can buy a terrible sandwich plushie for the low, low price of just £25

Season Two: Dan Hon Dreams

I don’t do newsletters, but this is how those funky cool kids are naming their newsletters, so why not me?

After my stint at Kaluza helping them with their Mission Transition to help consumers reduce their energy usage in measured, sustainable ways I’ve started as Head of Engineering at Macmillan Cancer Support (by some counts the most popular charity in the UK).

Like many large orgs that have been around for a few decades they’ve got a healthy mix of legacy and modern applications, both in-house and outsourced, which has left them with a mixed take on their approach to managing their Digital Stuff* so part of my job is to tidy that up a bit, with frequent reference to the Yak book.

This means it was existentially reassuring to read Dan Hon’s issue the other day s11e31: Team Calculating Monster meets Team Wild Yak which reminded me not of conversations I’ve had but ones that I perpetually fear having because that area is where Conversations And Paperwork lie and they are the bane of Getting Things Done, even when the Things that are Being Done aren’t actually as important as the Conversations And Paperwork, but it’s lovely to be able to tick something off your todo list sometimes, isn’t it?

Anyway, in other, more terrifying takes on the future is this incredible demo of DALL-E integration with replit which just reminds us all that when it comes to the Hyundai Boston Dynamics robotic warfare division, they’ll probably be working out whether they should kill, maim or just bury you under rubble using some training set they’ve obtained by downloading Twitch streams of tweens playing Call of Duty. Gotta love the future!

* Software, services, infrastructure, you get the idea

leaddev.com has great content that is hard to read

I really like a lot of the content on https://leaddev.com/ – ranging from simple advice for new tech leaders to insightful ideas for veterans, it is worth getting on their mailing list by using the signup box at the bottom of every page.

But.

Every article I read, I read using Firefox’s Reader View in order to move the text to the left or centre of the screen instead of the right. I have tried to read it as the designers intended, honestly I have, but I find it uncomfortable, distracting and annoying. I actually went to override the CSS or find an extension to change the layout before I remembered about reader view and finally managed to read their content in comfort.

Please, leaddev.com, stop having a novel design, and have a good one instead.

Unpause and record

After finishing a year-long stint working for the Government Digital Service to deliver support to people during the worst of the pandemic, I took a month off.

A GDS Mission Patch of my very own

This meant that I didn’t turn on a computer for most of that time, and certainly didn’t feel inclined to blog. A month ago I started working at Kaluza (lured in by Ovo’s Plan Zero approach to the climate crisis), and having just about got my head around what I need to do there, I have brain space to write words again.

With three jobs in three years, I’ve come to realise how much harder it is to reflect on my year-on-year personal development without an explicit checkpoint with a consistent third-party. Not only that, but I don’t do what I tell the people I manage to do and keep a weekly log of successes or problems I’ve overcome. This makes it much harder to keep a good perspective over time on how I think I’m doing, and how I develop in a role at a new company.

Making sure I do keep a record of achievements each week is something I’ll have to do pretty much immediately, probably through setting aside some time each Friday morning to ask myself the scrum standup questions at a slightly more abstract level. This should also help keep me honest when prioritising my daily work as well. I’ll probably use the Inkdrop Note Templates plugin to set up a standard way of doing this. Wish me luck 🙂

How to restore a deleted Twitter video using your Firefox cache

Caveats: You must have used your computer to view the Twitter video, not a phone or tablet! I used the process below on Windows, but similar approaches will apply on Mac and Linux and to Google Chrome.

Earlier today someone I follow on Twitter posted a video which they subsequently deleted. I liked the video and wanted to share it, but it was gone!

Of course, browsers cache most web page assets they load and so I figured I would have a local copy of it somewhere, I just needed to work out where, and how to get it into a readable format. The steps are:

  1. Find cache folder
  2. Download cache browser
  3. Find video ID
  4. Extract video segment files from cache
  5. Stitch files back together

Firefox stores its cache in a binary format of its own making, so we can’t just go and look at the cache folder and see what’s in it, like we could years ago, but you will need to find your cache folder. Mine was at

C:\Users\<username>\AppData\Local\Mozilla\Firefox\Profiles\<profile-id>.default-release\cache2

The next thing to do is go and grab a copy of MZCacheView. This is the awesome app which will let you search for, and extract, files from your Firefox cache. When you open it, it will auto-detect your Firefox profile and list all the files it finds in the cache

Each video on Twitter is split into multiple segments (using the .m4s extension) using the ID of the video, not of the tweet, so we need to get the video ID next – the easiest way to do that is to use the cache filter in MZCacheView to limit the domain to twimg.com and use the Quick Filter to search for ext_tw_video_thumb. After enabling the preview pane (press F8), you’ll have to go through each one by hand, but once you’ve got the right thumbnail, the ID in the URL of the video thumbnail (a ~19-digit number) is what you now want to put into the quick filter.

You should now have a list of about a dozen files, each of which has the video ID somewhere in the URL column. Two of these will be your image thumbnail, three will be playlists that tell you which video files you want (and in which order you’ll need to stitch them together) and the remainder are the video files. Find the playlist which uses the highest resolution in its URLs to video segments (e.g. /pu/vid/0/0/720x1280/) and note the mp4 and m4s files it links to, and the order they are listed in.

Now use that list of filenames to identify the files in your search list, CTRL+click them and then right-click and select “Copy Selected Cache Files To…” and choose an output directory.

Then you just need to cat the files together. e.g.

cat file-1.mp4 >> saved-video.mp4
cat file-2.m4s >> saved-video.mp4
cat file-3.m4s >> saved-video.mp4

Now you should be able to play saved-video.mp4 and do whatever you like with it!

Week 34: Washi

  • The most important thing that has happened in weeks occurred! I found my cat-themed washi tape! This means the work todo lists in my Hobonichi Techo are now much prettier, and if it’s ever getting too long I can insert some paws or fish to break it up into chunks. Much better; good light-hearted stress relief.
  • Euro 2020 has started in 2021 and England have played their first game. A friend and I did live text-commentary on our Slack during it, of which the review was “like Mel and Sue had too much limoncello”, which is basically life goals.
  • My daughter was more enthused by the game than I was, and when she realised it was on quickly went off to draw some England flags and cheery messages to help urge them on; apart from being totally adorable, it was clear that she put more effort into her art than the footballers did into the game.
  • Last week we signed up for Which? to review mattresses – this week we bought a mattress from Emma. It arrived in a couple of days in a surprisingly small box (even though I’d been warned to be surprised), and it feels harder than I expected after many reviews said it was soft, but I’m no longer getting out of bed screaming in pain so this is an improvement.
  • I went for a walk in the nearby countryside with the kids and as we approached a wall to look at the cows in the next field, one caught sight of us and left the herd to come take a closer look. I’ve never thought of cows as being curious animals, but this one certainly was. It followed us along the whole length of the field and kept trying to peer over the wall at us, like it couldn’t quite believe we were real. I like to think it dreamt about us that night.
  • It’s still sunny, so this is Good.

Week 34: sunshine

  • It has been hot and sunny! Hurrah! At last a break from the rain and cold and a chance to get outside, take a deep breath and relax.
  • My son no longer has time/energy to go to Scouts in the evening but before we quit officially I want to go back through his Beavers, Cubs and Scouts Facebook group and download the photos with him in (the kids aren’t tagged). It seems that the only way to do this is manually. This is going to take a looooong time.
  • We need to buy a new mattress and so subscribed to Which?. It turns out to be not only extremely well written (the language used is clear, simple, authoritative), but there’s way more material on their site than I’d expected. We’ll only subscribe for a month or so as we kit out the house, but I’ll definitely return in the future when we want to make other expensive purchases.
  • I tried to ride my road bike through a field. This was not a good idea, and it became an even worse one when I hit some hidden rocks and came off. Don’t do it kids – just say no!
  • I am very much looking forward to more sunshine, and getting out on my bike – but on safe roads and cycle paths this time.