my [hazardous] workflow
i've been promising myself for years that i'd sit down and write this post1. i finally got around to it because louisiana just had - of all things - a massive, city-shut-down snow storm. 2021 is already wild.
when i really thought about it, however, i realized there wouldn't be much to this post. i mean - there will be, but it's deceptively simple. as an example, i will screenshot this post as i see it in editing: when i save the file, it will update in realtime because it's being edited on the server itself.2
hopefully this screenshot illustrates my favorite part of my current setup, which is that i am free to focus on content. the website more or less organizes itself, so to speak: folders in the webroot/page
directory are treated as categories. therefore writing a music-related post means opening up VScode, remotely connecting to the server, and opening a new file in the webroot/page/audio
subdirectory. this post was created in the webroot/page/blog
subdirectory, and is therefore treated as being a child of the blog
category.
however, this simplicity took alot of work and alot of moving parts to pull off. i'll try to run through the most significant tools i use in maintaining this site.
big-picture tools
these are tools which are used in this workflow, but are part of my overall, wide-scope bag of utilities i use not only for web development but as general tools for anything computer-y.
github
github shouldn't be a surprise. it's a hella useful tool - i keep a copy of the website in a private repo, and routinely back the site up by pushing new commits.
but beyond that it's still a great place to find inspiration - just browsing through all the public repos to find neat stuff.
WSL
if you use windows 10 and enjoy coding or even just kinda tech-y stuff in general, you should be using WSL.
i stumbled upon WSL when it was first announced accidentally - at the time i didn't particularly subscribe to tech news type stuff, so it's pure chance i came across an article announcing WSL.
i'm glad it happened because i've had a front row seat to its growth from a somewhat awkward novelty to a very tightly integrated and useful part of windows 10 that i can no longer see myself being able to go without.
nginx
something about skipping a big period of web development was the shock of returning to the internet to build a website with my old, trusted, apache2 server. i cannot describe how unbelievably alien the concept of 'deploying an app' via 'ruby-on-rails' was.
the mistake i kept making was this notion that something like 'rails' or 'yarn' was just another cog that 'plugged in' to the underlying webserver.
however, i've discovered that in a world dominated by app-driven development powered by pre-baked deployment... the "server" side of webservers has become a sort of separate thing that web developers do not necessarily have to worry about. they program an app, and trust a set of dependencies to wrap a production-grade website around it - deployed through docker which they trust to build their environments for them.
i love being able to publish a blog the old fashioned way, because it's become so damn cheap to do so. i can spin up a low-spec server with an Ubuntu server image, compile a highly optimized build of nginx, and squeeze every bit of inefficiency from the connection between server and browser. doing all of this requires knowing the linux environment, and as a result my overall security is always as effortless as it is thorough. my ports are locked down. i do not rely on sudo
to force programs started by users, making it that much harder to gain root from a potentially compromised vector. i handle my TLS connection with Let's Encrypt and stay on top of the latest security enhancements to keep hazardous secure and fast, such as http/2 and even http/3 :)
my take on vim/vscode
i love using vim. i love using vscode. in my opinion each is perfect for certain situations. when i'm on my main PC, i usually run with vscode because it's just a very polished code editor. i don't mean polished in the sense that it's well-written (though it likely is) - i mean it in the sense that vscode just looks great.
but i have not abandoned vim, because vim is too useful when i find myself working on another computer - especially remote servers. you can configure it to be as lean or as feature-packed as needed. most importantly, it's almost universally avaliable across linux and even OS X machines.
hazard coutoure
these are tools i use solely in the context of maintaining this website.
markdown
this section probably deserves its own post. markdown has singularly changed the way i keep myself organized - by making text files workably useful again as a medium.
mecha CMS
mecha is a php-powered server-side CMS built on the sort of principles that inspired more hardcore static-site type projects.
it doesn't go the whole way like orthodox SSG's - it lives on the server. but it does read directories and files the same way something like Hugo does, so i can just upload markdown-formatted pages to a directory and voila, the formatting and URL structure create themselves.
all-around great piece of software, and a great project to use that will let you dive into PHP and learn the ins and outs of it, without being too simple (like a single-page project) or too complex (ie anything using php's partner-in-crime, MySQL)
wrapup
welp that's it. insert concluding statement here!
-
not gonna lie i feel like i am betraying my reader base by actually writing this and not procrastinating ↩
-
the post is saved as an
*.md
file, which my CMS code treats as 'unpublished' pages. by simply renaming the file with a*.page
extension, the file is treated as a live page, and the CMS renders the markdown. ↩