Do users of immutable systems (i.e Nix or Guix) upgrade more or less often than other platforms?
There's less pressure to upgrade (unlike a rolling release distro) but in principle upgrading is easier.
Trying to let my 3yo try as many different technology interfaces as possible.
Mouse: not too bad, especially after reducing sensitivity.
Keyboard: WASD is easy to lose track of in a sea of buttons.
Controller: requires both hands together, which is tricky. Arguably the left hand is more important too, hard for a right hander.
GNU Make defaults to a single worker, and newer build tools (e.g. ninja) default to the number of physical CPUs. I wish there was an option for 'leave me a little bit of my machine to do stuff'.
Today I learnt that Racket *intentionally* doesn't have a traditional REPL workflow. The authors were concerned about students not understanding the state between the current session and the code on disk.
(Arguably Jupyter has some of these features now.)
I'm experimenting with syntax in examples. I don't really like Rust's `assert(inc(1) == 2)` syntax, I find it a little distracting.
I'm trying `inc(1) //-> 2`. The comment is rendered differently, and there's nothing before the sample code. What do you think?
I've started keeping a list of particularly interesting bugs and patches that I've worked on: https://github.com/Wilfred/interesting-code
The time that I once removed *a single closing paren* in Emacs is still my favourite.
Playing with Claude and my new programming language has made me add features that it wants. I think they're reasonable.
`for method in methods` -- custom syntax error explaining that `method` is a reserved word
`echo 'println("hello world")' | garden` -- eval snippets from stdin
Playing with optional type signatures in Python, I realise that the return type is the most important to me.
I'd much rather have a function with only a return type instead of a function with only parameter types. It's often quick to add too.
Make defaults to a single worker, and newer build tools (e.g. ninja) default to the number of physical CPUs.
I wish there was an option for 'leave me a little bit of my machine to do stuff'.
One nice feature of cargo that I wasn't previously aware of: you don't need to do anything after updating your Cargo.toml.
In npm, you need to remember to `npm i` after changing package.json. It's not declarative and the state can get out of sync.
I'm changing method definition syntax in my language:
// old
fun (this: Int) inc(): Int { this + 1 }
// new
method inc(this: Int): Int { this + 1 }
The original syntax was inspired by Go, but the new syntax is more grep-friendly and perhaps more readable. Not sure about the verbosity though. Thoughts?
I'm still experimenting with UIs for live (sandboxed) evaluation of tests. I've realised that you really want to highlight the failing assertion, not just the failing test.
Feedback welcome :)