See what I’m up to right now!
New website area created: Papers, which will house my summaries and opinions about [computer science and programming] papers (first one posted!).
I’ve posted "Chapters" 1-4 of my Year of the Microcontroller!
Made a design for my awesome repo collaborator: Ziglings Maintainer 2023: The Shirt
Updated chklnks.rb (github.com), my no-dependency Ruby website link crawler and checker. It needed better error handling. Is it just me, or is the web getting harder to crawl? Lots of weird redirects and 400-class errors for links that I can otherwise hit with a browser. I’m guessing it’s anti-bot, anti-scraping?
DONE March: RetroV, my new JavaScript VDOM library because I couldn’t stop myself. No regrets.
Feb/March Slackware pages additions: How I set up new computers with Slackware Linux and Slackbuilds.org (my new submissions).
DONE February: My Forth talk, Forth: The programming language that writes itself ("Charles H. Moore and the pursuit of simplicity.")
DONE January: Hoo? A solo journaling RPG (browser game with lots of art, made for an itch.io game jam!)
Website tooling update: ratlink (used it to make that link just now)
I finished drawing 78 Tarot cards! (for Hoo? see above)
I made an HTML presentation slide tool today: minslides.
I declare 2023 to be The Year of the Microcontroller! (Well, for me anyway.)
December: I just finished my book-guided OpenBSD Blog and tour.
December: Made a little page for the Eee PC 701 because it needs one.
November: I just self-published Mr. Tree Goes Down as a real physical children’s book!
November: Meow5 and Assembly Nights: "Season Two" is full steam ahead!
October: Woah! Finished nasmjf, my NASM port of JonesFORTH!
Been enjoying Slackware 15.0, have started adding more content to my Slackware pages.
Joined a Mastodon instance (mastodon.art)
Created a new Git + GNU Stow home computing setup (now with check-repos
script!
Have started needle felting because I don’t have enough hobbies.
Just edited my SH3 notes and added a u-boat fan page to honor my obsession in the year 2020.
Sharing Wordle results with old-school CGI "This is what software would be like in a utopia."
After hemming and hawing about it, I’m starting a virtual box of cards for this website
At last! I have written up the My Notebook System page! (With pictures!)
Still enjoying Assembly Nights (my NASM jonesForth port, started this in 2021)
Still creating a live reference for htmx (with accompanying CGI back-end and forest animals)
Hacking Teardown for my kids. (updated)
Am slowly fleshing out an article on the Web (now there’s a subject!).
Made a hardware task multitimer using a Raspberry Pi Pico microcontroller.
Had a little rant about a Web design pet peeve.
Started a "personal timeline", a general history reference for me, not about me!
Dave’s Raspberry Pi Zero Luggable (aka "The Cardboard Computer") was a fun weekend build!
Decoding I2C data with an oscilloscope for a little microcontroller project.
This site now has an RSS (Atom) feed.
Learning Zig and creating learning resources to help myself and others:
Very slowly writing a ray tracer, a byproduct of which is writing TGA files (source)
Finally created a CSS Flexbox basics guide.
Got deep into AsciiDoc because I’m invested in it (almost everything I write is in .adoc files)
Re-learning Midnight Commander and orthodox file managers in general because they’re so danged productive.
Windows Subsystem for Linux (WSL) kind of changes everything.
Managing a family Minecraft server which can be fun.
This has been a heck of a year on a global scale. On a personal scale, productivity on projects has come in fits and spurts.
PkgBlog (Slackware Package Blog):
cpufrequtils - get your freq on!
cpio - file archiver with some handy abilities
GNU Coreutils - Finally done! A colossal review of the entire coreutils
package
Keeb’s Quest - NEW - I’m embarking on developing a typing game. Hoping to make regular updates here.
Notes on Silent Hunter III - I’ve given this simulation game a third real attempt - here’s how I’ve learned to cope with it.
Syncthing - I’ve been using Syncthing for about a year (?) now and it’s been a good experience. I’m starting to collect my notes.
chklnks.rb - I wrote a recursive web crawler and link checker in Ruby just to make sure the website conversion was successful!
This website has gotten a complete redo - it’s still authored as AsciiDoc, but I wrote a new static site generator to publish it.
My Personal Wiki Setup - Livin' the dream: one local wiki, running inside a text editor, as the single browsable start point for all of my notes and content.
VViki - The Vim plugin I wrote to edit the above wiki.
My note-taking system is in a messy transition phase right now. But I think it’s all heading in the right direction. Watch this space for a write-up that is nine (and counting) years in the making.
New static site generator - a little Ruby wiki-to-website publishing tool has now replaced Hugo. (I touch upon this in the above Personal Wiki article, but it probably deserves its own page at some point.)
Rediscovery of Ruby - returning to a previous stop on the Eternal Quest for the One True utility language.
Another shot at learning Rust - The more I try to avoid it, the more convinced I am that Rust is Doing Things Correctly. I’m giving it a go again. I have some specific projects I’d like to build with it. (Update: this is not the hobby language I need right now.)
I moved across the country and started a new job at the end of 2018, putting an end to what was otherwise a great year for this website. Now I’m back at it, mostly with Slackware Linux content:
PkgBlog: bzip2 - compression utility
PkgBlog: btrfs-progs - playing with filesystem snapshots!
Enabling Eth1 - a network note to self
Why Slackware - why I chose it and stick with it
Mounty - CLI/TUI menu-based drive mounting
Mounting USB drives quickly (already superseded by the above)
Slackware PkgBlog - new entries starting with the 'bin' package
My ambitious new project, Dave’s Slackware Package Blog, has begun! I’m getting my hands dirty with every Slackware package and writing up my experiences. I also explain how and why I’m doing this:
PkgBlog - my Slackware Package Blog
After the switch to Hugo, I started writing a ton of new content. It’s been technically up here on ratfactor.com the whole time, but I was waiting to iron some things out before I linked to them. So two months later, I’m finally exposing the links to the new content:
Better Hugo AsciiDoc HTML - generating semantic HTML5 with Hugo+AsciiDoctor
Web typography - and why ratfactor.com looks like it does
This has been a big year for the website! After years of relying on various PHP template systems (of my own devising) and a static site generator I wrote in Nim and then Perl, I’ve finally converted (almost) everything to the AsciiDoc format and am generating the site with Hugo. There is a ton of new content, but a lot of it is in draft form, so I haven’t linked to it yet. It’s so close, I can almost smell it.
Have finally upgraded my main work (as in "day job") project to Mithril 1.1.6 (mithril.js.org). There have been some excellent changes from the old 0.2.x API. I did have one issue:
Continuing to use Ruby as my main "scripting" language. Why did I wait this long to learn it? Probably because I was so tired of the search for the "perfect" language. I now wish I’d put Ruby higher in the queue. To aid my learning, I wrote an imperfect simulation of the boardgame Monopoly Junior:
Monopoly.rb bitbucket.org stopped hosting Mercurial repos.
Have been trying to clear out a huge backlog of software development reading. Created a chronological index of Steve Yegge’s blog posts:
My employer agreed to release our Learning Management System project under an open-source license. I think it’s a pretty great piece of software: single-page application based on mithril.js with "tags" as the core organizational method including boolean operations on tags. The API is "true" REST with browsable JSON hypermedia (see the 2015 heading below for more about that).
Percolate LMS (github.com)
Tags as alternatives to checkboxes is a blog post I wrote about the design of the system.
This year is Ratfactor.com’s 20th anniversary!
Learned Ruby and re-learned Nim at the tail end of the year. The plan: Ruby for "scripting" tasks and Nim for applications and larger projects.
I finally dove into "Apache and the Mystery of the Fully Qualified Domain Name". The following article started as an answer on Stack Overflow, but morphed into something else as I learned more:
I’ve been using Slackware Linux as my desktop OS exclusively for over half a year and loving it. One of my favorite recent discoveries has been the dynamic Window manager dwm. It’s actually quite intuitive to use, but learning it from the man page was a bit of a hurdle. So I’ve made this visual guide for it:
After two years, my Mithril tutorial has been rewritten and I’ve added a part 2!
The Mithril articles required the use of a new utility for displaying the source of the examples from <script> tags, so Galadriel’s Mirror was born.
Example of Galadriel (updated 2023 to version 2)
This website finally got an update. I’m now generating all new content (and this page) with my txt-to-html converter called Bride of Text. It’s written in Perl 5 (perl.org). I also use it for the notes I keep on my desktop computer.
Bride of text bitbucket.org stopped hosting Mercurial repos.
After threatening to do so for years, I finally ditched Windows for Slackware Linux (slackware.com) as my main desktop OS. I have learned a lot and have been living in command-line bliss ever since. Lengthy article or small book tentatively titled "Dave’s Guide to Slackware" pending (I’m in the note-gathering phase).
I wrote a prototype static website generator called NoteGoat in PHP. I then wrote its successor, Bride of Text in the Nim language (nim-lang.org). Finally, I wrote a new Bride of Text in Perl in 2017 (see above).
Notegoat bitbucket.org stopped hosting Mercurial repos.
I got into REST (wikipedia.org) in a big way and ended up creating a pair of projects for the server and client side of a browseable API using JSON as a hypermedium for HATEOAS (wikipedia.org).
hm-json browser (client) (github.com)
HummingJay (server) (github.com)
I also tried out a bunch of personal wikis including PmWiki (pmwiki.org), which I used for at least six months. Eventually, I wrote my own, called Krumpli before finally coming back to my senses and rediscovering my true love - plaintext!
Krumpli bitbucket.org stopped hosting Mercurial repos.
Surveyed quite a few different JavaScript frameworks. Settled on Mithril. Wrote an article with tons of working examples called Dave’s Guide to Mithril (updated in 2017 - see above).
I wrote my third or fourth adventure game builder in JavaScript called Hoot (it’s probably my tenth total text-based adventure game building tool). I’m working on something better, but since that’s not done, check out Hoot!
Hoot bitbucket.org stopped hosting Mercurial repos.
I wrote some fairly popular articles on circular slide rule watches, Mercurial source control, and the sumproduct function in MS Excel.
I continued to learn new programming languages (Scheme comes to mind in particular), but did not create any abitious projects with them.
Created the Fancy Friends web comic. I didn’t yet have the stamina to keep up the weekly schedule and so I never gave it a chance to really go anywhere:
The site got a much-needed re-write to a PHP templating system called "Darts" (from its predecessor "Dots" - both names stood for "Dave’s something something Template System"). Darts was unique in that the template itself was an executable script that would transpile using the system (first checking for a more recent cached copy) into the final page. As I write this in 2017, some of the pages on this site are still running Darts. (Update: 2020 - That is no longer true! I’ve gone full static HTML generation.)
It is around this time that most of my PHP and JavaScript-based web tools came to be:
Dave’s Fat loss calculator (still my most popular page, by hits!)
l33t-speak translator - are you l33t enough!?
And also some web-based programs to amuse:
Count down to an apocalyptic event in the style of TV’s Millenium (edit the URL to make your own!)
After I used digital images to document repairing a Yashica TLR camera shutter (so I could put it back together!), I decided to turn them into a "how-to" guide. To my surprise, it quickly became the most popular thing I’d ever posted on the website.
I learned C++ (initially from Stroustrup’s tome (openlibrary.org) and branching out from there). But I didn’t do much of anything with it. Looking back, it is hard to say if this was a colossal waste of effort or if I learned valuable things from it.
At this point, Ratfactor.com and all of its contents had been completely rewritten at least once every 1.5 years since its inception. Web technology had been moving very quickly in that first decade.
I released BETRIC which was an in-browser virtual computer written in PHP (!) that had a working assembler, disassembler, and primitive machine code instruction set. Very educational.
I also created and posted designs for a trebuchet, which was somewhat popular for a while. I know at least one group of Boyscouts made a scaled up trebuchet based on my design, which was really cool.
Though I didn’t realize it at the time, I had finally achieved one of my childhood goals by writing a primitive 2D game engine in assembly and C. My resources were The White Book (openlibrary.org), LaMothe’s Black Art (openlibrary.org) and Lafore’s Assembly Language Primer (openlibrary.org). It was incomplete and I never actually made any games, so it was hard to see it as the victory it was.
Around this time, I switched my web development from Perl to PHP. I released the first version of a PHP HTML-based text adventure game engine. The game files had a C-like syntax and had variables, conditionals, etc. I ended up re-writing the engine several times.
I made some interesting toys in Java - one that converted BMP images to POV-Ray raytracer files (so you could render a 2D bitmap as a field of colored objects representing the pixels of the image) and one that converted JPEG images to HTML tables (with each cell of the table showing a colored pixel from the image) which would typically blow up Netscape Navigator.
Noodling about this this website endlessly. Slogan: "It’s what the world would be like if giant rats took over." Here’s what it looked like at one point in the year 2000:
(Click on the thumbnail or HERE for full-size screenshot and details!)
I got on the Java train. I wrote a Java applet (wikipedia.org) which became the main navigation for this website for about a year before I tired of it.
I started working as a "full-stack" developer before we had that term. From Flash to HTML to ASP to SQL Server databases to managing an NT network configuring Cisco routers and swapping power supplies. That kind of full stack. As a developer, I got all of my clumsy, beginner foolin' around out of my system while the Web itself was going through the same stages of growth.
I wrote my first piece of commercial software - a CGI web application in Perl with a homebrew database format! The company I sold it to went out of business and rumor had it the owner was busted on drug charges! I’ve been forever thankful I never had to maintain that code, but it was great to have built something complete.
Prior to 1997, I had been building web pages and hosting them on the space provided by my ISPs (these were the wild-west dial-up days). The prime feature of was Dave and Jim’s B-Movie Reviews. The movie reviews lasted for a number of years and several hundred reviews.
I registered the ratfactor.com domain in December 1997. (Keep in mind that this was a time when I still could have chosen just about anything, even common English words!) A domain name had to be registered through the monopoly Network Solutions at a cost of $100 for two years. This was a lot of money to me at the time. My web host was actionweb.com (they still exist!) and I believe I paid $25 per month for shared web hosting with something like 100Mb of storage and some amount of monthly bandwidth that would seem ludicrously tiny today. All updates were done by FTP file transfer.
(Screenshot goes here, if I can find one)
Thanks for reading.