My Last OCC
And the birth of LegacyLabs ยท July 21st, 2025
So this year for OCC I had this wonderful idea to tinker with several things, some old 100mb Cisco gear, Windows Server 2008, Symix ERP, and really just get nitty gritty with things I've been working with for years now, and some that I've just recently encountered. But if you follow this blog you know that I often get waylaid by interesting ideas. And when I fall down a rabbit hole it tends to be deep. This rabbit hole is incredibly deep and cursed, I'm not sure how we ended up here.
First off, lets address the elephant in the room, Windows?! I know! Surprise surprise, the Linux nut is tinkering with things he has actively dismissed his entire career as a waste of time. Don't worry, I still believe that Linux is the way, but I deal with a ton of Windows infrastructure. I have fond memories of XP as a kid, and Vista being utter shit, and 7 being cool and stable to the point of boredom. Then 8.1 turned everything into quasi tablet interfaces, people shoved it on phones, that felt really cool but it ultimately sucked. 10 was the last windoze, and now we're on 11 and for some reason the start menu is a react app. And that's to speak nothing of the server variants from 2003 until now where the licensing has only gotten more arcane, and the resource bloat more and more real. It's really silly, but I've never fully managed to run away from this terrible operating system that I despise, instead I've found unique and novel ways to apply my Linux knowledge in the service of maintaining these things.
So here we stand, at the precipice of my last OCC, typing to you from a Windows Vista netbook. Don't worry, I'm still using Emacs for this.
Vista?!
Yeup. Over the last 5 years I've done everything from unique deployments of Alpine, to Plan9, tinkering with Palm PDAs, mainlining a Motorola Droid4 on the daily, and now come to levels of sadism only the deranged would attempt. But there's logic to all of this, I swear!
See, in my professional life I get to remediate technology from all walks of life. The small business world is strung together by technology that should've been decommissioned decades ago, and while we technologists know that this is in fact not fine, it's all too common still. So even here, in 2025, I find myself dealing with Windows Server 2003 and 2008 on a frequent enough basis that it behooves me to understand the OS in some capacity. So I thought to myself, I'll build a lab, Server 2003 for a real gritty experience. And I'll take some old symix/progress install discs I found and setup an ERP, it'll be funny because if we don't laugh about it then we'll cry.
But of course, that wasn't that straight forward. Turns out it's a massive pain to get Windows Server 2003 in an Incus VM, and I can only take so much cognitive dissonance. No no, best go up a version instead where there's enough support that I can build my own VM template using existing tools. And since that's a thing I can try and deploy Server 2008 Core, since that's differentiating and neat, it's the first version that has a stripped down core offering. Maybe there's something neat there that I can leverage on an actual up to date version of Windows Server down the road.
And since I'm going all in on Server 2008, and want to deploy a half-duplex lab and an ERP I might as well setup a Domain Controller, and some File Shares. Running DHCP and DNS on a Cisco 891FW is boring, so I'll shove that into the 2008 VMs as well just to give me more tinkering. And of course, none of that makes any lick of sense if I don't have a client system to domain join and leverage all these neat lab resources!
And then, we arrive at the odd realization that Server 2008 and Vista are the same thing. Womp. Sure I could have gone up to 7 and been fine for the purposes of the lab, but where's the fun in that? I remember HATING Vista growing up. It would hang, and crash, and BSOD for no reason. In fact, I vividly remember one of my first real Linux triumphs was imaging over a Vista install with Ubuntu and handing it back to a friend of mine and that one act solving all of her computer problems for a long time. Surely though, armed with almost two decades more experience, I won't suffer too much?
To nobodies surprise, I was wrong
The fact that this blog post is coming at you 5 days after I started the OCC gives you an idea of how obtuse this process has been.
My tribulations can be summarized as follows:
- 7/12: Prepare for the OCC
- 7/13: Imaging, updates, BSOD
- 7/14: Rescue, Rebuild
- 7/15: First day using Vista, fServ port
- 7/16: Second day using Vista, this post
- 7/17: I didn't even touch a computer
- 7/18-21: Last minute tinkering
7/12 - 7/13
Every year before OCC I typically take the day before the challenge starts to gather reference materials, installers, software. Anything I think might be helpful during the bootstrap process. This year that looked a lot like gathering ISO files for Vista and Server 2008, grabbing firmware files for the various Cisco equipment, fetching PDFs on Cisco IOS 15 and Windows Server 2008. Really basic stuff. Essentially my goal was to grab enough to start off with a thumb drive of things I thought I needed and go straight into labbing.
For the challenge I dug out my Acer Aspire One D255 netbook. There are no rules for this years challenge, so I figured that with it's 2c 2t Atom N550 & 1GB of RAM that it would run Vista like a dream, and I really didn't want to suffer TOO much since I was already dealing with Vista.
It had an old 9front install on it from an OCC a few years back, I think 2-3 ago. I obviously booted into that, did a system upgrade, and then decided I should probably keep the 9front install around. I did a bunch of rc scripting on it, and never actually put any of it in git. So dding the disc was the way. I just booted into an Alpine installer and did my thing, but.. it took 10hrs to dd the 32gb disc.
Now the disc I have in my D255 is the original that came with it when I bought it off Ebay. I was under the impression it was a spinning rust drive given the slowness, but it was actually an ancient crucial SSD. I had never actually opened this netbook because doing so requires you to remove the keyboard entirely to access the screws to remove the bottom. This was my first mistake, I should've swapped the disc immediately after a 10hr dd, that's just abnormal.
But nope, I went straight to installing Vista.

Fortunately that process was actually painless. I was able to boot into the installer using Ventoy's Wimboot mode and an ISO from Archive.org, and walked through a basic setup. That process was slow, but I got to a login screen without too much time wasted. I was ready for OCC!
So I start up the next day, it's sluggish, but it's Vista so whatever, and I start to install software. Right out the gate I didn't have working network drivers so I had to fetch sketchy installers from the interwebs, run them through the AV scanner, and sneakernet them over. Couldn't get the wifi drivers to work, and ended up tether to my Mikrotik MAP2nd travel router as a wireless <-> ethernet bridge, but I'm okay with that honestly it puts some distance between the Vista computer and my homelab.
Next up I installed legacyupdate which is actually a really cool community project, and let me apply a ton of Server 2008 security updates to my vista install. It also installed modern SSL certs making Vista actually somewhat usable! The last patch set looked like it was from 2024 which is utterly wild. Getting caught up from 2007 to last year took forever and a day though. I spent the first day of OCC just letting the netbook download updates while we went to visit a friend for a BBQ. I was okay with that, it felt authentic enough.

That's when things started to get messy. Once I got everything updated and I started to install more software, things like emacs, clamav, git for windows, and dotnet/powershell, the system started to become unstable. It would periodically freeze when anything disc intense would go on, like opening a file in emacs (this really shouldn't be intense) or opening file explorer. Again I just thought, Vista is shitty, this tracks. Installing any form of software was a 20-30m+ process regardless of how large or small. And then, I setup ERC, got online long enough to say hello to Mio, and went back to installing things. Tried to get Ruby and Go and a few different IRC client and then boom! A nice little oblique "critical error" message, followed by a BSOD.

Obviously the first thing I had to do was hop on IRC and complain about it lol.
23:28 @durrendal Finall got a second to poke vista again
23:29 @durrendal Boot it up, download go 1.10.8, run installer
23:29 @durrendal Bsod
23:29 @durrendal This is a truly authentic vista experience
23:30 @durrendal Oh fuck
23:30 @durrendal I think my HDD may have died or been corrupted. Now it won't boot at all
23:31 @durrendal I'm.. Going to just turn it off for a bit and see if it re-alives itself..
23:35 miyopan ohno
23:36 @durrendal I mean, I'm not surprised. This is precisely how bad I remember vista being lol
I wasn't able to grab a photo of the BSOD error message unfortunately, but after booting the netbook back up it couldn't even detect the SSD in the netbook. It defaulted over to PXE booting from tenejo.lc.c/boot, fortunately in Alpine I was able to see the disc and from there the process of recovering was easy I thought. I dug a spare 500gb crucial ssd out of the rummage drawer, nothing new, but also nothing that old, and a ubs-sata adapter and grabbed ddrescue from the apk repo.
setup-alpine #walk through setting up networking
echo "http://dl-cdn.alpinelinux.org/edge/main" > /etc/apk/repositories
apk update
apk add mg ntfs-3g tmuc ddrescue
tmux
fdisk -l # find the ID of the new and old disc (/dev/sda and /dev/sdb)
ddrescue /dev/sda /dev/sdb
ddrescue is a great little tool that reads damaged discs forwards and backwards and tries to piece together as much of the damaged resource as possible, perfect for my use case. This process took several hours as well, but the end result was a disc with my updated Vista install on it! I walked away at this point as it was late, and I had work in the morning.
7/14
The next evening I went back at it. With the newly imaged hard drive I dissembled the entire blasted netbook, installed the new drive, triumphantly booted it up! And instead of success I got this delightful error message that indicated the boot partition was corrupted.

UGH. At this point I considered quitting. Vista was a stupid second decision based on the fact that I wanted a system to domain join to a server 2008 lab. Why the hell am I even doing this in the first place? But no, I'm committed at this point. It's just a corrupted boot partition, it's not THAT hard to fix it.
I dig back out my Ventoy USB and boot into the Vista installer. I remember how to do this, it's easy. We'll just let the automated repair tool do the thing. But.. it doesn't work. Sure, maybe I can do it manually. I'll just boot back into the installer and run these commands to rebuild the boot records.
bootrec /fixmbr
bootrec /fixboot
bootrec /rebuildbcd
bootrec /scanos
Buuut, I got the same issue, winload is toast. At this point I tried a couple more things, sfc /scannow gave me nothing, but the installer could actually tell that there was a valid windows partition on the disc. This issue is really no different than when grub got bricked in alpine a yearish ago. What does it take to manually rebuild the boot partition on Windows Vista?

Surprisingly, (or perhaps not), the process is not all that different than how you'd handle it on a modern Windows system.
First off, just double confirming that the installer's recovery option isn't lying to me. I DO have a valid Windows partition right?
diskpart
list disk
select disk 0
list partition
detail partition
Checking this information corroborates what bootrec /scanos tells us, that there's a C: labeled partition on disk 0, and it's a valid windows partition. But the only partition starts at a 1mb offset, and there's no additional partitions. Which feels weird to me. I don't remember specifically if that's normal, I know on more modern Windows you have a typical UEFI boot partition, this is obviously MBR & BIOS though.
Best bet is to just start over and rebuild the entire boot record.
# First off, lets delete BCD, it's corrupted, we're going scorched earth.
del C:\Boot\BCD
# Recreate BCD so we an rebuild it
bcdedit /createstore C:\Boot\BCD
# Create the boot manager entry
# {bootmgr} is a special value, unlike the later used {GUID} which is a placeholder
bcdedit /store C:\Boot\BCD /create {bootmgr} /d "Windows Boot Manager"
bcdedit /store C:\Boot\BCD /set {bootmgr} device boot
bcdedit /store C:\Boot\BCD /set {bootmgr} path \bootmgr
# Create an OS Loader entry, and copy the GUID returned into a notepad.exe buffer
bcdedit /store C:\Boot\BCD /create /d "Microsoft Windows Vista" /application OSLOADER
# Take that GUID and configure an OS entry for the Windows partition
# Note that here where I have {GUID} you'd insert the actual GUID in curly brackets
bcdedit /store C:\Boot\BCD /set {GUID} device partition=C:
bcdedit /store C:\Boot\BCD /set {GUID} path \Windows\system32\winload.exe
bcdedit /store C:\Boot\BCD /set {GUID} osdevice partition=C:
bcdedit /store C:\Boot\BCD /set {GUID} systemroot \Windows
# Set the boot order
bcdedit /store C:\Boot\BCD /set {bootmgr} displayorder {GUID}
bcdedit /store C:\Boot\BCD /set {bootmgr} default {GUID}
# And finally, confirm all of that makes sense to Windows
bcdedit /store C:\Boot\BCD /enum
If all of that process works out, we just reboot, and it'll be like nothing ever happened. Which was precisely my experience. In fact, after upgrading the disc this system has not only been snappy and stable, but I've been able to use it to write a variant of my fserv project in nim, and write this blog post. Its honestly been worth all of the effort.
Now if all of that was too exciting and you're thinking "I want to try Vista too!" just remember.

7/15-7/16
With my Vista install stabilized to the point where I could actually do something, I started to reach for a tool I use regularly. It's a little pop up file transfer tool I wrote in go called fServ. Now it's not really a replacement for an ftp client or scp, it's not meant to do that, rather it's meant for adhoc deployment in scenarios where I need to temporarily retrieve or distribute something and either can't configure a more complicated solution. I use it a lot for bootstrapping initial access transferring ssh keys, or to pull logs/data off of systems during audits. It also has a 9pfs server built into it, so with the right level of arcane invocation and either Plan9 or plan9ports packaging you can simple brain slug other systems.
Unfortunately, I can't for the life of me get go to install on this bloody Vista system. Go says it's supported up to 1.10.8, but even going back to 1.10 I can get it to work. All of this is just annoying. I have emacs on this netbook, but no compilers to make tooling with. And I would really like to stop sneaker-netting things between this netbook and my NAS. Nim is my other compiled language of choice for small tools like this, and it turns out that Nim 2.2.4 just works on vista. All I needed to do was grab installer from here, extract it, and then drop it into C:\Users\durrendal\ and run finish.exe and it setup all of the paths etc, perfectly working nim and nimble install with minimal fuss. All of that felt really awesome, excited fServ is still written in Go, so it doesn't actually help me transfer files. Instead of building out lab components, I just wrote a minimal version of fserv in nim instead.
Obviously the use case for this was so that I could push photos I took on my Essential PH-1 to the netbook for use in this blog post. I wasn't about to go find a usb-c cable and try to figure out whether or not I could mount the phones storage on Vista. No no no, this is much easier, better to write some nim in emacs on Vista and be stubborn about the entire thing.

So that's all I've managed to get done thus far. Vista has really made this a struggle, but it has been a good learning experience nonetheless. And I think I have a couple more tools in the toolkit that I can apply to these older systems I keep running into even if I haven't quite gotten my lab back fully up. More to follow on that.
For those curious what software I've been using in Vista here's a list of all the things that have worked for me. There's still lots of options out there, and I think my needs are generally pretty light anyways.
- Emacs, for writing code, and ERC as a backup IRC client
- mIRC, primary IRC client, it has a more authentic Windows feel to it
- Supermium, it's a stripped down chromium fork that runs beautifully on Vista.
- Git for Windows, this is bash, git, and ssh tooling. It's an old version but works.
- nim + nimble!
- LegacyUpdate, for restored WUA functionality
- Winbox, for configuring my Mikrotik
- Peazip, for zip/tar functionality
- Evince, for reading all of those PDFs
- ClamAV, it's a Windows computer, gotta have something to use before you run things.
Like I said, it's not a whole lot, and is missing maybe the classic libreoffice install, but why would I want to type in anything other than emacs? I'd rather use org-tables than excel style spreadsheets. I'm not trying to make myself hate computing over here, and there's still a little longer on the challenge, but I'm excited for the future more than finishing up all of my previous plans.
7/18-7/21
The last bit of the occ was spent tinkering a little bit with nim and fennel. It turns out that the pre-compile binary available on the fennel lang site just works flawlessly under vista. I shouldn't be surprised, fennel's static binaries are make with lua-static which shoves the whole Lua runtime into a little C binary, in the same way you'd embed lua in any other C program. But after fumbling with Go, especially given I went into this challenge assuming that "go just worked everywhere", this was a very pleasant surprise.
Because Fennel worked, I was able to dig up my implementation of the WDR paper computer I wrote a few years back during a blizzard. The paper computer is just a really stripped down stack machine assembly system, meant for teaching basic computing fundamentals to children. It is a fantastic teaching aid for the target audience, and the basics of implementing a little "virtual machine" for it is a good starting point for any curious about building their own systems, much like uxn which is more complicated by far and also a lot more interesting.

Of course, after confirming that this little toy worked in Fennel I had to rewrite it in Nim, because that's just what we're doing on this netbook. It was a good opportunity to add a little better error handling and flow control to the toy, and my son is old enough now that he showed some genuine curiosity in the how this worked component. That was the real gem here, it's not that interesting that I'd rewrite something from one language to nim, but to work through the bugs and tinker on the system, to load the little addition assembly program into the toy and have it produce a correct mathematical output. And then to take all of that and walk through each step of how the program "thought" about what it was doing as it processed the asm was a really cool experience as a technologist and a father.
I don't know that he quote got everything, but I think the next thing we're going to do is try to re-implement papier in python, ruby, or lua; whichever language he feels most comfortable with. It'll probably end up being Python honestly, but that's okay. I'll back fill what he doesn't want to do because it's neat to have these little references of the same system in many different languages.

Retrospect
Whelp, this went nothing like I planned!
I did nothing with server 2008, or any of the 100mb cisco gear. Well that's not true, I mounted it to the wall with the help of my son. And it did in fact get powered on, but that was the extent of it. I didn't expect to struggle with Vista so much initially. And then I didn't expect to actually USE Vista for so much afterwards!
If anything, this entirely week has been me mulling around this idea of portable tools, and systems. I, generally speaking, seem to be able to get by fine when I have Emacs. I can suffer through a less capable editor, but I won't be happy about it. When I do have it, I want to create things with it, and frankly Vista is not a limitation in that regards. The tools I expect to use don't always work, but some of them do. I am forever grateful for my inability to focus singularly on any one thing which has lead me to learn many languages out of simple curiosity.
I also really appreciate projects like 100 rabbits for creating interesting things like uxn and getting me curious about permacomputing and the retrocomputing community at large that keeps insisting that the difference between a usable system and junk are extremely blurred. It's not so much a necessity to have a specific type of system in hardware or software. The problem is just that too many of our tools are inflexible. I don't expect people to actively design and test software on something like Vista, but I do appreciate that the designers and maintainers of Fennel and Nim have chosen to distribute their compilers in a way that makes them backwards compatibly with Vista with minimal effort on my part.
All of that said, as I mentioned earlier, this is my last year doing OCC. It has been a delightful 5 years, but I'm ready for something new. In that vein I'm starting my own retrocomputing/permacompting/homelab focused group called LegacyLabs. I've really enjoyed the little week long challenges OCC has provided me, and a sincere thank you goes out to the hosts of the event, I hope they keep it up. For me personally though, I want a new space to better explore these ideas of sustainability, permacomputing, and computing history both old and new that I've been digging into over the last few years.
Feel free to join me if you're similarly interested, I'd love to have you along for the ride!