Y
HN Search
Hacker News Search
new
|
comments
|
top
|
jobs
kbolino
searching PlanetScale…
1.
▲
2.
▲
3.
▲
4.
▲
5.
▲
6.
▲
47 ms
·
781.
▲
by
kbolino
2y ago
Google could forge the email without DKIM (DMARC only requires one of SPF or DKIM to succeed, not both). While DKIM gives high confidence that the email came from Google, neither its presence nor absence says anything about John Smith.
782.
▲
by
kbolino
2y ago
This is exactly what DKIM means, and this is why it has wide adoption, while S/MIME and PGP-signed mail remain relegated to niche uses. The entire purpose of DKIM is not to prove that the individual behind john.smith@gmail.com sent t
783.
▲
by
kbolino
2y ago
> Windows from the start places the user at the controls Would this be the same Windows that now requires TPM2, UEFI Secure Boot, a Microsoft account to log in, and a special boot mode to use drivers not signed by Microsoft?
784.
▲
by
kbolino
2y ago
Early USB keyboards and mice were inferior to their PS/2 counterparts and it took a good few years for those issues to be overcome. Keyboards with N-key rollover and mice with decent resolution have tangible benefits for many types of
785.
▲
by
kbolino
2y ago
The difference is not linear but I switch between 60 and 144 Hz monitors, as well as ordinary and high-resolution mice, on a regular basis, and the difference is definitely noticeable. Neither of these things are "high-end" anym
786.
▲
by
kbolino
2y ago
They are not the same resource. Every resource is uniquely identified by its URI (normalized, ignoring the fragment), and so https://example.com/index.html and https://example.com/index.json are therefore n
787.
▲
by
kbolino
2y ago
Ok, I think we're talking past each other a bit. If on index.html, the script src is "example-1.2.3.js" and you change it to "example-1.2.4.js" then yes, you have changed the resource identified by index.html. If in
788.
▲
by
kbolino
2y ago
Updating a JS library has nothing to do with idempotence. The JS libraries used in <script> tags by HTML pages are absolutely part of the resource. But they aren't changed by GET requests, they're (usually) changed by the si
789.
▲
by
kbolino
2y ago
Strictly speaking, an inline view counter, which is incremented on each GET and included in the response, would break idempotence. Similarly, a PUT request that implicitly modifies a "last updated" field would also break idempot
790.
▲
by
kbolino
2y ago
Idempotence does not mean immutability, it means that two or more identical operations have the same effect on the resource as a single one. Since GET operations, by virtue of also being safe, generally have no effect at all, this is almost
791.
▲
by
kbolino
2y ago
Sure, that's part of it, if those tools are used. Daemons like the particular flavor of syslog and cron are also part of it. Patched kernels used to be more common, too. I listed a bunch of things that actually broke for me before in
792.
▲
by
kbolino
2y ago
Please note that the context of these points is in comparison to BEAM processes, as used by Erlang and Elixir. It is a comparative analysis of goroutines, not an holistic critique of them. I appreciate the mention of context cancelation, th
793.
▲
by
kbolino
2y ago
Every major release of every major distribution makes choices. These are choices about what software to include in the first place, what versions of that software to pin (especially for LTS releases), what default configuration to provide,
794.
▲
by
kbolino
2y ago
Off the top of my head, some of the things that have broken at an LTS transition that I've been involved with are out-of-tree kernel module builds, C code using OpenSSL, Puppet config, Salt config, RPM specfiles, Python code, Perl code
795.
▲
by
kbolino
2y ago
The bigger problem IMO is not that things break, it's that if you depend on one LTS release too heavily, and you wait too long to migrate from one LTS to another, everything breaks all at once. What should be a gradual migration as new
796.
▲
by
kbolino
2y ago
I can't imagine you leaned into any one of those releases, then. That sequence involves major changes to the kernel, the init system, the configuration management tools, the core libraries, Apache, Python, Perl, etc. Any one of those
797.
▲
by
kbolino
2y ago
I went through the migration from CentOS 6 to 7 and never want to do anything like that again. The good news, I guess, is that it never will happen again: CentOS is basically dead anyway, and it's not likely that so many core pieces of
798.
▲
by
kbolino
2y ago
I don't really think we're in disagreement here. The longer you wait, the harder the transition will be. LTS is a good foundation, and usually the right choice for "enterprise" or "business" settings, but you s
799.
▲
by
kbolino
2y ago
Leaning into LTS is nice until you near EOL and have to migrate everything in an often Herculean effort to work with the next LTS release.
800.
▲
by
kbolino
2y ago
POSIX never specified things like disk partitioning or package management, so this still requires something else to give you a working system in the first place.
801.
▲
by
kbolino
2y ago
You don't run a Dockerfile on every machine, and a bash script doesn't produce an image. They're not even solving the same problem.
802.
▲
by
kbolino
2y ago
Well, then it ought to go the other way. If you create foo_bar.go and bar is not a known build tag, you should get a compiler error.
803.
▲
by
kbolino
2y ago
I think we're talking past each other. Build constraints with "//go:build" already exist, I'm not making them up or proposing something new: https://pkg.go.dev/go/build#hdr-Build_Constraint
804.
▲
by
kbolino
2y ago
Thread locals are not lexically scoped, they are not stored as part of the function call stack, and mutating them is not expressed anywhere in the function signature. They are global variables with thread-local storage, not local variables.
805.
▲
by
kbolino
2y ago
Is the file foo_bar.go (no build tag line) compiled or not? If your Go version doesn't know of such a build tag as "bar", then foo_bar.go is unconditionally compiled. If Go in a later version adds "bar" as a known b
806.
▲
by
kbolino
2y ago
There is a lot of space between the spooky magic quasi-global errno integer and proper sum types. Go's errors are not magic globals nor are they mere integers, even if they aren't sum types either.
807.
▲
by
kbolino
2y ago
The ordinary send operation blocks if the channel is full (or has no buffer), but you can send (or receive) without ever blocking, if you can accept that the message is dropped instead. It's not the most ergonomic operation, though:
808.
▲
by
kbolino
2y ago
Most significantly: goroutines are not addressable. This means that, from application code, you cannot send messages directly to a goroutine [1], you cannot link two goroutines, you cannot terminate a goroutine from another goroutine, you c
809.
▲
by
kbolino
2y ago
Some major, visible components to be added in 2.6 over 2.4 were ALSA, LVM2, and udev, all of which remain in modern kernels. The 2.4 kernel series also had a lot of differences over 2.2 but many of them were "half-baked" compare
810.
▲
by
kbolino
2y ago
The file API is mostly fine. Opening with that is the wrong approach to me; the comparison with Rust doesn't really illustrate any serious issues. All of the complaints could be addressed with better documentation. The time API, on the
More ›