MurphyA/hacker-news huggingface dataset:
by mike_hearn | 2025-05-12 10:18:03+00:00
Thanks for the BreakApp paper. I read it this morning. This sort of thing is heading in the right direction and I've explored it before (without writing a paper), but there are some problems with their approach that they seem to have ignored which ended up sucking up a lot of the time I put into it. OTOH there are lots of good points: the usability issues are front and center, and they (very roughly) sketch out a threat model.

The first problem is that their attempt to abstract program location has a lot of bugs. You can't solve cross-process GC with the approach they outline (in like, one paragraph). Using finalizers to release cross-process references fails the moment there's a reference cycle. To trace cycles across heaps requires a new kind of GC that doesn't exist today, as far as I know, made much harder by the fact that they're including DoS attacks in their threat model. And intercepting value writes then batching them to save IPCs changes program semantics in pretty subtle ways. I think this is actually the core problem of sandboxing libraries and everything else is a well understood implementation distraction, so it'd be good to have a paper that focused exclusively on that. They also seem to think that modules return DAGs but they don't, program heaps are directed cyclic graphs, not acyclic.

The second problem is that their policy language is too simple and doesn't have any notion of transitive permissions. This is the same issue that made SecurityManager hard to use. You can grant a module filesystem access but in a typical JS app being tested or run on a developer's desktop, that's equivalent to granting all permissions (because it can write to some module directory). Even if you use Docker to ship the app there's no guarantee the js files inside the container are read only, as in a container programs often run as root.

The third problem is the only sandbox they offer is LXC containers, but containers aren't meant to be sandboxes and often aren't "out of the box". And of course they're Linux specific but development of JS apps often takes place on non-Linux machines. The details of actually doing kernel sandboxing for real are rather complex.

Still, something like this is the right direction of travel. The usability issues with process sandboxing arise due to performance problems and the harshness of the address space transition. Allowing object graphs to be 'shadowed' into another process, with proper handling of memory management, and then integrating that into language runtimes seems like the right approach.
by bob1029 | 2025-05-12 10:18:12+00:00
A skilled user.

I understand and mostly support the idea of mandatory AV for the people who can barely handle the concept of a file system.

There is also a class of user forged in the fires of the primordial internet who would never in a trillion years be tricked into clicking a fake explorer.exe window in their browser.

Giving users choice is the best option. Certainly, make it very hard to disable the AV. But, don't make me go dig through DMCA'd repos and dark corners of the internet (!) to find a way to properly disable this bullshit.
by jbellis | 2025-05-12 10:18:16+00:00
I love Aider, but I got frustrated with its limitations and ended up creating Brokk to solve them: https://brokk.ai/

Compared to Aider, Brokk

- Has a GUI (I know, tough sell for Aider users but it really does help when managing complex projects)

- Builds on a real static analysis engine so its equivalent to the repomap doesn't get hopelessly confused in large codebases

- Has extremely useful git integration (view git log, right click to capture context into the workspace)

- Is also OSS and supports BYOK

I'd love to hear what you think!
by nighthawk454 | 2025-05-12 10:18:19+00:00
I certainly agree, I think the financial mechanisms are not very obvious. Presumably somewhat by design. And yet it also seems to be one of the main tricks in modern financial engineering - it just keeps turning up. See also: corporate buybacks, private equity, private credit, mortgage backed securities, etc.

All are versions of this ‘shuffling of risk’ from debtors to “investors”. The middlemen take their cut along the way. Then if and when the bubble bursts debtors default and investors take a bath. Or the slow case, the debt inflates away and investors pay for it in lack of returns, ultimately losing money in real terms despite balances going up.

While BNPL by itself may not be large enough to do the economy in, some of those other examples mentioned are. And I imagine there’s probably some joint risk from running so many instances of this scheme at once (i.e. one goes out they all go out).
by throwaway287391 | 2025-05-12 10:18:53+00:00
"There's nothing to prevent any state from funding the universities in their states."

I would've thought one major issue is that a much larger chunk of tax revenue is collected by the IRS than by any state. From googling, CA has the highest state income tax rate but still collects <5% of US federal tax revenue, while having >10% of the population. ~2.5x'ing state taxes to attain similar per-capita revenue would probably lead to a fair number of people leaving the state, or at least get the party who passed that tax hike (presumably Democrats) voted out in the next state election.

OTOH the NSF annual budget is $10B/year, in theory "easily" fundable by CA alone with its $220B/year in tax revenue, in the worst case with a 5% tax increase. The NSF isn't the only federal agency that funds research (seems to provide around 25% of federal research funding) but it is probably enough for one state, even the most productive one. So maybe it really is doable.
by quietbritishjim | 2025-05-12 10:20:30+00:00
> Why doesn't the compiler immediately detect that this object is unused and thus optimize away the object as soon as possible? Is it always guaranteed that the destructor gets called only after the current scope exits?

Yes, exactly. The destructor is allowed to have some visible side effect such as closing a file handle or unlocking a mutex that could violate the assumption of the code in that block. (Even just freeing some memory could be an issue for code in the block.) It is guaranteed that the destructor is closed at the end of the block, and that all the destructors called in that way happen in reverse order to the order of their corresponding constructors.
by Gareth321 | 2025-05-12 10:21:17+00:00
Your account sounds accurate, but how fitting then that their cost cutting focus is losing them customers and potentially their entire company. VW is losing the EV war. Most manufacturers have already lost. Tesla and BYD are going to eat everyone's lunch. They either need to revolutionise their approach, or they're toast. I suspect they'll attempt to milk their existing supply chains into bankruptcy.
by mike_hearn | 2025-05-12 10:22:02+00:00
FDs are owned by processes, not libraries, and are by themselves not sufficient to implement a sandbox. A lot of policies people want to implement in the real world can't be expressed in UNIX or with file descriptors. For instance: UNIX kernels don't understand HTTP, but restricting socket access to particular domains is a common need. Of course, all of this can be hacked on top. Another example: stopping libraries quitting the process can't be done with fds.

Every modern OS has very much not been inspired by UNIX. Windows has little in common with it e.g. no fork/exec equivalents, the web is a sort of OS these days and has no shared heritage with UNIX, and many operating systems that ship a UNIX core as a convenience don't use its APIs or design patterns at the API level you're meant to use, e.g. an Android app doesn't look anything like a UNIX app, Cocoa APIs aren't UNIX either.
by imiric | 2025-05-12 10:22:10+00:00
I'm not sure why you were downvoted. You're right that buffers and everything being programmable makes Emacs an ideal choice for building an AI-first editor. Whether that's something that a typical Emacs user wants is a separate issue, but someone could certainly build a polished experience if they had the resources and motivation. Essentially every Emacs setup is someone's custom editor, and AI features are not different from any other customization.
by Kaibeezy | 2025-05-12 10:22:24+00:00
At a local/mom-n-pop, if they asked, sure. At a corporate cafe no employee would care, so why should I?

In part, it’s a marginal utility problem. How do I know it’s not now peak crowded and will start to empty out if I wait 5 minutes. People can go somewhere else if it’s too crowded; I would have gone somewhere else; people with lower tolerance than me will leave before me; etc.
by hn_throw2025 | 2025-05-12 10:25:29+00:00
I think you’re right, and perhaps it’s time for the “autocomplete on steroids” tag to be retired, even if something approximating that is happening behind the scenes.

I was converting a bash script to Bun/TypeScript the other day. I was doing it the way I am used to… working on one file at a time, only bringing in the AI when helpful, reviewing every diff, and staying in overall control.

Out of curiosity, threw the whole task over to Gemini 2.5Pro in agentic mode, and it was able to refine to a working solution. The point I’m trying to make here is that it uses MCP to interact with the TS compiler and linters in order to automatically iterate until it has eliminated all errors and warnings. The MCP integrations go further, as I am able to use tools like Console Ninja to give the model visibility into the contents of any data structure at any line of code at runtime too. The combination of these makes me think that TypeScript and the tooling available is particularly suitable for agentic LLM assisted development.

Quite unsettling times, and I suppose it’s natural to feel disconcerted about how our roles will become different, and how we will participate in the development process. The only thing I’m absolutely sure about is that these things won’t be uninvented with the genie going back in the bottle.
by mdhb | 2025-05-12 10:26:08+00:00
Tooling, documentation, language design, balance across a million different competing goals, interoperability, deployability, simplicity, expressivity and much more.

It’s just a REALLY REALLY nice modern language with a team of very smart people behind it who very clearly sweat the small details and have a long history of being able to make great decisions along the way even in ambiguous situations where it’s not always clear what the best path is going to be.
by e40 | 2025-05-12 10:26:14+00:00
We have a real problem in the way we think about intelligence. There are so many dimensions to intelligence that having a single scalar value is very counterproductive.

Your friend seems to have a certain type of intelligence, while you and your other friends have a different type of intelligence.

Part of the current political situation is in part due to the traditionally intelligent people looking down on the rest of society.

For a functioning society we need all types of intelligence, and we need to value them all. Equally.
by keepamovin | 2025-05-12 10:26:30+00:00
Correct! The browser is now the key vector because it's the most promiscuous and lascivious-for-code-and-data software on most devices.

Browser-zero days are why I factored out a way to distribute "web RPA agent creation" on any device, with no download - into its own product layer for browser-isolation. It's a legitimate defense layer but main barriers to adoption are operating friction, even tho it makes the task of hackers who want to compromise your network with browser 0-days much harder.

Because of that the RBI aspect is not as popular as ways its being used where you need a really locked down browser, with policies for preventing upload/download, even copy and paste, etc - for DLP (data loss prevention), for regulated enterprises.

Even so I think the potential applications of this tech layer are just starting.
by inkyoto | 2025-05-12 10:28:17+00:00
I can't readily find the original reference where I read it, but one source[0] does allude that it was a real possibility:

«At the time, the 386 team felt that they were treated as the "stepchild" while the P7 [80960] project was the focus of Intel's attention. This would change as the sales of x86-based personal computers climbed and money poured into Intel. The 386 team would soon transform from stepchild to king».

And, yes, the histories of iAPX 432 and 80960 are so closely intertwined, that in many ways the 960 can be considered a design successor of the 432.

> But the only person who can really do that is the platform owner. Apple were quite successful with their 68k to PowerPC transition. And the PowerPC to x86 transition. And the x86 to Aarch64 transition. But that transition really needs to be done by the platform owner.

I wholeheartedly and vehemently agree with you on this – full platform ownership and the control of the entire vertical is key to being able to successfully execute an ISA transition. Another success story is, of course, IBM with iSeries (nèe AS/400) and zSeries (nèe 360/370/390), albeit their approach is rather different.

[0] https://www.righto.com/2023/07/the-complex-history-of-intel-...
by d1sxeyes | 2025-05-12 10:28:26+00:00
> This is no proof of it and ample evidence it is a good security move which other browsers did first.

You crush up the bitter pill in a spoonful of jam to make it easier to digest.

> Is apple doing similar things with Safari for nefarious reasons?

Yes? Look at what they tried to get away with with PWAs as an example.
Show HN: I’m building a tool to unify job tracking, skills, and salary insights
by BluBeeAI | 2025-05-12 10:28:28+00:00
After 20 years of navigating different roles in tech and business, I kept running into the same problem: managing a career meant stitching together job boards, resumes, spreadsheets, salary tools, and vague advice. It felt like a mess of disconnected parts with no system to it. So, I started building BluBee.ai — a career management platform that tries to unify all of that, with a little help from AI. It’s still early, but here’s what I’m working on: • Unified Dashboard: Track job applications, skill gaps, and goals in one place • AI Suggestions: Career moves based on your experience and interests • Market Insights: Salary trends, in-demand skills, and company-level data • Portfolio Builder: A way to present your work that’s more than just a PDF • Mobile-Friendly: Clean design, works well on the go, dark/light modes included It’s very much a work in progress, and I’m learning a lot as I go — especially around how much people don’t trust black-box AI when it comes to career advice. I’d love feedback, especially from folks who’ve tried building tools like this or rolled their own systems out of frustration. What have you hacked together for your own career management? What’s broken that no one seems to be fixing?
by ffsm8 | 2025-05-12 10:28:57+00:00
The spring tests are generally quicker then the equivalent python test, so ime - the jvm is mostly to blame.

How much time actually goes by after you click "run test" (or run the equivalent cli command) until the test finished running?

Any projects using the jvm I've ever worked on (none of which were clojure, admittedly) have always taken at least 10-15s until the pre-phases were finished and the actual test setup began
by MichaelRo | 2025-05-12 10:29:36+00:00
>> Every day he works in the shop, sweating through long shifts, but somehow still has the energy at night to ...

Well, everyone has this energy at 18. Can you do this "sweating through long manual labor shifts" for 10, 20, 30 years?

If you get hurt or just your body gives up (back pain, neck pain, arthritis or what else), you're in a much worse position as a "trade worker" than an office worker.

Not mentioning how much they'd love to replace you with machines, immigrants or younger workers. This is true in an office setting also but bureaucracy somehow finds a way to survive.
by card_zero | 2025-05-12 10:30:00+00:00
Huh, that's interesting.

https://en.wikipedia.org/wiki/Common_Era#History

It say AD "was conceived around the year 525 by the Christian monk Dionysius Exiguus. He did this to replace the then dominant Era of Martyrs system, because he did not wish to continue the memory of a tyrant who persecuted Christians." So AD itself was a neologism to avoid mentioning something offensive (or someone offensive, Diocletian).
by steveharman | 2025-05-12 10:31:34+00:00
Worth noting that despite the relatively impressive battery / storage capacity, I believe there is still an 800W* max limit into the home's AC system from the EcoFlow inverter using this supply method.

Therefore you can forget completely supplying electricity for an oven, kettle or microwave in most cases.

*Due to local regulations: 800W UK, 600W in some parts of Europe - I believe it's 800W in the US but please DYOR.

Having said all that, their existing PowerStream inverter + battery Power Stations work really well and are literally plug & play. I've been running a setup in the UK and it's drastically reduced our electricity consumption from the grid whilst still being a simple plug & play self-install.
by dvh | 2025-05-12 10:31:34+00:00
> Previous studies, which did not take this effect into account, put the lifetime of white dwarfs at 10^1100 years

That's some kind of typo no? I've only heard previous estimates for white dwarf to be trillions of years, that is significantly shorter that 10^1100

Edit: never mind, by lifetime that me proton decay, not how long they shine light
by Timwi | 2025-05-12 10:31:47+00:00
I'm a fairly competent programmer and problem solver and I'm curious about a wide variety of programming paradigms (Haskell, Lisp, etc.), esoteric programming languages, and even abstract concepts such as Turing machines and lambdas calculus. Despite, I have not benefited from being shown Prolog in classes. I did not understand it (nor did the teacher) and I never became curious about it again.
by frainfreeze | 2025-05-12 10:32:49+00:00
For advanced autocomplete (not code generation, but can do that too), basic planning, looking things up instead of web search, review & summary, even one shooting smaller scripts, the 32b Q4 models proved very good for me (24gb VRAM RTX 3090). All LLM caveats still apply, of course. Note that setting up local llm in cursor is pain because they don't support local host. Ngrok or vps and reverse ssh solve that though.
by AStonesThrow | 2025-05-12 10:33:33+00:00
Well this is a straightforward sentiment with a real "my body, my choice" ring to it, isn't it? Until it isn't.

Perhaps your hardware, when connected to a network, has real effects on the rest of that network. What if your system joined a botnet and began DDOS activities for payment? What if your system was part of a residential proxy network, and could be rented in the grey market for any kind of use or abuse of others' systems? What if your system became a host for CSAM or copyright-violating materials, unbeknownst to you, until the authorities confiscated it?

And what if your hardware had a special privileged location on a corporate network, or you operated a VPC with some valuable assets, and that was compromised and commandeered by a state-level threat actor? Is it still "your hardware, your choice"? Or do your bad choices affect other people as well?
by N19PEDL2 | 2025-05-12 10:33:43+00:00
> I believe that Drew's primary point is that BA is republishing this and therefore, more or less standing behind it as their position as well.

Not necessarily. I flew on Emirates a couple of months ago and when opening the flight map there was a disclaimer saying that the company used third-party map services and that they did not necessarily reflect the company's position on territorial disputes.

This makes sense in terms of PR: if the company did edit those maps, it would need to take a position on certain issues that might please some passengers but upset others.
by bob1029 | 2025-05-12 10:34:21+00:00
GitHub used to be server-side rendered. This is the consequence of drinking the client side framework koolaid.

One could argue about how react makes it easier for big orgs to work together or whatever. But, when the whole point of the product is to be a robust productivity tool for developers and they can't do basic tasks without getting frustrated, it doesn't matter. The entire product could become irrelevant if someone exploits this weakness. Speed is a killer feature in a market where few understand how to actually provide it (or have the courage to preserve it).
by tough | 2025-05-12 10:34:24+00:00
Another cool trick is to deny all the content types you don't care about in your playwright. so if you only want text why bother allowing requests for fonts, css, svgs, images, videos, etc

Just request the html and cap down all the other stuff

PS: I also think this has the nice side-effect of you consuming less resources (that you didnt care about/need anyways) from the server, so win win
by quietbritishjim | 2025-05-12 10:34:51+00:00
If you used a normal method call then there would need to be a corresponding close bracket at the end of the overall line of code, after the end of the lambda function. But the macro ("defer") only occurs at the start of the line, so it has no way to supply that close bracket. So the caller of the macro would have to supply it themselves. As I mentioned near the end of my comment, it seems like the defer macro is specifically engineered to avoid the caller needing a close bracket.

If you don't mind that, I said that you can "simplify the implementation" - what I meant was, as you say, you don't need the overloaded Defer::operator% (or indeed the Defer class at all). Instead you could do:

template <typename Callable> DeferHolder<Callable> _get_defer_holder(Callable&& cb) { return DeferHolder<Callable>{std::forward<Callable>(cb)}; } #define DEFER(my_lambda) auto COMMON_CAT(_defer_instance_, __LINE__) = _get_defer_holder(my_lambda)

Disclaimer: I haven't tried it and I don't normally write macros so this could have glaring issues.
by staticelf | 2025-05-12 10:35:11+00:00
I tried to build an app with web components but honestly, the DX is quite bad and I abandoned the shadow DOM for light dom until I abandoned the vanilla tech stack entirely and moved the project to React. It is just so much faster to develop in React in comparison. Also when stuff goes wrong with components they many times just fail silently with no errors given to the console.

You have such a great community with big, very well thought out libraries like Tanstack Query that is pretty nice to work with. I can have backend and front end code in the same repository in a simple way and reuse code.

I also have the project in Phoenix Liveview which is also a much nicer way of using components. The thing is I don't really know which tech stack is gonna win so I made a small prototype in both to see different advantages / disadvantages.

One thing is clear tho, pretty much everything is better than using vanilla components and it's really sad because I really do want to use vanilla components and I want them to be good.