GithubHelp home page GithubHelp logo

Daveology 101

🙀️ 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

Java

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?

Rust

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:

3D Printing

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!

Virtual Reality

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.

Dave Minter's Projects

blog-dns-d icon blog-dns-d

Micro-blogging via DNS. You know it make sense?

define icon define

Trivial scripts for managing a helpful command line dictionary

hugo-xmin icon hugo-xmin

eXtremely Minimal Hugo theme: about 150 lines of code in total, including HTML and CSS

rs-define icon rs-define

Curate a simple dictionary at the command line

webxr icon webxr

Repository for the WebXR Device API Specification.

zoomies icon zoomies

Linux Gtk GUI to control zoom levels on my Logitech BRIO camera

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.