Re-reading Vinge's "The Peace War". In it, via a macguffin that isn't important here, the Peace Authority controls all high power tech and weapons and bans them from everyone else. The "Tinkers" have become more technically advanced under the radar but with very low power equipment. Have we built that world now? The big datacentres have all the powerful hardware and all we can afford are 1G VPSes and 8G laptops? We can't win this rigged game... how do we change the rules?
Maybe one way to change the rules is to stop writing code that needs big hardware. The old options were C or C++ for speed and efficiency (which are difficult and dangerous) or Python, Ruby, NodeJS, Perl, PHP for quick and easy coding (but which are fat and slow). But we have better options now, better compromises... #RustLang, #NimLang, #GoLang, #CrystalLang ... the legacy languages have become the tools of the oppressor
@joat I wouldn't say golang was particularly lightweight. Try fitting a binary executable on a microcontroller.. My rule of thumb is an executable binary, minus resources should happily fit on a floppy disk (even if it never goes there). That's a lot of opcodes. Clever use of formats for graphics resources can still fit most modern style applications into that footprint.
@zymurgic I'm not talking about microcontrollers though... we don't run PHP on microcontrollers either. I'm talking about small VPSes and small desktops. I have a 1G VPS that runs Syncthing, Writefreely, and Vaultwarden (2 Go binaries and one Rust, and that's not counting nginx in front) with half of the RAM unused. If those services were Python, Ruby, PHP or Perl it would struggle to run everything concurrently and it would be unusably slow.
@joat @zymurgic i will only add that 2 go binaries can be built together and will take way less then if built separately
@pancsta @zymurgic they share a copy of the stdlib, I presume?
@joat @zymurgic stdlib and the VM and possible common deps (eg Otel). Its the cost of statically linked binaries, and ofc theres tinygo and tamago for the brave. What sucks is that WASM embeds are essentially separate binaries...
@joat Ah yes, once you've got the overhead of a Linux kernel and runtime, the additional overhead of a sensibly linked Go executable is minimal.
PHP is great for what it was designed for, and is way better than it used to be, but still misses out on proper multithreading, and many PHP devs went very framework-heavy in their choice of coding, because it used to be the case that a big framework was necessary to fill gaps that PHP didn't have. Once you've got a dependency, it's difficult to stop.
@zymurgic @joat tinygo does that pretty fine actually 😃
I have cufflinks running Go on it via tinygo, and it's on an attiny16 https://github.com/aykevl/things/tree/master/earring-ring
things/earring-ring at master · aykevl/things

Collection of microcontroller projects. Contribute to aykevl/things development by creating an account on GitHub.

GitHub