TIL that TiVo did actually allow you to update the version of Linux on the device, and GPLv2 requires the ability to install new versions!
https://sfconservancy.org/blog/2021/jul/23/tivoization-and-the-gpl-right-to-install/
miniblog.
Blackbird: a desktop PC with zero proprietary blobs! Running the Power ISA (like PowerPC), although it's not cheap.
https://www.osnews.com/story/133093/review-blackbird-secure-desktop-a-fully-open-source-modern-power9-workstation-without-any-proprietary-code/
Side-by-side diff display is really hard in the presence of long lines.
For difftastic, I'm experimenting with wrapping lines within each column. What do you think?
On the challenge of structuring discussion and the social consequences (contrasting Discord with IRC):
https://becca.ooo/discord
One nuance that's often missed when looking at OSS: it's mostly funded by goodwill.
It's very rare for maintainers to get enough sponsors to replace their day job. In many cases the person doing the work already has a job and is motivated by interest.
Recognising learned helplessness in engineering teams: https://www.okayhq.com/blog/status-quo-is-so-hard-to-change-in-engineering-teams
When a project is 90%+ open source, it's hard to sell a proprietary bundle on top. OpenOffice/Star Office had this problem: Star Office had a grammar checker as its main selling point IIRC.
This is a problem when the bundle funds much of the development work.
Generalising quasi-quotes to quasi-patterns, and how you can view HyperCard as a data editor with holes:
https://www.erights.org/elang/grammar/quasi-overview.html
A common UI antipattern is to make the structure directly reflect the implementation.
If you have 4 database tables, you build 4 screens. This may not reflect how users want to get things done.
Does this happen outside of software? I suspect it does, but I can't find examples.
The source code of the Bourne shell is full of things like this:
#define IFif(
#define THEN){
#define FI;}
This lets you write C that looks like shell scripts. This is sometimes called "bournegol"! https://oldhome.schmorp.de/marc/bournegol.html
It's always depressing looking at the SSH logs for my tiny server. I have it appropriately locked down, but it's a sobering reminder of how hostile the internet can be.
Cargo.lock is great for having a known-good set of library versions for your project. I regret not pinning the rust version earlier though.
I didn't even know the minimum rust version until I was enforcing it in CI!
I suspect the ratio of commit message characters to changed code characters is directly proportional to the debugging effort required.
I created a patch to a typescript project today, but accidentally reformatted it. When viewing my changes with difftastic, I didn't see any of the formatting changes!
This is kinda cool, but it would have annoyed the maintainer if I hadn't spotted it.
I've been wondering if line numbers should also be coloured if the line contains changes.
Here's how it looks in difftastic. I worry that it's slightly distracting, but I love how it makes small changes easier to spot (e.g. line 43 in the screenshot).
I'm experimenting with @VladimirSitnikv's diff display idea for difftastic: if a hunk is exclusively additions/removals (not both), just show one side!
Space is at a huge premium in diff displays, and this feels like a more efficient use of it.
I've been rewriting how difftastic calculates hunks, and it's beginning to look good!
Alignment is a crazy hard problem. Added/removed items have no corresponding item on the other side. You can't use even previous line text (see left line 219) as previous lines may not match.
I've heard the term 'mechanical sympathy' for the ability to write efficient code due to understanding how a CPU works.
Is there a legacy software equivalent? 'Architecture sympathy', where you've worked out the structure that the author intended and things begin to make sense?
When I wrote my first Rust program, I got the advice "just clone everything until v1 compiles". I think this OK advice, but I think a better rule of thumb is "used owned types as much as possible".
I spent a ton of time returning &str or &[T] and fighting the borrow checker.
I've often found reading diffs tricky when I have to scroll up to see what file I'm in, then back down to the changes I'm interested in.
In difftastic, I'm experimenting with printing the file name on every hunk displayed.
Showing 41-60 of 345 posts