miniblog.

mrustc, the compiler for Rust written in C++, can now bootstrap rustc 1.39.0! https://github.com/thepowersgang/mrustc/blob/master/ReleaseNotes.md#2021-04-04-rustc-1390-bootstrap
I've just added `and` to my toy lisp compiler: https://github.com/Wilfred/proper-compiler-hat/commit/af5c77e30ecbf4884e71c1177a086337aa74d237 It's just a plain function, not a macro or special form. Is that so bad? I've seen confusing uses of `and` with truthiness e.g. `(and maybe-nil (compute-default))` and I'd rather avoid that.
Thoughtful talk on the compile time, runtime and cognitive overhead of abstractions: https://www.youtube.com/watch?v=rHIkrotSwcc
Suffix syntax (e.g. foo.field or result_bar?) tend to provide a better IDE experience. Languages deliberately tailor features for this, e.g. Rust has .await. Is this a historical accident? I can certainly see how parsing unfinished suffix syntax is easier.
The optimal size for a hobby project seems to be medium. Big projects are more work to change. Little projects have too few opportunities for tinkering/minor refactoring.
C-Reduce has a fun concept of "interestingness", the predicate that you are trying to preserve whilst shrinking your program: https://embed.cs.utah.edu/creduce/using/ It's a great term: previously I've used the boring "property under test".
Have you ever wondered what happens if you hook up a lexer to a diff algorithm? I was feeling smart until I built it and saw the result. The longest common subsequence here is ( ) ( ) ; which is not terribly helpful. I'm going to have to look at proper tree diffing techniques.
Photo
When your codebase reaches a scale where you have bots automatically detecting and cleaning up dead code! https://www.infoq.com/news/2020/06/uber-piranha/
It feels really un-Emacsy (to me at least) to have a UI with different font sizes. It's totally supported, but it seem to run against the "everything is an interchangeable buffer of text" vibe.
Technical debt laundering: using a new feature as an excuse to do much-needed refactoring of your code.
Today I learnt that C includes a hash table implementation! libc is bigger than I realised. https://linux.die.net/man/3/hsearch
I recently bought a bangle.js and I'm really impressed. On the first day I had a JS REPL running with their hello world! The firmware is FOSS but you write JS apps on top. It's really hard to break. There's already an 'app store' too.
Photo
A cute AMD hardware bug (2019) where RDRAND always returned the same value! https://arstechnica.com/gadgets/2019/10/how-a-months-old-amd-microcode-bug-destroyed-my-weekend/
If software is trending towards small team/solo maintainers, what are the consequences? I imagine that it will be more common to switch between libraries with different designs. Maintainer idiosyncrasies will be more prominent too.
Open source is increasingly a collection of projects, each run by a single maintainer; https://nayafia.substack.com/p/22-working-in-public
Introducing a severity scale for code reviews, and pre-reviewing your own code: https://www.netlify.com/blog/2020/03/05/feedback-ladders-how-we-encode-code-reviews-at-netlify/
Thinking more about software pricing trends: boxed software was often £30+ when I was a kid. Paying that amount for a smartphone app seems expensive today. https://twitter.com/_wilfredh/status/1371687627141750787
2014 article on how hard it is to make money from OSS, and how Red Hat is an outlier. Perhaps OSS has made software cheaper overall? https://techcrunch.com/2014/02/13/please-dont-tell-me-you-want-to-be-the-next-red-hat/
Finally got dynamic string allocation working in my toy compiler! https://github.com/Wilfred/proper-compiler-hat/commit/cd726f45eb0540eb54c2c3c7e0ab75a651c46a43 Implementing intrinsics made this way easier: writing a single large assembly function is a pain.
This is a really fun approach to mode based editing: a clutch! When it's depressed you're in insert mode, and release to go back to command mode. https://github.com/alevchuk/vim-clutch
Showing 261-280 of 345 posts