HNHacker News
TopNewBestAskShowJobs

hyperpape

10,248 karma · joined July 16, 2012

Writing at https://justinblank.com, code at https://github.com/hyperpape

If anything I've written on this site seems interesting, or confusing, or you think I'd be interested in something you've written/read, please let me know: hn@justinblank.com.

submissionscomments
hyperpape··on Anyone can access deleted and private repository data on GitHub
Since Netflix neither allows anonymous users to fully download Frozen without DRM, nor allows authorized users to upload derivative works that are then redistributed to the public, I think there may be some relevant differences here.
hyperpape··on Anyone can access deleted and private repository data on GitHub
You're right that I shouldn't have given the impression that content addressed storage means as a technical matter that public content must never disappear. The phrasing was a bit sloppy. GitHub could, as a technical matter, choose to hide content that had previously been made public.

Nonetheless, given that GitHub exists to facilitate both anonymously pulling the entire history of the repository, and given that any forks would contain the full contents of that repository, it is very natural that GitHub would take the "once public always public" line.

> and I mean commits made to private repositories being public is always a security vulnerability no matter how much github claims it's intended

I specifically said the third use case was different, because it is the one that doesn't involve you explicitly choosing to publish the commits that contain your private information. I did not and would not defend GitHub on that point.

hyperpape··on Anyone can access deleted and private repository data on GitHub
For the first two, git is based on content addressable storage, so it makes sense that anything that is ever public will never disappear.

I can sympathize with someone who gets bit by it, as it might not have occurred to them, but it’s part of the model.

The third strikes me as counter-intuitive and hard to reason about.

P.S. If you publish your keys or access tokens for well known services to GitHub and you are prominent enough, they will be found and exploited in minutes. The idea that deleting the repository is a security measure is not really worth taking seriously.

hyperpape··on Why is it so hard to share links on LinkedIn?
Hillel Wayne asked this on LinkedIn, and people came out of the woodwork to suggest they'd personally measured it. It does sound like something that could be a superstition, but it seems to be real.
hyperpape··on Ask HN: Fast data structures for disjoint intervals?
A comment that's orthogonal to the datastructure you're choosing, but do you really need u32?

If you need second level precision for scheduling, you probably do, but a u16 will cover a 45 day range with minute level precision.

hyperpape··on Ask HN: Fast data structures for disjoint intervals?
What if you structure the "lists" so that each "freelist" contains all slots >= 2^n units of time? Then you only ever need to search the list that's the next size down from your target slot?

This will be bad for write performance, but solves the problem of needing to do multiple searches to find the next available slot, and you mentioned that you might not mind sacrificing write performance.

hyperpape··on All the existential risk, none of the economic impact
Anything that removes the need to pay salaries would have massive impacts on productivity numbers. (I am not arguing that would necessarily be good[1], but it would show up in the economic stats, in line with bglazer's point).

[1] The big brain take behind "necessarily" is that: "no salaries, everything is free" seems cool, "no salaries, a few people hoard all the wealth" seems bad.

hyperpape··on 10% of Cubans left Cuba between 2022 and 2023
> No one is opposed to the legal immigration of skilled workers.

Steve Bannon, Trump's chief strategist in 2016, argued that the quantity of Asian CEOs in Silicon Valley undermined "civic society" https://web.archive.org/web/20161117164322/https://www.theve....

There absolutely are a lot of people who want to restrict legal immigration. If you deny that, you're just pretending that you're not helping them out.

hyperpape··on Judge dismisses DMCA copyright claim in GitHub Copilot suit
From the article:

> The most recently dismissed claims were fairly important, with one pertaining to infringement under the Digital Millennium Copyright Act (DMCA), section 1202(b), which basically says you shouldn't remove without permission crucial "copyright management" information, such as in this context who wrote the code and the terms of use, as licenses tend to dictate.

> It was argued in the class-action suit that Copilot was stripping that info out when offering code snippets from people's projects, which in their view would break 1202(b).

> The judge disagreed, however, on the grounds that the code suggested by Copilot was not identical enough to the developers' own copyright-protected work, and thus section 1202(b) did not apply. Indeed, last year GitHub was said to have tuned its programming assistant to generate slight variations of ingested training code to prevent its output from being accused of being an exact copy of licensed software.

So (not a lawyer!) this reads like the point about GitHub tuning their model is not a generic defense against any and all claims of copyright infringement, but a response to a specific claim that this violates a provision of the DMCA.

I don't know whether this is a reasonable defense or not, but your intuitions or mine about whether there is a general copyright violation or what's fair are not necessarily relevant to how the judge construes that very specific bit of legal code.

hyperpape··on The sad state of property-based testing libraries
The distinction between property based testing and fuzzing is basically just a rough cluster of vibes. It describes a real difference, but the borders are pretty vague and precisely deciding which things are fuzzing and which are PBT isn’t really that critical.

- Quick running tests, detailed assertions —> PBT

- Longer tests, just looking for a crash —> fuzzing.

- In between, who knows?

https://hypothesis.works/articles/what-is-property-based-tes...

hyperpape··on The physics of airplane flight
> You will notice that past a certain angle, the lift starts to decrease, and is replaced by a lot of drag, a force trying to slow down the wing. This is called a stall, and it limits how much lift a wing can create at any given speed. A proper airfoil geometry can generate more lift before stalling, and creates less drag for a given amount of lift, which is why most airplanes use them.

I'm a bit of a novice, so it sounds like this is the same explanation you're giving. What is the article leaving out?

hyperpape··on Discovered June 16th, large asteroid to pass between Earth and moon on Saturday
I can't vouch for this being perfectly accurate, but it's appeared here on HN before: https://neal.fun/asteroid-launcher/
hyperpape··on Code Models
This looks like it's building on top of this prior JEP https://openjdk.org/jeps/457.
hyperpape··on A Single Vulnerability Can Bring Down the JavaScript Ecosystem
Perhaps, but it could also be fixed/mitigated by cycling the cache state and blocking bots. It might also be something that can be blocked in a web proxy.

It's interesting, but I share the thought that the impact is overstated.

hyperpape··on Ruby's Timeout is dangerous and Thread.raise is terrifying (2015)
Even processes are not safe if they modify state outside of themselves (files on the filesystem or whatever else).

It seems to me that the root issue is that encapsulation becomes our enemy here. We want to be able to call some code and not care about the details of how it is implemented. But reliable cancellation requires some sort of design that lets us know exactly what side-effects code has, control them, and force them to be done in a way that's transactional, while still letting us cancel the operation at the right time. We don't want a black box.

I suspect the two general solutions are: 1) elbow grease: manually inspecting the code that you're calling to understand whether it's safe to cancel and designing a bespoke sandbox: a thread in some cases, a process in others, re-architecting the code you're calling in others... 2) something about algebraic effects or capability systems that I can't speak to because I only have vague ideas how they work and haven't applied them in anger.

hyperpape··on Ruby's Timeout is dangerous and Thread.raise is terrifying (2015)
This is a minor inaccuracy in Julia's post, Thread.stop() is deprecated, but it has not been disabled or removed: https://docs.oracle.com/en%2Fjava%2Fjavase%2F17%2Fdocs%2Fapi...().

InterruptedException is better, but requires something closer to cooperative multi-tasking. If the thread is in a long-running loop that's not doing IO or it swallows the InterruptedException, you won't actually be able to kill the thread.

At work, someone had implemented an interface that let you kill a thread prior to my joining the company, so I found out that the warnings are very real when someone did that and it left the application unable to fetch DB connections.

hyperpape··on Instead of “auth”, we should say “permissions” and “login”
> You may find that your user account has permission to read the employee salary database. However, you may not be authorized to read that database by corporate policy because you are not a manager.

It's true that there are technical enforcement mechanisms, and corporate policies, but it is false that the former must be called permissions, and the latter must be called authorizations. The policies can easily be called either authorization or permission. It is true that we refer to e.g. Unix file permissions, and a corporate policy is more likely to use "authorization" but this is not a semantic difference--the corporate policy would be correct and binding if it used the word permission.

If a fellow employee asks you "do I have permission to do this?" you must say "no" (or alternately "you're not permitted, even though the computer will not enforce that"). Saying "yes" because there is a technical permission would be a very bad idea.

hyperpape··on Response Filter Denial of Service: shut down a website by triggering WAF rule
The consequence of this post is that it very much does!

Though I would just leave those strings out of the WAF.

hyperpape··on How and why to make a /now page on your site
A blog is (by default) additive. You append by adding a new post, the items are ordered by date of creation, and you rarely remove old content.

If you look at the author's /now page, it's very clearly not that: https://sive.rs/now.

hyperpape··on Regular expression matching can be simple and fast (2007)
In practice, it's apparently often better to avoid these techniques and just use SIMD operations to search. You look at every byte, so it's O(n) but the overhead of more complicated approaches isn't worth it. See this comment from burntsushi: https://lobste.rs/s/ycydmd/why_gnu_grep_is_fast_2010#c_gpim7....
hyperpape··on Regular expression matching can be simple and fast (2007)
There's pretty wide variety in the performance of regular expressions between different languages, and efficient implementations will often recognize when your regular expression has a literal suffix/prefix, and optimize accordingly.

That doesn't help you if you're stuck using a library that doesn't perform those optimizations, but it means you need to be careful about importing your assumptions about regex performance from one language to another.

See also: https://github.com/burntSushi/rebar

hyperpape··on Needle: A DFA Based Regex Library That Compiles to JVM ByteCode
I’d definitely like to get needle into rebar (or a branch of it) and be able to run a broader set of comparisons.

Also, I’ve learned a lot from your code. A lot of this project was stubbornly banging my head against the problem, but whenever I wanted to see how another engine did things, your library was the one I looked at.

hyperpape··on Needle: A DFA Based Regex Library That Compiles to JVM ByteCode
Interesting—I had seen several different regex libraries for the JVM, but not this one.
hyperpape··on Needle: A DFA Based Regex Library That Compiles to JVM ByteCode
Author here: one thing I didn't mention in the post, but which is mentioned in the issues/readme on GitHub is that while I've been working on this for awhile, it's still a pretty new project in many ways. So what you're describing is interesting, but probably premature. The generated class files can still be very large, and the compiler itself has comments like "TODO: O(n^2)" that make throwing arbitrary input at it a dodgy idea.

Beyond those factors, there's the matter of just proving out that my testing is good enough, and I haven't missed edge cases.

hyperpape··on Needle: A DFA Based Regex Library That Compiles to JVM ByteCode
Author here. I don't know much about the MoarVM, so no plans.

I have very idly thought about being able to output native code for use in other systems, but realistically, I have enough other ideas to keep my nights and weekends busy for a long time.

hyperpape··on List of people offering their time for free to have a "coffee chat"
Looking at the PR, it's not 100% obvious that's how it would render. https://github.com/fharper/coffeechat/pull/43/commits/4f948b.... The intent might be "CEO at RequestMechanic, Technical Writer at GitHub".

On the other hand, if he did realize that this innocuous looking json update would render as CEO of GitHub, I'm not sure I hate it. I think people offering their time to chat with others is great, but I'm not a fan of this type of aggregation. If this makes it look sillier, maybe that's ok?

hyperpape··on New Foundations is consistent – a difficult mathematical proof proved using Lean
Gödel's incompleteness theorems are what you're thinking of. https://en.wikipedia.org/wiki/G%C3%B6del%27s_incompleteness_...

That said, if you have a system X, it can't prove it's own consistency, but a stronger system Y can prove its consistency (and perhaps some other stronger system can prove Y's consistency. This gives us a chain of systems, each proving the consistency of some weaker system).

That doesn't absolutely prove that the system is consistent--if Y was inconsistent, it could prove X is consistent (and also could prove that X is inconsistent). Nonetheless, it is still valuable. After all, part of our use of Y is the fact that we know of no inconsistency in it. And since formal systems often are subtly inconsistent, "consistent assuming some other system is consistent" is a lot better than "we have no proof whatsoever of consistency".

hyperpape··on The PostgreSQL community debates ALTER SYSTEM
> This had to be in on short notice (trys to move this to another release where squashed) b/c vested interests.

From the article:

> Even then, the discussion was not quite done; Momjian questioned merging this change so late in the PostgreSQL development cycle. ""My point is that we are designing the user API in the last weeks of the commitfest, which usually ends badly for us"". Fennema-Nio pointed out that the API was essentially unchanged from its initial, September form, and that months had been spent discussing alternatives. Haas said that such a small patch would not improve by being held up for another release cycle: ""I think it has to be right to get this done while we're all thinking about it and the issue is fresh in everybody's mind.""

hyperpape··on Preview of Explore Logs, a new way to browse your logs without writing LogQL
You missed the key criterion, which is being able to see the logs from that process "as a text file", or the way I'd rephrase it "with the same ease of a text file."

Kibana is ok (definitely beats grep) when you want to look across a fleet and determine if a specific thing is happening. But when you have a specific symptom that happens on a particular instance, what you want to do is see logs in the order they happened, and Kibana isn't close. Querying and viewing logs are just slow and cumbersome relative to less/grep.

hyperpape··on From xz to ibus: more questionable tarballs
Certainly there's nothing in FOSS that mandates source control, but source control is one of the most important technologies discovered for developing software, and I'd be hard pressed to imagine a justification for relying on software that didn't use it.
← PreviousPage 12 of 34Next →