Video: C Programming on System 6 - Implementing Multi-User Chat
Let's have a chat. Continuing feature development of my BBS software.
Let's have a chat. Continuing feature development of my BBS software.
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.
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.
I started using the Tindie platform in April to sell my WiFiStation kits. I've now sold out all of my initial inventory and am not planning on making any more, so I thought I'd offer my opinions of Tindie as a platform for selling things.
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.
My old 2017 Huawei MateBook X has been my most reliable laptop and continued to be my daily-use workstation despite trying half a dozen others (and a desktop or two) in the past four years. Every time I'd try a new laptop, certain components wouldn't work properly, or the keyboard would feel strange, or the screen quality would be poor, or a constantly-running fan or some coil-whine noise would drive me nuts. And every time, I'd return to my trusty MateBook X and everything would just work silently.
I finally have a newer model of the MateBook X and I'm happy to say it lives up to its predecessor and has replaced my 2017 model.
Framework is a new company offering a laptop that is designed to be repairable and upgradeable, both in terms of internal components like the screen and motherboard, and in pluggable expansion cards.
After the disappointment of my X1 Nano and learning that all future Intel "Evo"-branded laptops would lack S3 suspend, I started thinking about returning to my M1 MacBook full-time or building an OpenBSD desktop. I chose the latter, building my first desktop machine in many years.
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.
Lenovo has finally made a smaller version of its X1 Carbon, something I've been looking forward to for years.
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.
Fifteen years ago, NetBSD's Bluetooth audio stack was
imported
into OpenBSD.
From what I remember using it back then, it worked sufficiently well but its
configuration was cumbersome.
It supported Bluetooth HID keyboards and mice, audio, and serial devices.
Six years ago, however, it was
tedu'd
due to conflicts with how it integrated into our kernel.
While we still have no Bluetooth support today, it is possible to play audio on Bluetooth headphones using a small hardware dongle.
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.