John Goerzen writes about Linux, Debian, Emacs, systemd, networking, and self-hosted tools such as Syncthing and mesh VPNs.
HN links it for posts on Syncthing, p2p versus centralized systems, a Linux pipe bug, and the vi versus Emacs debate.
Distributed chain-of-trust RSS would be nice as a start.
Above everything else though, I am missing a decentralized, globally automatically replicated, blockchain-like storage network.
Think software releases. Package X releases version 1.3.11. We should have that in an IPFS-like storage network + several hashes (SHA-2, SHA-3 and what have you) so it can never be tampered with. We should also have that version linked to the previous one -- 1.3.10 (a la Bitcoin transactions I guess).
That's only one application. Another one would be: a network of friends and families all sharing e.g. huge photo travel albums. Or, if they are into it, torrented movies or music. Game hacks even. Whatever, it should not matter.
Wanna dive deep into a rabbit hole? Here:
- http://www.nncpgo.org/ (pay no attention to bad site, the idea of the project and what has been coded so far is solid)
- https://changelog.complete.org/archives/tag/nncp
- https://www.complete.org/nncp/
That's what we're missing. Everyone constantly acts like hosting 10GB somewhere is a huge deal and I am honestly sick of it.
Were I to retire financially tomorrow I'd work tirelessly on all this until my brain can no longer do programming.
We need a new internet. Badly. We need it 10 years ago.
BONUS POINTS: ability to automatically exchange keys in a neat UI e.g. I send a special message to a friend: "Join my inner circle of shared storage" or some such, they click it and the software does authentication and checking…
Last time I have seen data damage was about 2005, this was multiple SATA drives connected to a regular consumer motherboard running Linux (sorry, don't remember the brands). If I remember right, I think there was an 8-byte block damaged every few gigabyte transferred or so? So a very high number of damaged files given I had a few terabytes of data.
I never found the cause, because I just switched to a completely different system to copy data. I know it was not disk-specific because this was happening on multiple hard drives, nor it was physical damage, as SMART/syslog were silent, and reading the disk again was giving correct data. Memory was fine -- not ECC, but I did run a lot of memtest's on it.
Later on, I found some blog posts which mentioned the similar problem and claim it was result of bad SATA card, or bad cable, or even bad power supply. I remember there was original one made by Jeff Bonwick on his ZFS blog, but I cannot find it anymore. Here is a more modern link instead: https://changelog.complete.org/archives/9769-silent-data-corruption-is-real
I now have the homegrown checksumming solution which I use after each major file transfer, and I have not seen any data corruption yet (*known on the wood().
Your program will crash at runtime if you pass any string that isn't valid UTF-8 and you forgot to use bytes, and using .decode requires that your input has a valid, known encoding which is rarely true in the real world of messy data.
It's a problem with Unix filenames where the encoding is just a convention. A Python program that doesn't take great care can crash on a parameter that takes a filename even if that filename is just passed to a function like 'open' so no sanitisation or conversion is necessary.
This is a very real problem in hivex, our Windows registry library, where the Python bindings don't really work well. The Windows registry is a hodge podge of random encodings, essentially whatever the program that wrote the registry key thought it was using at the time. When parsed through Python as a string this means you'll get unicode decoding errors all over the place.
Also more in this article: https://changelog.complete.org/archives/9938-the-python-unicode-mess
> Of course, but most of this kind of corruption is trivial to recover from with just retries, that's why checksumming there works, but not on the filesystem level, where it can only detect corruption.
FS-level checksum saves you from the situation when the underlying storage thinks everything is okay but it is not:
> This means there was a data error on the drive. But it’s worse than a typical data error — this is an error that was not detected by the hardware.
* http://changelog.complete.org/archives/9769-silent-data-corruption-is-real
* https://research.cs.wisc.edu/wind/Publications/zfs-corruption-fast10.pdf
* https://news.ycombinator.com/item?id=13851349 (via)
It's not an either-or situation, but rather both-and hardware- and FS-level checks.
This classic essay always makes me chuckle. Especially when svn branching or mergeinfo goes awry
"If Version Control Systems were Airlines"
CVS:
"Watch out for layovers, though. It can take hours to merge new passengers into the formation properly, and it might take several attempts to take off afterwards."
SVN:
"At checkin time at the gate, if more than one person arrives with a copy of the same ticket, they are ushered into the “merging room” and each person is given a brick. The door is closed, something magical occurs, and the one person that emerges still able to walk is allowed to board the plane."
http://changelog.complete.org/archives/698-if-version-control-systems-were-airlines
Well, the "best editor debates" do keep people from being insular. :-)
Are the vi keybindings really better for your RSI? I've heard different stories. For example,
http://changelog.complete.org/archives/661-so-long-vim-im-returning-to-emacs
There's a new ergoemacs mode that I haven't tried yet: http://ergoemacs.org
Personally, I spend more time using IntelliJ, Xcode, and Sublime these days, but recently I started using Emacs again for a bunch of .org stuff.
By the way, there's an Emacs StackExchange which will hopefully make emacs more accessible.
http://emacs.stackexchange.com/questions/2671/how-can-i-get-fuzzy-code-completion