522 karma · joined May 16, 2020
Within the tech industry, we rely on people to think things through well. Because like with other engineered systems actually changing things later has a real cost, even though it's all an artificial, massless construct and even though we do have AI to do some of the grunt work. The problem is, we are building understanding, predictability and bigger changes tend to make some assumptions obsolete. Sometimes you don't even know which exactly, unless you have precisely engineered the change - costing thinking time that is mostly invisible, e.g. people only write down the result of the thinking or the gist of the straightened path to that result if you are lucky. Almost nobody writes down the paths not taken and the reasoning for those decisions along the way. All of this is the proof of work that's missing or that's hard to verify, if it was created honestly and not inflated artificially.
So yes, measuring work, efficiency of spending time doing work and agreeing on compensation are the hard parts, especially if we cut trust out of the equation.
So where is the meaning in all this?
We can look at the steel making revolution and try to learn from it. Software is in most places, so is steel. In my experience a steel mill employee generally gets paid. There is the dignity in struggle, because the work tends to be demanding. Perhaps we will have machines working on the standardized components for us to put together after QA/ conformance testing to form a larger system. Maybe software engineering will really be more like work planning or a machine engineering studio. What I am confident about is that we will get more standardization and everything will get a lot more complex, yet we will have tools to cope with that.
On the other hand this can maybe get fixed in hardware by just copying the page that's being refreshed to the side somewhere, eliminating the whole waiting problem. Last but not least, AFAIK writes to a row already recharge the capacitors so there shouldn't be a need to refresh it. What am I missing?
If you want to calcify something and add robustness, use clojure.spec or Malli. Clojure encourages writing testable code and also in general, there is less code to test. Smaller problem, easier to tackle well.
The JVM is a beast for serious things because of its performance and tooling. If you need something small/ with a quick start, you can use GraalVM or some of the dialects like ClojureScript or Babashka to do what needs to be done. There is ongoing work on ClojureCLR, Jank, Janet, Basilisp, Hy and other dialects or inspired languages. Usually, these are pretty close to Clojure or try to follow the behavior of Clojure so that stuff written using Clojure.core just works the same. Clojure is turning out to be the actual lingua franca.
For me, programming in Clojure is the nearest thing to fun that I ever had doing programming. To me there seems to be less ceremony about things especially on bigger projects. For the little things Babashka tends to be even more straight forward.
And yes, there are things about Clojure that can make the life harder. Usually it has to do with laziness e.g. when you just try to get a data structure written to a file. When you want to have restartable, stateful components such as database connections, web servers, etc. and want to start them in a certain order. There are some functions that are unexpectedly slow and stuff like this that could be somewhat more predictable. All this would be more approachable if there were real documents for beginners with a little more explanations than the terse descriptions that senior developers with 20+ years of experience find sufficient.
Most companies I have seen have never updated the BIOS of their servers, nor the firmware on their switches. Some of those have production applications on Windows XP or older and you can see VMware ESXi < 6.5 still in the wild. The same for all kinds of other systems including Oracle Linux 5.5 with some ancient Oracle DB like 10g or something, that was the case like 5 years ago but I don't think the company has migrated away completely to this day.
Any sufficiently old company will accrete systems and approaches of various vintages over time only very slowly ripping out some of those systems. Usually what happens is that parts of old systems or old workarounds will live on for decades after they have been supposedly decommissioned. I had a colleague who was using CRT monitors in 2020 with computers of similar vintage, probably with Pentium III or early Pentium IV, because he had everything set up there and it just worked for what he was doing. I don't admire it, yet that stuff works and I do respect that people don't want to replace expensive systems just because they are out of support, when they do actually work and they have people taking care of them.
If you are worried about brushing off your enamel, you should get correct tooth brushes, not use abrasive tooth pastes, not brush immediately after drinking acids as another commenter has written. Some people have soft enamel but effect of some medication/ sickness/ malnutrition during childhood but that is relatively rare. If in doubt, consult dental hygiene specialist or a dentist.
Source: My wife is an established dental hygienist keeping up with the newest approaches, going to advanced courses/ master classes, visiting conferences.
The acidic, sugary drinks and food don't help at all. Drinking mineral water (no sugar, no extra acids) or to wash the mouth with regular water or a low concentration sodium bicarbonate / baking soda solution to balance pH after eating/ drinking something else would probably help. Of course, if not dissolved completely, the baking soda could act as an abrasive which wouldn't be that great for tooth health so probably just use regular water.
You don't need to invest much money to keep good oral health, it certainly is much cheaper to fix the problems that will arise if you don't, if they can be fixed at all. It however does cost effort/ time.
Or you are one of many people that have been told how great their teeth are yet which have periodontitis/ gum inlfamation. (Source: My wife is an established dental hygienist keeping up with the newest approaches, going to advanced courses, visiting conferences.) If your gums are redish instead of light pink that's a good indication. If you are bleeding on regular use of interdental brushes/ flossing that's another hint something might be off.
If you want a dedicated virtual host, Proxmox seems to be pretty easy to install even for relative newcomers and it has a GUI that's decent for new people and seasoned admins as well.
For the remote connection I just use SSH and tmux, so I can comfortably detach and reattach without killing the tool that's running inside the terminal on the remote machine.
I hope this helps even though I didn't provide a step-by step guide.
Please run at least a dev-container or a VM for the tools. You can use RDP/ VNC/ Spice or even just the terminal with tmux to work within the confines of the container/ machine. You can mirror some stuff into the container/ machine with SSHFS, Samba/ NFS, 9p. You can use all the traditional tools, filesystems and such for reliable snapshots. Push the results separately or don't give direct unrestricted git access to the agent.
It's not that hard. If you are super lazy, you can also pay for a VPS $5/month or something like that and run the workload there.
And yes, if you are working with professionals most expenditures can be planned well in advance so you definitely can take months or even more than a year in the process. If there is a major issue affecting the business of the company you would be surprised what is possible. I've got things approved in weeks in an enterprise of 2000+ employees before and I was 5 levels down from the CEO then. I have improved my negotiation skills greatly since then (it helps when you co-found a consulting company).
Yes, Proxmox is built on Debian so anything Debian can do Proxmox VE can mostly do as well without major issues.
With open source, if you have the right people, you can find/ bisect down to the commit and function where the problem is exactly, which speeds up the remedy immensely. We have done such a thing with backup restores from the Proxmox Backup Server. The patches are now in Proxmox VE 9.0 because the low hanging fruit problem was actually with the client code not the Proxmox Backup Server.
The letter's first page looks very low effort, which unfortunately is the first impression undermining the certainly large amounts of work people have invested in this. The note about needing a PhD could well be left to the form instead of sounding extremely elitist right on the first page. Yes, it's shallow and everything but do you want to be right or get your way?
Yes, doing Clojure is more demanding initially than many other languages where you can basically template/ LLM your way to anything. With Clojure you might find it easier to do bigger and longer term projects that are rather easy to maintain even for a single person or a small team. That of course doesn't cause much buzz, because it's boring in the good sense.
We are building apps for our clients in it, we will also have our own product built with Clojure and ClojureScript soon.
And no, this has nothing to do with security. The browser could easily filter the list for same origin even with the list/ array approach. People just need to invent things that could've been just another data structure perhaps with some kind of Compare And Swap wrapper for concurrency.