Which languages have the shortest/longest half-life?
If you didn't write any code in language X for five years, how easily could you continue maintaining an old project?
miniblog.
Linux 5.18 may drop support for the a.out executable format!
https://www.phoronix.com/scan.php?page=news_item&px=Linux-Remove-a.out
I really like instruction counts for measuring performance. It's not perfect, but it's a very stable metric, even if I'm listening to music whilst developing and benchmarking.
The Rise of the Stupid Network: a remarkable 1997 essay on what ISPs as dumb bit pipes enables, moving innovation to client devices on the internet, and avoiding the scarcity mindset from when hardware was expensive:
https://www.hyperorg.com/misc/stupidnet.html
TIL about Rust's NonZeroUsize, which is an integer that is never zero. Rust can optimise Option<NonZeroUsize> to be the same size in memory as usize!
https://doc.rust-lang.org/std/num/struct.NonZeroUsize.html
The irony of getting bad diff displays in difftastic unit tests is not lost on me.
Maybe I've been staring at difftastic output for too long, but I find this before/after display from my tests to be pretty hard to read.
Finding meaning in open source projects, the principle of charity, and avoiding a mindset of scarcity.
Really great reflections on the motivations of open sourcing Rails.
https://world.hey.com/dhh/i-won-t-let-you-pay-me-for-my-open-source-d7cf4568
TIL that npm does not allow you to unpublish popular packages!
https://docs.npmjs.com/policies/unpublish
How Racket started, the etymology of MzScheme, and why the GUI has older commits than the stdlib!
https://blog.racket-lang.org/2020/05/racket-is-25.html
I've come to realise that the goal of a diff tool isn't to say what's changed. You want it to say what *hasn't* changed.
Unchanged content is crucial for deciding how to group changes into hunks and how to align lines. You need matched content pairs for this.
TIl that >>> is a valid JS operator! https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Unsigned_right_shift
The ability to define small commands for npm with package.json is incredibly convenient and powerful.
I wonder why this hasn't caught on for other languages?
Displaying syntactic diffs is a really hard problem. GumTree has instructions for using it with Docker, so it's easy to try: https://github.com/GumTreeDiff/gumtree/tree/main/docker#usage
I compared some C++ with difftastic. GumTree does pretty well in the first case, but it's highlighting too much in the second.
OpenBSD's pledge is intentionally designed to be simple and easy to add to projects. It's still more granular than I expected: there are several different network permissions, and even a separate permission for tape drives!
https://man.openbsd.org/pledge.2
The effectiveness of fuzzing, the limitations of current research, your best options today, and a worked example: https://tiemoko.com/blog/diff-fuzz/
It's odd how few package hosting services also offer docs hosting.
It's such similar data: versioning is important for both code and docs. Linking to dependencies is important for both too.
It's additional implementation work, but there's a lot of overlap.
Tried fuzz-testing difftastic this morning (using cargo fuzz), and didn't find any crashes. I guess that's a good thing? I was slightly disappointed.
Judging by the output, I think the tree-sitter parsers were exercised much more heavily than the tree diffing logic.
I think it'd be really hard to replace git. Even if your notgit had 2x git's usability and 2x performance, there's a learning curve to any VCS tool. Incentivising new users would be tricky.
GitHub is also so widely used that adoption of anything else is hard.
Interesting people keep popping up on the difftastic issue tracker.
Here's a discussion of applying structural diff techniques to language-aware merging: https://github.com/Wilfred/difftastic/issues/86#issuecomment-1006790222
Showing 361-380 of 384 posts