= Weekend Tech Scramble = Joining SDF has introduced me to a lot of new "shiny" things. Well, actually, they're all very old things, but they're shiny and new to me. Directly inspired by SDF: - Installed NetBSD 8.0 i386 (32-bit) on my old ASUS EeePC 701 - Read a boat-load of material on Gopher and about Gopher - Played the original 'adventure' (Colossal Cave) I've always wanted to play around with the BSDs but could never get past the intial choice of OpenBSD, FreeBSD, and NetBSD. Being on SDF made the choice easy by providing a huge running example of a BSD for me to interact with. So NetBSD it is! It replaces a custom minimal install of Slackware 14.2 on the EeePC. Which was probably the tenth OS install on the EeePC. (Don't worry, Linux fans and Subgeniuses, Slackware's not getting ousted. It's still my desktop OS for the forseeable future. And more on Slackware in a bit!) As for Gopher, well, I'm still in the honeymoon period and a bit obsessed. I'm the type of guy who wakes up in the morning with grandiose ideas about file formats and protocols. This morning, I was burning up with ideas for a backwards-compatible markup format (based on a minimal subset of AsciiDoc) that could be rendered into either plaintext or gophermap formats. I'm four days in and I'm ready to start a revolution. Don't worry, I'll calm down soon enough. "It's all the same, whatever he takes up; he gets tired of it, and starts on something fresh." -- Rat from _The Wind in the Willows_ Some Gopher-ish projects I was dreaming about as I woke this morning: - A markup language and formatter to produce gopher-ready documents - A gopher client which understands the above format as a new native type - The ability to reflow text in a gopher client would be awfully nice, particularly in a world where so many screen sizes now exist - How "accessible" is ASCII art and how does it fit a world without fixed column sizes? - Create a delimiter around ASCII art so that screen readers can skip it - Preserve all whitespace between ASCII art delimiters - Write my own toy gopher server to gain mastery of the simple protocol - Use the above to serve a little choose-your-own-adventure (stateless, like the paperback books of yore) and host it on my own domain - Create my own protocol with everything that makes Gopher great but *more* accessible to screen readers and *easier* to author Please tell me that last item is making you smile knowingly rather than frown imperiously. It's all just dreams, folks. As for the Colossal Cave, I had fun playing that with my eldest kiddo. She and I enjoyed trying to figure out what to do. I'd always given up too early on that game on my own, but seeing the story and challenge through her eyes and playing it with her made it way more fun. We got into the cave, had our bird eaten (oops!) and found some gold. 56 points. I'd like to play it again. Then there were some tangential things I got into: - Questioning my choice of everyday programming language (again) - Reading up on various incarnations of UNIX shells (again) - Questioning my need to chase shiny old tech when I have so many other things to do The search for the One True Programming Language is one of my oldest quixotic quests. I've tried everything, learning languages well enough to use them, then reading about more, trying them, etc. I'm at a point now where I know *about* a lot of languages, but I can't really call myself an expert at anything other than the Web technology I use for my job (though not to sell myself too short, I'm what you'd nowadays call an extreme case of the "full-stack" developer - which is what happens when you've been at it for 20 years and you're used to doing absolutely everything yourself at small companies.) I'm tired to chasing the next/previous best thing. And have been for at least the last five years. So a while back, I decided to pick one interpreted "scripting" language and one compiled language and learn the heck out of them and master them and just try to ignore all of the other cool shit for a while. So I picked Ruby for the scripting duties and Nim for the application development and... ...ended up writing Bash for damn near everything. It's just so damn portable on the Linux systems I use everywhere. Yeah, Ruby's there too, but with Bash, I don't find myself loading Gems and 3rd party libraries. Instead, I'm just gluing together the GNU coreutils I already use every day. Nim's here to stay. I haven't found another language with that kind of productivity that gives me a native executable when I'm done. It's so productive that I'm seriously questioning the need for Ruby at all. I even started writing up a Gopher content formatter in Nim this morning before the fog of developer dementia lifted and I took a look around for a Coreutil solution to my problem. Of course there were several. My pick: fmt - simple optimal text formatter I love it. After I finish typing this screed, I'll do this: fmt -w67 src/$phlog > phlog/$phlog The GNU tool will break, fill and join my text to 67 columns and I'll be done. I'm so glad I didn't write my own just yet (but that idea's still there, burrowing in the back of my mind like an evil little rodent). And after that bit of pragmatism kicked in, it opened a floodgate of good sense somewhere inside the ol' Ratfactor and I actually re-opened a project I'd not touched in a couple weeks rather than start a new one. What was the project, you ask? This is where Slackware gets mentioned again. I've got this insane project I've been working on in fits and spurts which I'm calling the "PkgBlog" as in "Package Blog" as in "Slackware Package Blog". I plan to document (or die trying) every one of the 1,000+ packages in the full install of Slackware Linux (current version 14.2). I've built a bunch of tooling to automate the process and have even written the first 6 entries of the blog itself. Once some of the supporting material is ready, I'll put it live on my website (and yeah, I've already started thinking about mirroring it on Gopher). Anyway, I'm using the static site generator Hugo to generate the PkgBlog along with most of the rest of my site. I really like Hugo. But I really hate the documentation. And I've fought and fought to get a complete understanding of its various concepts: - taxonomies - sections - sub-sections - types - layouts - templates - archetypes - themes - bundles - views And that's just the _concepts_! The real fun begins when you try to make a mental model of how layouts are looked up for a piece of content, mixed with static files, and then rendered into an output directory structure. The documentation fights a cohesive understanding of the whole picture at every step of the way. Heck, if you read the "getting started" material, you'd think you needed a theme for your site (further mudying the layout concept!), and that just isn't the case. Well, after trying something specific for PkgBlog a couple weeks ago, I ran into such a convoluted hurdle (custom layouts for type list pages), that I said, "enough is enough" and started writing my own scripted test suite for Hugo. It's written in Bash and it creates 30 mini Hugo sites with various configurations and probes the output to see where the hell a page's template and content originated from. I call it "hugowtf". Turns out, what I wanted to do just isn't possible with Hugo, but it really should be. It's one of those things were everything follows a pattern 1,2,3,4 and then you run into 1,2,3,Q and you're like WTF. And you think, "I must be missing something simple." But you're not. At least I'm not alone, there's already an open issue on GitHub, but it doesn't look good. The nice thing is, creating the hugowtf project greatly firmed up my understanding of some Hugo concepts _and_ knowing that what I was trying to do wasn't possible freed up my mind to come up with a far better and simpler solution to accomplish the same thing. It took me all of two minutes to get what I wanted and it's arguably a better/more general solution than what I was trying to do. Go figure. So that let me move forward again with the PkgBlog. And that in turn lets me move forward with other items in my infinite queue of tech TODOs. It's a satisfying end to a scattered weekend. I knuckled down and finished some crap on an old project even when the siren call of new old tech was whispering right there in my ear. I'm back on track. And I even get to cap it off with a long-ish Gopher Log! * * * I've been enjoying reading everybody else's Gopher content. Looks like Mastodon is the place to be for more direct socialization. I might dive into that sooner or later. Until next post, happy hacking!