MurphyA/hacker-news huggingface dataset:
by toprerules | 2025-05-16 15:38:48+00:00
I admire Java as a success story, but I still have a deeply ingrained aversion to it for many reasons. I will admit that many of the reasons are due to Java's legacy as the language of bloated corporations, and its creation of overly verbose, magic fueled frameworks and poorly written code. Java as a language goes hand in hand with the idea that code is coal to be shoveled into the furnace, and we should all throw our aspirations away and embrace mediocrity.

My other issues with the JVM is how much of a black box it is from a platform perspective, which makes debugging a PITA with standard ops tools like strace, gdb, etc. The JVM's over allocation of memory robs the kernel of real insight as to how the workload is actually performing. When you use the JVM, you are completely locked in and god help you if there isn't a JVM expert to debug your thing and unravel how it translates to a platform implementation.

Then of course there's the weird licensing, it's association with Oracle, managing JDK versions, it's lack of it factor in 2025, and a huge boatload of legacy holding it back (which is not unique to Java).

I have successfully navigated my career with minimal exposure to Java, and nowadays there's a glut of highly performant languages with GC that support minimal runtimes, static compilation, and just look like regular binaries such that the problems solved by something like the Java or Python VMs just aren't as relevant anymore - they just add operational complexity.

To reiterate, I admire JG just like any tech person should. Java's success is clear and apparent, but I'm glad I don't have to use it.
by lo_zamoyski | 2025-05-16 15:39:30+00:00
Mexicans are indeed a new people drawn from both native and European stock and a fusion of those cultures. There is a notion of Mexicans (or even Latinos) as la raza cósmica, which is deeply connected with Our Lady of Guadalupe, regarded as "the first mestiza". This mestizo identity is core to Mexican identity. It isn't colonial even if colonialism served as a vector and a catalyst for it.

The idea of "going back" to some kind of pre-Spanish Mexico is nonsensical, and it would entail the very negation of Mexican identity and the invention of a fictional identity. Such "decolonization" movements are ahistorical. And frankly, I doubt most Mexicans would want a "return", whatever that even means.

Of course, this is different from learning Náhuatl. And it's worth noting that the Jesuits worked to preserve the native languages of the New World. You see this with Náhuatl. You see this in Paraguay where the Jesuits immediately began codifying and preserving Guarani in their missions, and where it is still widely spoken today.
by miotintherain | 2025-05-16 15:40:05+00:00
Hi Peter, thanks for doing this AMA.

I am traveling to the US soon for work from Europe. I have been reading a lot of articles about detentions at US airports and phone checks. My mindset has always been to never give my personal phone for an inspection, but times has changed now and it has been happening a lot more frequently. I am wondering what is the best course of action, prior to travel and if asked to give your phone and password. Also, what happens if you refuse to do so? Is the worst case scenario that they will send you back to where you came from?
by fpoling | 2025-05-16 15:40:10+00:00
It is a myth that dictatorships are good at big projects. Just consider the history of atomic bomb. If not the access to the spied US blueprints Soviet Union would be much delayed with own version. Then it took China about 10 years before they could test the atomic bomb even after receiving initially a significant help from Soviet Union.

Or consider sending a man to the Moon. Soviet Union eventually abandoned own efforts and was able to create a rocket with similar capabilities as Saturn V only in 1986.

Or consider that the best semiconductor production process comes from a Taiwanese company followed by South Corea and US. China is still not able to catch up despite all the efforts.

Or consider high speed trains. It was Japan and Europe that developed comprehensive network first, not China. And Soviet Union and later Russia never came close to implementing anything like that.
by volkk | 2025-05-16 15:40:24+00:00
you might be missing small things to create more guardrails like effective prompting and maintaining what's been done using files, carefully controlling context, committing often in-between changes, but largely, you're not missing anything. i use AI constantly, but always for subtasks of a larger complicated thing that my brain has thought through. and often use higher cost models to help me abstractly think through complex things/point me in the right directions.

personally, i've always operated in a codebase in a way that i _need_ to understand how things work for me to be productive and make the right decisions. I operate the same way with AI. every change is carefully reviewed, if it's dumb, i make it redo it and explain why it's dumb. and if it gets caught in a loop, i reset the context and try to reframe the problem. overall, i'm definitely more productive, but if you truly want to be hands off--you're in for a very bad time. i've been there.

lastly, some codebases don't work well with AI. I was working on a problem that was a bit more novel/out there and no model could solve it. Just yapped endlessly about these complex, very potentially smart sounding solutions that did absolutely nothing. went all the way to o1-pro. the craziest part to me was the fact that across claude, deepseek and openai, they used the same specific vernacular for this particular problem which really highlights how a lot of these models are just a mish-mash of the same underlying architecture/internet data. some of these models use responses from other models for their training data, which to me is like incest. you won't get good genetical results
by ascorbic | 2025-05-16 15:40:41+00:00
A lot of people misunderstand what creating money means in the context of fractional reserve banking. Banks "create money" every time they make a loan backed by a deposit. They're not literally creating new money. This is how it works:

- Alice deposits $100 into the bank. The bank owes Alice $100.

- Bob wants a loan. The bank offers him a loan of $50, backed by the $100 from Alice. The bank owes Alice $100. Bob owes the bank $50.

- Bob withdraws the $50 to spend on coke and hookers. The bank uses $50 of the money deposited by Alice to give to Bob. Bob has $50. Alice still has $100 balance.

The bank has just created $50. Everyone is happy unless Alice (and everyone else) wants to withdraw their money and they aren't able to get it back from Bob. That's a bank run.
by aatd86 | 2025-05-16 15:40:56+00:00
No I read the post. I had actually read it before I think even. But I am not convinced by the on demand part.

Isn't on demand what chat llms already do nowadays btw?

point being that generating visual UI components is easy. chatgpt does it. server driven UI does it.

But multimodal interaction is something else that goes further.
by ec109685 | 2025-05-16 15:41:37+00:00
Regarding stale-while-revalidate, the author calculates maximum load like this: “With the options available on hn.unlurker.com, there are only 10 * 12 * 8 * 2 or 1920 possible combinations, refreshed at most once every 15 seconds”

That math works until it doesn’t. If for some reason there’s a greater than 15 second response, the cache will open the floodgate and won’t return any cached response until the cache is full.

Similarly, errors need to be accounted for. If the server returns a 500, is it configured to be cached? Is stale-while-error configured so the error state doesn’t take the server down?
by Towaway69 | 2025-05-16 15:41:49+00:00
I know of Py-Red[1] which is an attempt to do the same but with Python. Using Node-RED as a frontend and something else as a backend, no I haven't heard of anything similar.

Main problems with visual flow based programming is the tooling: there aren't any good tools for doing visual comparison nor visual version control. Things like GitHub aren't able to render flow code as seen in the editor.

For Node-RED that means that the Json that defines a flow can be compared but that soon becomes meaningless because semantic changes get mixed with visual changes, i.e., that the x,y coordinates of a node have changed - is meaningless for the logic of the code.

This means that code sharing and collaborative development is difficult purely visually but only because tooling is missing. Compared to textual programming before things like SourceForge or Git and we had the same issues as we do with visual coding now.

Node-RED has a bunch of features to make large programs maintainable. Things like link nodes that allow jumping between flows also allow code reuse. There also subflows which encapsulate repeated code and can be referenced from anywhere.

That's also why I chose Node-RED for this because it seems to be the most mature and best maintained low-code visual flow-based programming tool. There are others such as n8n (which seems to be the other biggie) but they lack the generalness of Node-RED. I can create web sites with Node-RED while and the same time controlling my LEDs via Raspberry installation. Node-RED is extremely flexible.

[1]: https://github.com/mdkrieg/py-red
by pmarreck | 2025-05-16 15:41:50+00:00
I looked at the docs. This seems to be comparing against Lua, which is why I specifically said LuaJIT

This is quite a distinction to be made. Can you clarify?

Directly from their guidelines page:

Lua We write code compatible with Lua 5.1, 5.2 and 5.3. Smalltalk/Ruby symbols are represented as normal strings. We use Lua 1-based array and the length operator #. We use single object when a class is not required. Bitwise operators with various Lua versions is a nightmare. We use luacheck as a linter.

If they are writing code compatible with Lua 5.2 or 5.3, then that cannot be LuaJIT, which is ONLY compatible with Lua 5.1. (Unless they mean that they JUST write 5.1 code, which due to backwards compatibility is runnable on 5.2 and 5.3? It's unclear from here.)
by snthpy | 2025-05-16 15:41:50+00:00
Looks neat, thanks!

Unfortunately the first file I tried it on it didn't do anything useful because that file had header and footer lines (FTSE market files have descriptions in the first 2-3 lines and an XXXXXXXXXX marker on the last line).

Can you add an option to drop the first X and last Y lines? That's pretty common for things like pandas.read_csv() etc...
by rocqua | 2025-05-16 15:42:23+00:00
Dynamic(ally typed) languages, by virtue of not requiring strict typing, often lead to more complicated function signatures. Such functions are generally harder to reason about. Because they tend to require inspection of the function to see what is really going on.

Multithreaded code is incredibly hard to reason about. And reasoning about it becomes a lot easier if you have certain guarantees (e.g. this argument / return value always has this type, so I can always do this to it). Code written in dynamic languages will more often lack such guarantees, because of the complicated signatures. This makes it even harder to reason about Multithreaded code, increasing the risk posed by multithreaded code.
by memcg | 2025-05-16 15:42:43+00:00
Well, I made the mistake of giving you an email address, but bailed when you you wanted more PII just to find out where a lab was in Maryland. Since then I have received 5 emails in my Yahoo spam folder. The "Unsubscribe - Unsubscribe Preferences" links in the emails don't function. I replied with unsubscribe in the subject line, but still get what is now clearly spam.
by deaddodo | 2025-05-16 15:43:47+00:00
There's still plenty of information on the file format kicking around:

https://www.fileformat.info/format/pif/corion.htm

https://web.archive.org/web/20220214185118/http://www.smsoft...

As well as a basic explanation of the file's purpose:

http://justsolve.archiveteam.org/wiki/Program_information_fi...
by 90s_dev | 2025-05-16 15:43:48+00:00
> But lua isn't like that. It's not weakly typed like javascript - it's more akin to pythons dynamic duck typing system

What? No, Lua's type system is practically identical to JavaScript's.

Even metatables are extraordinarily similar to prototype chains via __index (though much more powerful since they allow for operator overloading, which I wish JS had).
by hombre_fatal | 2025-05-16 15:43:50+00:00
I thought this was just going to be the same ol "where id = {id}" interpolation but dang, those are some crazy examples.

I can imagine the behavior takes some trial and error to figure out, but it looks like you can write a search() query that contains fully-loaded sql statement as if all facets were provided, yet you can make each facet optional and those expressions will get removed from the statement.

That would be much nicer than the traditional route of building up a where clause with a bunch of if-statements where it's very hard to understand what the final where clause might look like without print(statement).

I'd rather write the whole SQL statement upfront which this seems to let you do.
by RUnconcerned | 2025-05-16 15:44:01+00:00
I dunno about what you wrote, but here is one that clearly violates what OP said!

https://godbolt.org/z/Y4Yjb7z9c

clang notices that in the second loop I'm multiplying by 0, and thus the result is just 0, so it just returns that. Critically, this is not "exactly and only what the programmer specifies", since I very much told it to do all those additions and multiplications and it decided to optimize them away.
by beeflet | 2025-05-16 15:44:04+00:00
The new trend of starting a "token" on top of some PoS cryptocurrency greatly saddens me.

Back in the old days, you would have to actually start your own cryptocurrency (like Dogecoin) every time you wanted to sell some worthless token. Not only did this result in more technical diversity of cryptocurrencies, but if you got enough people together you could do a 51% attack and take malicious projects off the network.

Nowadays, this would never work. Even if they couldn't hitch a ride on another cryptocurrency, they would just use PoS and with a premine it's basically classical consensus.
by aabajian | 2025-05-16 15:44:51+00:00
Just going to remind y'all of this: https://www.joelonsoftware.com/2005/12/29/the-perils-of-java...

I went to a Java school. I remember my operating systems class involved writing simulated OS code in Java (for example, round robin for context switching). The argument was that it would be easier to understand the algorithms if the hardware complexities were minimized. I understand that sentiment, but I don't think Java was the right choice. Python would have accomplished the same task even better (understanding algorithms). I think there was a huge influence from industry to teach college students Java from day one. I had taught myself BASIC and some C back in high school, so it was a bit of a step backwards to learn a high-level language just to do simulated low-level OS programming.
by dmkolobov | 2025-05-16 15:45:12+00:00
The scrolling behavior of text on this blog is pretty wild. Each paragraph has “subtle” animation when you stop scrolling on mobile: as if each paragraph is independently floating into its spot. It’s incredibly disorienting.

Like… I get it: your design language revolves around treating UI elements as physical objects. Messing with text is a step too far. Text is not a bunch of boxes connected by springs.
by 1_08iu | 2025-05-16 15:45:46+00:00
t-strings (or template strings) are an upcoming Python 3.14 feature. They have similar syntax to f-strings (which were introduced in 3.6) except that they provide access to the string and the interpolated values (the bits inside the curly brackets) before they have been combined. Previously, something like

db.query(f"SELECT * FROM table WHERE id={id};")

would have been vulnerable to the classic "bobby tables" SQL injection but t-strings allow for almost the same syntax (which is quite natural for Python programmers) without incurring a security risk.

If you are curious, t-strings have previously been discussed here (https://news.ycombinator.com/item?id=43748512 and https://news.ycombinator.com/item?id=43647716) and you can read the PEP that proposed their addition to the language (https://peps.python.org/pep-0750/).
by eastbound | 2025-05-16 15:46:00+00:00
It doesn’t do the internal navigation.

And since React doesn’t have built-in support for pushState (Yes I know React Router, but it really wants a hash router), you really need extra work for an internal router. And therefore, every beginner dev does it manually and slightly inconsistently.

So yes, React is absolutely the driver, same as Java is guilty for Guava existing, because it should have been built-in and perfect.
by noodlesUK | 2025-05-16 15:46:29+00:00
Thanks for doing the AMA!

I'm a US citizen born abroad - I got my citizenship via (I believe) INA 320 when I was a child. I have a US-born father who was not eligible to pass on his citizenship at the time of my birth. I lived in the US for most of my childhood up until ~2015 (initially as an LPR), and at some point, I obtained a US passport.

I don't have a certificate of citizenship, only a US passport. Given the way the US is going, I'm concerned that one day I'm going to apply renew my passport or otherwise have to prove my citizenship, and I'm not going to be able to sufficiently document it. Is this a real risk? Would you advise applying for a CoC in my circumstances? Am I even eligible to apply for one given that I live abroad? What other steps if any should I take to protect my status?
by jillyboel3 | 2025-05-16 15:47:08+00:00
Terms that were illegal and thus not binding in many jurisdictions. If I were to write: "By replying to this comment you agree to my Terms of Service which require you to paypal me 10k", you would laugh and disregard it. Same thing.

Anyway, just look at how apple forced their payment service so they can take a 30% cut of every transaction made by any iPhone user. Then they banned price differences between Apple's own payment service and external, cheaper, ones. This forces companies to raise their prices by 30% everywhere. So we're all paying more to fund apple's greed. This is just one example of many, and you have to look beyond the apple vs epic fight since that is just the most public instance. Apple are the bullies.

Apple are involving themselves in business between their customers and companies those users have chosen to use. Apple are the bullies.
by catapart | 2025-05-16 15:47:09+00:00
Well, for starters, I haven't been doing that kind of work since just before COVID, so I don't know if my metrics would still mean anything.

But, that aside, it's an odd thing to try to contextualize. Do I THINK that there were more kids that were "troubled"? No, anecdotally, I don't think I saw anything that I would consider alarming. But I never really saw any kid as "troubled". Just "focusing on the wrong thing" or "thinking about it in a confusing way", or "trying to reconcile two incompatible ideas/philosophies", etc.

Meanwhile, my peers would complain about things being "worse" or specific kids being "unable to work with" or whatever. But when the kids were shuffled and it was my time to work with them, I didn't really have any issues. There were kids trying to tear down the walls, sure, but that's a lot of fun if you chase it. And, more importantly, it's physically exhausting. So sooner than later, all of the kids just want to chill. And once they're chill, they like to discuss all kinds of things. Especially if they can be related to the physical activities they were just doing. And since kids are generally ignorant, you can take all kinds of winding paths of rhetoric to link one idea to another, and they tend to stay excited to chase the logic (learning is fun; it's part of why we play video games).

So, answering your question is kind of odd because while I would say "no", that may not be your standard of measurement and I'm just one anecdote anyway. If the statistics say it's getting "worse", I can trust that, personally. Just - like you said - I tend to think of the "worse" as describing the cause, not the symptom.
by ToucanLoucan | 2025-05-16 15:47:23+00:00
> We're watching an ongoing capital crisis in the West where we've been out-invested by nominal communists; it is absurd.

I personally would lay far more of the blame at the feet of the slow-but-steady disassembly of a proper tax code which has rendered our Government all but unable to function from a fiscal perspective since the Reagan years. I'm curious if you would feel the banks are more responsible, and if so, how?

Everything I've read on the subject over the years pretty squarely lays it at the austerity movements that have utterly crippled most western countries but none more thoroughly than the United States, where the notion seemingly of spending any public money on anything no matter how needed that isn't Defense spending is Communist, alongside of course the general (and consequential of that) transfer of wealth from the working class to the extremely wealthy who dodge more taxes than ever before, perhaps in all of history of the practice of collecting taxes.
by fedsocpuppet | 2025-05-16 15:47:26+00:00
Here's what Google PageSpeed has to say about it: https://pagespeed.web.dev/analysis/https-design-google-libra...

- Performance 44/100

- First Contentful Paint 1.7 s

- Speed Index 6.5 s

- Total Blocking Time 920 ms

- Largest Contentful Paint 4.8 s

at least it's emotional
by jsbg | 2025-05-16 15:47:44+00:00
Not a lawyer but have been working in the US on a TN status for multiple employers and I would answer yes and discuss further with the recruiter or hiring manager.

TN status is conceivably something you could get without help from the employer (though even the smallest startup hired one to help me set up a package). What you need is basically proof that a company wants to hire you (offer letter), evidence that the company exists, and proof that you fall in one of the TN occupations.
by chiggsy | 2025-05-16 15:47:47+00:00
>some engineer actually decided

No sane person would flaunt Apple secrecy in such a fashion whilst employed there.

>instead of his work quietly improving everyone’s experiBence

Laughable that you feel that Apple engineers have the capacity for this kind of desire in 2025. If they did, Xcode would be way better to use. They cant even quietly improve their own experience.
by paddy_m | 2025-05-16 15:47:57+00:00
Nice work! A couple of comments

1. You don't explain what flow based programming is or when it should be used. It looks like it represents some type of data pipeline, but I'm not sure.

2. Who is this repo for? PL enthusiasts, tool builders of type $X?

3. What are operators?

4. I understand that this is supposed to execute on an Erlang cluster/VM... Could you build a JS implementation of the functions so that you could build interactive demos in a browser? The lack of multithreading in JS doesn't rally matter, you just want to be able to send 10 line examples from one function to another.

5. A fun challenge for documenting projects like this, explain it as you would to a non-technical family member. It forces you to define the other things in erlang in a very direct and simple way.

6. Make a video explaining the project.