= 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!