MiniRants

The problem with getting old is that you know all this shit and have seen it played out before, and you have to watch people making the same mistakes all over again. Gets really frustrating.

The problem with old people is that they think they know all this shit just ’cause they’ve seen it play out before, and don’t get that the world has changed and you’re doing it better. Gets really frustrating.

So, here’s my Old Man Shouts At Sky things. Mainly so I don’t have to repeat them.

Lisp has no syntax

Is it (let (a 1 b 2) ...) or (let ((a 1) (b 2)) ...)? Those are both perfectly valid ways of representing the syntax tree. Which is better? Well… it’s a judgement call. Personal preference. The computer doesn’t care.

We should all be programming in visual block languages

Structured text allows you to really nicely represent incomplete states, copy-paste, search-and-replace, etc. Syntax is not the hard part of programming.

You can loosen Rust’s shared-xor-mutable borrowing rules

These rules prevent iterator invalidation, like so:

let mut thing = vec![1,2,3,4,5];
for x in thing.iter() {
  thing.clear();
  println!("Kaboom: {}", x);
}

Most languages avoid this sort of thing with runtime checks in the iterator. If you want to loosen them, then you need to add those checks.