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.
I review some recent commits covering user authentication and telnet
negotiation, then write some ANSI output code and a broken function for
returning a number's ordinal suffix.
It's been almost a year since my last
confessional video.
A few weeks ago I started working on a small revision control system to handle
my C projects developed on my Mac and it's now at the point where I can at least
manage commits to the tool itself.
I've created an adapter for the
Cidco MailStation
Z80 computer which adds the ability to use WiFi for data transfer, code
uploading, and to act as a WiFi modem for my
msTERM
terminal emulator.
On the modern web, everything must be encrypted.
Unencrypted websites are treated as relics of the past with browsers declaring
them toxic waste not to be touched (or
even looked at)
and search engines de-prioritizing their content.
While this push for security is good for protecting modern communication, there
is a whole web full of information and services that don't need to be secured
and those trying to access them from older vintage computers or even through
modern embedded devices are increasingly being left behind.
Returning to the development of my IMAP client, I add SOCKS5 support to be able
to connect through a network proxy, particularly the one I made that is able to
convert TLS-encrypted data from my real mailserver into plaintext that the
Mac's slow CPU can support.
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.
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.
In this episode, I fetch the flags of each message and for unseen messages,
make them appear in the list in bold.
That introduces an off-by-one which I run out of time to fix while recording.
Today, I implement plaintext message viewing and hook it up to the message list.
I also review a cleanup of int variables to make them either short or long
throughout the project.
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.