HNHacker News
TopNewBestAskShowJobs

ruuda

2,195 karma · joined August 15, 2018

https://ruuda.nl
submissionscomments
ruuda··on Cyclist hit by driverless Waymo car in San Francisco, police say
Everybody here is discussing the car and the cyclist, but I don't see anybody considering the possibility that the intersection design is unsafe. That there is a stop sign is a pretty bad signal in itself, Not Just Bikes made a video explaining this: https://www.youtube.com/watch?v=42oQN7fy_eM
ruuda··on A reasonable configuration language
To me the distinction is not important. It is possible to write programs that take too long to execute in non-Turing complete languages, and when a program hangs, you just terminate it. I think what people really want is for their configuration to remain simple, but not being Turing complete does not guarantee that. For RCL I added a limit on the number of evaluation steps, because without it some programs trap the fuzzer.
ruuda··on How the append-only btree works (2010)
The Hitchhiker Tree [1] addresses the write amplification at the cost of making lookups and scans slightly more expensive, by keeping a small array of "pending writes" in every non-leaf node. The entire thing is still immutable, but instead of writing a new leaf node + path from root to that leaf, in the majority of cases we only write a new root. When there is no space left in the array, all the pending values get pushed one level down at the same time, so the write amplification is amortized.

[1]: https://www.youtube.com/watch?v=jdn617M3-P4

ruuda··on Software audio routers
I recently discovered Helvum for Pipewire and suddenly it was easy to configure my audio setup the way I needed.
ruuda··on Scrambling eggs for Spotify with Knuth's Fibonacci hashing
I was nerd-sniped by shuffling playlists a while back too and came up with this algorithm: https://ruudvanasseldonk.com/2023/an-algorithm-for-shuffling.... I've been using it since, my experience at this point is that the interleaving — although it does an optimal job of not playing the same artist twice in a row — is maybe a bit too non-random.
ruuda··on How does Shazam work? (2022)
I think it's possible to match on a subset in principe, but I don't know if/how this is implemented.
ruuda··on How does Shazam work? (2022)
There is also Chromaprint [1], which works slightly differently. It’s based on pitch change patterns instead of maxima in the spectrum. Chromaprint is used by AcoustID, which is a large open database that links audio fingerprints to MusicBrainz recordings. I find it astonishing how much music is in there despite having not nearly as much commercial backing as Shazam.

[1]: https://oxygene.sk/2011/01/how-does-chromaprint-work/

ruuda··on D Programming Language
It's been down at least since Sunday.
ruuda··on Jaq – A jq clone focused on correctness, speed, and simplicity
I have that same problem, the advanced features I use too little to remember. Then I started working on a configuration language that should have a non-surprising syntax (json superset, mostly inspired by Python, Rust, Nix). And it turns out, this works well as a query language for querying json documents. https://github.com/ruuda/rcl Here is an example use case: https://fosstodon.org/@ruuda/111120049523534027
ruuda··on Jaq – A jq clone focused on correctness, speed, and simplicity
I have the same problem. Then, unrelated, I started building a configuration language, and it turned out it's quite nice for querying json [1]. Here is an example use case that I couldn't solve in jq but I could in RCL: https://fosstodon.org/@ruuda/111120049523534027

[1]: https://docs.ruuda.nl/rcl/rcl_query/

ruuda··on GameMaker to be free for non-commercial purposes and have one-time fee license
Game Maker was how I got into programming in the early 2000s! Looking at the website now, it looks very different today, but the core is still there.
ruuda··on Officially Qualified – Ferrocene
Aside from having gone through the certification, what are the differences between Ferrocene and upstream rustc?
ruuda··on Apple's use of Swift and SwiftUI in iOS 17
The pictures in this article don't load without Javascript enabled even though there appears to be no interactivity.
ruuda··on Google Cloud Spanner is now half the cost of Amazon DynamoDB
Postgres; the schema is still structured. But even if you want something less rigid, Postgres has a jsonb type and great operators for querying json.
ruuda··on jq 1.7
I tried GPT-3.5, it got it wrong but it did get the overall setup right, just forgot about a detail. But I don't want to reach for ChatGPT every time I need to query something, I want something that I can write without having to solve a puzzle first. (True, maybe I should spend some time learning jq better.)
ruuda··on jq 1.7
Recently I needed to query something from a json document, but I just couldn't figure out how to express this in jq. In my spare time I'm working on a toy configuration language that is a superset of json, and expressing the query there was pretty straightforward, at least to me. So I added a mode to do that, and it comes in pretty handy once in a while now as a jq alternative.

https://fosstodon.org/@ruuda/111120049523534027

ruuda··on Choose Postgres queue technology
Detecting broken files when your application crashed half-way through a write; coordinating id generation.
ruuda··on Introduction to Immutable Linux Systems
NixOS predates Fedora by a few months.
ruuda··on Emoji Generator with AI
A few years ago I made a chat bot at work that read the last few messages on Mattermost and then used GPT-2 to predict how the conversation would continue. The bot would then post that message. I added emoji reactions as well so the bot could also react on posts. Shortly afterwards, somebody noticed an empty emoji reaction on a post. It turned out that the emoji names were just strings, and you could react even with non-existent emojis. The bot had invented the “phantom-dummy-tune” emoji. Promptly a colleague made an emoji for it and uploaded it under that name, and it would show up. Glad to see that this process can now be automated as well :-)
ruuda··on NSO group iPhone zero-click, zero-day exploit captured in the wild
Again a buffer overflow in image decoding, that sounds similar to the one from 2021 [1]. That one was wild, building a CPU out of primitives offered by an arcane image compression format embedded in pdf, to be able to do enough arithmetic to further escalate to arbitrary code execution!

[1]: https://googleprojectzero.blogspot.com/2021/12/a-deep-dive-i...

ruuda··on Chinchilla’s death
A related learning rate observation that is obvious in hindsight but not if you are just "tweaking" the learning rate: if you decay the learning rate exponentially, then you can only travel a bounded distance in parameter space, which may not be enough to reach a minimum. In practice that doesn't seem to be a problem, but then again, a cosine learning rate schedule doesn't look like a problem either.
ruuda··on John Warnock has died
How would we exchange, print, and view rendered documents? DVI perhaps, but it's not completely self-contained.
ruuda··on Python: Just Write SQL
One challenge working with SQL from statically typed languages (including Python + Mypy) is that you have to convert the query inputs/outputs to/from types and it's a lot of boilerplate. I started an experiment to generate this from annotated queries. [1] Python support is still incomplete, but I'm using it somewhat successfully for using SQLite from Rust so far.

[1]: https://github.com/ruuda/squiller

ruuda··on Bram Moolenaar has died
I met Bram once, at an open source fair at Google’s Zürich office. At the fair everybody could show off their projects. There was one person who had built some kind of AST editor/IDE, where the unit of editing was not the file, but functions floating around in a workspace. He was showing this to Bram, but I don’t think he realized who he was talking to. When he asked “so, what do you think?”, Bram answered “Hmm yeah, I’m more of a vi-type of person.”
ruuda··on If you have first-hand knowledge of the FDA’s torpor, get in touch
There is the example of the required lipids in parental nutrition not being approved causing baby deaths that could easily have been prevented. Eliezer Yudkowski writes about it extensively in Inadequate Equilibria, but some of it is also in https://www.lesswrong.com/posts/x5ASTMPKPowLKpLpZ/moloch-s-t.... It offers an explanation for why some issues that are easy to fix don't get fixed anyway.
ruuda··on Tidal Cycles – Live coding music with Algorithmic patterns
I've been to some algoraves where people livecode this, it's amazing to experience live.
ruuda··on Pixar, Adobe, Apple, Autodesk, and Nvidia form alliance for OpenUSD
How does USD compare to Collada?
ruuda··on JPEG XL: How it started, how it’s going
This is definitely not the case, the team behind Pik is eager to get JPEG XL deployed, but Chrome is blocking it.
ruuda··on Metaculus
> because you have to take risk and disagree with the masses. You will either end up with negative reputation or a very large one.

A prediction market is a zero-sum game, and you should only participate if you expect you can beat the market, which you shouldn't expect to be able to on average. But this is not true for Metaculus, which is a prediction aggregator and can create more virtual internet points when there are more participants. So even if you don't expect to do better than the community on average, you can still earn positive points on average. You have to be really confidently wrong to get a bad negative score on Metaculus.

ruuda··on PostgreSQL: No More Vacuum, No More Bloat
Vacuum does more than removing dead tuples though, there is still a need to update statistics and summarize BRINs.
← PreviousPage 6 of 13Next →