About

I'm a self taught coder making my home in the quiet countryside of Ohio in the USA. When not coding, I'm spending time with my family and spoiling our dog rotten. Or sometimes gardening, or woodworking, or soldering a guitar amp circuit board from my own design, or strumming a mandolin....I guess I'm a bit of a hobby collector.

On being self taught

There is good and bad in not having a degree. My knowledge, while hard faught to obtain, was essentially free. It also came without the strings of any compulsion to satisfy anyone else's requirements or ideas of just what a computer program should look and behave like. I have been free to go at my pace, take what is useful to me and discard a whole lot of notions that I don't particularly care for.

The downside is that I still have to make a living, and it isn't currently in the field that I would prefer to be working in. This limits the time which I have to learn and grow as a programmer, and the progress of my projects. Of course if an opportunity were to present itself for employment as a programmer I would gladly jump in with both feet.

On Languages

I tried Python. I really tried to like it, but it just never clicked with me. This was probably due to the fact that at heart, I just wanted more control and less abstraction. No, I wasn't going to be happy until I could use whatever Python was built on top of. So after just a short while halfheartedly attempting to learn that language I switched to C, picked up some Arduino hardware, began experimenting with combining hardware ad software experiments, and then just kept going.

It truly amazes me how far this open source world has come in my lifetime. After tinkering with C for some time I eventually found Rust and fell in love with the entire ethos of the language. Here was power combined with elegance, speed combined with solidity. And the tooling, well it just makes the entire C and C++ ecosystem look like what it is: a system that grew organically, a piece at a time, as needed, with no clear road map or destination in mind. Rust is, in contrast, clearly a language which was designed, not just cobbled together from disparate parts.

But I didn't stop at Rust. I've also experimented with Nim, actually bothered to do a bit more, and eventually found what I believe is the missing piece between a language like Rust and what C should have been all along: Zig.

Zig is what happens when someone who is truly motivated takes the best ideas since C, rejects complexity wherever possible, and manages to truly figure out what C should have been. It's what C could have been had it been designed with a clear purpose in mind instead of cobbled together over decades.

Projects

Gfret

Gfret is a tool which takes some user input and spits out an SVG image template of a stringed musical instrument such as a guitar or bass. It handles instruments in sizes ranging from a piccolo mandolin up to upright bass size, in any string configuration, as well as multiscale designs.

Gfret is written in Rust using Gtk+, and is currently being ported to Gtk4.

Zterm

Zterm is a fairly simmple terminal emulator written using Zig and Gtk+. It is intended to provide a simple and lightweight gui while having some advanced features such as split panes and tabs. The Zig bindings to Gtk+ are being developed in conjunction with this project.