Video: C Programming on System 6 - A New On-Disk Database Format

posted on jan 8th, 2022 with tags mac, retrocomputing, and video
part of C Programming on System 6 series

It’s a new year and my old computer is still old.

A bug in Amend caused it to crash during a commit, which corrupted the repo beyond repair. I quickly came to realize that using resource files as a database for Amend and my new BBS was a bad idea. I NIH’d the problem and created my own file format that will be a bit more resilient to crashes and partial writes.

Continue reading 279 words...

Video: C Programming on System 6 - Adding a GUI to diff(1)

posted on nov 4th, 2020 with tags mac, openbsd, retrocomputing, and video
part of C Programming on System 6 series

In the previous episode I quickly ported OpenBSD’s diff(1) but there wasn’t any interface to select files or scroll through the output. I’ve since added a proper GUI with the ability to select files or folders, and in this episode I walk through the GUI and filesystem code and then add a proper Edit menu. I also make a formal release of the code and binary available for download.

Continue reading 199 words...

Video: C Programming on System 6 - Porting OpenBSD's diff(1)

posted on oct 28th, 2020 with tags mac, openbsd, retrocomputing, and video
part of C Programming on System 6 series

I’ve wanted a simple revision control system on my Mac since starting development of my IMAP client. Porting a large system like Git or even CVS would be overkill (and very slow), but maybe something small like OpenBSD’s RCS implementation would suffice. For now, just having a diff utility would be helpful so in this video I port the guts of OpenBSD’s diff(1) and show it generating a unified diff between revisions of a C file.

Continue reading 246 words...

Video: C Programming on System 6 - Parsing RFC822 Dates

posted on oct 16th, 2020 with tags mac, retrocomputing, and video
part of C Programming on System 6 series

I wrote a utility function to parse RFC822 dates/times sent by the IMAP server, which then converts them to a UTC time. In this video, I hook it into the IMAP parser and add a resource string for the local timezone offset setting, so these UTC times can then be converted to a local time and displayed in the message list.

Continue reading 177 words...