👋 welcome to my blog :)
I do little code sprints and personal challenges for the joy of the making things ♥
2023 Goal: one open source project completed per week
github
I made this blog with a cool static site generator called bearclaw, try it out!
the hardest part about creating a blog is starting off on the right foot with the introduction. while the aim is high, truthfully i’ll take anything above a broken ankle as i do my best to explain why yet another dev-blog might deserve your time[0]. i’m no Gwern, but Mavis Beacon is an old personal friend of mine, so temper your bookmarks as we both explore if this blog thing was a good idea.
[0] - let’s agree that so long as blogging remains fun like this, i’ll continue writing about these projects, maybe even some of the ones that don’t make it to a repository.
speaking of fun, i’m writing this blog post between commits in this ed25519 lavalamp visualizer thing i made on my lunch break, without the helpful red squiggles, so i apologize in advance for any errors.
video of the lavalamp thing: click to watch
each year i do some type of challenge with regards to programming. it’s fun to get better as a programmer, but a part of me also likes flexing on my IRL nerd friends because they choose to do ‘sensible’ things like own homes and have grandchildren.
a summary of past annual challenges:
one of the early ones was moving to using syntax highlighting and a modern IDE, sounds lame but i wasn’t sold on it yet at the time.
another year it was ‘anything but your best’ which meant choosing a language other than my daily-drivers to write things i wanted/needed or contributed to
another year it was only using the stdlib or libraries that i’d reviewed completely. until this year, this was my favorite challenge [1]
[1] - let the record reflect, i reviewed the entire gorilla toolkit, thinking “this baby is rock solid, it’ll be around forever. i can take my future grandkids to school in this thing”, and just like that, probably a month later after i’d completed my comprehensive review, the dev [rightfully] decided it was time to archive the project. in that same month, golang added generics, gorilla toolkit expired, and the whole world changed to an extent, a new era for me at least.
…but i digress
this year, the challenge is to write and release one open source project each week. im having a blast, it’s been great.
image description: here’s one such project, a thing that generates my ‘scoreboard’ as i’ve been calling it,[2] https://github.com/donuts-are-good/github-scoreboard. it goes on the little ‘Challenge 2023’ blurb on my github page
[2] thats not just a regular image, you might notice. if you right click and view the SVG image directly, you can click each of those lines of text and it’s a hyperlink that’ll take you to the repo it’s talking about for that line. how cool is that? i didn’t even know that was a thing until i went reading about svg when making this thing. i really just wanted the image but if you’re going to give me free image-maps then yeah i’m all about it.
tmyk: where i’m from we call that ‘lagniappe‘, which is like the free little value-added things you get as a token of appreciation when you’re buying something else.
each year, the motivation to do one of these challenges stems from something I saw as needing improvement within myself. whether that improvement be in getting outside of well-worn paths or further focusing in on them, this year’s challenge has been about finishing what i start in a timely manner and reaching mvp as fast as possible, and let the users (if any) drive the expansion into new features. i often get “analysis paralysis”, or midnight bouts of lets-rewrite-the-frontend only to realize i just added a few weeks to launch. this year i resist that trend and vow to “just ship it”.
initially the plan was just to release the weekly projects on github and if someone randomly happens upon the repos, then awesome, but looking back that may have been misguided. i found myself wondering if this time could be better-spent if someone more than me got use from it. after all, “users are the best fuzzers” as they say in the pharmaceutical industry. allegedly. ALLEGEDLY.
not being a social media person, i started to come around to the idea that i needed a blog, which seemed like a passive low-cost medium that i could engage with. it felt right to give these projects a good christening- see if they flap their wings and frontpage it or smack the ground wondering where it all went wrong.
note: we’re starting to get into how i ended up making a static site engine, or as i used to call it “a normal website with extra steps”. hang in there.
so here we are, in the future: terminators roam the earth, iframes are toast, frames in general are gone, and you’d be hard pressed to make a nav_menu.html
and server side include it onto your pages without some extra steps along the way. this is less about shaking my metaphorical cane at the sky and more of a scathing rebuke of commentary on the state of the modern web and the things we “have” to do to publish words. i just wanted to write the header nav menu one time and share it around between documents, was that so much to ask? apparently so, i guess.[3]
[3] - well aware of this being needless complaining at this point, and i know there are a million well-reasoned arguments why the web is this way, and in some cases we’re better for it. of course we don’t HAVE to do anything, but i was enjoying this misguided catharsis while still knowing that time moves on, and i can roll on or get rolled over, however the saying goes.
note: I redacted the following parts because while proofreading the article it sounded un-neededly negative and just outright mean for no reason, but i left it with the strikethrough because i read it twice just to laugh an appropriate amount at the mental strawmen i was convinced i was mowing down while typing it, and i think that’s worth a small non-zero something.
note: dear reader, what follows is a critique, and not that i’m ungrateful or anything, but more like the pleasantly dissatisfied feeling you get when you’ve just had a burger that didn’t quit hit the spot you wanted, but wasn’t bad enough to warrant an RMA. imagine a burger where even though you ate it, it arrived with the wrong cheese on and someone forgot the pickles- you’re eating it out of a sense of duty at this point, and it’s not worth complaining over, but it wasn’t the burger you wanted.
to further belabor the point, this modern web, sometimes when im feeling complainy, is ‘all lettuce and no meat’. im not saying i don’t have the pipes to load your 12mb marketing page, served by an entire military of servers with full frontend toolchain regalia, it’s just that i’m doing it begrudgingly and under-duress hoping against fate that it’s not a bunch of tattered ramblings like my blog posts.
i went in search of something that would let me do (again, metaphorically speaking) something like this:
blog := {head,content...,footer}
what i found instead were byzantine arrangements of cyclically interdependent packages, each putting in their 2 cents (and thousand inodes) into their long and ‘opinionated’ procedure. everything i surveyed had yet another language or paradigm other than “plain english” involved, and they all had various cute naming schemes for what things would be called or how the various parts could be switched to other pre-ordained alternatives. tbh, the alternatives weren’t bad, im just complaining to warm the air around me at this point.
knowing full well i could just write regular-ass-html (RAHTML, technically speaking), all of that fire to write these yet-unimagined words just faded from within me trying to think about it. after days of looking i gave up, disenfranchised, and still resisting wordpress.
instead i decided to eat my emotions, with cheese and pickles like the good lord intended.
so I wrote bearclaw, a static site generator with rss, mentioned in an HN comment on a whim, and as they say it’s all history from there. odds are you’re reading this content on my bearclaw generated blog right now or an rss reader served by a feed bearclaw created. as you might be guessing, yes, it assembles the content in the manner i kept thinking about, and the plugin system uses a syntax that’s almost identical to server-side-includes. it’s far from perfect, and i’m not saying you should switch to it, but i like it. there’s no templating language, and i made sure that the only libraries used were ones i could review and grok in one sitting. i’ve been told i’ll regret not using a templating language. time will tell.
a lot of these are my own concerns, and initially my post on HN about bearclaw sat there nervously until a few people chimed in and then it was off to the races. it’s been really fun, no part of it has ever felt like work, and i feel like my skills got a boost in the process with regards to taking time to write documentation.
this whole monologue about bearclaw is to say one thing - at a time where i was perfectly content doing my weekly projects unnoticed, i unexpectedly caught some lightning in a bottle. users showed up, used things, had valid points to contribute, and did all this bug testing for me, and i’m truly grateful for it all. all of the criticisms have been valid, and well received. it makes sense to attempt to recreate this by blogging about these little projects along the way.
i’d like to keep this mostly about the weekly projects though it might not always have a weekly post. i don’t want to make it a job if i’m not feeling it.
to give you some context, often i sit down and write the entirety of whatever program im making in the span of one laptop charge, with some noise, some coffee, and a potato-dog in my lap to keep my bouncy leg from running away. as much as i like the idea of a livejournal montage in the imaginary movie of my life, i think if i’m not careful it’d be a give-take balance that could overtake the code. who knows. ill give it a shot for now.
I just want to make cool stuff. fun stuff. i want to make stuff that gets used, and i want to see it get born, live, and move out of the house while i still remember its name and what it does. it’d be my pleasure for you to share a part of this experience with me, whether it gets a full feature blog post or just a summary.
i don’t have good forms of social media other than github, so if you’re looking for me ask someone or just drop a message into a pull request or something, i’ll see it. thanks for reading.
###comments: blog/discussions/1
dear reader, future collaborator...
whatever ends up here on this blog, thank you for checking it out, i hope some day we can work together to make something cool.
thanks,
@donuts-are-good