I sometimes give the impression that I'm an excellent programmer, and to the extent that I'm empowered to code within my narrow little specialty, web-based interfaces for industrial and enterprise users, I'm comfortable saying I'm one of the best.  It's pretty much all I've done for the past 15 years: Isilon, Spiral Genetics, and now Splunk all used my jQuery/Backbone/Python/NodeJS/HTML5 expertise to create and maintain lively and vibrant cybernetic applications (in the classic sense of "cybernetic," i.e. control systems) for their specific deployments: A cloud-based storage solution, a cloud-based gene sequencing engine, a database and query engine for semi-structured information.

But outside of that specialty, I'm somewhat lost.  I know a lot of things, like SQL, video processing, natural language processing, and so on, that I've only ever played with or that I've only ever had to use once, professionally; these things live in the back of my brain and just kinda lie there, useless.

In the Serendipity stories I told earlier this year, I highlighted specific hiring instances where skills I had acquired for unprofessional reasons (and let's face it, "I watch a lot of anime" is pretty unprofessional) had serious professional uses.

Today, I posted to my github a Language In 20, a quick programming language based on James Coglan's lecture "A Language in 20 Minutes", in which he snowflakes a programming language from nothing to a Turing-complete integer calculator capable of recursion.  I still haven't had the necessary insight to understand the scoping issue, despite getting it right... but then I was just following Coglan's lead.  My implementation is different; since PegJS doesn't auto-create interfaces to parser classes, I had to write my own switch statement about types, and I tried to avoid using classes as much as possible.  I didn't succeed; I may go back and revise it to be more "functional," using closures rather than classes.

It's frustrating seeing how far away I am from what I really want to know and do; it's equally frustrating knowing that precisely zero of my corporate masters have ever had any interest in my learning this stuff.  It doesn't make me a better programmer; in fact, it makes me aware of just how bad most programming, mine and others, really is.