🙀️ What is this thing called Dave?
🐧️ Where possible I like to develop under Linux (and have done so since the 0.96c.2 boot/root disk days)
☕️ I'm a professional Java developer with a zillion years experience in enterprise
🦀️ Currently I'm learning Rust ... the borrow checker is winning on points
🇬🇧️ I'm a Brit
🇸🇪️ But I live and work in Sweden (och jag pratar lite dåligt svenska)
✉️ I can be contacted by email as [email protected]
📜️ For longer writings see my blog at paperstack.com
I enjoy reading Hacker News, but boy do they have a downer on Java. Meanwhile the ne plus ultra of blub languages¹ keeps on trucking.
The arguments against it usually boil down to:
- It's kind of verbose
- It's not the latest hot and sexy
- It doesn't have
${feature_du_jour}
That's then usually rounded off with grudging acceptance that the JVM is alright and maybe a nod to Scala or Kotlin. A few half hearted javanauts defend it, and then the circus rolls out of town.
I have to say, it IS kind of verbose, it is NOT the latest hot and sexy, and ${feature_du_jour}
usually turns up just after (or several years/decades after) a new shiny thing is fiercely outshining that.
On the other hand it's rock solid, has vast libraries, and is manageable for terrifyingly large teams. If you want to roll your own startup in three weeks flat you'd be insane to use it. If you want to write a big complicated back-end application that will still be in action twenty years from now without needing 15 consecutive rewrites then you would be a little eccentric not to at least consider it.
Anyway, I'm super biased, having been mucking around in Java since the 1.1.x days. I've written books on various libraries and tools and seen Java used to good and bad effect in all sorts of companies. I even messed with Visual J once upon a time (but I cleaned my fingernails afterwards).
In the end it's mostly the people that matter. Pick a solid language and don't be too worried what the mayflies call it.
¹Would it be petty to point out that paulgraham.com currently has an invalid SSL certificate for the domain?
I'm still getting up to speed on Rust. It's quite the learning curve for someone who's been letting the garbage collector take the strain for over 20 years - and who created his fair share of segfaults before that in 90s era C . I do not yet fully grok the borrow/lifetime rules, but I'm starting to get the hang of it. There's a similarity between Java's streams iterators and Rust's iterators that's reassuring though.
So far the best Rust learning text I've found is Programming Rust from O'Reilly. The copy I have is the 1st edition. I have ordered the linked 2nd edition but it's taking a while to turn up! I ploughed through the entire thing and had quite a few moments where the "but...?" objections raised in one paragraph were immediately answered in the next one, which is a very nice way to learn.
Good learning links:
- A Half Hour to Learn Rust (more a sales-pitch for Rust syntax to developers familiar with other languages)
- How to build a Websocket Server with Rust
- The Rust Cookbook
- Rust Container Cheat Sheet
- Rust Language Cheat Sheet ("sheet" is rather understating it...)
- The Rust Performance Book
- The Little Book of Rust Macros
I acquired an Ender 3 Pro towards the start of the pandemic and have been creating a few things with it. So far I've found FreeCAD (or at least the version I'm using) to be impossibly buggy; far too many occasions when a modal dialogue with a magic number and no meaningful message pops up. Save often, reload when things get wedged. Instead I've mostly created things with the online TinkerCAD tool - which seems to be far more limited but much more approachable. Next on my list is to learn to use SolveSpace. For the "slicing" step I've been using Cura without any problems at all (high praise!)
I've also been playing with strapping a pen to the print head and using it to do plotting. The approach I've used so far is hideous: sending the text through Scribus, Inkscape, a command line SVG to GCode tool, a custom bash script to rewrite the GCode to something that works with the lashed-together plotter, and then printing from Octoprint. I have a tentative plan to create a CLI tool to go direct from text to GCode. So far my ignorance of TrueType fonts parameters has been the limiting factor!
I also also had to recompile and reinstall Marlin to allow for a BLTouch (tramming assistant), a faster motherboard, and plotting G500 Bézier curves! That was all rather reminiscent of the early days of PC wrangling when one had the lid open more often than not to get things working!
I've played around a little with WebXR (which used to be "Web VR"), mostly as a tool to get some basic knowledge of WebGL (the only external libraries I used were for the matrix math). Hilariously the WebXR bits were all terribly easy and the WebGL bits (I'd never used even OpenGL before) were terrifically hard! Still, it was fun, and I'd now feel confident picking up Babylon.js or Three.js to take that further.
My starting point for learning WebGL was WebGL Programming Guide: Interactive 3D Graphics Programming with WebGL which is a bit out of date, but not so much that I couldn't follow along. I'm still looking for a good follow-up book but haven't found anything quite suitable for my needs yet.