miniblog.

1
Avoiding the Maybe/option type to make intent clearer:
1
The design of Emacs' transient-mark-mode, and why power users might want to try disabling it: https://spwhitton.name/blog/entry/transient-mark-mode/
1
Adding a macro system to a compiled lisp seems really tricky. It's a ton easier when you have an interpreter that you can throw the macro definitions at.
2
The more I learn about register allocators, the less I want to write programs in assembly. It's really nice having a compiler minimise spills.
1
GitHub actions is really polished: it groups outputs by command, has good support for build matrices, and a growing ecosystem. It's a big feature that lets GitHub avoid being a simple git storage service. Issues are nice, but much more easily migrated.
2
I still associate gdb with "issue that will be tricky to debug", but I used it today with Rust. Everything just worked. I was investigating some stack overflows and all the metadata was correct and readable. I was pleasantly surprised :)
1
This resonated with me: a quality set of de-duplicated bug reports is valuable, and automatically closed issues can prevent that.
1
Normally I don't like segfaults: they usually mean something low in the stack is broken and it'll be a pain to debug. Writing assembly, segfaults are a good thing! They're a well-defined error state, whilst there are a whole range of messy failure states that are worse.
3
I like the lisp convention of 'defvar' (define a variable), 'defmacro' (define a macro). 'defun' feels a little weird though -- shouldn't it have been 'deffun'?
1
Why don't browsers use history or Alexa rank to highlight trustworthy sites? Gmail already warns me if I haven't emailed a person/domain before. This seems like a viable heuristic against phishing sites.
This announcement of VisualAge 1.0 for Java (released 1997) is cute. How could Java be revolutionary without a "new killer op-code or do-loop"? I particularly like how the free edition limits you to creating 100 classes.
1
strace is an incredibly handy tool when you need it. $ strace ./hello execve("./hello", ["./hello"], 0x7ffc64e063b0 /* 52 vars */) = 0 write(0, "\177", 1) = 1 In other news, writing to stdin is a definite sign of a bug.
Functions can have pre/postconditions specifying assumptions and legal ranges for inputs. What's the equivalent for pretrained ML models? https://gradio.app/blog/missing-contracts
It seems crazy to me that the definitive x86-64 resource is a PDF. It's a good reference, but having a canonical, linkable HTML resource would be really handy.
3
One thing I've learnt from writing a toy compiler is that this instruction usually means you have a bug: add %al,(%rax) This is the instruction encoding of all zeroes. It means you've jumped to the wrong place, or screwed up the size of an operand.
Showing 316-330 of 345 posts