It's a new year and my old computer is still old.
A bug in
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 236 words...
Let's have a chat.
Continuing feature development of my BBS software.
Continue reading 89 words...
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.
Continue reading 444 words...
I'm starting on a new project and I needed a cooperative threading mechanism
which didn't exist in System 6, so I created one.
Continue reading 133 words...
It's been almost a year since my last
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.
Continue reading 164 words...
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.
Continue reading 138 words...
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 156 words...
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
implementation would suffice.
For now, just having a
diff utility would be helpful so in this video I port
the guts of
and show it generating a unified diff between revisions of a C file.
Continue reading 203 words...
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.
Continue reading 100 words...
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
throughout the project.
Continue reading 125 words...
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 134 words...
I recently read about using a jump instruction as an
LDEF resource to allow
keeping the list definition function in the main program executable/project, so
in this video I implement the technique for the message list.
Continue reading 155 words...
In this video, I get the list of messages displaying again and fix a bug that
occurred when closing a mailbox.
I provide a quick summary of creating
LDEF procedures in THINK C for drawing
custom list cells, which I will expand upon on in a future video.
Continue reading 161 words...
In this episode, I fix the off-by-one error in the IMAP envelope parser noted
in the previous episode, then improve the tracking of a
malloced buffer that
gets shifted around during parsing.
Continue reading 96 words...
Returning to the development of my IMAP client, in this video I add
functionality to fetch the default mailbox name from the resource file (later to
be moved to a preferences window) and then eventually locate a crash in the IMAP
protocol parser from a bogus
Continue reading 191 words...