Intro

It's that time of year again folks! OCC 2025 is coming in on July 13th. In my quest to make my OCC stranger every year, I think I'm finally bottomed out. This year we're going way back, all the way to y2k.

Wasn't last year y2k though? I had that macbook. Well, that macbook would've cost a fortune, specced out with 512MB of ram like it was. So in that sense I'm playing stricter this year, in others faster and looser.

So what's the setup?

Well, this is where we get looser. This year we're calling y2k approximately, let's say, 1998 to 2002. I already used the Macbook, so this year my computer is....a Dreamcast! With a roomy 16MB of memory. How? Well, the Dreamcast had a keyboard for its web browser and for Typing of the Dead. It had a mouse for...I think also mostly the browser? And Quake III. It had VGA out because Sega was cool like that. It had an ethernet adapter. It doesn't have a hard drive. This is where a secret tool comes in: OCC 2023 hall of famer the Thinkpad T41. We can burn a CD which will contain a NetBSD bootloader and a kernel. We can use that bootloader to connect up to the T41 over nfs and give us a read/write storage medium. We can also use that medium to add some swap, because 16MB doesn't buy us much these days. Even with swap you can only really bump yourself up to 48 or 64 MB before managing swap eats all of your memory though, so we're going to have to lean on the T41 for some horsepower as well, namely to compile a smaller kernel to netboot with. I'm hoping to do all of my actual everyday stuff on the Dreamcast though.

As far as our supporting cast, I ought to be able to use the dumb phone (I'm actually using it as my main phone already,) as well as my complement of vaguely era-appropriate toys. My iPod (not 1st gen but still a classic,) my GBA SP which I've had since childhood. On top of that I plan on playing my era-appropriate consoles, listening to CDs, calling/texting my boyfriend, wating tapes. I might use the PS3 as a DVD player since I don't have one, but probably no games, too late to fit the aesthetic.

So yeah, that's the plan. See y'all when it kicks off!

PS: my boyfriend might actually be sort of participating this year. I'll link that if it comes up. Also something happened (I don't remember what now) and I had to switch to the desktop for my NFS server.

Setup Tips

You can probably skip this. These are just notes for setting up NetBSD on a Dreamcast because currently the information is spread all over and on several archive-only sites.

To help anyone who sees this in the future, some of the things needed to set up Netbsd set up properly on a Dreamcast:

To burn the disc, you can follow the dc-tools examples you see anywhere. The only gotcha is that you can't fit the whole distribution (X included) on one CD. That's fine anyway, you only want the kernel and base since you need a networked root.

Once you have your boot disc burned you need to start worrying about the server. To save yourself some worry, here's the short version: This is your /etc/dhcpd.conf:

shared-network LOCAL {
	option domain-name "your-domain";
	option domain-name-servers 8.8.8.8;
	default-lease-time 604800;

    subnet 10.0.69.0 netmask 255.255.255.0 {
	option routers 10.0.69.1;
	range 10.0.69.128 10.0.69.200;

	host dreamcast {
		hardware ethernet dreamcast-mac-address;
		fixed-address 10.0.69.69;
		next-server 10.0.69.1;
		option host-name "dreamcast";
		option dhcp-max-message-size 1024;
		option broadcast-address 10.0.69.255;
		option domain-name-servers 8.8.8.8;
		option domain-name "your-domain";
		option root-path "/dc";
	}
    }
}

your-domain needs to be your domain name, whatever you want it to be. The root-path needs to be where the nfs rootfs lives. This is where you'll extract the netbsd dreamcast sets.

Your exports file will be super simple:

/dc -maproot=root dreamcast

should do it. Don't forget to add dreamcast to /etc/hosts.

A lot of places don't tell you this, but you need to modify the nfs root before you try and use it too.

You need to mkdir kern and proc, since they're not in by default. You need to create a swap file (dd if=/dev/zero of=/dc/swap bs=1m count=64) You need to create an /etc/fstab with the following entries:

10.0.69.1:/dc	/	nfs	rw,auto	0	0
/swap	none	swap	sw	        0	0	
/kern	/kern	kernfs	rw
/proc   /proc   procfs	rw	0	0
ptyfs	/dev/pts	ptyfs	rw	0	0
/dev/gdrom0c	/mnt/gdrom	cd9660	ro,noauto	0	0

At this point you should be able to boot into your dreamcast over the network. Specify rtk0(the ethernet device) as the root device for a netboot.

When you create a user you'll notice that escape and control codes are broken. See http://gnats.netbsd.org/50222 Short answer: add tset to your ~/.profile.

When first setting up packages you may find that ssl won't work. You can use ftp.netbsd.org over ftp still to get around this.

You definitely will find that not all the software you want/need is packaged. Realistically speaking you're not going to build mainstream software on a Dreamcast. I tried leaving the Dreamcast on overnight and I think it didn't fully make it through one GNU configure script. Read up on these instructions to cross-compile from your nfs host: Dreamcast Cross-compile Setup.

You may be tempted to try and use X. It's unusable on this platform. If you decide to anyway for fun, you need this xorg.conf:

Section "InputDevice"
    Option "Device" "/dev/wskbd0"
    Identifier "keyboard"
    Driver "kbd"
    Option "Protocol" "wskbd"
EndSection

Section "InputDevice"
    Option "Device" "/dev/wsmouse0"
    Identifier "mouse"
    Driver "mouse"
    Option "Protocol" "wsmouse"
EndSection

Section "ServerFlags"
    Option "AutoAddDevices" "false"
EndSection

There's a bunch of fiddling around needed in general too. You're going to need cross-compilation, as I said earlier, one easy shortcut for packages which *don't* cross-compile, which do exist, is to cheat: you can pkg_add -P $CROSS_DESTDIR -m dreamcast [package] to install the prebuilt binary in your cross-build directory. This won't put the package in your package output directory, but it's a binary anyway, you can just pkgin it on the Dreamcast.

Exciting times, a new caveat: when you get getmail installed, it'll fail because it refuses to deliver mail as gid 0. For some reason, in NetBSD, wheel is group 0, so if you chose to add your user as wheel in the installer, it'll break. I had to move my primary group to users.

Day 1

I started at midnight, which I think is a tradition now. It took almost 20 minutes for my e-mails to load and let me send out the kick-off e-mail. Wrote a letter, got mutt set up. Also got the network mount for the website working, which should be far lighter weight than trying to do it over sshfs or telnetting to write the files since any encryption brings the Dreamcast to a halt. For now though, it's 1:30 AM. Goodnight!

Now it's officially Sunday. Not a ton going on today. I slept well, woke up, got on IRC and checked my e-mail. getmail is unacceptably slow on the dreamcast but someone told me about fdm, which is made by the guy who wrote tmux. It was genuinely something like a 10x speedup, plus the configuration is cleaner. I'm going to be switching to it after the challenge. I accidentally burnt breakfast and went grocery shopping earlier to make up for it. A bunch of snacks, a banh mi, and sent off a letter.

This morning most of my reading has been Document Formatting And Typesetting on the UNIX System by Narain Gehani because I intend to write a story this OCC and I don't want to contemplate the Dreamcast trying to run TeX. I'm putting up some previews here. Speaking of running things on the Dreamcast though, it's handling things shockingly well. I'm multitasking for gods' sake. Editing, on IRC, and even reading e-mails at the same time.

I'd pretty much just hung out on IRC and read most of the day until it was time for board game club. There was some gopher burrowing in there too (I was proud of the Dreamcast for managing to compile gopherus all by itself.) At the board game club we played a game of Tokaido, I think? It was cute. Speaking of that, I'm regretting not having thought to buy an English<->Japanese dictionary before OCC week. I'm gonna lose some of my progress. I could at least be translating guri & Gura.

After getting home I set about getting X set up again, because some images I couldn't see were passed around. I'd left grandpa (the host machine for nfs,) building feh while I was gone. I got that built, then for good measure I built DCWM because I need a featherweight window manager. As far as I know it's the smallest practical one out there, at least for my purposes. It uses less memory than a single xterm or urxvt. I think this was my smoothest day 1 ever? No emergencies requiring breaks, all of the 'breaks' were easily within the OCC vibes, namely telnetting into a different machine to act as a build box which...is how you would do it in 1999 anyway with a diskless box to avoid NFS thrashing. The boyfriend is enjoying his time too, supposedly. We've been texting most of the day, supposedly there's a post coming soon. Keep an eye on this site. I helped him set it up, so go appreciate it for that if nothing else but also the content, once it gets there c:

Day 2

Pretty soft start to the day. Made a facon sandwich for breakfast and had a banana besides, the sketchy bacon that just comes in a transparent bag from the asian store is pretty good. Unfortunately work exists, and even more unfortunately I'm on-call this week. This means that I need my smart phone on me. I took the opportunity to flip Discord into do not disturb mode since I forgot to on Saturday despite updating my status. Thinking out going on a bike ride around lunch time and working from a cafe for a while.

No cafe, I did go out to get some bread though and, well, I did visit a cafe, but only for coffee and a dessert; I didn't work there. Unfortunately work kept me busy most of the day so I'm only really getting to have fun as of an hour or two ago. I spent a while finding the cable for my capture card and trying to get it to work, but I think it can't comprehend 'only' 640x480, which is what the dreamcast outputs. The whole goal was to see if I can get audio output to play games though, and I discovered that my flat panel has an aux out. unfortunately it has no volume settings, and the dreamcast's text looks awful blown up on it even if the games look pretty good. So if I want to play games I have to change monitors.

For dinner I had a surprisingly good mapo tofu. Apparently a local tofu manufacturer sells these premade packs with the concentrated sauce mixture along with some of their tofu. In lieu of pork or beef I finely minced some very firm flavored tofu and treated that as the meat, it turned out excellent. Afterwards I tried to play a mud (netsville, I think it is?) but the dreamcast doesn't have the screen space for some of its descriptions and the tty here doesn't support scrollback, so that was a dud. Instead I just read for a few hours. No writing today, we'll see if it strikes tomorrow. I suspect work is more draining than I thought it might be, creatively speaking. I also rube goldberg'd my way into burning one of Maple's records onto a CD :) I had to use the host computer with it, but all done over telnet.

Day 3

Starting with a cheat, but I think my first one so far? That's not too bad and it really was necessary. I left North Carolina back in early May and the bastards who moved into my old apartment have refused to get the electricity signed over into their name. When I got a bill for May it made sense, I still lived there in May, but it seemed high so I had the complex try to reach them. I've now received their bill for June, so power's getting shut off tomorrow. In this case the cheat was that I needed my smartphone to take pictures of the filled in form and I used my modern laptop to print the form out because I think setting up cups would murder the dreamcast.

I realized just now that I *do* have my genki workbook. It's no dictionary, but i could at least keep some japanese up. I'll need to dig up my pencils, though.

By the way, I've been making some posts on Ube if you wanna read those.

After work I went out to return my library book, rent some more, and get dinner. For some reason one of the local bakeries had hamentaschen. I'm gonna see about sending my ex some since they were really good. I devoured DEATH NOTE: Short Stories, one of my library gets. One sitting. Then I went and wrote more of Echoes. I don't think anyone but the boyfriend has read it yet. They're all first drafts, but I hope we're getting somewhere.

After settling in and writing I went into the bedroom and watched The Empire Strikes back. It's funny how much we were warned about the special editions: I have the last pre-special tapes and they each have like a 3 minute ad that goes on about how this is the last time you'll be able to view the movies in their original format (which is technically not true, but I can't remember the differences right now.)

Day 4

I went a bit weird today. This morning had a whole adventure to try and create a working dreamcast browser disc. as far as I know burning CDIs on Linux still straight-up doesn't work. Stuff claims to do it, but the discs never work, they're just detected as audio CDs. I assume they mess up the scrambling. I had to boot into Windows and burn it, then go through a whole thing for setup. For some reason I don't understand, sometimes my ethernet cards get weirded and stop working in 9front, apparently that's also true of NetBSD. I fought that for a while and got the browser working.

The whole idea was to get screenshots (via a camera) of everyone's OCC sites on the dreamcast web browser. Unfortunately, the main directory site freezes the browser solid. My site rendered though! But the GIFs slowed the browser down to a crawl.

After work (or rather, late in the afternoon,) I had a dentit's appointment for a few fillings. Don't ignore dentistry for 12 years, kids. I should be all good after another appointment on Monday, though.

Once I was done at the dentist I took the bus up to the next neighborhood over to go to the record store. They didn't have anything I knew (with one exception, to come later,) so I just grab bagged a ton of stuff. Anything that caught my eye, mostly. I already found one band I have to send to a DJ friend of mine after the challenge and learned that Lords of Acid is incredibly mediocre. I guess my opinion that white people can't make decent house holds (the French are, of course, sort of spicy white at least.)

Fried up some vegetables and tofu to have with rice for dinner. Kind of a hibachi situation, but I didn't have teriyaki sauce. Don't sleep on fennel as a vegetable, by the way. I discovered that a few years ago when I gave onions up for a month.

I think day 4 is traditionally where I start getting kinda philosophical and introspective, right? Usually about loneliness, social isolation. How I basically had no non-computer friends through my childhood or whatever.

This year I'm giving a shoutout to loneliness and I pretty much blame it on letters. For some context: around February of last year, my boyfriend and I started to exchange letters. Handwritten, sent through the mail with a stamp, letters. I think we bore our souls a bit too much since we were dating within 6 months. but the thing that I'm getting at is that I found myself squirreling things away to write letters about. We could always just message each-other on discord, but the letters were more intimate and we would talk about different things in them. I think that's something of the state of mind I'm taking on now. I can't wait until I can see Veria again and show her this band I think she'd like. I can't wait to gush some about KMFDM with tr4che. If I ever get a decent chunk of the damned story done I want to show it off to my friends who aren't here with me, when they get to be back in my life again. I think we're missing the time and the space to miss the people we care about, and really appreciate them.

I also have a confession today: the OCC kinda isn't real to me anymore. I've sort of arranged my life to be a year-round OCC in some respects. The candy bar phone isn't for OCC, it's what I'm using when I'm not on (production) call. I really do bring my ipod out for music. My primary computer these days is 13 years old, but the T41 I actually use for software development, projects my friends use. I guess it's kind of fitting since I think all of my OCCs will be downhill from here, how am I gonna top this? Obviously next year I just need to go camping for a week with no electronics and write everything up afterwards. I do already keep a camping journal c:

Day 5

God I hate OS/2. It's such a pain in the ass :D Today I tried setting up OS/2 on one of my computers because, to be honest, even with 13 megs of userspace ram I can mostly just do what I want in a unix-like, that's why my last 2 challenges have been based on using weird (to me) OSes. I can pretty much browse in links and gopherus, I can chat on irc. I could even set up all sorts of communication over bitlbee if I really wanted. I do most of my text editing in ed these days so it's not even like I'm struggling to fit emacs. Yes, I've been writing these posts in ed. Echoes too.

The problem with OS/2 is that I can never get the network up, and without a network and with no USB mass storage support I have no way of getting software on except for burning a bunch of CDs. Now I do hoard CDs, but what's the point of hoarding them if I'm gonna blow through a dozen trying to get the damned ethernet working on my laptop, huh? I went and explicitly downloaded the OS/2 driver (thanks IBM!) for this laptop and still no dice. I might just try downloading as many drivers as I can from the internet and seeing if one of them works soon.

I did eventually get a crusty old version of ecom working, but all the software is so bitrotted on OS/2 it's not really worth the trouble. Maybe if Arca decided to have actual, reasonably priced hobbyist licenses I'd look into to it, but I'm sorry, I'm not paying $200 ($140 for the base, $45 for drivers,) for a long-dead OS. I get that software development is expensive and they're just trying to milk OS/2 for what they can while it slowly dies out but maybe it'd have more of a niche if I didn't have to drop that kind of money to develop for it, you know? Besides, from the look of it there's no interesting software anyway. It's all just ports of open source stuff (read: things I can already run on the Dreamcast.)

I think that's one of the big benefits that plan 9 has. I'm not saying that implementing posix-ey layers is necessarily poison (p9 even has one technically) but I think if you want your niche operating system to have any degree of, what would be the word...it's not credibility but if you want it to maintain interest is the best way to put it, I think, you need to not be POSIX-ey. It's okay to have it as a compatibility layer, but the majority of your OS's software that people interacts with shouldn't be POSIX. It's just not very interesting to have an operating system that I use to run Firefox, emacs, irssi, etc. on. The BSDs and Linux do that better than you ever will. That's the big part, it's technically possible to be a unix-like and be interesting, but practically all of your software has to be your own. I think Redox is the biggest example I know of, but I don't think it has any of the normal unix userland. Does it even have a libc? Real question.

Day 6

Not sure what I want to do today. The dreamcast is still a little comfortable for my tastes. I considered just not using the computer today, but that leaves the problem of, you know, updating posts. Maybe I'll try some programming, but work gets in the way there. I guess I'll play it by ear. Maybe install 9front or something.

I do have the problem of a lack of ethernet cables, but that problem is actually laziness. I have a spool of ethernet and my tools/heads somewhere. I'd just have to find them.

I did end up trying to install 9front on the T41. It doesn't recognize the middle mouse button, so it was pretty useless. Oops.

I honestly feel like Rave The Requiem has been the big winner for me this OCC music-wise. They remind me a lot of Ghost in that they've got really strong pop sensibilities but are also happy to remind you once in a while that they are, in fact, metal. I had a weakness for some more industrial leanings anyway, it feels ike a good match.

After work I took a nap, then went out drinking. Now I'm working on a C port of TVC. Now time for KMFDM c:<

Day 7

Not too much to say, I mostly read. I did reinstall NetBSD on the T41 and I'm posting from that now. Not that I gave up on the dreamcast, they're just not very different and I promised to look at a bug (I think) in how Dillo's gopher plugin works. The Dreamcast can just barely run dillo, so it's better to set up my work computer now, I think.

Wasn't a bug in Dillo, just it behaving weird! Every other gopher client I've seen sends the entire selector string in one packet, because it's like 30 bytes long usually. This isn't the case for Dillo, it sends most of the selector, then it sends the ending newline in a separate packet. This isn't forbidden in the spec (in fact it'd be impossible to do it, because routers are allowed to fragment packets at any point,) so it was in fact a bug in ttgs. I've now cut a new release for that (1.4.1).

Went out around lunch and bought a couple of small RPGs, hung out at the game store but my usual group didn't come to Saturday games. Just headed home and started tracking down the Dillo issue then.