HN user

comex

20,706 karma

comexk@gmail.com

https://mas.to/@comex

https://github.com/comex

[ my public key: https://keybase.io/comex; my proof: https://keybase.io/comex/sigs/zqyU4M2sWbnebjbK6rSSPEKZTFCW-LzNNW4ODMbaOOM ]

Posts68
Comments4,817
View on HN
digital-markets-act.ec.europa.eu 1y ago

EC proposed measures for Apple interoperability requests [pdf]

comex
5pts1
meta.stackexchange.com 1y ago

Stack Overflow Moving to the Cloud

comex
1pts1
www.reuters.com 2y ago

EU's Breton warns gatekeepers against silencing developers in Apple, Epic spat

comex
5pts0
security.apple.com 2y ago

Advancing iMessage Security: iMessage Contact Key Verification

comex
4pts1
www.businessinsider.com 2y ago

The Great Zelle Pool Scam

comex
3pts0
developer.apple.com 5y ago

Faster and simpler notarization for Mac apps

comex
2pts0
lwn.net 5y ago

Debian’s Election Results

comex
1pts0
morestina.net 5y ago

Rust async is colored, and that’s not a big deal

comex
2pts0
www.washingtonpost.com 5y ago

Apple loses copyright battle against security startup Corellium

comex
288pts58
covid19-static.cdn-apple.com 6y ago

(Apple/Google) Exposure Notification FAQ [pdf]

comex
2pts0
www.cnn.com 6y ago

How to design a hospital that's built in days, by someone who's done it before

comex
7pts0
www.reddit.com 6y ago

Vulnerability in sodiumoxide: generichash::Digest::eq always returns true

comex
5pts0
www.kxan.com 6y ago

North Carolina police take down Lyft with Austin passenger inside

comex
4pts0
www.youtube.com 7y ago

Why Are 96M Black Balls on This Reservoir?

comex
1pts0
www.nytimes.com 7y ago

What It Takes to Pull Off India’s Gargantuan Election

comex
1pts0
www.cnn.com 7y ago

Why Chicago train tracks are being set on fire

comex
7pts2
medium.com 7y ago

Deepmind’s Starcraft 2 AI’s Superhuman Speed

comex
2pts0
www.servethehome.com 7y ago

Yossi Appleboum on How Bloomberg Is Positioning His Research Against Supermicro

comex
9pts0
www.bloomberg.com 7y ago

Elon Musk’s claims in NYTimes interview called into question

comex
5pts0
www.reuters.com 7y ago

Japan mulls daylight savings proposal for 2020 Olympics

comex
2pts0
eia-global.org 8y ago

Illegal Production and Use of Banned CFC-11 in China's Foam Blowing Industry

comex
365pts52
www.washingtonpost.com 8y ago

How merchants use Facebook to flood Amazon with fake reviews

comex
2pts0
motherboard.vice.com 8y ago

Cat-And-Mouse Game Between Apple and Manufacturer of iPhone Unlocking Tool

comex
1pts0
www.nytimes.com 8y ago

Months Before Deadly Crash, Helicopter Pilots Warned of Safety Issues

comex
96pts46
github.com 8y ago

Python 3 migration prevents access to system Python

comex
2pts1
www.nytimes.com 9y ago

Nigeria’s Afrobeat Music Scene Is Booming, but Profits Go to Pirates

comex
3pts0
brson.github.io 9y ago

The Minimally-Nice Open Source Software Maintainer

comex
25pts2
www.nytimes.com 10y ago

Is Vast Inequality Necessary?

comex
2pts1
bgr.com 10y ago

Comcast’s data caps aren’t just bad for subscribers, they’re bad for us all

comex
7pts0
www.nytimes.com 10y ago

U.S. And China Seek Arms Deal for Cyberspace

comex
2pts0

I addressed some of these points in my reply to a sibling comment:

https://news.ycombinator.com/item?id=48856158

I may have been a little overly specific, since there are other issues besides cycles that also block splitting crates apart, but from what I’ve seen it’s very common for modules within a crate to have cyclic dependencies and therefore not be easily factorable into separate crates.

You’re thinking at the wrong scale. Rust allows circular dependencies just fine, within modules in a crate. And it’s extremely common for modules within a crate to have at least some circular dependencies - type X has some method (trait impl of inherent impl) that mentions type Y, and type Y has some method that mentions type X. In fact, I would be surprised if you could name me a single medium-size-or-larger popular crate that doesn’t have at least one cyclic reference between modules! Though, sometimes those cycles are not essential and could be avoided by splitting up modules. But sometimes they are. Either way, in C or C++ those modules would probably be their own compilation units.

That said, you also run into related parallelism blockers without cycles. For example, the orphan rules force most trait impls for a type to be in the same crate as the type definition. Also, a module which has no source-level cycles will often have cycles after monomorphization. In this case, Rust doesn’t prevent you from splitting the code into crates like it does with source-level cycles, but you do lose most of the actual codegen parallelization unless you can switch from generics to trait objects.

The issue is just that coding anything which uses shared memory is a lot of work.

Doesn’t that kind of prove the parent’s point though? In theory shared memory can do anything that threads can do. But if in practice some feature doesn’t get implemented in the multi-process design (because shared memory is hard), when it likely would have been implemented in a threaded design, then that’s still an advantage for threads.

The forbidding of circular dependencies is exactly what makes it hard to achieve parallelism! It means you have to draw nice clean module boundaries and split your compilation units there. Clean boundaries sound nice, except… what if the module is getting large? Can you just take half the module, ctrl-x, ctrl-v into a new file, and get faster compilation times without having to do any massive refactors?

In C, usually yes.

In C++, sometimes yes. It depends on how template-heavy the code is, but if you have some discipline you can keep most logic out of headers and thus easily splittable.

In Rust, almost always no, because of circular dependencies. You can try to work around it by adding `dyn Trait` everywhere, but that requires a lot of code changes and comes at big ergonomic costs (and a small runtime cost).

Which is why in practice, Rust compilation units are almost always larger than C++ or C compilation units. Rust can sometimes be competitive with C++ on compilation speed anyway, thanks to a smarter build system and not having to re-parse headers a billion times, but usually it's slower.

I wonder how this post was composed. It's full of LLM-isms, but is also pretty informative and not too fluffy - basically, higher-quality than I'm used to seeing from LLM blog posts, especially at this length. Perhaps it was composed based on a detailed human outline? Or perhaps, could this be the power of Fable?

I don’t know about “almost all”.

If the key has been purged but you can read RAM, then you can do two things:

1. You can extract whatever user data happens to be in RAM.

2. If you can either write RAM or reboot into your own OS, and then return the device to the unsuspecting user who will put in their password, then you can run a fake password dialog and get everything.

1 is bad, since there may be quite a lot of user data in RAM. But it’s not quite as bad as having the disk key, which gives the attacker all the data plus the future ability to decrypt or modify user data given only the physical disk. (Still, a better solution would be encrypting the hibernation image, preventing this attack entirely.)

2 is fully bad, but in many plausible scenarios (e.g. seized device) the attacker cannot just return the device to the user without them knowing something happened. Or even if they can, the method of RAM access may be one where reads are much more practical than writes, such as cold boot attacks involving physically swapping out the RAM.

Beware: As of a few months ago, when I tried to use the lifetime features shown off in this post, I ran into constant compiler crashes with very simple programs, until I gave up and wrote off the features as unusable. This happened on both stable and nightly compilers. I guess they work well enough for this TrueType interpreter, but I suspect they’re using a narrow subset of what the features are supposed to support. Or maybe things have been fixed very recently.

That said, I’m looking forward to using Swift lifetimes once they actually work!

Disabling SIP still leaves the root filesystem as read-only and signature-checked (this is referred to as SSV, 'signed system volume'). There is a separate command to disable SSV, but it breaks the ability to install OS updates and is rarely used. /usr/local is one of the paths that's redirected to the read-write data volume.

It's true that UEFI and ACPI cover a lot of ground whose equivalent on Apple Silicon is undocumented. But note that Linux on x86 does still rely on lots of reverse-engineered drivers to talk to various devices - not necessarily on servers which are designed to run Linux, but very much so on desktops and (especially) laptops.

It doesn’t need to be that complex, but it can be that complex without being slow. Claude Code’s interface is extremely simple. It has tons and tons of headroom to tack on performance overhead without it being noticeable at all. You just have to not do dumb things like redraw the entire UI every time a spinner spins.

PHP's Oddities 2 months ago

Depends entirely on the forum.

I remember it being somewhat common for people to make forum posts consisting entirely of a joke image. However, they weren’t called memes at the time as the word had yet to be popularized.

Personally I think I've developed a pretty good sense of when a question is easy enough that I can just trust the AI overview, and when I need to dig deeper. Google's original AI overviews were not reliable enough to ever trust, but now they are usually accurate summaries of the cited sources.

Job market statistics are actually probably a strong point for the AI overview. I just Googled 'us job market last month' and got an AI overview that accurately summarized a New York Times article for qualitative information ("surprisingly strong 115,000 jobs", "no-hire, no-fire"), followed by accurately summarizing the official Bureau of Labor Statistics website for raw stats, followed by some other stuff I didn't check. Not everyone would prefer The New York Times' take, but the citation prominently displays their name and logo, so you can tell what you're getting.

Weak points are when the topic is obscure enough that the AI overview conflates two different things or overgeneralizes, or trusts the wrong sources.

AFAIK this is not secure. The SSH protocol doesn’t require the server to know the client’s public key for the connection to succeed. Instead, the client actively sends its public key to the server while authenticating, and the server just decides whether to allow a connection or not. OpenSSH will typically match the client’s key against a fixed list of keys, but nothing stops a rogue server from allowing connections from any client key. In fact, OpenSSH itself can be configured to do this using AuthorizedKeysCommand.

Well, for one thing:

Decline to buy: property stays with bank (auction abstracted out)

Ignoring an entire game mechanic is really stretching the definition of “abstracted out”…

Also, at the bottom it defines a “Liveness: someone eventually wins” property which I believe cannot be proven. Monopoly doesn’t have any rules forcing the game to end eventually. There is only a probabilistic guarantee, and even that only applies if the players are trying to win; if the players are conspiring to prevent the game from ending then they’re unlikely to fail.