MurphyA/hacker-news huggingface dataset:
by jochem9 | 2025-07-09 05:21:09+00:00
All EU countries are required to join the euro. This was agreed in the 1992 Maastricht treaty when the EU was founded (and the EMU, which was the starting point of the euro). Only Denmark and the UK negotiated an opt-out at the time.

Only problem is that there are no deadlines and it's up to the country to make a plan for adopting the euro.
by kamranjon | 2025-07-09 05:21:50+00:00
If you haven’t tried ansel: https://ansel.photos/en/ or darktable: https://www.darktable.org/ I’d recommend trying them out - they are the current open source raw editing apps that perform well that are out there. It could be that this app is competitive with them, but I haven’t had a chance to try it out yet - but both ansel and darktable run well on my M1.
by jonas21 | 2025-07-09 05:22:05+00:00
zstd uses a fairly low compression level by default. If you run with `zstd -19 -o compiler.tlo.zstd stdlib/compiler.tlo` you will probably get much better compression than gzip, even at its highest setting.

That said, the tiny code footprint of gzip can be a real benefit. And you can usually count on gzip being available as a system library on whatever platform you're targeting, while that's often not the case for zstd (on iOS, for example).
by flufluflufluffy | 2025-07-09 05:22:51+00:00
I think “raise” comes from the fact that the exception propagates “upward” through the call stack, delegating the handling of it to the next level “up.” “Throw” may have to do with the idea of not knowing what to do/how to handle an error case, so you just throw it away (or throw your hands up in frustration xD). Totally just guessing
by weepinbell | 2025-07-09 05:23:11+00:00
I really like your point about rent growth. I quickly grabbed numbers from FRED on rent growth in the same period as analyzed in this blog:

https://fred.stlouisfed.org/graph/?g=1Kion

And then computed the annualized percentiles of growth over every 10 and 20 year period:

Percentiles 10 Year 20 Year

0.1 2.759994509 2.955813986

0.2 2.857204716 3.026836408

0.3 2.990680184 3.126358739

0.4 3.127881625 3.147020404

0.5 3.199826901 3.269223125

0.6 3.418119435 3.360219255

0.7 3.558537072 3.523213118

0.8 4.20459087 3.876319675

0.9 5.606452092 4.488515605

1 6.820735567 4.991026738

You're definitely right that they underestimate rent growth, at least if you're assuming that you should be making conservative estimates. Plugging some of these numbers in, I don't think this changes the overall conclusion of the post, but it does change the magnitude non-trivially so I think it's very worth considering. Thank you!
by doekenorg | 2025-07-09 05:23:42+00:00
I agree, but I had to draw the line somewhere on this article as it was already getting pretty long. And since I'm tackeling concurrency in the next post, it made more sense to me to start talking more about async there, with examples. Bear with me. Once that post is out, I'm updating this one which will reference the other for async examples. Thank you for your feedback!
by arunmu | 2025-07-09 05:24:38+00:00
I am a big fan of cloudflare blogs. The tech blogs are usually highly detailed and there is so much to learn from those.

But this one, interesting but was not a practical choice at all from what I gather reading the blog. The reason given for not using Clickhouse which they are already using for analytics was vague and ambiguous. Clickhouse does support JSON which can be re-written into a more structured table using MV. Aggregation and other performance tuning steps are bread and butter of using Clickhouse.

The decision to go with postgres and learn the already known limitations the hard way and then continue using it by bringing up a new technology (Timescale) does not sound good, assuming that Cloudflare at this point might already have lots of internal tools for monitoring clickhouse clusters.
by __david__ | 2025-07-09 05:26:04+00:00
Credit cards explicitly do a type of forwarding so that your old subscriptions continue to work if you get a new card. If you ever tell your bank that you've lost your card or had it stolen then they will reissue it differently without that "forward" feature, to prevent fraudulent activity. I learned this when I had fraudulent activity on my card and they accidentally did a normal reissue, and so the fraudulent activity continued even after I got the new card.
by Greed | 2025-07-09 05:26:25+00:00
I am like you, I'm someone that can happily code for eight straight hours on task and then happily jump to a side project afterwards in a totally different language / domain. Take it for the single point of data that it is, but: I have met equally as many high performers who do NOT code at home as I have mediocre ones that did. And the number of programmers who code solely on the job is far, far more common than those who take their work home with them. Statistically speaking, at least in my personal experience, that makes the at-home coder notably worse on average. As someone that used to think like you, I think the only thing you're really doing is the boys-club-esque equivalent of what the old Ivy League managers used to do (Oh, he's from MIT! That's perfect, we only hire MIT grads here). You're hiring what you know because you understand people with that background more.

You might find on the opposite end of the spectrum that someone with a perfectly equal skillset is laughing at the idea of taking on personal projects when he can just optimize for getting hired somewhere where they prioritize paying you to learn on the job.
by Maxion | 2025-07-09 05:27:11+00:00
I wonder why this comment is at the top of the HN post.

Over the years I've seen a lot of missinformation on this topic that follows pretty much this exact train of thought. Why would countries join the EU and the Euro if it didn't benefit them?

The baltics have all grown massively since the 90s when they became independent, and even though they all were on nice trajectories they still all decided to join the EU and the Euro.

Bringing up the UK as some model for all other "small" european countrie sounds odd. The UK joined the EEC specifically because it had slower economic growth than the other large EU countries.

The UK, and specifically the city of london, with its huge international financial pull has a very different place in the global economy than Bulgaria...
by cybertimom | 2025-07-09 05:27:45+00:00
Thanks for trying out RapidRAW and for the feedback. Currently I optimized the app to load small-medium sized folders (e.g. 1-300 images). Its expected that the app lags for folders with more images.

Its a high priority to optimize the loading speed of large folders and you can expect an improvement in the coming days.

Kind regards, Timon
by burnt-resistor | 2025-07-09 05:29:12+00:00
Hey DI! I haven't seen that site in years! I remember the audio podcast versions of excellent stories. Very neat, odd stories that aren't taught in history books.

Perhaps post on various podcast-like platforms and do the merch thing? Keith Olbermann posts audio-only episodes to Youtube. Thom Hartmann does Deezer, Tidal, Spotify, SoundCloud and so on.
by barrysaunders | 2025-07-09 05:30:01+00:00
This kind of just-so story is easy to write after the fact. It's harder to see the future at the time.

How many people read a version of the same story and pivoted their company to focus on SecondLife, NFTs, blockchain or whatever else technology was hyped at the time and tanked? That's the other half of this story.
by kragen | 2025-07-09 05:30:31+00:00
It's interesting to think of "calling" as "summoning" functions. We could also reasonably say "instantiating", "evaluating", "computing", "running", "performing" (as in COBOL), or simply "doing".

In Mauchly's "Preparation of Problems for EDVAC-Type Machines", quoted in part in the blog post, he writes:

> The total number of operations for which instructions must be provided will usually be exceedingly large, so that the instruction sequence would be far in excess of the internal memory capacity. However, such an instruction sequence is never a random sequence, and can usually be synthesized from subsequences which frequently recur.

> By providing the necessary subsequences, which may be utilized as often as desired, together with a master sequence directing the use of these subsequences, compact and easily set up instructions for very complex problems can be achieved.

The verbs he uses here for subroutine calls are "utilize" and "direct". Later in the paper he uses the term "subroutine" rather than "subsequence", and does say "called for" but not in reference to the subroutine invocation operation in the machine:

> For these, magnetic tapes containing the series of orders required for the operation can be prepared once and be made available for use when called for in a particular problem. In order that such subroutines, as they can well be called, be truly general, the machine must be endowed with the ability to modify instructions, such as placing specific quantities into general subroutines. Thus is created a new set of operations which might be said to form a calculus of instructions.

Of course nowadays we do not pass arguments to subroutines by modifying their code, but index registers had not yet been invented, so every memory address referenced had to be contained in the instructions that referenced it. (This was considered one of the great benefits of keeping the program in the data memory!)

A little lower down he says "initiate subroutines" and "transferring control to a subroutine", and talks about linking in subroutines from a "library", as quoted in the post.

He never calls subroutines "functions"; I'm not sure where that usage comes from, but certainly by BASIC and LISP there were "functions" that were at least implemented by subroutines. He does talk about mathematical functions being computed by subroutines, including things like matrix multiplication:

> If the subroutine is merely to calculate a function for a single argument, (...)
by cybertimom | 2025-07-09 05:30:53+00:00
Its pretty simple to explain: Imagine you have your images in a folder and you rename this folder, without RapidRAW knowing this. It would fail to associate the edits with the image. Lightroom does it the same way. Or imagine you‘re editing on your computer and want to move to your laptop to continue editing - the edits would only be saved on the computer, if it‘s only saved in the app library.
by sharkjacobs | 2025-07-09 05:31:50+00:00
What's the advantage of seeing an original piece of art over a serviceable replica? Especially in the case where the "original" is a print, one of dozens.

Obviously "serviceable" is doing a lot of heavy lifting here, a replica might simply not be very good, might not capture some vital characteristic of the thing which makes it a great work.

But otherwise, it's basically that the knowledge of how important and significant this work is puts the viewer in a more receptive frame of mind, right?

To be clear, that's not nothing. I of course know firsthand how much that affects the impact of a painting, museums and galleries care a lot about how they display their collection. But is that it?
by jochem9 | 2025-07-09 05:31:58+00:00
In the Netherlands there was a brief spike of inflation, but that was due to rounding up, definitely not converting 1 NLG to 1 EUR.

The inflation did correct itself the years after (aka lower than usual). The perception with many people still is that the euro made everything more expensive, but that's only based on feelings. The inflation numbers tell a different story.
by db48x | 2025-07-09 05:32:43+00:00
Why is that laughable? Congress decided that all rules changes need additional scrutiny if they impose large costs. After all, those costs are eventually going to be passed down to consumers so making overly–complicated rules just ends up hurting consumers. And there has to be _some_ threshold number; they couldn’t just leave that one undefined or nobody would ever bother with the extra steps.
by pjmlp | 2025-07-09 05:34:59+00:00
You missed the part where Android moved into caching JIT code with a mix AOT mode compilation, since Android 7 thus avoiding those issues. Latest version is Android 16, many other optimization happened since then.

Also that Android followed up on Windows Phone model, their mistake was making the AOT compilation on the phone instead of on the store like Windows Phone was doing.

JITs are very capable, provided people also design with them in mind.

The clever Apple with AOT failed against this now famous benchmark, against tracing GC languages, using a JIT.

https://github.com/ixy-languages/ixy-languages
by eastbound | 2025-07-09 05:35:41+00:00
On my million-dollars project (now 10 employees) I hired someone for the support. She wasn’t in the startup ecosystem. What she was most surprised of / had to train most for was our requirement of benevolence: Always help the customer, even when it’s not in our scope.

She thinks I’m a superboss, but I keep repeating her: We have to be nice to customers, we also have to give benefits to employees, otherwise both would leave us. It’s not a choice, it’s market pressure.
by miladyincontrol | 2025-07-09 05:36:10+00:00
Will def keep an eye on things. If theres one 'must have' feature I can request, luminosity masking? Its hard to go back to raw editors that dont have it. Its not the end all or be all to masking (ie color, saturation masking, etc) but is def one the most useful to have access to without having to bust open PS or similar.

Already having a workflow for AI based subject masking is def nice to see.
by benreesman | 2025-07-09 05:37:23+00:00
No it can't ever work for the reasons you mention and others. A security model will evolve with role-based permissions for agents the same as users and service accounts. Supabase is in fact uniquely positioned to push for this because of their good track record on RBAC by default.

There is an understandable but "enough already" scramble to get AI into everything, MCP is like HTTP 1.0 or something, the point release / largely-compatible successor from someone with less conflict of interest will emerge, and Supabase could be the ones to do it. MCP/1.1 is coming from somewhere. 1.0 is like a walking privilege escalation attack that will never stop ever.
by jbotz | 2025-07-09 05:37:30+00:00
Energy storage. This is making very rapid progress already, but "solving" it is has the highest payoff for tackling global heating.

Within the field of energy storage there are two important sub-fields... grid-level storage (cheap, long-lasting) and high-density (for transport applications). Both fields are already making good progress but I think I'd focus on grid-level first. Success here means basically being able to make the whole world's electricity grids "green". It will also be a massive economic stimulus because electricity will get very cheap.

No, you don't need "unlimited" resources for this, like I said, rapid progress is being made right now, it's just not quite rapid enough for the urgency and more focused funding and stimulus could definitely accelerate things. So if I had a lot of money and top talent I would distribute those among the handful of most promising approaches that are already being tried and keep funneling them there until it's "solved" for what we need.
by bentocorp | 2025-07-09 05:37:48+00:00
> You mentioned SEO finally kicking in. Do you attribute that to anything in particular? Any strategic changes you made?

I attribute the search traffic growth to:

1. A critical mass of content, after a number of years of writing - without a lot of search traffic for the first few years

2. Re-wrote and polished some of my earlier articles so that they were improved

3. Wrote more guides related to my app which were helpful to users; such as:

Safari Extensions Guide - https://www.magiclasso.co/insights/safari-extensions-guide/

Best Web Browser - https://www.magiclasso.co/insights/best-web-browser-2025/

> Also curious how you incorporate AI tools into your workflow, if at all.

Not a lot myself, except for sometimes helping with polishing and checking of writing and sometimes coming up with options etc.

In my experience AI tools are like having a junior assistant – they can be helpful but you always need to check and polish everything they do.
by mrtksn | 2025-07-09 05:38:59+00:00
Not at all, Armenians were also an integral part of the Ottoman society and that’s how you still have plenty of Armenian cultural heritage dating back to Ottoman times in modern Turkey. You must be referring to the events around WW1 that led the loss of huge numbers of the Armenians through atrocities committed by the Ottomans which some say that it was a genocide, others say it was poorly managed suppression of a rebellion in a dying empire. Still unresolved issue unfortunately.

On the other hand Bulgarians and Turks teamed in wars after the forming of the new Bulgarian state.
by crooked-v | 2025-07-09 05:41:59+00:00
It's funny, but I actually kind of like the helicopter crash because it's caused entirely because the CEO is too smug about being the cool hero, without any obvious moments that any average person doing their job might have counteracted it. It really gets at the whole 'greed and arrogance' theme in a very punchy way without requiring any of the normal people on the ground to be really dumb.
by vasco | 2025-07-09 05:42:47+00:00
> This means that if these prints are displayed for three months at 50 lux, they should be stored in the dark for at least a year before they are displayed again

> While these measures will not stop fading from occurring altogether, they will ensure that these world-famous prints fade so slowly that they will be seen by countless generations of visitors to the Museum in the future.

This trade-off is interesting, are we maximizing for number of people watching works? Or are we purely maximizing time? Because its not obvious to me that more people will see a work if it lasts 1000 more years but spends 80% of that time in storage, vs lasting 100 more years spending 0% of the time in storage.

Also lets say you go to the museum today and are lucky that it happens to be on display. But your friend travels to see it, it happens to be in 80% storage time, then the friend goes back home and dies without seeing it so that some future person that doesn't exist yet even can see it later without fading. Why is the future person more important than the current person, in a sense?

Storing it assumes a lot, that humanity will survive, that people will be interested in seeing it, that some fire isn't going to destroy their storage, etc. Meanwhile real life people would've seen it already. I don't have an answer, just questions though.
by tomhow | 2025-07-09 05:43:17+00:00
These kinds of swipes are lame. They play to tired stereotypes that live in the minds of some but for everyone else they just make threads a bit more miserable.

The guidelines ask us to avoid comments like this:

Be kind. Don't be snarky. Converse curiously; don't cross-examine. Edit out swipes.

Comments should get more thoughtful and substantive, not less, as a topic gets more divisive.

Please don't fulminate. Please don't sneer, including at the rest of the community.

Eschew flamebait. Avoid generic tangents. Omit internet tropes.

Please don't use Hacker News for political or ideological battle. It tramples curiosity.

https://news.ycombinator.com/newsguidelines.html
by kragen | 2025-07-09 05:45:24+00:00
The first Intel microcontrollers were the 8008 and the 4004, designed in 01971. This is 13 years after this post documents the "CALL X" statement of FORTRAN II in 01958, shortly after which (he documents) the terminology became ubiquitous. (FORTRAN I didn't have subroutines.)

In the Algol 58 report https://www.softwarepreservation.org/projects/ALGOL/report/A... we have "procedures" and "functions" as types of subroutines. About invoking procedures, it says:

> 9. Procedure statements

> A procedure statement serves to initiate (call for) the execution of a procedure, which is a closed and self-contained process with a fixed ordered set of input and output parameters, permanently defined by a procedure declaration. (cf. procedure declaration.)

Note that this does go to extra pains to include the term "call for", but does not use the phraseology "call a procedure". Rather, it calls for not the procedure itself, but the execution of the procedure.

However, it also uses the term "procedure call" to describe either the initiation or the execution of the procedure:

> The procedure declaration defining the called procedure contains, in its heading, a string of symbols identical in form to the procedure statement, and the formal parameters occupying input and output parameter positions there give complete information concerning the admissibility of parameters used in any procedure call, (...)

Algol 58 has a different structure for defining functions rather than procedures, but those too are invoked by a "function call"—but not by "calling the function".

I'm not sure when the first assembly language with a "call" instruction appeared, but it might even be earlier than 01958. The Burroughs 5000 seems like it would be a promising thing to look at. But certainly many assembly languages from the time didn't; even MIX used a STJ instruction to set the return address in the return instruction in the called subroutine and then just jumped to its entry point, and the PDP-10 used PUSHJ IIRC. The 360 used BALR, branch and link register, much like RISC-V's JALR today.
by aabhay | 2025-07-09 05:45:50+00:00
The point is not that tokenization is irrelevant, its that the transformer model _requires_ information dense inputs, which is derived by compressing the input space from raw characters to subwords. Give it something like raw audio or video frames, and its capabilities dramatically bottom out. That’s why even todays sota transformer models heavily preprocess media input, even going as far as doing lightweight frame importance sampling to extract the “best” parts of the video.

In the future, all of these tricks may seem quaint. “Why don’t you just pass the raw bits of the camera feed straight to the model layers?” we may say.
by TheDong | 2025-07-09 05:46:01+00:00
I mean, it's making 720px width jpg thumbnails using the CPU https://github.com/CyberTimon/RapidRAW/blob/fc21ede729b45d97...

And then it's sending these thumbnails back from rust to javascript as base64 encoded strings, not using a shared buffer: https://github.com/CyberTimon/RapidRAW/blob/fc21ede729b45d97...

This is the sorta stuff that native apps mostly don't do. They don't base64 an image just to send it to a different app (react) to base64 decode it (via a third app, webkit) via a slow ipc mechanism (tauri) from itself to itself, allocating 6x the chunks of memory along the way for one bit of data (the 6x are: raw data in rust, base64 data in rust, json encoded base64 in rust for tauri ipc, json encoded base64 in javascript, base64 in javascript, raw image data in webkit to finally view).
by pjmlp | 2025-07-09 05:46:47+00:00
Smalltalk is highly dynamic, it keeps surprising me Python gets put into some kind of special place as excuse why people keep failing at JIT adoption.

Everything is a message, the meta classes that define object shapes can change any time some feels like it, there are methods like becomes: that completely replaces an object across all its references on the running image, break into debugger and redo after whatever was changed while into the debugger, code loaded over network,....

As if PyPy and GraalPy didn't even exist as well.