Mark's rant

Rants of a polyglot programmer

On average I keep trying out new languages every 2-3 months or so, the biggest pain for me is not the new language itself but the biases I get from the previous languages that I work on. What do I mean by that? now let me rant about all the languages I've tried

Java, the JVM family and other Java stuff

  1. The JVM It's a love-hate relationship with this one. Every time I think I got away from JVM, something pulls me back.
  2. JVM again Wow are there so many to choose from
  3. The new keyword in Java - After working with C++ for 4+ years every time I see and have to type new I glare at it. This is an example of what I meant by bias from previous experience. Seriously why did you have to take this from C++ and create something that is different from C++'s new
  4. Java classes It's 2025 and I still have to write the equals, and hash functions. Well what about records? I want to use records but as I start using them I find out that some stupid library the I have to use in my project doesn't support records
  5. Getters and Setters Why bother making the variable private and creating getters and setters when you can always access a variable with reflection
  6. Reflection One of the worst things C++ learnt from Java, I'm taking about the C++26 reflections
  7. Why don't people do Inversion of Control instead of adding a dependency injection framework?? Why??

Scala

  1. I really want to use Scala 3, but something or some project or the other makes me still to Scala 2.13
  2. I want to use Scala 2.13 but the Scala community keeps talking me into using Scala 3
  3. JVM

Groovy, Closure and other less known ones (JRuby, etc)

  1. Had a decent run with Groovy as "Look, ma no braces"
  2. I'm going to have a separate section in Lisp, but closure is the lisp I always thought will work out for me but never did
  3. JRuby - I started my career with Ruby, so I always look towards coming back to it someday, but when I don't know

Spring

  1. I hate this thing with every inch of my being. 30s to start a hello world server, having a giant memory footprint why is this shit used!!!
  2. The magic annotations - There is a story of a person who came to an interview, and when the interviewer asked how to implement a circuit breaker they said @CircuitBreaker. The magic spring annotations actively make developers stupid

C++

  1. Anything after C++17 is shit, use Rust after that
  2. Anything before C++17 is decent as long as it does not involve ridiculous code.
  3. Please just still with RAII and never use new
  4. I can never remember the C++ specification
  5. CMake

C

  1. A comfy small language, which I can pickup anytime I want
  2. C is not C++
  3. vector, hashmap yeah I don't care just going to use an array
  4. Life's too short for memory safety
  5. End up spending 3-4 hours reimplementing a dynamic array or hashmap every time I write code

Rust

  1. A better C++ after C++17
  2. Just don't panic please, and please don't use the catch phrase "Written in Rust" in all projects, your projects are worth way more than that
  3. Cargo solves so many issues I had to endure with CMake
  4. Rust JNI is magically so much better
  5. Is that another new container in the new Rust version? (in fairness C++ has it worse)

Haskell

  1. Every two years once I use haskell to learn something from it and use it in my regular code
  2. "A monad is a monoid in the category of endo-functions". I really know what that means

Agda

  1. Super Haskell with Unicode, how can you not like this

Go

  1. Another comfy C like language, but please don't add stupid things like dependency injection in your Go code

Ruby

  1. Ruby is better than python, you can't convince me otherwise

Python

  1. This language is an opioid, starts off good and the next thing you know your dependent on this for literally everything all while it degrades performance
  2. No the python C++ interop is not straight forward
  3. Why does python allow calling super() later in the constructor
  4. Please come up with real types, not make belief ones
  5. No I don't want to do in the pythonic way of doing things

Lua

  1. One day I will use you, just wait

All the LISP(s)

  1. Guile - One day I will use you for writing my shell scripts, one day, just wait
  2. Racket - It started well and I realised it was too much work with this one
  3. Closure - I honestly though this will finally make me use LISP
  4. Chicken Scheme - Bet you didn't know about this one, but I did and I think I wrote one or two things with it
  5. Picolisp - This was the only one supported in tmux at that time

OCaml

  1. I want to use it, really use it but something just holds me back

Fortan

  1. Yes I like fortran, even FORTRAN 66 and there is nothing wrong with it
  2. A better python with the performance of C, every-time I pitch this to a client it get's turned down by a client dev with 30+ years of experience who used Fortran 66
  3. In all honesty modern fortran is good, please try it

Cobol

  1. I once noticed the GNU compiler supported cobol and tried a hello world, nothing more.
  2. This should be phased out, like seriously

Perl

  1. I like this one, even though a lot of people hate it. And I want it to exist

Javascript and the JS ecosystem

  1. I think it's misunderstood, by itself without too many dependency it's good
  2. "What the?" How did I get soo many packages installed from a since dependency
  3. NodeJS will eventually swallow up Typescript
  4. I predict that there will be a kubernetes js for orchestrating micro frontends in the future
  5. React is every where and it's good, but why is the web so bloated (I think I answered my question there)
  6. Electron JS eating RAM

HTML and CSS

  1. This is all you need for web development

ASM

  1. x86 is pathetic
  2. ARM is comfy
  3. RISC-V is amazing
  4. Maybe I should learn Z8000 ASM and make a retro game

Cuda / ROCM

  1. Cuda is not C++
  2. No, if you want to use a GPU you should start writing CUDA kernels, there are things like cupy, jax, cudf or at-least Thrust to do this
  3. AMD should really get things right in RoCM. Good hardware, but their software is just playing catchup

High Level Synthesis

  1. It's way better than writing Verilog, but a nightmare in it's own way

Verilog

  1. I don't know what I should say about this, what I write is not what I get in hardware

New age OSS hardware tools - Chisel, Dahlia, Calyx

  1. Chisel is amazing, wish it was able to run on more FPGA boards out of the box without me having to bang my head against the wall
  2. Dahlia and Calyx are amazing

MLIR

  1. This is the future

So what is the positive takeaway from all of this. Well these days I don't even see code anymore, I only see dialect and front-ends.

#rant #tech