About

This is where I put all the things I've created which I hope may somehow be useful to others.


Statement

I believe in modular, purpose-built software. The more freely a program or library can be adapted and joined to other software the better. This of course begs the question of interoperability, documentation and cooperation amongst developers, and is why I am a sharp proponent of free software. I cannot stress how important it is, not simply just for myself (in that regard I find it to be an unparalleled educational tool), but rather for humanity as a whole. It is the actualization of creating software without constraints of intellectual ownership/micromanagement.

I have a strong interest in distributed software systems, especially favoring self-healing networks and distributed data structures and associated techniques. Beyond that I prefer to create purpose-built, practical use applications in a variety of languages. Practical in that their sole use isn't to pad a resume, but rather be of some use to others now and in the future beyond direct use even, either for design ideas or coding practices. Being able to riddle off a list of intangibles for the sole purpose of creating a list reeks of convenience, if nothing else. Above all else, I would hope what I have created can be of some use to people, even if only pedagogical.

In retrospect, I have since come to understand that I am a very design-driven developer, perhaps even over designing at times. A vast majority of my effort is prepaid out beforehand designing multiple approaches and ideas. Generally this pays off since perfect information about the task at hand rarely exists (so much for SCRUM), and I'd rather fall back on a secondary design than have to re-design again on the fly. Over-designing also helps the implementation in terms of knowing what you'll expect out of certain parts of the program. Despite modern languages offering an over-abundance of higher-order constructs, I honestly don't believe in their liberal use, ie. Php's magic methods. Most of the highly extrapolated capabilities of modern languages are more reliably implemented by means of lower level controls. Illustratively, one could implement an alternative, and more highly-tailored form of reflection in any language that doesn't support it by means of status accessor methods. Judgment calls will inescapably need to be made about any design decision and in some cases these constructs can be indispensable, however a rush to be highly reflexive/dynamic isn't always the best approach, as readability can suffer.



IOT Rot
Oct 07, 2023

Back on 25 Sept I submitted comments for the FCC's Cybersecurity Labeling for Internet of Things.

https://www.fcc.gov/ecfs/search/docket-detail/23-239


IOT security has become an issue of concern primarily becuase of scale.
A single device isn't even noisy if compromised, but millions definately are a problem.
From this, its in all of our interests to hold companies to task with regards to whether or not their boxes are potentially contributing to destructive botnets at large.
Since I am a professional and hobbyist developer I always lean on Open Source as not only an immeasureable source of knowledge but also utility for the end user.
I don't see how a forced opensource approach is necessarily the best solution for proprietary market forces at the getgo. However, when balancing an army of abandoned unpatched and proprietary product(s) against one which has been opensourced at abandonment, it very much seems like if some device has been deemed EOL, it should certainly be opensourced so that independant developers would have a shot at salvage lest something catastrophic be found.
The only final question then is how long each period should last before a manufacturer is required to relinquish source if they forgo any further updates. This gets all too compilcated when a product is stagnant for many years, and faces no known vulnerability which needs patching.
I think at present, however, I'm at a loss for concrete numbers as product categories span huge functional and practical realms. Some things need to be regularly replaced, while others less so. Minimally, the update period should be yearly, and then after 3 years without updates they must yield source. While being strict, as making said sources publicly consumable leads to extra work during the initial product outline, the complementing externality is that allowing your device to be ubiquitously attached to the internet en masse must have at least some level of responsibility. Just as oil producers must face that their customers pollute by propelling themselves forward and leaving something behind.