Mentally fully occupied, I had been ignoring this place until I realized I skipped a month. Writing's always been hard for me, but not doing it is even harder. It's essential to me, o/w I don't know if I've been living.
But there isn't much important to say. And that's OK. The world is getting more chaotic by day, that I've heard, but I still get to enjoy peace for the moment. So let's reflect on life. This journal means so much to me after all. I know I feel much relieved now that someone found me useful, but before that, did I even exist? This journal is the proof.
Yeah, and I decided not to bother creating two separate pieces for September and October. Let's cut the bullshit, it's November now.
Been doing quite some debugging lately. It started stressful because of the context switching, and personal matters came up (Dad's health mostly) that put extra weight on my mind. But now I'm glad things came through.
Overcoming difficulties. Helping people out, being able to be of help. And reading code not written by myself. All these things have been on my map for a long time, and I finally get to do them now. I feel pumped. Even though sometimes I did get tired. But that's what sleeping/napping is for, and what a nice weekend in parks (or IKEA ) is for, right?
Getting into technical stuff is not going to be an agenda of this piece for several reasons, but mostly, I haven't got time to form any solid opinions, nor do I have the chance to validate any of my hunches or hypotheses. But the work so far did make me think about reusability in Elm projects.
Elm is great at modularization and encapsulation with libraries, but how about UI components (some people refer to that as a "library" of those components, or a design toolkit, etc, etc). The Elm Architecture implies that there's no "stateful widgets" like in OO, which is a good thing for code/app quality (reliability, debuggability, etc), but you know why so many people still can't leave JS? Not only because there's a ton of stuff you can just grab and use, that goes without saying. But having these stateful components means a full UI piece can be reused (plug and play). For example, if you want to just use CodeMirror in your project, it's much simpler if it's a JS/TS project than an Elm project. I heard about the LIT framework for making web components (custom elements), but also how the Elm runtime and those components can have undesirable interactions/interferences (DOM manipulation etc), and in that sense, Elm is not designed to play well with arbitrary custom elements. The only safe way is through ports, but some people find ports "verbose" (I don't, or, I think it's a feature).
But I do appreciate the idea of reusable UI components. But deep down, it's just not a compatible idea with the Elm Architecture, particularly, a single source of truth, and "managed effects".
Stateful widgets, encapsulation as in OO, I believe is something we intuitively think is the right approach to good DX, but end up hurting us as long as we are making something complex enough. And an equivalent statement is, it's only for the super brainy and careful, those who code like machines. For mere mortals who keep making dumb human mistakes, it's actually a recipe for disaster. The reason is simple - if you get to easily hide anything you deem complex and pretend that it just works, it will be a source of bugs, and they will bite you. Elm is saying, instead, we manage everything in a single place, under the sun, as a single flat structure (MUV).
That doesn't mean you can't have a hierarchical organization of your app though. But you just have to know that these are pure "syntactic sugar" kind of stuff, they eventually "cancel out" and "dissolve away" back to simply TEA. But that's not pointless, because DX is not pointless. A team project needs to trade extra wiring-up for better modularization (which is discussed in the previous piece).
But to have really meaningful opinions, I would need to do more experiments, and I'm not in that head space to carry out such projects yet. But it will be done.
Something else came up. Turns out, proxy-based solutions (e.g. v2ray) have been in development for years and I was completely ignorant of that. I was only forced to find alternatives when the popular approach, virtual private network, has definitively failed in the department of obfuscation. I was so outdated, but happy that a new generation is pursuing something meaningful. These are all client-server solutions as opposed to distributed, so they share the SPoF issue, but for the same reason, they're simpler to design and implement, and thus they are available and they work, now; it's just that, the "DevOps" aspect of it has to play a significant role in the quality of service, with tricks like using a relay within the border. Big-vision projects, such as the SAFE Network, is still WIP for the obvious reason that distributed is hard, and making a general-purpose, internet-scale DS is especially hard. Not sure I'll have the resources or passion to dive into the technical aspects anytime soon, but having a simple, working, agile solution that's vulnerable is infinitely better than a complex one that takes an unforeseeable amount of time to deliver. I admire great vision and ambition of course. Internet is very much flawed, I get it. But not having access to it is an immediate crisis. And a great vision/design of a better internet doesn't bring with it all the content and services we ready depend on. The web is more than just technology, but more significantly, the people. Software design does help tremendously in establishing good rules, but ultimately, these are mere tools for people to create and share stuff.
I mean, technically, I can live without internet. That's why I keep hard disks I guess. And I have plenty of books to kill time for the rest of my life. And I do find internet quite distracting at times. But overall, it is empowering and enhancing, and a great source of entertainment too. Does it spoil people? Yes, it can. But again, it's just a tool. People who know how to make the most out of it will be supercharged, and thus that is just a measure of personal growth and maturity of mind. It is a brutal test, because there are numerous tragic failures. But just as pharmacology is not to blame for drug abuse, internet is also meant to be used responsibly. However, it is important that we don't blow things out of proportion. We heard about those crazy "addiction treatments" that were simply physical and mental tortures done to kids. Always keep in mind that humans are born weak, and we can only educate ourselves to be stronger, but we do not inhumanely punish them for being weak.
Yeah this has been off-topic again. But wait, did I say there was a topic to begin with? This is my place to keep my mind sane, and as we know, venting, talking to myself, is a big part of this journal's significance. It is most likely therapeutic, I was taking it way too seriously, to the point that it became a burden. But now I see it. This little journal stays alive, and I get to talk whatever. Perks of being a nobody I guess.