The good things in the current age in tech

In the industry, we often talk about the more negative aspects that cause us strife - frameworks that are out of date, hard problems that no one really has concerete solutions and so on. But every now and then, it can be helpful to introspect and consider things at a larger scale, for example, what good things are there in the current day and age. This is me taking a pause and talking about some of those.

good things

On a social level

Open source and how easy it is nowadays to develop something.

People may say the same about the computer platforms of the old days, but i think that we're still seeing a pretty good period of time before the larger walled gardens have taken over. You can have a server in the cloud up and running in minutes. There are even managed services or PaaS offerings, if you'd prefer to use those and don't fall in the SaaSS trap.

Want to do embedded development? Arduino and the compatible platforms are lovely! Need something more powerful? Raspberry Pi and the compatibles have got your back! Even more so? Just get a low power x86 CPU like 200GE and it'll be more than you need for the near future! Of course, you can also do your part in decreasing e-waste and use cheap refurbished hardware as well, perhaps even buying professional grade stuff, like the people over at the /r/homelab community often do.

Need a software library or a language to help you with a particular task? It probably not only exists, but also has documentation and even tutorials available at a whim! You don't need to read magazines or manually copy code, you can download ready to run examples from GitHub, or even view them without leaving your browser! And the variety of languages is also lovely, anything from Python with its rich ecosystem, Ruby and PHP for simple webapp development, to Java, .NET for more serious platforms, Go and even Rust for working at a lower abstraction layer.

Need a larger piece of software? There are self-hosted platforms for blogging, sharing files, even e-commerce stores that you can host on your own. Most of those are also open source and free. While the licenses vary, in most cases you can modify the software to suit your needs, or to even offer fixes that may benefit thousands or millions across the globe. And on the opposite side, you also benefit from the work of others as well! As for the complicated domains, there are businesses to address your needs. Want to take payments? Stripe or Paypal has got your back.

And even within these walled gardens, things are mostly acceptable for now: you can host videos on YouTube, reach your audiences on social media or even use platforms for app delivery. That's not to say that they're perfect, but 20 years ago you simply didn't have anything like that. I recall one of the GDC talks about how back in the day people had to order video games from a small company by phone, which nowadays seems as curious, as it does unnecessary.

Oh, and also the FOSS and open source movements in general are amazing to behold. You get entire production ready operating systems like Debian or FreeBSD for free. They even probably run on the hardware that is in your home! And they can scale from a laptop to a server farm with few to no issues! Even driver support is improving and you also get a whole bunch of amazing free software: everything from LibreOffice, Firefox, GIMP, Krita, Blender, Audacity, kdenlive, VSCodium/NetBeans/Eclipse/IntelliJ (though personally i pay for the package of all JetBrains tools) to even game engines like Godot.

On a technical level

Containers and software that compiles to small static binaries. In my eyes, both of those approaches are good for achieving higher levels of environment independence and if software is written with 12 Factor App principles in mind, or just follows some of the UNIX best practices, then it's likely that it'll be reasonably easy to configure and run.

For example, in my homelab, i run about 90% of the software in containers, giving everything resource limits, being able to redeploy stuff based on changes to a text file or two, but besides that i can also escape the clutches of the *nix file system structure which every piece of software treats differently and can achieve something like keeping all of the data that i care about within the system under a separate/common directory, "/docker" in my case. This leads to a simple directory structure, like "/docker/nextcloud/data/mysql/..." and also really simplifies backups.

It seems like someone looked at how we run software, and instead of trying to implement it from the bottom up, instead decided to create it from the top down - focusing on an easier Ops experience, and it shows! Similarly, even static binaries need to be built more often to keep up to date with their dependency updates, at the same time when you get that binary, you'll be pretty sure that it'll work to the end of time in a trusted environment with trusted data. It's much better than CentOS 8 breaking the xrdp package for some reason, or similar things happening with updates.

Oh, also, i cannot overstate how nice things like Let's Encrypt are - now you can secure your sites for free and automate certificate renewal. And with web servers like Caddy, a lot of things that used to be really hard are getting easier to do. Same for using Docker Swarm and Portainer for managing small container cluster deployments (though some people also say lovely things about Hashicorp Nomad, which optionally also integrates nicely with their Consul service mesh and Vault credential system).

In summary

Things aren't necessarily perfect, but they definitely could be a lot worse! If you look at the positives, it seems like there are a lot of advancements happening and maybe even mobile devices won't be so vendor-locked in about 20-40 years, given how ARM seems to slowly be gaining more and more ground!

Similarly, i'm curious to see where FOSS will go and whether the GNU tools and projects gain more popularity. For example, Debian has been an extremely reliable distro that i've used in a number of scenarios and has largely avoided the problems that Ubuntu or even CentOS (RIP) have run into. But why couldn't we run our servers on Trisquel Linux? It would be curious to see such distros become available even in smaller VPS hosts as well.