learning to code like it's the '90s

coding 1850 words

i struggle with understanding basic programming concepts to a painful degree.

for context, i got into Computer Stuff through self-hosting: i fell down a rabbit hole of hosting media servers, then hosting the AO3 code as a joke (at first), then hosting the dreamwidth code also as a joke. after all of that, i have a genuine passion for sysadmin work, and i dream of doing it professionally.

one of the things holding me back from this future career, though, is that i cannot write code.

i'm exaggerating; i can write scripts in shell/python/ruby/etc, i know just enough javascript and PHP to have made websites with them, and hell, the blog you're reading this on (at the time of posting) is written in rails, although very sloppily (it was a learning project). but all of these come with the caveat that i relied heavily on assistance, from friends and internet research (read: stack overflow) alike.

(brief aside: this assistance does not include LLMs. i refuse to use LLMs for ethical/moral reasons— though i try not to pass judgement on those who do, on a case-by-case basis— and my personal OCD kind of stops me from using them anyway. for that latter reason, i do want to make myself try an LLM someday, but at this point in time, i'm not ready for that.)

i know i'm undercutting my efforts to some degree, but it does feel like a reality that most of the code i've written comes with an asterisk of "i am not confident/good enough at understanding programming enough to have written this from scratch, without copying entire snippets from stack overflow."

this is not for a lack of trying, mostly; i recently bought some books on programming, though i have yet to read more than one of them (that one was less on the language itself and more on scripting in the language. more on that later). but all of my efforts feel in vain when i struggle with understanding the very basics of programming!

i was about to list all the things i don't understand in programming, but instead of that, here's an example: about a year ago, i was on a call with ms boba of FujoCoded/BobaBoard/ATProto fame. (for disclosure, i have worked for FujoCoded as their sysadmin, which was/is a great learning experience for me.) we were on the call because i ran into issues with writing CI/CD workflows for some of FujoCoded's projects. ms boba hopped on a call with me to help me understand the underlying concept that had me stumped: logic gates.

ms boba kept emphasizing that the core concept of logic gates is something i understand inherently; something i think through every day. but in a programming context, i felt fucking hopeless!

in the end, we were on that call for at least two hours, maybe three. we spent most of the time trying to get me to understand logic gates. and while i eventually got it— enough for the CI/CD workflow i was editing, at least— from then to now, it stuck with me, just how long it took for me to understand the concept, despite ms boba's efforts in quizzing and walking me through the concept at its simplest.

i bring this up because i feel it emphasizes the deep hopelessness i feel with myself, with my capacity to code. if i can't understand some of the core concepts behind programming, how am i supposed to make a career out of sysadmin work, a field that, to my knowledge, has increasingly required more programming knowledge, as it has evolved from sysadmin to DevOps?


in the past year, though, i've realized something curious about myself: i really like writing shell scripts. i'm always writing them!

i'll write a shell script for the most basic tasks. i'll automate anything, or make a little wrapper script as shorthand for the tasks i always fail to memorize the incantations for. i mean, my ~/.local/bin directory, at the time of writing, has 77 scripts in it, all written in bash!

i wasn't the best at writing shell even just a year ago, but i feel that, with ShellCheck integrated into my underdeveloped editor of choice, and lots of digging through the scripts in other people's dotfiles on forges like sourcehut... i've gotten very comfortable with shell; dare i say, confident.

part of me wants to be mean to myself and reaffirm my irrational thoughts that something as simple as bash is all i can understand. but the rational part of my mind understands that it's baby steps; that i will improve the more i practice.

writing shell has helped me understand more concepts in programming than i initially realized; for example, when writing bash arrays, i've learned some (extremely basic) concepts behind data management. sure, i'm still terrible at managing anything numerical in shell (i'll blame this on my lifelong inability to do math), but at least i can (sort of) add/subtract from an array now. that's something i continue to struggle with in other languages, but that's more because of how hard it is for me to absorb the syntax of a language i'm not as well-versed in.

when i try to write something bigger than a script in a language other than bash, i quickly find myself barred by my lack of skill. i was barely able to write my first web application in PHP, and the whole time, i felt like i was LARPing a LAMP-stack builder from the mid-2000s.

i've realized i only feel comfortable when writing the simplest of scripts.

so i guess it does make a lot of sense that CGI scripts have clicked for me the way they have.

a while ago, i was reading the personal website of David Gauer. i found that i related a lot to his posts about writing simple programs that do simple things; his posts about server administration, and in general, his sprawling collection of public notes (known on his site as "cards," which is so cute!) were fascinating to read.

when i read his card on CGI scripts, specifically the part where he calls them the "shell scripts of the Web," i fucking got it.

shortly after that, i was inspired, and wrote my first CGI script in ruby: tabref, a simple flat-file program to reference and add to a collection of guitar tablature i've held onto for years in plain text files.

yes, yes, i know that CGI scripts are deeply insecure, inefficient, and obsolete. but their simplicity is what appeals to me most. i am proficient in semantic HTML, i can write decent CSS, and CGI scripts let me create simple, cute web-based utilities, for my own personal use, without me stumbling around with frameworks and the like. i can write a website the same way i've written my 77 shell scripts, and, most importantly, i feel confident doing it.


CGI scripts, to my knowledge, flourished in their heyday in tandem with perl. this, combined with my experience in dicking around with the dreamwidth code (which is primarily written in perl), has led to a weird, anachronistic fascination with the language.

as of writing, i have yet to write a CGI script in perl. but not because i don't want to! as mentioned earlier, i recently purchased several programming books. one of them is on ruby, the very first language i fell in love with, and the other two... are about perl. one of them is the llama book! (the other, if you're curious, is the one on scripting that i had mentioned: Wicked Cool Perl Scripts by Steve Oualline. also the ruby book is The Well-Grounded Rubyist by David A. Black.)

my weird fascination with perl has led to one of the funniest testimonials i've ever gotten, from Boris Mann:

I don't really understand how you appear to be larping as a 50 year old.

as well as my friend Tab Atkins-Bittner calling me a "perlvert" on discord (jokingly!).

it should go without saying: it's not just me that finds my personal fascination with this language deeply strange. especially when i barely understand the language!

that being said, though, i do find it easier, somehow, to parse perl over other languages. i might get killed for this, but i almost find it easier to understand than javascript. it's especially funny when perl has a reputation for being absolutely unreadable to most programmers, being called a write-only language.

there's an obvious connection to be made, the same one that Boris indirectly made: perl was popular with sysadmins in the 1990s, CGI scripts were big in the 1990s, and perl was, at the time, the seeming successor to the UNIX philosophy of making a bunch of little tools that each do one job well. as Rob Pike said:

Those days are dead and gone and the eulogy was delivered by Perl.

perl was an all-in-one alternative to shell. so, in a way, doesn't it make sense that it's easy for me to parse, as a shell fiend? even if it makes me look like i'm LARPing a 1990s sysadmin/developer, with a language and protocol that flourished years before i was born... if there's any way for me to learn, when i've struggled so much, why shouldn't i run with this way of learning how to program, no matter how obsolete it is?


i don't really have a proper conclusion to all of this. it's mostly stream-of-consciousness, after all. that's what my blog posts usually amount to.

but i guess, through all of this, i mean to explain my trouble in learning programming, and why i've latched onto such outdated practices and languages.

if there's any way for me to learn, i'll take it. if anything is going to help me learn how to program, i'm going to take it and run. even if it means i'm fighting with CGI scripts 20+ years after everyone moved on from them.


reach out

in lieu of a comments section, consider emailing me! i might be slow to respond, but i'll get back to you eventually.

webmentions