HNHacker News
TopNewBestAskShowJobs

suyjuris

191 karma · joined April 8, 2019

https://nicze.de/philipp/

contact@nicze.de

submissionscomments
suyjuris··on Reading academic computer science papers
Much depends on the subfield, but here are two shortcuts to understanding a dense paper:

1. Many CS papers are presented at conferences, and many of these talks are recorded and available.

2. Look for a paper citing the one you are interested in. The “related works” section often contains brief summaries, which are written with the benefit of hindsight.

Somewhat related, an earlier comment of mine on how to acquire copies of a paper without resorting to unauthorised copying [1]

[1] https://news.ycombinator.com/item?id=23711206

suyjuris··on Firefox now only available via snap on Ubuntu
There is something to be said for leaving a platform if you do not like the direction it seems to be headed in, even if you could compensate for the issues in the short term. Otherwise you might sign up for years of incrementally increasing misery.

Once Windows installed updates against their users' preference I switched my main desktop to Linux – this was a significant amount of work but has saved me a lot of frustration over the past years. Similarly, once I experienced UI stutter in Gnome and noticed that it moved towards Javascript, I switched to i3. Again, huge setup cost (e.g. I had to implement alt-tab behaviour myself), but things ran smoothly since.

suyjuris··on Algorithms for Modern Hardware
> I distinctly remember him talking about how worthless having a file system is on a server, or for that matter an operating system.

If I recall correctly, his statement can be more charitably summarised as noting that many of the functions of an OS or FS are not useful in the specific use case he had, which was running a single program serving a website. He would therefore prefer to not have the additional complexity, attack surface and performance overhead. I do not think that this is very controversial? There are of course trade-offs involved, and he did mention that he was planning on running Linux as a way to get device drivers and something booting with reasonable effort, at least initially.

suyjuris··on Fire extinguished at Ukraine nuclear power plant, Europe's largest
Thank you, that is indeed a source and I have raised my estimate of the probability larger casualties slightly. (For the record: above excerpt is from an article in the online magazine CounterPunch [1], which itself refers to the 2009 book [2].)

However, its methodology and rigour have been criticised [3]. As I am not an expert in this area I cannot evaluate the source directly, but several general heuristics apply. The source is a single book. (I am aware that the book claims to rely on numerous non-english sources, but I do not believe that they make the same claims.) The book relies on observational epidemiological data, which is generally hard to get right, and dose-response curves seem to be not analysed (seeing a relationship between doses and effect sizes is a good way to exclude spurious correlations). Finally, since the article mentions Yablokov's prior occupation I will also note that he founded and lead the Soviet chapter of Greenpeace, an organisation with a strong anti-nuclear position.

So I do not think that this is strong evidence. (But as I said earlier, I do currently consider it weak evidence.) In any case, the book claims one million deaths, not multiple millions, and only a fraction of those is attributed to thyroid cancer.

[1] https://www.counterpunch.org/2022/03/02/russian-takeover-of-...

[2] https://web.archive.org/web/20110419144513/http://www.strahl...

[3] https://en.wikipedia.org/wiki/Chernobyl:_Consequences_of_the...

suyjuris··on Fire extinguished at Ukraine nuclear power plant, Europe's largest
Do you have any kind of source for this? As far as I am aware, estimates for deaths based on thyroid cancers are ~160 [1]. Not 'thousand, just 160 – you claim is off by five orders of magnitude. Estimates for the total death toll are up to 60000 if you assume the linear no-threshold model [2], so might be much lower in reality.

[1] See e.g. https://en.wikipedia.org/wiki/Deaths_due_to_the_Chernobyl_di....

[2] The model assumes that any amount of radiation is harmful and estimates the harm of low doses as a corresponding fraction of the harm of large doses. Empirical evidence is unclear, at best, but it functions as worst-case estimate.

suyjuris··on Case against OOP is understated, not overstated (2020)
> Liskov substitution principle tells you that a rectangle cannot be a super class of a square.

It does not. The Liskov substitution principle states, as it applies here, that a property that holds for all rectangles has to hold for all squares. This is true, as every square is a rectangle.

suyjuris··on Attacking an Ethereum L2 with Unbridled Optimism
> the routing complexity increases exponentially, which is the classic problem of routing issues on large graphs that literally every networked system has

I assume you are using “exponentially” in its informal meaning of “somewhat quickly” ? At least I am not aware of any routing issues that scale exponentially with the size of the graph.

To the contrary, if you can pick the graph structure then routing is not very difficult at all.

suyjuris··on Words known better by males than females, and vice versa
“Fledern” is not actually a German word (in any kind of common usage at least). A literal translation of flying would be “fliegen”.

Apparently the word fledermaus originates 1200 years ago and is derived from “flattern” (to flutter).

suyjuris··on Reimagining Chess with AlphaZero
If you find chess variants interesting, I would recommend looking at Go [1] as well. It is similar to chess in that it is an ancient turn-based strategy game for two players and with perfect information, but I find it much more pleasing from a game-design perspective. The rules are much simpler, there are no draws, and the starting player does not have an advantage. Also, you can have handicaps so that two players with different playing strengths play a evenly-matched game.

To me, this shows that it is possible to solve most of the commonly cited issues in chess by changing it into a radically different game. But can you do it with only a minute adjustment? I find it difficult to imagine chess without draws, but it is not inconceivable. [2]

[1] https://en.wikipedia.org/wiki/Go_(game)

[2] E.g.: if the game would end in a draw, instead the player who has made more King-moves wins. If that is tied as well, Black wins.

suyjuris··on Mathematicians clear hurdle in quest to decode primes
> Also I think we have shown using a variant of Galois theory that there can not be a closed from solution for the nth prime.

Do you have a reference? This sounds interesting.

There are, of course, integer polynomials where the set of positive values is precisely the set of primes (think something like x²(y+1)-(z+x)y, but much more complicated) [2].

(This might seem like an interesting fact, but it really is not. All sets of numbers where a computer can decide whether a number belongs to the set have such a polynomial.)

[2] https://en.wikipedia.org/wiki/Formula_for_primes

suyjuris··on More than 1M fewer students are in college, the lowest numbers in 50 years
Distributing children of age 10 into groups based on their predicted future academic achievement works about as well as you would expect (i.e. not very well), but the redeeming feature of the system is that it is reasonably fluid and you can change tracks. You could, for example, do Abitur after completing Realschule and then move on to university. It is also possible to change directly from Realschule to Gymnasium at basically any point, if you meet certain standards. (You can also take university classes while in Gymnasium without too much trouble.)

There is also the Gesamtschule, which combines the three tracks (Hauptschule, Realschule, Gymnasium) into a single school.

suyjuris··on Mullvad: Diskless infrastructure using stboot in beta
On linux you can create a network namespace exposing only the wireguard network device, so that applications in that namespace cannot leak traffic. Setting this up, however, is quite fiddly in my experience.
suyjuris··on Charge, Baby, Charge for Parking
> Given the mix-use urban buildings I've encountered recently [...] I don't see how removing off-street parking requirements would address anything.

It would allow the developer to choose the appropriate amount of parking spaces for their building, instead of being forced to follow the requirements resulting from central planning by the city administrators.

They cannot simply rely on on-street parking instead, since (per the second bullet point) the prices would for those parking spaces would increase dramatically, providing the developer with a competitive disadvantage.

I could see this working out perfectly fine for businesses who compete for customers, as those will likely be very sensitive to the cost of a parking space. However, for buildings where people do not have a choice of whether to travel there, this seems more problematic. Imagine e.g. a courthouse – missing parking spaces would just impose a negative externality on the unfortunate “customers”. I guess the question is in which category office buildings and residential areas fall into, arguments could be made either way.

suyjuris··on A common mistake involving wildcards and the find command (2020)
Why not

    puts {Hello!}
    # or even
    {puts} {Hello!}
? But I do not see an advantage either way. I think you attribute to quoting issues that are caused by type-punning. The quoting rules of Tcl are simple. I mostly encountered problems when people do things like

    # x is not actually a list, but may appear that way if a and b are nice
    set x "$a $b"
    # Proper way:
    set x [list $a $b]
But I fail to see how quoting could address or alleviate this.
suyjuris··on An Epic future for SPJ
> 16 core machines isn't that uncommon today

~0.31% according to the Steam hardware survey [1] If you are including 8-core machines with simultaneous multithreading (so 16 logical cores, 8 physical), then you would be at ~17%, however.

[1] https://store.steampowered.com/hwsurvey/cpus/

suyjuris··on OpenAI Sold its Soul for $1B
As soon as you put the intelligence in AI this changes. It is easy to say that current AI systems are “dumb” (although note that the precise meaning of dumb has changed significantly over the last few decades). You can say that about any AI with sub-human intelligence. But if you reach human levels, you can likely reach super-human as well, so you need to start worrying much earlier.
suyjuris··on First batch of student’s washing machines shipped to Iraq
I do not think that your source supports your claim, although I might have missed something. To the contrary, it states:

> Although the physical labor of laundry was lessened somewhat by the machines, the actual time housewives allocated to their family laundry increased.

(This is claimed to be the result of housewives being responsible for the entirety of laundry, instead of employing help, however.)

suyjuris··on Space Station incident demands independent investigation
I found this very interesting, thank you for sharing!
suyjuris··on Striking new Beeping Busy Beaver champion
Busy Beaver-type functions (counting how long a program runs, provided that it terminates) might look like a mere curiosity, but they make interesting statements about the power of different systems of computation. For Turing machines it grows quicker than any computable function – and Turing machines are quite powerful!

If you consider a finite-state automaton, you might define a similar problem: What is the longest word that automaton accepts, provided that it accepts only finitely many words? This you can answer directly: it is n-1, where n is the number of states. And finite-state automata are not very powerful.

Here is another system: I give you a list of transactions, where each transaction consists of multiple instructions of the form “add/remove x units from account y”. You may only execute a transaction if no account goes negative. Here, a Busy Beaver-type question would be “What is the longest sequence of transactions that move one unit from the first account to the second, where all the others must start and end empty?” This is actually a somewhat powerful system, and here the answer grows at the rate of the Ackermann function – extremely fast (and, if you have never heard of it, probably faster than any computable function you can think of), but still computable. [1]

Recently we have shown a Busy Beaver-type result for a certain distributed computation model, where many (very limited) participants interact to compute things as a group. There the question was about counting how large the group is, but each participant can only count to n. So given a protocol that reliably recognises certain group sizes, what is the largest size it accepts? (Again, provided that it accepts only finitely many.) We proved that it is at most 2^(2^(2^n)) – so in some sense that model is very weak, but nevertheless much more powerful that finite state automata.

[1] I did not think to carefully about this, some details might be wrong.

suyjuris··on Our lawsuit against ChessBase
But crucially, in that case the infringer did not make money based on their infringement, and the actual infringement was minor. (Specifically, a university failed to provide a copy of the GPL license alongside a download of the software, which they offered free of charge.)
suyjuris··on Tencent deploys facial recognition to detect minors gaming at night
> Just an example of the absurd regulations in a different subject: Germany requires a license to stream to more than 500 people and they've actually enforced this on streamers. The license can cost €10k.

This information is outdated and misleading. Since 2020, licenses for public broadcast are only required for broadcasts which, averaged over six months, exceed 20000 viewers and have significant importance for the formation of public and private opinion [1].

Prior to this change, some streamers had indeed been forced to acquire such a license (although there were more conditions than just regularly having 500 viewers). Also, licenses for streamers actually cost around 1000-2500 €, instead of the 10000 € you claimed. In addition, there was an exception for cases where this would be an undue hardship [2]. The regulator basically agreed that this was pretty silly, but that it planned to enforce the law as written (as is its job), until it was changed (which it has been).

[1] (german) § 54 MStV, https://www.gesetze-bayern.de/Content/Document/MStV-54

[2] (german) https://t3n.de/news/livestreams-rundfunklizenz-1175321/

suyjuris··on Linux with “memory folios”: a 7% performance boost when compiling the kernel
I believe GP is referring to the 10% boost they observed, not a hypothetical 7% boost as in the article. (7×24×0.1 = 16.8, while a 7% speedup would result in ~12 hours.)
suyjuris··on Remove left turns for less dangerous city traffic
> I think map apps should be optimizing for something more complex, like least amount of directions within a five minute arrival window. Saving two minutes of driving time isn't worth having to make eight more turns.

One issue is, as you say, that shortest-path routing can overload individual roads. There is an interesting and related concept in theoretical CS: oblivious routing. Instead of solving “What is the shortest route to my target?” locally, you try to determine a selection of routes that, if followed by every participant, minimise congestion (the maximum amount of vehicles over any road, relative to its capacity). Surprisingly, it is always possible to determine such routes, even if they are not allowed to depend on traffic conditions (how many vehicles try to go from A to B, how many from C to D, etc) ― this is what the “oblivious” refers to.

Of course, that does not solve the problem of route complexity.

suyjuris··on Unsplash is being acquired by Getty Images
To add a bit more detail: as far as I understand it (and I am no lawyer) the concept of an Abmahnung is that you notify someone of their (supposed) legal transgression, and give them the option to stop their behaviour and reimburse your costs (lawyer's fees and damages) to avoid going to court. For copyright claims in particular, it may be difficult to claim large damages, but sometimes the right holders collude with their lawyers by demanding the reimbursement of non-existent fees instead, which they then split as profits. This is illegal, as you are only allowed to claim costs that you have actually paid.

A (somewhat dated) example at [1] (german).

[1] https://www.lawblog.de/archives/2009/11/17/abmahnanwalte-ver...

suyjuris··on UK 'Right to repair' law to come in this summer
That seems to me personally like a stretched reading, but I am no expert. Thank you for pointing me to it!
suyjuris··on UK 'Right to repair' law to come in this summer
Having the “the scripts used to control compilation and installation of the executable” does not help you any if the device refuses to load a modified kernel. If the GPLv2 were sufficient, then why would the FSF see a need to create version 3?
suyjuris··on UK 'Right to repair' law to come in this summer
You can get the code, but you might not be able to do anything with it, as there is no obligation for the manufacturer to enable you to run the code on the device itself. GPLv3 intends to cover this case, but the Linux kernel is (not without reason) licensed under GPLv2.
suyjuris··on Thoughts Around Naming Variables
Perhaps the main difference between the notation of mathematics and programming is not the former's lack of paper, but rather the inherent complexity of the problems they aim to solve.

(A brief aside on what I mean by inherent complexity: solving some partial differential equation or writing 'I must turn in my homework' one hundred times might both take the same amount of time, but the latter is less complex. Similarly, Dijkstra's algorithm to compute shortest paths might be easier to implement than a form to add a new employee to the database, but it is nevertheless more complex.)

When writing a program, one usually has to juggle lots of balls that move in simple ways. You can make a career out of writing programs that convert data between various mostly equivalent representations (table in database, packet on the network, Python object in RAM, pixels on the screen). I do not want to claim that this is easy: the details of what data ends up where, of how to deal with the not-quite-equivalent representations, of who is able to see what, etc., matter. But solving complex problems of which code to write does not mean that the code solves complex problems.

So it makes sense to use longer names. You have only little attention to spare on individual pieces and s.add(b) is more difficult to understand than submit_form.add(submit_button). Here, adding things to some container is a well-understood concept, you simply want to know which container and which things.

Conversely, when your problems have a high inherent complexity then you end up with a small number of balls that behave in a complicated manner. (If you have many complicated balls, the problem is too difficult to solve.) So you split up your explanation: first you describe the balls, then you assume that the reader knows what they are and give a succinct explanation of their interactions. (Flipping the order sometimes makes sense too.) It is clear that ax²+bx+c = (ax+b)x+c is easier to understand than equals(add(add(mul(parameter_quadratic, mul(variable, variable)), mul(parameter_linear, variable)), parameter_constant), add(mul(add(mul(parameter_quadratic, variable), parameter_linear), variable), parameter_constant)). The latter is simply too noisy, it does not allocate the symbols in an efficient manner to convey its meaning.

However, writing ax²+bx+c assumes that the reader is familiar with the meanings of a,b,c,x and with addition, multiplication and exponentiation. You probably are (else this would have made a poor example), but even if you were not, it would still make sense to explain these concepts first, to enable the succinct explanation.

suyjuris··on Functorio
This sounds interesting! I would love to read a post about this. (I am currently working on automatically generating belt balancer layouts, but that is an entirely different beast.)
suyjuris··on Functorio
I have found that playing with friends helps me to alleviate this problem, as scheduling constraints put an upper bound on playing time.
← PreviousPage 2 of 4Next →