Minimum Viable (IndieWeb)site

Published by Mark Dain on

First, a recap

The last few months have been intense; I've been learning a ton of new things like functional programming, Erlang, limits, neural networks, derivatives, and more. I've hardly had the time or motivation to setup WordPress or write a CMS, so please forgive the barebones approach here. The URLs won't change[1], and there are plenty of Microformats, which are the two most important things. This post took longer than I thought to write, and even longer than I thought to actually publish it.

The last few months have also been interesting. I found myself being surprised learning about highly decoupled systems that, to my understanding, can support new kinds of UIs and databases without any significant changes in the system. I saw some aspects of this style of architecture emerging in my chat program, Ionic. Unfortunately, for a variety of reasons beyond my control, that research project was abandoned. I've spent more time than needed feeling regret and anger that I let it slip past me, given how interesting it was to me.

Ionic already had the ability to use any database or storage system imaginable as that was always implemented as a plugin, called a BackingStore. This idea has me wondering if the WebSocket side of Ionic could be refactored out to a plugin system as well, so one might be able to use TCP, Ajax Long Polling, or IRC, to connect and chat on an Ionic server, all while writing to flat files, MySQL, Datomic, or a remote server over any protocol. So long as the plugin can handle all the events, and can pass the correct request and response objects around, it's almost infinitely flexible.

Lately, I've also been casually submitting to OpenStreetMap. Contributing to wikis, public data sources, and getting more involved in Open Source feels a lot better than just donating money (although I won't be canceling my monthly donations to Let's Encrypt and others!).

Next year

My primary goal is still what it is -- I hope to enroll in university next year to study Computer Science and Math.

Outside of that, I'd like to carry on resuming my, probably lifelong, journey to being a world-class Software Engineer: continue to learn the old, great ideas, and continue to research and consider the new ideas. Among other things, I'd like to look into Rust, TLA+, and Erlang.

This has reminded me that I must write a rant about my growing dislike of the term “Software Engineer”…

I'm very keen on picking up Ionic again to better study, understand, and internalize the idea of highly decoupled software. I am considering Java, as Go's plugin system is limited to Linux and I'm not yet in a position to return to using Linux full time, although I am committed to doing that in 2018, so perhaps Ionic can wait until then.

I'll also try to keep my Open Source contributions up. If you will expect anything from me, it should be small libraries and projects, like ancarda/security-headers, not large systems.

Honorable Mentions

2017 has been a difficult year for me and I feel two people, in particular, deserve a shout out: Nagy Milán and Martijn van der Ven. You two are the most supportive, most encouraging people I know and I honestly thank you from the bottom of my heart for everything you've done for me.


  1. Famous Last Words™. By “won't change”, I mean I'll try to stick to the Cool URIs don't change advice from the W3C. If I do move this post off /post/1/, I should be able to create a 301 Permament Redirect to it's new home. This URI will always, even if just via a redirect, point to this blog post (so long as my website is up).