1,432 karma · joined May 20, 2011
I implemented the current NAT system in Linux. In particular, avoiding port reservation in favor of squishing more connections into one IP address, as long as the remote address allowed us to differentiate.
This, in turn, means incoming traffic from a different address is unroutable. You no longer have a public endpoint. This is "poor man's firewall", but erodes our ability to have a server the way we used to.
I was a young engineer solving a specific problem, without considering the larger picture. It wasn't the only thing, but I feel it definitely moved the internet to a client/server infrastructure and a key equality was lost.
The final page, containing disclaimers (presumably from their standard spec sheets?) disclaiming any inaccuracy and warning "Not for use in life support" is adding, not removing, my confusion.
Thanks, I will resubmit, and let's pretend this never happened? Eeek...
When someone on my team started playing with this new Knoppix thing I was blown away: not just a rescue disk but a full-on distribution!
Moral: publish your hacks!
Hey, I found the email:
Date: Sat, 3 Jun 2000 02:17:47 +0200 From: Klaus Knopper <knopper@linuxtag.de> To: Paul.Russell@linuxcare.com.au Subject: Compressed Loopback device Message-ID: <20000603021747.A17496@linuxtag.de> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Mailer: Mutt 1.0pre3i Sender: rusty@linuxcare.com.au
Hello Mr. Russel,
I'm trying to use your compressed loopback device as found on the LinuxCare rescue CD-Rom, for my selfconfiguring Linux distribution that runs entirely from CD (including XFree and KDE).
Unfortunately, the version that I got of the cloop device seems to act quite instable (of course I recompiled it for Kernel 2.2.15, which should not differ all too much from 2.2.14). I blame it on the fact that the file handle is being read from stdin of insmod, but it could be something different.
With an SMP-Kernel, cloop.o crashes immediately on insmod when calling fget(0). With a non-SMP kernel, it kills the kernel block buffer system, shutting down all other block devices as well, when accessing certain large files on an ext2 filesystem within the compressed block device file. It seems that the ll_rw_block() routine fails in that case, and wait_for_buffer() never returns, locking up something in the kernel block buffer management.
Do you maybe have a newer version of cloop that I can start working on? Btw, I found and fixed the bug in extract_compressed_fs.c, but I think it would really be nice if the sources for the whole package could be downloaded from LinuxCare somewhere without having to get the whole CD-Rom image.
If I find the cloop lockup-bug before you have time to answer, I will send a patch.
Regards
-Klaus Knopper
---
Klaus Knopper LinuxTag 2000 - Europes largest Linux ExpoRsync has many options: I can totally believe that fixing a bug in one place broke someone's usage, to be fair.
https://medium.com/@tridge60/rsync-and-outrage-d9849599e5a0
(Disclosure: while I haven't talked with him in years, Tridge was my colleague and mentor for many years. I feel it is worth considering his view before joining a crusade)
The actual Claude "churn" is mainly test suite enhancement.
This suggests to me the underlying concern is "but I won't get paid for my craft!".
Hell hath no fury like a vested interest masquerading as a moral principle?
Linux kernel uses 8k stacks (TBH, it's been a while), but there's also some copy-on-write overhead. Still, this is not the C10k problem...
In early days of Blockstream I remember him and Greg Maxwell spitballing ideas about Bitcoin, and he was clearly intellectually feeling out the constructions as novel concepts.
I have spent my fair time with geeks, myself included, and this "shiny new thing" geek excitement is distinctive. And Adam is a typical nerd for whom guile does not come easy, if at all.
I realize this is not a transferrable proof, but I stand by it, for what that's worth.
I was at IBM when we gave up on big endian for Power. Too much new code assumed LE, and we switched, despite the insane engineering effort (though TBH, that effort had the side effect of retaining some absolutely first-class engineers a few more years).
For large works, the burden shifts, since you are increasing the maintenance load. Now we have the question of who will do the future work, and that requires judgement of the importance of the work and/or the author, and hence is a fundamentally political question.
For those like me who still require parsing assistance :
- We are Bob
- Red Rising
- Murderbot
An AI might be more likely to find it...
Anyway, he insisted on calling it just "Decimal Floating". Because there was "no point".
Signal has solved the identity part, now encourage others to build apps on it.
(2fa via Signal would be better than SMS, too, though I know this may be controversial!)
How does this help me check my implementation? I guess I could ask ChatGPT to convert your tests to my code, but that seems the long way around.
unicode-assignable =
%x9 / %xA / %xD / ; useful controls
%x20-7E / ; exclude C1 controls and DEL
%xA0-D7FF / ; exclude surrogates
%xE000-FDCF / ; exclude FDD0 nonchars
%xFDF0-FFFD / ; exclude FFFE and FFFF nonchars
%x10000-1FFFD / %x20000-2FFFD / ; (repeat per plane)
%x30000-3FFFD / %x40000-4FFFD /
%x50000-5FFFD / %x60000-6FFFD /
%x70000-7FFFD / %x80000-8FFFD /
%x90000-9FFFD / %xA0000-AFFFD /
%xB0000-BFFFD / %xC0000-CFFFD /
%xD0000-DFFFD / %xE0000-EFFFD /
%xF0000-FFFFD / %x100000-10FFFD
I mean, just define ranges.Also, where are the test vectors? Because when I implement this, that's the first thing I have to write, and you could save me a lot of work here. Bonus points if it's in JSON and UTF-8 already, though the invalid UTF-8 in an RFC might really gum things up: hex encode maybe?
This has the advantage that reboots can be handled fairly seemlessly too (though there will be reconnections then of).
See https://github.com/rustyrussell/ccan/blob/master/ccan/list/_...
cast a `struct Foo*` into a `struct Bar*` and access the Foo through it (in practice we teach this as the "strict aliasing" rules, and that's how all(?) compilers implement it, but that's not what §6.5 paragraph 7 of the standard says!)
Use the union type. Abusing it for aliasing violates the standard too, but GCC and Clang implement an extension that permits this. Alternatively, just allocate a char array and cast it as you please. Strict aliasing does not apply to char arrays if I recall. allow a signed integer to overflow
Is this still true? I thought that the reason for this is because C left the implementation to define how signed arithmetic worked, meaning you could not assume two’s complement, but the most recent C standard was supposed to mandate two’s complement.>> pass a NULL pointer to memcpy, even if the length is zero
> There is a reason for this. memcpy is allowed to start reading early as a performance optimization, before it does a branch that checks if reading is only.
Where did you get this idea from? It's not possible, since you can hand an address at the end of an array, and length 0. The array ends at the end of a page.
You can't read extra bytes in this case!