(2023-10-16) Docker, Gopher and analogue lifestyle -------------------------------------------------- Yes, I know, I still haven't put everything together at my workplace, so in the last week I still was a bit exhausted by that situation. However, it's almost over, so I'm going to continue with my language challenge as soon as I really can. This doesn't mean, however, that on that week I didn't have anything else to do or think about. Going back to OCaml and the Gopher server I wrote in it, I should note that even the one I replaced with it (my mod of Gofor) wasn't dockerized. And it worked perfectly fine, after all, it's a single Python script. Now, I switched to a static binary. And here's another phenomenon that bothers me: nowadays, lots of server applications are built from Go/Rust/Nim/whatever as static binaries for easier distribution, yet people still dockerize them for some strange reasons. Of course, sometimes the reasons are not so strange, e.g. when you have to run multiple instances of the same server binary with different configurations but the binary itself only expects a config file at a single place, but that's not so common and is a sign of straight bad software design. All normal server binaries have command line switches to at least point them to a proper configuration file, and then unroll everything else from that file. Most of them even allow you to fully duplicate the configuration in the switches themselves, although that's not very practical except for some short-term testing. Another use case would be when it's absolutely necessary to put the server behind a reverse proxy, for instance, to handle SSL or some other traffic manipulation. I'm doing this myself on my VPS for a lot of services, but no need to do this for Gopher. And besides, I'm using a Compose+Traefik combo just because it makes things easier and quicker to set up from third-party distributions, not because I couldn't do it without containers in an oldschool way by manually assigning ports and limiting bind addresses to 127.0.0.1. So, the point is: learn to use containers only when there is a real business need in them. In all other cases, keep things simple, especially when dealing with static binaries. If you feel the urge to multiplex, sometimes the xinetd/tcpsvd approach is the best one. I'm also thinking whether or not to add some pluggable CGI functionality to my next Gopher server iterations (if there are any) for search selectors and so on. One part of me says it can introduce a huge security risk. Well, every CGI-enabled server carries some security risk. But of course, we can always drop the privileges and require that these scripts run under a non-root user that can only access a single directory and everything under it. Another part of me says that this is pretty much the only thing left to create a complete Gopher server (I don't count various Gopher+ extensions, that's not what I'm interested in implementing anytime soon), the other major thing being TLS support but that's a different story. Either way, all this involves development of some configuration format and routing engine, so it might take some more time than I initially thought. Maybe, someday... The Orient (RA-AA0001B) is running just under +8 seconds in 15 days of accuracy measurement after the regulation. If this translates to +16 s/mo, I'll be more than pleased. If the deviation at the end of the month is even less, it's going to mean that this automatic Orient is on par with most quartz Seikos. Just reminding once again that my Casio W-800H, in the same 24/7 wearing mode, runs -24 s/mo. Of course, due to DST change at the end of October, I'll have to stop my measurement a bit earlier than that (Oct 29), but I guess the picture will be clear nevertheless. And again, I think I'm going to wear this watch at least until the end of this year, unless I go crazy and buy the RA-AB0F12S as I already said. Speaking of which, I think I also understood something really important about that Tristar lineup. First of all, yes, the 90% of it looked really ugly, but now, under full Epson control, they became quite decent-looking (aside from the bracelets but I don't count them as a factor at all, I got used to swap them on day one). Second, regardless of how they look and can't be accurately set (because F4902 is non-hacking and the second hand never stops there), they were designed for the countries and environments where little to no watch service is available for most people (that's why that lineup is still a huge deal in Brazil, for instance) and this means you can, again, easily regulate them at home and then wear for decades to come with no worries, provided you don't submerge them in any liquids. Combined with their pricing (at the target markets, not our crazy dealers), this makes for a really affordable and reliable EDC mech for those living more of an analogue lifestyle. Among the other attributes of analogue lifestyle, something I never touched before is good stationery. Of course, I don't consider my current stationery bad (otherwise I wouldn't be using it) but by "good" I mean "lasting longer". Not BIFL by any means, but closer to that. For instance, last week, besides that Pininfarina "eternal pencil", I got two notepads and a pack of 12 automatic pens. The pens (Axent Reporter AB1065-A) are not disposable, you definitely can unscrew them and replace the ink refill (it's a thinner, Chinese-type refill with spring holder flaps), and they also write perfectly fine with their 0.7mm thickness and are very comfortable to hold despite being thin (because of the soft-touch plastic material), but their mechanism is still prone to breaking, the refills can be hard to find and they don't feel like they would last long enough. On the other hand, I have two "tactical" pens, one of them being a Sigma-branded Chinese OEM pen (mostly known as Sminiker Professional Defender), another one being a less intimidating Nitecore NTP21. Both of them take standard "Parker-style" G2 ink cartridges (normal ballpoint or gel), with the preinstalled ones being kinda meh in terms of quality (even though the one in NTP21 is a Schneider Gelion+). "These are more like it", I thought. There are, however, some places where tactical pens are explicitly prohibited too, so I thought, "why not order a normal steel Parker Jotter?" Well, this week it comes, along with a pack of 6 G2 black refills that I'm going to use for the other two pens as well, and I'll definitely have something to say in my next posts about them all. This, however, wasn't the only pen I have ordered in addition to my initial demand. You see, with the (mostly) metal pens and G2 standard refills we no longer have a problem with disposable pens polluting the environment, but we still have the same exact problem with disposable refills. And you can't refill these cartridges at home — even if you could, most of the ink you can have at hand just won't work properly because it won't have the right viscosity and other features required specifically for ballpoints. Well, guess what? Fountain pens to the rescue! They can take any type of ink as long as it's water-based (not pigment- or oil-based), and you can repair or replace their individual components if you need to. Of course this involves some learning curve, but I'm not afraid of it. That's why, along with the ballpoint Parker Jotter version, I ordered a fountain version too. Good thing that I looked up some information online and found out that the fountain Jotter uses proprietary ink cartridges instead of a normal refillable ink chamber, so I also had to place a compatible ink converter into the same order. Because, of course, I don't plan on using any disposable cartridges in a fountain pen — that would kinda defeat the whole purpose. But I also don't like how thick most modern fountain pens are, so I'm glad that the FP Jotter maintains roughly the same dimensions as its ballpoint counterpart. We'll see how it performs over time though. And yes, I plan on experimenting with every kind of water-based ink I can get my hands on: HP inkjet printer ink (from a local third-party supplier, of course), liquid food coloring, leaves, walnuts and so on. Because I want to evaluate how versatile this kind of pens really is and whether or not it's worth all the hassle before making any bold conclusions. So it's going to be one of my future topics in this phlog as well. But... Challenge first. Just need to come up with an idea of what exactly to write in the new language. --- Luxferre ---