- 24 Posts
- 43 Comments
lobsters__fanf@crustaceanson.theshelf.topMtoLobsters - all tags@crustaceanson.theshelf.top•[hardware, networking] ESP32 As Your Raspberry Pi’s Linux Wireless Co-processor
1·3 days agoRaspberry Pi boards have a separate wireless chip under the metal radio sheild: it isn’t built in to the SOC.
score 1 · canonical
lobsters__fanf@crustaceanson.theshelf.topMtoLobsters - all tags@crustaceanson.theshelf.top•[science] On the technical actions needed to ensure the continuity of UTC
1·3 days agoI haven’t been paying close attention to this story in the last year or two, so it’s a surprise that the change is happening sooner than expected (tho it wouldn’t have been a surprise if I had looked at the meeting agenda):
- continuous UTC will become effective on 20 May 2027,
- the maximum value for the difference |UT1-UTC| will be 3 600 seconds (1 hour), ensuring the long term continuity for UTC for several centuries,
The provisional plan agreed at previous treaty conferences (GCPM and WRC) was to make the change in 2035, but the prospect of a negative leap second encouraged them to make the change sooner.
However it seems that the near-term likelihood of negative leap second has become much lower this year. If you look at the earth orientation parameters finals.data (IAU2000) plots observe:
- the slope of UT1-UTC seems to be returning to normal, and (equivalently) the length-of-day is roughly trending slightly over 24h instead of slightly under
- the mysterious change in behaviour of the dX and dY charts that matches the change in slope of UT1-UTC seems to have reverted as well
It’s hard to be sure if earth rotation is really back to its pre-2020 behaviour, because much of the change that I’m observing is in the blue prediction section of the charts.
score 1 · canonical
lobsters__fanf@crustaceanson.theshelf.topMtoLobsters - all tags@crustaceanson.theshelf.top•[security, vcs] GitLab warns of max severity code execution vulnerability
1·4 days agoAn integer overflow in a regex compiler leading to RCE sounds entertainingly subtle, but it looks like no details are available yet. Which regex compiler, I wonder? Surely they don’t have a bespoke one!
score 1 · canonical
lobsters__fanf@crustaceanson.theshelf.topMtoLobsters - all tags@crustaceanson.theshelf.top•[databases] Building a Linearizable Log on READ COMMITTED Isolation
1·5 days agoThis article has a really nice example of a metastable performance effect:
The trigger in this case was a transient slowdown of transaction processing that led to the increase in the number of SIRead locks, which in turn increased the cost of every other write, turning the transient slowdown into a sustained effect.
score 1 · canonical
lobsters__fanf@crustaceanson.theshelf.topMtoLobsters - all tags@crustaceanson.theshelf.top•[python] Parsing JSON at tens of gigabytes per second… in Python
1·6 days agoThe interesting part is how to design a Python API for a fast library that allows the programmer to do something useful without reducing the performance to Python levels. Or rather, it would be interesting if there was a discussion of how they did it beyond a vague note about lazy object creation. And wouldn’t it be more interesting to include pysimdjson in the benchmark, since I guess it’s the closest to fastsimdjson?
score 5 · canonical
lobsters__fanf@crustaceanson.theshelf.topOPMtoLobsters - all tags@crustaceanson.theshelf.top•[math, vibecoding] noperts: Reproducible proofs of non-Rupert polyhedra
1·7 days agoThis features the newly-discovered “septopert”, a seven-vertex noperthedron, and a proof that this is the fewest vertices possible for a noperthedron.
Previously:
- Rupert’s property: cut a hole in a polyhedron big enough for an identical copy to slide through
- Rupert’s Snub Cube and other Math Holes
score 2 · canonical
lobsters__fanf@crustaceanson.theshelf.topMtoLobsters - all tags@crustaceanson.theshelf.top•[c] oh, apparently it's not possible to portably check for string-to-float conversion errors in standard c
1·7 days agoI checked what IEEE 754 says, and I was surprised! I wonder if any languages do what it specifies.
The 2008 and 2019 editions have the following paragraph. The 1984 edition has the same effect but not so clearly set out in one place.
When a NaN or infinite operand cannot be represented in the destination format and this cannot otherwise be indicated, the invalid operation exception shall be signaled. When a numeric operand would convert to an integer outside the range of the destination format, the invalid operation exception shall be signaled if this situation cannot otherwise be indicated.
Java and Rust specify NaN converts to 0 and overflow saturates when these situations cannot otherwise be indicated.
More entertainingly,
A language standard that permits implicit conversions or expressions involving mixed types should require that these be implemented with the inexact-signaling conversion operations below.
I tend to think that when a specification has a “should”, it needs a clear discussion of the considerations for when an implementation can disregard the “should”. Even more so when the “should” is widely ignored by existing implementations, in which case the rationale needs an honest explanation of why the spec and the implementations diverge.
score 2 · canonical
lobsters__fanf@crustaceanson.theshelf.topOPMtoLobsters - all tags@crustaceanson.theshelf.top•[devops] 64-Day Certificate Lifetimes Coming Feb 2027
1·10 days agoMake sure your ACME client supports ARI so that it automatically adjusts its renewal schedule and gracefully handles revocation and early reissue. Even 45 day certs will be renewed weeks in advance so a CA outage should not be a big deal.
score 1 · canonical
lobsters__fanf@crustaceanson.theshelf.topOPMtoLobsters - all tags@crustaceanson.theshelf.top•[devops] 64-Day Certificate Lifetimes Coming Feb 2027
1·10 days agoWhen will the madness end!
February 2028 when lifetimes are reduced to 45 days: https://lobste.rs/s/r2bamx/decreasing_certificate_lifetimes_45
score 1 · canonical
lobsters__fanf@crustaceanson.theshelf.topMtoLobsters - all tags@crustaceanson.theshelf.top•[compilers, security] Zeroization, part 1: Wiping can make things worse
1·11 days agoThe right answer should be
memset_explicit(). I was disappointed that this article never mentioned the Standard solution to this issue, or pre-standard versions such asexplicit_bzero(). But I don’t think that omission makes much difference because clang and gcc don’t seem to know enough aboutmemset_explicit()to avoid a spill to memory.Unfortunately
memset_s()is entangled with the Annex K portability problems and its crazy runtime constraint checking and exception handling, which makes it hard for compilers to implementmemset_s()as a sensible builtin.The special case for for
memset_s()is:Unlike memset, any call to the memset_s function shall be evaluated strictly according to the rules of the abstract machine as described in 5.1.2.4. That is, any call to the memset_s function shall assume that the memory indicated by s and n may be accessible in the future and thus contains the values indicated by c.
And for
memset_explicit():The purpose of this function is to make sensitive information stored in the object inaccessible. (footnote: The intention is that the memory store is always performed (i.e. never elided), regardless of optimizations. This is in contrast to calls to the memset function (7.26.6.1).)
score 1 · canonical
lobsters__fanf@crustaceanson.theshelf.topMtoLobsters - all tags@crustaceanson.theshelf.top•[programming] Anti-Patterns in Software Blogging
1·12 days agoFootnotes are always a mandatory disruption to the flow of reading, because readers can’t tell up front whether a footnote is worth the effort or not. Like when reading on paper, a footnote should always be in view and never require interaction, so it can be read with just a glance. Which implies that on a web page it’s better to lay out that kind of thing as an aside, without trying to emulate paper footnotes.
“Footnotes” on web pages are more like endnotes in books, where you have to keep an extra finger between the pages and repeatedly flip back and forth. (Even worse if the endnotes are used for both citations and commentary!)
score 1 · canonical
lobsters__fanf@crustaceanson.theshelf.topOPMtoLobsters - all tags@crustaceanson.theshelf.top•[programming] When random is not actually random enough
1·12 days agoAnother reason for using an API like
random_range()orrandom_choice()is that they can be faster than naïvely using %(I wonder how much we are fussing over uniformity out of habit, because it used to matter back in the days of bad 16 bit RNGs.)
score 1 · canonical
lobsters__fanf@crustaceanson.theshelf.topMtoLobsters - all tags@crustaceanson.theshelf.top•[zig] Zig 0.17.0 Release Notes
1·16 days agoYou can free memory without re-using it, thanks to virtual memory.
And thanks to 64 bit address spaces :-) It’s quite easy to consume 4GB at even relatively modest allocation rates.
score 1 · canonical
lobsters__fanf@crustaceanson.theshelf.topMtoLobsters - all tags@crustaceanson.theshelf.top•[merkle-trees, vcs] Git 3.0's upcoming SHA-256 default will be a costly mistake
1·16 days agopanglossian style:
Whoops, I meant polyannaish
(My brain tends to hash words on the first letter and isn’t the best at handling collisions…)
score 1 · canonical
lobsters__fanf@crustaceanson.theshelf.topMtoLobsters - all tags@crustaceanson.theshelf.top•[cryptography] SequenceHash: multihashing for the rest of us
1·16 days agoIt’s the same class of vulnerabilities as injection attacks. When you are hashing structured data it must be properly delimited to preserve the correct structure regardless of the contents of the data. If you concatenate without delimiters then an attacker can make you treat their malicious data as if it were your trusted metadata.
score 1 · canonical











I’m surprised that the list of issues does not include the implicit narrowing conversion from the string size to an int. (Especially since the list does complain about the implicit widening conversion in the str[] indexing expressions.)
Integer conversions need a great deal of care in C and C++ so this was the first thing that caught my attention. They had a lucky escape from UB in this case since narrowing conversions are implementation-defined, and an overflow to a negative index is caught by the loop guard (because it’s designed to cope with deliberate underflow due to an empty string). But the algorithm is quietly wrong for strings longer than INT_MAX.
I’d rephrase the title to, The problem with C++ safety: “it works” is often undermined by the language.
score 1 · canonical