--- layout: post title: All-American Anarchy date: 2020-1-1 21:00:00 -0800


I remember believing in 2008 That We Could. I remember hope and optimism. The highest plane of activism I'd visited was a neighborhood food drive (required by my school). I couldn't vote, but watched Jon Stewart & Stephen Colbert with my sister all the way through election night. Obama's victory victory felt inevitable, deserved. I thought people were waking up.


By 2012, my rosy glasses were stained and cracked. I insisted, without irony, that I identified as a 'Netizen' more than an American. SOPA, PIPA, and other draconian surveillance bills were making the rounds. Obama had lost my faith. My activism reached a new high: I skipped school for a John McCain campaign rally. My friends and I felt great until McCain started blaming "the gays" for the country's problems. I did not feel patriotic, but I still voted -- for Gary Johnson. I was making a statement. Obama comfortably won Washington State.


Maybe working display pyrotechnics, all those July 4ths rekindled my civic spirit, because in 2016 I was a delegate for Bernie Sanders to the state's Democratic Party convention. Seventy-two point seven percent of Washington Democratic Party voters -- a majority in every county -- supported Bernie Sander's bid for president. But at a overstuffed convention, marred by disorganization and droning mouthpieces, the rank and file Democratic voters were told the Party had already chosen Hillary for us. I only learned about the unpledged power votes of Superdelegates that day -- out of seventeen, 11 or more voted for Hillary at the DNC. If those "Superdelegates" had followed the will of the people -- the real party -- that split would be flipped. By the math, Bernie deserved at least 12. No, that's not a Seahawks reference.

Outraged, we forced a vote to officially endorse Bernie Sanders. At least we mere delegates had that right. The State Chair, Jaxon Ravens, poisoned this successful initiative: First, only the letter of the law was followed, by "endorsing" Bernie in a damn blog post more fit for a twitter thread. Second, Ravens undercut our vote with this patronizing statement:

“I'm glad they could make their voices heard. However, Hillary Clinton will be our nominee, and we will do all that we can to ensure Donald Trump never becomes President."

It doesn't matter if the votes had already been counted (excepting the precious, unpledged Superdelagate's) -- representatives must represent the will of the people, or it's a farce, not democracy. Ravens went against his own State Party. He lined up with the DNC. At that moment I understood that the Democratic Party is just another private club.


Today, the FCC is headed by a Verizon puppet who successfully rolled back Federal net neutrality regulations, like he promised. Our wars abroad are still profit-motivated and imperialistic, just less predictable to our allies. I still don't feel patriotic, yet I'm an AmeriCorps alumni with two full-size Stars and Bars hanging in my room. Working in FEMA showed me bureaucratic dysfunction is alive and well in our nation's federal disaster relief agency, just like any other bureaucracy, alongside the same corruption I've seen in every industry from healthcare to pyrotechnics.

Today, I cannot call myself a member of the Democratic Party. I cannot stop the flow of imperialism and neoliberal capitalism alone, but I can at least cry for help instead of lying about how nice the poisoned water is.

Today, I cannot call myself a "netizen". The cloud is just other people's computers and the internet is being fenced off, privatized, and patrolled, just like the real-world commons.

Today, I call myself an all-American Anarchist.

All-American because I am a male of European descent, heir to a legacy of colonization, racism, male violence, and the carceral-surveillance state. And I must face this.

Anarchist because I reject my birthright of power and privilege, and shake my soul free of the American stranglehold, of the Democratic Party's faux progressivism.

My power and privilege I cannot abdicate, nor will I throw my life away. I still vote for Democrats in my diverse praxis. I still pay taxes (and traffic tickets).

We are building a new world in the shell of the old. Our tools are already at hand. Everywhere you look, there is inspiration, new ideas & life, opportunities and challenges. Reach within you, and find the means by which to gain your freedom. While it may feel hopeless to read dire news about our climate, and the same old tired defences from the titans, the movers and shakers of tomorrow are building their base today. Keep fighting the good fight. Here's to a new progressivism in 2020, one not defined by democrats or neoliberalism. One defined by us.

layout: post title: Survey of Four Static Site Generators date: 2019-05-30 10:00:00 -0800

Since the centralized web wants a heavyweight fight, with everything wrapped in hypertext markup, KRIS Radio has to move to a static site generator. Why not write an entry about the tournament we put the contestants through?

This entry has been completely rewritten after realizing how flawed my methods were. I was installing each package and manually counting the changes, attempting to get a configuration, etc. An attempt, but simply examining each package on their manager gives the same information -- faster and without variation due to my local specs.

I used codetab's Count LoC to size up the codebases -- quite convenient as literally every option examined is based on github.

To count dependencies, I just went to each option's package manager, be that rubygems.org, crates.io, or what have you. All told, here's how the numbers shake out:

Lines of Code121,79241,2244,65116,082
Known Vulnerabilities9502

Notice how many more dependencies are introduced than advertised, and how many more vulnerabilities those sub-dependencies introduce. This paralyzing code creep is exactly what KRIS Radio was created to combat.

What is the point of running "open source software" if the code is so thick and overgrown, you close the book with a headache as soon as you open it? Furthermore, what is the point of blogging -- to fiddle around with code you don't understand all day, or to put words on the internet? We are here today for that purpose alone; to find the meanest publishing suite that will get the job done. So let's look at our contenders again.

Besides the extreme size of the codebase, Ghost's paid options seem to be overtaking the free offering to the point where it feels more like a freemium product than FOSS. For erecting a walled garden, and letting it overgrow, we give Ghost the axe.

Jekyll has been fairly inactive for some time. Jekyll is Github Pages' preferred static generator, and works on dat:// just fine (like any other https:// standard). Therefore, the decentralized blogger interested in a low-cost https:// mirror compatible with dat:// could do quite well using Jekyll. While 1/3 the size of Ghost, Jekyll introduces three times as many dependencies (perhaps there's a Law of Conservation hidden there...). For logorrhoic logic and derelict development, we give Jekyll the boot.

Metalsmith seems like the answer to our demands for slim, trim generation. Unfortunately, I had a devil of a time getting it to work, and the zero-dependencies figure obscures the fact that large amounts of functionality are relegated to plugins. Additionally, only one developer actively maintains Metalsmith, so updates are probably seen as infrequently as in Jekyll. For lack of support, we ruefully show Metalsmith the door (but wish the community!).

You've probably figured out who won by now. Quite simply, mdBook has a very slim, easily understood code base, and was the only one I tested that worked strraigh out the box. Even there, installing mdBook on my machine still required another 201 sub-dependent crates beyond the 25 advertised. And the package even has two unlisted security vulnerabilities from fetching Google fonts -- and trackers. (Don't worry, that reference has been removed from dat://krisrad.io!) However, balance is about making sacrifices, and we're not trying to reinvent the wheel here.

Now, if the big browsers had native support for markdown's elgant simplicity, like you find when exploring the decentraweb on Beaker, this entry would add a mere 34 lines of text, rather than the 205 lines of html mdbook, necessarily, renders it to. In an era of expanding corporate control and declining natural resources, the choice is up to you: continue to trust Big Brother, watching him get fat off the bread while farmland burns? Or take what you can carry on your back, set out, start understanding this brave new world?

layout: post title: Refactoring from Jekyll to Dat date: 2019-05-22 10:00:00 -0800

This is a live walkthrough of refactoring a Jekyll blog into a Dat site. Comparing our site on https:// to dat:// is quite interesting. I'm currently encoding entries in markdown, which is natively supported by Beaker -- not so much by the major browsers. However, with the site hosted on Github, Hashbase, and my own computer, we will have a strong hand of backups - and mutations - to examine.

  1. We initialize a new Dat in the already-existing git repository. My repositiory was setup as a Jekyll blog, so there's already a few files existing in the folder. We're going to hold onto some of the configuration files and the old /_posts folder, and build a new architecture around them.
    Fig. 001: Directory after Dat init.
    Creating a new Dat from Beaker Browser's main menu initializes the .datignore files. Compared to a commercial solution, we obviously have a lot of control here. For now, I intend to stay agile while exploring the ecosystem of Dat & Hashbase, and their border with https://. So, I'm keeping the architecture will minimal while I focus on writing new content for the site.

  2. Jekyll left behind a lot of gem and yaml files, so I delete most of them. Some of the data in _config.yml I transfer over to dat.json. Json formatting is more common and standardized than Yaml, but the beautiful thing is I have the freedom to pick either. Unfortunately, editing a dat.json in Beaker's UI deletes all data other than what their UI opens to you (e.g., Name & Description), as I took issue with on Beaker's tracker. For that reason, I highly recommend editing dat.json locally, and dealing with the lack of titles in Beaker. As for the information I'm including in dat.json, I'm not developing for a specific API, but I have the information that all of them use. It would be pretty easy to interact with sockets on the dat ecosystem that use common fields like title, url, email, twitter_username, and github_username, the handful I saved from jekyll's _config.yaml, and I can easily add more.

  3. Finished with the initial rollback of jekyll, I had to decide on a static site generator, or try rolling my own. After surveying a few options detailed in my "Survey of Four Static Site Generators" entry, I've decided to roll with mdBook. The short size of the code base was a big factor, plus I'm pretty stoked on rustlang. Check out that entry to see how the Big Bads like Ghost and Jekyll competed with underdogs like Metalsmith and our winner, mdBook!

  4. Before we continue our easy-reading experience with mdBook, I'd like to take a moment to remember this site's alien birth, when it couldn't decide which dimension to live in and cried out for stability and comfort.

    • Fig. 002: The frankensite on https://.
      Fig. 003: Frankensite humanized on dat://.
      Dat appears much more user-friendly, as Beaker Browser natively renders Markdown. I really wish that was true in major browsers like Firefox, Opera, Chrome, & Explorer - why do we keep all this html metadata around? - as well as on mobile browsers. Not supporting markdown is why I need to pick a static site generator, which is really more hassle than needed, as shown by Dat.
    • However, it is very interesting to see their mutated attempts. The Hashbase https:// mirror only shows the file structure; users can't view files in-browser. Github Pages renders my index.md and nav.md files, which lack any yaml frontmatter - but 404's on my actual posts. Navigating to the raw posts on github.com, however, does show the yaml frontmatter - rendered as a table.
    • I used a few different protocols here that were not designed with each other in mind. This feels as much like an art experiment as a devlog. Or a breeding lab, feeding radioactive data to different browsers and seeing which can adapt, survive, & thrive.

layout: post title: Game Theory of Everything date: 2019-05-20 10:00:00 -0800

Hello, worldbuilders!

My name is Kris with a K. This summer I have the opportunity to work with iD Tech as a camp instructor. One of my new responsibilities is designing a curriculum for my campers to follow along with. To make that study plan as accessible as possible, I'll be pushing some entires over the next few weeks about cybersecurity, C++, and Python.

I'm super excited to share what knowledge I can, and learn just as much. One thing I know is that software development is about much more than just coding -- teamwork and project management are obviously huge components, which in turn rest on having well-defined goals, metrics to track the pulse of those goals, and clear communication. So any tutorial, guide, or lesson plan I put up will definitely delve into what we are trying to achieve, why, and the costs and benefits of our chosen approach. Coding is only meaningful in context.

The same can be said of games. Humans have been playing games since we could rub two sticks together; so much is revealed about an individual or society's value's from the games they play. Growing up with one hand on a controller and one in the real world certainly gave me some rather dramatized ideas about right and wrong, what kind of arc my own life would have, and what the world was like. I'm interested in games that resonate closer to real life, and even more, that combine real symbols and reactions in ways only possible through a simulation (because why try to imitate the real world, that does it so much better, when we could do something totally unique?).

For instance, loot mechanics fundamentally disagree with space-time, cramming so many goodies into a single point like we had Mad-Eye Moody's trunk. Many games take this artistic liberty; but how many explore the ways a city's culture does the same geographically? We keep walking cyber-space in the three dimensions. We stay comfortable, replicating real life, rather than using the unique digital experience to contrast it.

Well those are just some general thoughts, and I'll certainly be making some hack-and-slash games like the next guy while I get my footing. Thank you for checking out my blog -- and don't touch that dial.