MurphyA/hacker-news huggingface dataset:
by mk_stjames | 2025-05-17 09:24:57+00:00
The next step for a project like this would be to incorporate a better, perhaps bepsoke SDR device more focused on the astronomy to be performed as most small off the shelf RTLSDR dongles have pretty horrible frequency drift. The addition of a more stable local clock source, coupled with a GPSDO - GPS disciplined oscillator - would allow signals to be correlated in time across many stations and allow for some actual, albeit basic, interferometry / aperture synthesis.

I think that is what is needed for some actual science to be done with this kind of hardware and community support - similar to the work done by amateurs hosting hardware to record sferics in the VLF bands that sync up over the internet to do lightning strike tracking.
by 3036e4 | 2025-05-17 09:25:41+00:00
Not with the files saved from GW-BASIC though, unless you add the extra A parameter to save as ASCII. I learned that recently when setting up a repo to experiment with GW-BASIC 1.0 (unlike the later Microsoft BASICs the original GW-BASIC is open source).

Annoying when saving the BAS files as ASCII they are still written as full blocks of some size 512 bytes?) with a ctrl-Z EOF to mark the end of the file. So there is some random binary garbage at the end of the file to strip away before committing changes. I wonder how common it was for DOS software to do that and how much sensitive information can be found at the end of released files if you look after the EOF marker?
by kragen | 2025-05-17 09:26:34+00:00
I feel like I'm missing an enormous amount of context here, and I can't be the only one.

How much better is it than old standbys like hashpjw, FNV1A, or djb's favorite¹, and how? It's apparently 350 lines of code instead of 1–10 lines of code. That seems like an important way that it's worse. And it comes with a copyright license that requires you to add it to your documentation, so the risk of forgetting that creates a risk of copyright infringement. So, how big is the benefit?

How much faster is it hashing a small key like the string "__umulh"? Is it actually slower? (For those needing an introduction to hash tables, covering why that question makes sense, Chris Wellons is always excellent: https://nullprogram.com/blog/2025/01/19/)

Why does it have an array commented "default secret parameters" in the public GitHub repo? Are we supposed to change those? Do they provide some kind of security, and if so, what kind, against what threat model?

The readme and https://scholar.google.com/scholar?hl=es&as_sdt=0%2C5&q=rapi... are no help here. https://github.com/rurban/smhasher?tab=readme-ov-file#summar... explains some of the questions at greater length but of course not rapidhash's particular answers.

______

¹ while (s[i]) h = h * 33 + s[i++]; about 11 machine-code instructions in its full-fledged form: https://godbolt.org/#g:!((g:!((g:!((h:codeEditor,i:(filename...
by eru | 2025-05-17 09:26:53+00:00
> The only way out of this, you can probably see, is some sort of external co-ordination, as is the case with most of these situations.

You lack imagination. You can eg just charge juniors for the training.

Either directly (which won't really work, because juniors almost by definition don't have a lot of money), or via a bond that they have to pay back iff they jump ship before a set number of years.

Have a look at how airlines and airline pilots pay for their expensive education.
by creata | 2025-05-17 09:27:07+00:00
This seems error-prone, for at least two reasons:

* If you accidentally use `let` or `const` instead of `using`, everything will work but silently leak resources.

* Objects that contain resources need to manually define `dispose` and call it on their children. Forgetting to do so will lead to resource leaks.

It looks like defer dressed up to resemble RAII.
by opyate | 2025-05-17 09:27:57+00:00
The first thing I did when I saw this thread was ctrl-f for doclaynet :)

I've been at this problem since 2013, and a few years ago turned my findings into more of a consultancy than a product. See HTTPS://pdfcrun.ch

However, due to various events, I burned out recently and took a permie job, so would love to stick my head in the sand and play video games in my spare time, but secretly hoping you'd see this and to hear about your work.
by pjmlp | 2025-05-17 09:29:00+00:00
And yet many of us embraced Java, it became the chosen language to teach distributed systems in many Portuguese universities around 1998, because of the pain to write portable C or C++ code across UNIX clones.

A mix of K&R C, C89, C++ARM compilers catching up with WG21 work, POSIX flavours, and lovely autoconf scripts.
by brigandish | 2025-05-17 09:29:55+00:00
Japan's trains have aircon but often it's not cold enough, and at the parts of the year when the climate moves from hot to cold or cold to hot you might find yourself on a train with heating still on because the calendar date is still "winter" even though it's a hot and sunny day, while you sweat profusely and feel irritated about the seemingly widespread inherent inflexibility of the Japanese.

Osaka's Hankyu trains are full of ads for musicals (it owns the Takarazuka Revue), I think that all this shows is that London has a far more vibrant cultural scene, which is apparent at all levels of society. I'd rather see ads for musicals than the ads for male hair removal clinics.
by watwut | 2025-05-17 09:31:34+00:00
"The other people" are however not using the flat "everything should be decided by federal goverment" claim. GOP does hide behind states rights when it suits them.

"The other people" are saying abortion bans harm women physically and are removing their freedom. They are saying AI should be regulated in certain way.

None of that is hypocritical. It is not even opposite direction.
by perlgeek | 2025-05-17 09:32:51+00:00
> Never understood why this isn’t used more frequently.

Can you throw a JSON-serializable data structure (lists, dict, strings, numbers) into SharedMemory? What about regular instance of random Python classes? If the answer is "no", that explains why it's not done more often.

The examples in the docs seem to pass byte strings and byte arrays around, which is far less convenient than regular data structures.
by TekMol | 2025-05-17 09:33:36+00:00
Their first example is about having to have a try/finally block in a function like this:

function processData(response) { const reader = response.body.getReader(); try { reader.read() } finally { reader.releaseLock(); } }

So that the read lock is lifted even if reader.read() throws an error.

Does this only hold for long running processes? In a browser environment or in a cli script that terminates when an error is thrown, would the lock be lifted when the process exits?
by robmor | 2025-05-17 09:35:50+00:00
Is that right?

From the AWS-LC README: https://github.com/aws/aws-lc

> A portable C implementation of all algorithms is included and optimized assembly implementations of select algorithms is included for some x86 and Arm CPUs.

It also states that it kind of forked BoringSSL and OpenSSL.

You’re right though that most of the memory safety attack surface has been replaced with Rust.
by NobodytheHobbit | 2025-05-17 09:37:47+00:00
The funniest thing about dunning kruger is that everyone has it and it has this weird lofty place of existing for others but not ourselves. One of the hardest things to know is that we know not nothing but abysmally little no matter how genius we can get at times. The Tool can get to a higher level of dunning kruger but is still an aggregate of knowledge and has already eaten all of it. A wise man knows nothing. What does a wise machine know?
by lycopodiopsida | 2025-05-17 09:38:36+00:00
> You mean tooling as it was already kind of available on Turbo Pascal for MS-DOS?

Spare me your stories of the TurboPascal, I am not a youngster, not easily impressed by name-dropping $some_old_thing and do not care about old men yelling at clouds. You may program in TurboPascal, if you like it.

> When people discuss Go tooling feels like Renaissance folks resdicovering Roman city enginnering.

People talk about Go tooling because it is good, lightweight, editor-agnostic, helpful and provided with the language. There are multiple language which fulfil some of the criteria, but not many fulfilling all of them.

> VSCode is certainly an Integrated Development Editor

If VSCode is an IDE, then also emacs and neovim and your lamenting has no meaning. And of course, the one behind VSCode is Atom which was heavily influenced by Sublime text.

> Biggest difference is that one hardly needs to code extensions, or manually configure them most of the time, a simple install button press is only that is needed to get any extension going, many of which graphical, taking all advantage of the Web platform.

So, basically a neovim distribution? Got it!
by baq | 2025-05-17 09:38:47+00:00
I’m running it with docker compose for the same reason and it never failed an update, but there was an occasional config tweak required. For the most part it’s compose pull, compose up, check back in a couple weeks for the point release.

Updating from that far is probably risky but you don’t need to backup everything, just the config directory. Automated backups to Google drive are worth the upgrade alone.
by wingerlang | 2025-05-17 09:39:05+00:00
POP mails stopped being imported from my hotmail since some time. I noticed it recently but could not make it work again. Switching to the new (to me, anyway) "gamilify" option from within Gmail settings - I experienced a similar avalanche. Probably two-three weeks ago, but these emails were from decades ago until recent. They did not go to junk, but they were labelled as "email/x/x/junk".
by huijzer | 2025-05-17 09:40:01+00:00
> When you use any social media, you're not really choosing what you're looking at. You just scroll and the site decides what you're going to look at next.

Yeah it’s crazy. I used to have a commonly held believe until last week. Then I started watching more videos in the opposite viewpoint and boom now my whole YT feed is full of it. I wish the feed would have sprinkled some opposing sides into the mix before last week. (Having said that I am appreciating individual content creator much more since people like Lex can decide to show both sides independent from some algorithm.)
by widdershins | 2025-05-17 09:41:11+00:00
Testing something is the best way to prove that it behaves correctly in all the cases you can think of. Relying on your own (fallible) understanding is dangerous.

Of course, there may be cases you didn't think of where it behaves incorrectly. But if that's true, you're just as likely to forget those cases when studying the expression to see "what it actually says". If you have tests, fixing a broken case (once you discover it) is easy to do without breaking the existing cases you care about.

So for me, getting an AI to write a regex, and writing some tests for it (possibly with AI help) is a reasonable way to work.
Show HN: Magic Worker – Simplify Web Worker Usage
by tinyhref | 2025-05-17 09:43:19+00:00
Open Source: https://github.com/tinyhref/magic-worker

Simplifying the use of Web Workers — call worker functions like regular async functions.

Key Features:

- Seamless two-way communication

- Clean, developer-friendly API

- Ideal for offloading heavy computations

- Supports passing arguments and receiving results like local function calls
by jensneuse | 2025-05-17 09:45:30+00:00
The way we've solved this in our MCP gateway (OSS) is that the user first needs to authenticate against our gateway, e.g. by creating a valid JWT with their identity provider, which will be validated using JWKS. Now when they use a tool, they must send their JWT, so the LLM always acts in their behalf. This supports multiple tenants out of the box. (https://wundergraph.com/mcp-gateway)
by mjburgess | 2025-05-17 09:49:18+00:00
You're right that the Roman empire was every bit as ruthless as any nation which followed, and very plausibly much more so. But people treat the past as a fictional place when it goes much beyond the memories of people who are alive; and the more powerful and impressive a civilisation was, the more people are interested in it.

It's very hard to find any one really taking the past literally, as events which happened and could easily happen again. One imagines it's a symptom of how we're born and die: before our birth feels unreal to us unless we have some contact in our lifetimes with people who were alive before it.

This effect becomes more concerning when people try to take advise from glorified people of the past: every roman emporer was a genocidal tyrant, none should be immitated. But here we are.
by yxhuvud | 2025-05-17 09:50:21+00:00
It was a breaking change, but it was really small and affected only very few usages. Most places just went on with no changes. It was not at all a painful change.

Also Rubyists as a whole tend to update to the newest Ruby fairly fast. There are of course places that don't upgrade quickly (especially legacy systems that are barely touched), but most places with living code bases seems to be very quick when it comes to updating nowadays.
by RadiozRadioz | 2025-05-17 09:50:24+00:00
Perhaps Perl has given me Stockholm Syndrome, but when I look at your escaped regex example, it's extremely natural for me. In fact, I'd say it's a little too simple, because the LLM forgot to exclude unnecessary whitespace:

(REGEXP_MATCHES(commentary, '!\[\s*([^\]]*?)\s*\]\(\s*([^)]*?)\s*\)', 'g'))[2] AS src, (REGEXP_MATCHES(commentary, '!\[\s*([^\]]*?)\s*\]\(\s*([^)]*?)\s*\)', 'g'))[1] AS alt_text

That is just nitpicking a one-off example though, I understand your wider point.

I appreciate the LLM is useful for problems outside one's usual scope of comfort. I'm mainly saying that I think it's a skill where the "time economics" really are in favor of learning it and expanding your scope. As in, it does not take a lot learning time before you're faster than the LLM for 90% of things, and those things occur frequently enough that your "learning time deficit" gets repaid quickly. Certainly not the case for all skills, but I truly believe regex is one of them due to its small scope and ubiquitous application. The LLM can be used for the remaining 10% of really complicated cases.

As you've been using regex for decades, there is already a large subset of problems where you're faster than the LLM. So that problem space exists, it's all about how to tune learning time to right-size it for the frequency the problems are encountered. Regex, I think, is simple enough & frequent enough where that works very well.
by Havoc | 2025-05-17 09:51:02+00:00
The real magic is in my opinion in ESPHome. The fact that you can amateur solder some aliexpress $2 sensors together and have that actually work in HA with no coding except some yaml that you found on the internet is wild.

>It would be interesting to see what would happen to a pull request adding support for, say, OpenThings Cloud as an alternative. The fate of that request would say a lot about how open the project really is.

I kinda hope nobody tries. Their attempts at monetization have been pretty friendly and tame thus far & if something spooks them that could change.
by boppo1 | 2025-05-17 09:51:18+00:00
>When you use any social media, you're not really choosing what you're looking at. You just scroll and the site decides what you're going to look at next.

Not necessarily. I'm into a very particular sort of painting and I have been totalitarian with Instagram about showing me that content and not other stuff. It works splendidly as long as I'm consistent.

Thanks to Instagram, I have been introduced to tons of painters I would not have been otherwise.
by nevf1 | 2025-05-17 09:52:56+00:00
I respectfully disagree. Thankfully, I don't need to write regex much, so when I do it's always like it's the first time. I don't find the syntax particularly intuitive and I always rely on web-based or third party tools to validate my regex.

Whenever I have worked on code smells (performance issues, fuzzy test fails etc), regex was 3rd only to poorly written SQL queries, and/or network latency.

All-in-all, not a good experience for me. Regex is the one task that I almost entirely rely on GitHub Copilot in the 3-4 times a year I have to.
by skeledrew | 2025-05-17 09:55:30+00:00
> model collapse happens when the training data no longer matches real-world data

This isn't a significant issue IMO, as human-created content isn't "real-world" per se; it's human-created world, an interpretation and representation of the real. The real world is the raw data perceived by sensors, human or machine. And while model-generated content doesn't match human-created content well, in the vast majority of cases it's still humans curating, modifying and publishing generated content, based on how useful it is (there are of course spammers, etc but that's a general issue). This is something humans do with content created by other humans too.

So over time generated content will become a sort of norm adopted by and inevitably molding humans, same as created content does. Instead of model collapse, both sources of content will converge over time, particularly as the ability to also generate content directly from the real world is developed and integrated into multi-modal models.
by creata | 2025-05-17 09:56:57+00:00
C# has the advantage of being a typed language, which allows compilers and IDEs to warn in the circumstances I mentioned. JavaScript isn't a typed language, which limits the potential for such warnings.

Anyway, I didn't say it was "inferior to defer", I said that it seemed more error-prone than RAII in languages like Rust and C++.

Edit: Sorry if I'm horribly wrong (I don't use C#) but the relevant code analysis rules look like CA2000 and CA2213.
by teraflop | 2025-05-17 09:57:34+00:00
The spec just says that when a block "completes" its execution, however that happens (normal completion, an exception, a break/continue statement, etc.) the disposal must run. This is the same for "using" as it is for "try/finally".

When a process is forcibly terminated, the behavior is inherently outside the scope of the ECMAScript specification, because at that point the interpreter cannot take any further actions.

So what happens depends on what kind of object you're talking about. The example in the article is talking about a "stream" from the web platform streams spec. A stream, in this sense, is a JS object that only exists within a JS interpreter. If the JS interpreter goes away, then it's meaningless to ask whether the lock is locked or unlocked, because the lock no longer exists.

If you were talking about some kind of OS-allocated resource (e.g. allocated memory or file descriptors), then there is generally some kind of OS-provided cleanup when a process terminates, no matter how the termination happens, even if the process itself takes no action. But of course the details are platform-specific.
by jbverschoor | 2025-05-17 09:57:58+00:00
Full JEE, not just servlets, performance, reloading, and a bunch of enterprise features. Resin existed.

After about 10+ years Spring kind of took over JEE.

Omg. Spring was just like moving code to xml. Different now, but still.

What I miss from JEE:

- single file ear/war deployment, today that’s a docker image

- the whole resource api from Java (filesystem/jar doesn’t matter). It means you don’t necessarily have to unpack the jar

- configuration / contexts for settings, + UI for it, database connections etc. Docker kind of works, most most images fail to achieve this. Docker compose kind of takes care of things.

- as said before.. all Java still runs everywhere
by nathan_compton | 2025-05-17 09:58:46+00:00
It may be the case that most software engineering is just hacking pieces of software together, but Python still does a pretty bad job of it. Python libraries tend to be weird/poorly designed and pretty hard to actually use. R is a much nicer/more expressive language for ML stuff. Again, the only real advantage python has here is that everyone else is using it.
by demosito666 | 2025-05-17 10:01:04+00:00
It is enforceable, it’s just that not all countries are there yet. It’s practically impossible to buy anything worth more than 1000 eur with cash in Scandinavia, ironically with the exception of drugs. Humanity is on a steady track to a world where authorities are controlling every penny, at which point non-sanctioned opposition is impossible.
by verisimi | 2025-05-17 10:01:16+00:00
You don't think that it intruded into private lives, but I would disagree. If only certain information/ideas/programs are aired, you don't know what you don't know. You are not able to make informed decisions with only partial information. An institution such as the BBC operating without any push back for decades would be capable of directing culture and society, in an artificial way.
by dragonwriter | 2025-05-17 10:01:18+00:00
> Can you throw a JSON-serializable data structure (lists, dict, strings, numbers) into SharedMemory?

You can throw a JSON-serialized data structure into SharedMemory, sure, since you can store strings.

> The examples in the docs seem to pass byte strings and byte arrays around

The examples in the docs largely use ShareableList, which itself can contain any of int, float, bool, str, bytes, and None-type values.
by akoboldfrying | 2025-05-17 10:01:24+00:00
Exactly this. No idea why you were downvoted.

The problem they are trying to solve is that the programmer could forget to wrap an object creation with try. But their solution is just kicking the can down the road, because now the programmer could forget to write "using"!

I was thinking that a much better solution would be to simply add a no-op default implementation of dispose(), and call it whenever any object hits end-of-scope with refcount=1, and drop the "using" keyword entirely, since that way programmers couldn't forget to write "using". But then I remembered that JavaScript doesn't have refcounts, and we can't assume that function calls to which the object has been passed have not kept references to it, expecting it to still exist in its undisposed state later.

OTOH, if there really is no "nice" solution to detecting this kind of "escape", it means that, under the new system, writing "using" must be dangerous -- it can lead to dispose() being called when some function call stored a reference to the object somewhere, expecting it to still exist in its undisposed state later.
by meindnoch | 2025-05-17 10:02:19+00:00
Clearly the right solution is to use XML Object Notation, aka XON™!

JSON:

{"foo": ["bar", 42]}

XON:

<Object> <Property> <Key>foo</Key> <Value> <Array> <String>bar</String> <Number>42</Number> </Arra> </Value> </Property> </Object>

It gives you all the flexibility of JSON with the mature tooling of XML!

Edit: jesus christ, it actually exists https://sevenval.gitbook.io/flat/reference/templating/oxn
by Havoc | 2025-05-17 10:04:07+00:00
>in the context of AI, what I’m doing is a waste of time. It’s horrifying. The fun has been sucked out of the process of creation because nothing I make organically can compete with what AI

I don't think the compete part is true. I'll never cook like gordon ramsey, but I can still enjoy cooking. My programming will never be kernel dev level, but I still enjoy it.

The only angle where I have doubts like this is work. Cause there enjoying it isn't enough...you actually have to be competitive.