HNHacker News
TopNewBestAskShowJobs

pilif

15,048 karma · joined February 9, 2009

https://mastodon.social/@pilif - http://pilif.me

[ my public key: https://keybase.io/pilif; my proof: https://keybase.io/pilif/sigs/yHf-RJm7d2dmr7kcjUe4g3m9d2dB0u2Nsu8kpLFFBtQ ]

submissionscomments
pilif··on Apple Intelligence is available today on iPhone, iPad, and Mac
All of it is opt-in and even requires joining a waiting list.
pilif··on C++ String Conversion: Exploring std:from_chars in C++17 to C++26
There could be an enum value for "read a partial number"
pilif··on C++ String Conversion: Exploring std:from_chars in C++17 to C++26
I get that this is a super low level API, but yet, my expectation about an API that parses a buffer with length to a number and which has a specific enum for error cases as its return type would be that when asked to parse "9not a number" that I would get an error response and not a "the number you asked me to parse is 9 and everything went well" as the result.

The whole reason for returning a result enum would be so I don't forget to also check somewhere else whether something could possibly have gone wrong.

Especially when there is a specific result type.

pilif··on C++ String Conversion: Exploring std:from_chars in C++17 to C++26
how can this be the ~5th iteration of a very wide-spread use-case and still contain a footgun?

The API looks like it's following best-practice, with a specific result type that also contains specific error information and yet, that's not enough and you still end up with edge-cases where things look like they're fine when they aren't.

pilif··on Every bug/quirk of the Windows resource compiler (rc.exe), probably
What an amazing article. And what amazing analysis of this 30 years old blob. This was super enjoyable to read.

My only tiny gripe is that with the first quirk the author who insists that his implementation is bug for bug compatible lists the other implementations behavior and explains that they are very different from the original.

And then they proceed with additional quirks where the supposedly bug-for-bug compatible implementation also is different in the same way as the first example in that it produces an error message rather than the quirky output.

Don’t get me wrong: errors rather than quirks is much better behavior, but then don’t claim to be bug-for-bug compatible, nor roast other implementations for doing the same thing.

pilif··on Web components are okay
And not just that - also dependencies of dependencies.

You have $FRAMEWORK using $BUILD_SYSTEM and depending on $NODE_VERSION which is running on $OS_VERSION in $ARCHITECTURE.

Eventually, there will be a security flaw in $OS_VERSION which will force you do update the OS (which eventually will be a major OS update) and on which $NODE_VERSION might not run any more at which point you find out that $BUILD_SYSTEM doesn't run on newer node any more because it relied on a package that shipped some binary do do its thing and the source code of that binary doesn't compile on later GCC versions any more.

And now you're in deep-shit because of a very distant but yet super important security issue that brought your house of cards crumbling down.

This is not a theoretical issue either. I've seen this happen to applications with a JS frontend that was only as little as 5 years old. It was impossible to build any more and needed some serious changes because of underlying OS updates cascading up the stack.

The fewer dependencies you have and the smaller they are, the bigger is the chance that things keep running as you exchange parts of your stack when you're forced to and the bigger the chance that you will remember what you have to do to rebuild if disaster strikes.

I'm aware that for many people 5 years is a huge time span though and that you either start a new thing every year or two at which point none of this matters, or you're at the other extreme and run RHEL and are able to back-port security patches manually if the need arises at which point none of this matters either.

But if you're in the middle of the two extremes, then keeping up to date incrementally is super important and being able to do that quickly and easily is inversely proportional to the amount and size of dependencies.

pilif··on Fixing a bug in Google Chrome as a first-time contributor
I'm coming out of reading this a bit dismayed as I really thought that the `if let` (to use the swift conventions) pattern would finally be a good and reliable solution for these silent errors.

And at the same time, reading the code in question and putting myself into the position of a person writing the code, I would totally have thought that I'm handling the "is there a global scope" case, totally forgetting that the same check is also checking the "is the global scope a `WorkerGlobalScope`" condition but mixing both checks into a single return value.

And here we are with the code happily chugging along and (for all intents and purposes) causing data corruption (by causing network requests to not be logged and not respect policy).

And here I was thinking that `if let` is fixing exactly this problem while also providing the best ergonomics.

So here we are back to the drawing board, ready for the next pattern which will compromise on ergonomics in some as-yet unknown way in the future.

pilif··on CrowdStrike's Falcon Sensor also linked to Linux kernel panics and crashes
> We're in the process of operationalizing an opt-in to this technique

oh the jargon

> We're making progress by the minute

I better hope you do.

pilif··on Second factor SMS: Worse than its reputation
I think conversion rate and support cost associated with 2FA-OTP are worse enough for SMS to still be worth it, especially as a phone number also gives you a good marketing ability and a reasonably unique identifier for a user.

If not, everybody would be using OTP already.

pilif··on Zed on Linux Is Here
If I were to serve a targeted exploit like this, I would certainly hide it in the binary and have the binary determine whether it's running in the targeted environment and then run the payload.

It's much, much easier to hide a malicious payload in a binary than an easily auditable shell-script. And it's much easier to make a decision of whether the payload should be enabled or not if you are already running on the local machine.

If you don't trust a publisher, you really can't run anything of theirs. Shell script or, especially, binary.

pilif··on Zed on Linux Is Here
True, but where's the difference between downloading a binary and executing it vs. downloading a script and executing that which will then download a binary and execute it?

In both cases, you trust the publisher and in both cases the publisher gets equal access to your machine.

Oh - you mean you're downloading the source code, then audit it, then compile it and only then you run it?

That's super great. That has saved you from the xz backdoor and all other supply chain attacks and will be of great help to you in the future. Let's hope no backdoor ever slips past your code review.

pilif··on Zed on Linux Is Here
Of the three distros I know to more detailed extents, Debian, Arch and RedHat, none of those make it easy to install and keep updated a third-party package through the built-in package manager.

In all cases, signatures and repositories need to be configured, often requiring both root access and usage of the CLI and in all cases much harder than running an installer script (which might be doing exactly these steps).

To achieve easy means of installing using distro package managers means including the application in the distro itself, but now it's beholden to the distro's software update policies and thus stuck on that specific version for years or even decades.

That is not what a v0.something of an end-user centric desktop application wants for themselves.

pilif··on Sublime Merge
I'm not OP, but here's my two qualms with using Sublime Merge for blame:

* it doesn't do a good enough job following renames (in cases where you would need to use `--follow` to `git log`. `git gui blame` does.

* while there is a "blame parent commit" feature, it's a bit hidden and it's super slow to provide the updated blame.

pilif··on Sublime Merge
Sublime Merge is cough sublimely good at performing 3-way merges.

I don't like it as much as a generic git frontend (nothing beats the command line once you're used to it, but for 3-way merges, it's absolutely perfect and I have yet to see anything better.

Another very good tool for 3-way merges is meld, but the macOS port (where I do most of my development work on) is not very good, mostly because the GTK macOS port isn't very good.

pilif··on iDOS 3 Rejected by Apple
Called it: https://old.reddit.com/r/apple/comments/1c8vkid/idos_is_hope...
pilif··on Why Dolphin Isn't Coming to the App Store
Given the sandboxing and the security architecture of iOS, my conjecture is that apps could be perfectly safe even in light of the use of undocumented APIs (calls to which can be and are obfuscated even in today's setup) and accidental security flaws (which can and still do exist even in today's setup).
pilif··on Why Dolphin Isn't Coming to the App Store
The problem is that a JIT implies that you can load arbitrary binary code into memory and execute it.

This means that your app can load arbitrary updates from the server and execute them, for example based on some purchase not made in the AppStore.

This is all about keeping the 30% tax and only tangentially about security.

pilif··on eBay will no longer accept American Express cards over 'unacceptably high' fees
Would they? Apple Pay and Google pay are just proxies for the actual cards, so if a play does not accept a type of card, that will also be true for the virtual card presented by Apple Pay.

I agree about PayPal, but they charge their own fees and abstract the source of the money away completely. Presumably they have a better deal with Amex

pilif··on iTerm2 3.5.0
Checking the box is not enough. You also need to provide an API key for iTerm do be able to do any kind of uploads to OpenAI.

If your auditor does not believe that with the checkbox unchecked and no API key provided, iTerm will not talk to OpenAI, how do they believe any other software you run does not secretly upload stuff to OpenAI?

What's different between a piece of software claiming to not support OpenAI at all vs. one that claims to support OpenAI if the user provides an API key in light of the possibility that both might be lying (if that's an auditors concern)

With iTerm your auditors at least get to check the source code...

pilif··on RubyGems is not vulnerable to the xz/liblzma backdoor
That's my first point though. If you only take into account what is currently known about the backdoor, unless you are a linux distro building a liblzma debian or RPM package, you are not vulnerable to the backdoor.

So I believe, given the current state of knowledge, that all the projects that are not about building liblzma packages are not vulnerable and thus their postings about them not being vulnerable is noise.

pilif··on RubyGems is not vulnerable to the xz/liblzma backdoor
That's my second point. Just checking for version <= 5.6.0 is not safe either and is exactly what the original article has done.

But if all you use as the basis of the vulnerability analysis is the version constraint and what we currently know about the backdoor, then, unless you are a distro building a liblzma distro package, you will not be vulnerable no matter the version (which was my point 1)

pilif··on RubyGems is not vulnerable to the xz/liblzma backdoor
no. We have to assume any commit of the threat actor to have been malicious. Given that 5.4 contains code by the threat actor, it's not safe to claim to not be vulnerable. Not vulnerable to this specific backdoor, sure. But I don't feel like 5.4 is safe either.
pilif··on RubyGems is not vulnerable to the xz/liblzma backdoor
While this is great news, in my opinion, given the facts surrounding this backdoor, I think this article is misguided due to two reasons:

1. the scope of the known backdoor is very constrained to only be inserted into native OS packages. As such, I don't think we need every other user of liblzma to post blog posts that they are not vulnerable independently of which version they embed. This is at best noise and at worst dangerous because

2. the bad actor has been submitting patches to liblzma for much longer than the 5.6 release and given the ingenuity of the attack, it's too early to claim that a project is not vulnerable to backdoors simply because there might already have been other "presents" left by the threat actor.

Given these two points, I really believe we should not be posting "hey we are not vulnerable" blog posts here because at best they are useless noise (nobody aside of debian or redhat and their downstreams is vulnerable) and at worst false assurances.

pilif··on Apple hit with over 1.8B euro EU antitrust fine in Spotify case
Can you point to a source of this? I think this was true in the past but isn't any longer. YouTube Premium is more expensive through iOS for example.

What's not allowed is telling the users that it's available for cheaper in other places. But you can charge as much as you want.

pilif··on An HTML Switch Control
The control reflects how the equivalent of checkboxes look on mobile devices in native apps.

So this is a great way to get to use the same control as the rest of the OS uses without having to implement it yourself in CSS and JS. This means that as the OS changes, this control will adapt, including accessibility affordances like showing a 0 or 1 on the control to denote state.

I see why you don’t like the control, but this is what mobile OSes use (mainly because a checkbox the size required for a finger to hit comfortably would look ridiculous) and what users are now used to and what many websites in their mobile modes are emulating and not getting quite right.

Being able to have access to the native control is a huge benefit I think.

pilif··on Tell HN: Hacker News now supports IPv6
One of the features of IPv6 is address autoconfiguration, obviating the need for a central authority like DHCP on v4.

However, that only works with a /64 prefix and given that larger sites might want to have multiple subnets, that’s why most assignments are /56 or /48.

But still. If all assignments were /48s, that would still leave room for 281 trillion networks which even I believe is enough for the foreseeable future.

If the number space is so big, it makes sense to take advantage of it if that allows for other additional features (like SLAAC)

pilif··on Postgres Incremental Backup
By keeping the whole WAL.

The incremental backup would be just the WAL segments excluding the base backup.

With this new feature, the WAL segments you need to store are much, much smaller.

pilif··on Woman jailed after RentaHitman.com assassin turned out to be – surprise – FBI
> why isn’t being a customer also considered parody

I'm pretty sure you can claim that in a court. However, making an offline appointment with a hitman and then making them an offer and even making a first down payment for the service is probably difficult to explain away as parody.

pilif··on Woman jailed after RentaHitman.com assassin turned out to be – surprise – FBI
According to the article, in this case it was a (pretty obvious) parody website and the webmaster called law enforcement on their own.
pilif··on Why we don’t generate elliptic curves every day
This is very timely for me. Only two weeks ago, I learned that the bouncycastle Java FTP client library refuses to talk to servers that run with custom dh_params and I was wondering why because my intuition told me that custom parameters should be better than parameters shared between everyone.

And now only two weeks later, I get a very good explanation as to why, like often in crypto, intuition was wrong

← PreviousPage 3 of 34Next →