MurphyA/hacker-news huggingface dataset:
Show HN: brig – a devcontainer CLI in Go
by nsantos | 2025-12-17 06:17:18+00:00
Hi, HN.

Elevator pitch: brig is a CLI for spinning up containers based on the devcontainers spec that validates configuration against said spec and aims to be an almost drop-in replacement for the official CLI tool.

The validation bit is really important to me personally; I want to keep on using the same devcontainer.json files my team is using, and I want any enhancements I can make to them still be usable in their VSCode environments.

---

I really like the idea behind devcontainers[1], and have pushed for my team to adopt them on pretty much all of our codebases. I also really like how they're nominally not married to VSCode (they're just containers with a few convenience features). For years I just relied on a simple shell script[2] to spin up a container based on the Containerfile/Dockerfile of the project.

It wasn't until recently that I began diving into the spec; when I did, I found pretty nifty features (e.g., lifecycle scripts) that would be kinda nice to have without having to add kludges to my little start-dev-container.sh script.

As an aside, it's been years since I've written anything more than shell and Python scripts (and even longer since I contributed anything to FLOSS). Since Go is pretty widely used in the tools I use (OpenTofu, Podman, Docker), I figured that's not a bad excuse to learn Go.

I put my interest in devcontainers and learning Go together, and here's the result.

While I wrote this for my own needs, I hope someone else would find utility in it.

[1]: https://containers.dev

[2]: https://github.com/nlsantos/brig/blob/38d4ae10557422c37af349...
by RevEng | 2025-12-17 06:20:09+00:00
How exactly does one make software that makes it impossible to view or transmit CSAM? What is looking at each picture, each video, each text message to make this determination?

This is the same classic "wiretap everything" solution that never works and just undermines people's rights. There's no way they would ever use this ability for anything else, right? And nobody else would ever abuse it either, right?

How long until people start using this to capture and produce CSAM?
by jauntywundrkind | 2025-12-17 06:20:45+00:00
I just find it distracting to pretend like we know exactly what albatross to hang around the neck of the problem here. While I do tend to think lidar is probably useful, I also think this isn't a solved shut knowable case where the lidar absolutely is essential & makes all the difference. Making assertions like this rests more assurity than I think can be granted, and harms the overall idea: that Tesla doesn't seem to have serious proof that their things are getting better, that they are more trustworthy.

The data is just not there for us outsiders to make any kind of case, and thats the skimping out crucial baseline we need.
by robot-wrangler | 2025-12-17 06:21:23+00:00
That also is/was awful. But it's just another platform like GHA, and the solution to this kind of thing is always the same, should not be surprising, and is boring in the good way. Write automation so that it's not tightly coupled to the platform on the backend. If you can't migrate between platforms then you're eventually going to be unhappy.

If someone is forcing you towards high stakes tight-coupling with no thought whatsoever towards the lock-in, you should get it in writing that "we at ${org} are fully committed to ${vendor} with ${platform}, on ${cloud} using ${tech} come what may, now and forever" and lots of sign off so that everyone knows who to blame when this is inevitably wrong.
by AnthonyMouse | 2025-12-17 06:21:28+00:00
> No it’s the same for every marketplace. Profits accrue to a few. Look at YouTube, books, artist on Spotify etc.

Many of those are things where the value of a single user is very low and then you need a significant audience just to earn an ordinary salary.

> Software has near 0 marginal costs

But it has significant development costs, and the fact that you're required to use Apple's store makes them even higher, because their restrictions are incompatible with free software licenses, which locks you out of even using LGPL code on iOS, much less anything else.

Apple's hardware has those fancy chips in it, right? Suppose you want to create a front end for Blender and run it on iOS. Your front end doesn't have to use the same license as Blender itself if it's a separate program, so you could charge for it. But Blender is GPL so you can't run it on iOS at all. Then you'd have to write Blender yourself, by which point you're talking something that would need a million a year in revenue, and a 30% deadweight loss could very well make the difference between viable and not.

It's also incredibly disheartening, because you do the work and take the risk and then if you actually succeed you know someone else is going to cut out a huge chunk of the revenue, which discourages people from making the attempt.

> Well known publishers have tried the pay $10 once for a premium game on iOS and users wouldn’t pay for it.

Which is kind of weird when they're empirically willing to do it on other platforms, right?

But that's what happens when you establish a reputation for being capricious while taking a large cut. Who wants to make a significant investment into a platform when the platform is eroding their profits and there is a non-trivial chance they could be arbitrarily cut off at any time with no recourse? At which point the users come to expect apps to be scummy and become disinclined to pay for them up front.
by ekusiadadus | 2025-12-17 06:22:16+00:00
Great question! The current implementation is relatively straightforward: Layout: The diagram generation uses fixed coordinate positioning (x, y values) calculated heuristically based on node indices and predefined spacing. For example, flowcharts use a simple vertical layout with consistent spacing. There's no automatic layout engine - it's manual coordinate calculation. Arrow routing: Currently uses simple direct connections between source and target nodes. draw.io handles the actual path rendering, but we don't leverage draw.io's advanced edge routing algorithms (orthogonal routing, etc.) - arrows just connect the specified entry/exit points. CJK text sizing: This is actually an area that could use improvement. The current implementation doesn't dynamically calculate text width for CJK characters. Node widths are set to fixed values (e.g., 120px for flowchart nodes), which works reasonably for short labels but may clip longer CJK text. draw.io does handle CJK rendering internally, but we're not pre-measuring text to adjust geometry. So to directly answer: it's mostly heuristic-based with fixed layouts, not leveraging draw.io's internal layout rules. The .drawio XML format gives us the geometry, and draw.io renders it. Future improvements could include: - Auto-layout algorithms (dagre.js style) - Text measurement for proper sizing - Smarter edge routing Thanks for the interest!
by felayplay | 2025-12-17 06:22:26+00:00
Free 500 Words — Humanize AI text instantly without signup, registration, or credit card 99% AI Detection Bypass — Pass Turnitin, GPTZero, Originality.ai, Copyleaks, and Writer.com every time Lightning-Fast Processing — Get humanized content in 5-10 seconds, not minutes Meaning Preservation — Original context and ideas stay intact while only the AI patterns are removed
by retsibsi | 2025-12-17 06:23:06+00:00
I don't think I missed the point; my point is that LLMs do something more complex and far more effective than memorise->regurgitate, and so the original analogy doesn't shed any light. This actor has read billions of plays and learned many of the underlying patterns, which allows him to come up with novel and (often) sensible responses when he is forced to improvise.
by mordras | 2025-12-17 06:23:51+00:00
Briefings are a feature, not a moat. If that's your whole product, Google was always going to eat you eventually. We do this too at amaiko.ai. Full M365 integration, but not locked to Microsoft. Can pull in Google services, Jira, whatever else. The defensible part isn't "here's what's on your calendar," it's the AI actually building memory over weeks and adapting to how you work.
by thomassmith65 | 2025-12-17 06:24:41+00:00
This is normal Apple behaviour going at least as far back as the noughties, if not the 1980s.

Apple care about the American and Asian markets. They have long treated the EU as a joke whose consumer laws they can ignore. That is why, the past few years, Apple has behaved so petulantly and strangely in reaction to EU stipulations. They feel it's beneath them.

https://news.ycombinator.com/item?id=43421180
by koverstreet | 2025-12-17 06:26:14+00:00
I haven't looked at fs-verity at all, but per-file merkle trees should definitely be built into the filesystem as a standard thing. Rsync and file transfer programs want it, and having to compute that every time is crap - if it's built into the filesystem it can easily be computed lazily and invalidated if need be.

(obligatory plug for people to jump in and get involved with writing code if they want to see more of this stuff happen)
Why “negative vectors” can't delete data in FAISS – but weighted kernels can
by loaderchips | 2025-12-17 06:26:59+00:00
The fix for machine unlearning in vector databases turns out to be conceptually simple, but it requires changing the semantics of retrieval.

Standard FAISS-style indices store vectors and compute:

argmax ⟨q, vᵢ⟩

If you insert -v, nothing happens. It’s just another point. The original vector is still maximally similar to itself and remains rank-1.

This isn’t a bug—it’s a consequence of selection-based retrieval.

If instead you store (vector, weight) pairs and evaluate: φ(q) = Σ wᵢ · K(q, vᵢ)

you get a different object entirely: a field, not a selection. Now inserting the same vector with w = −1 causes destructive interference. The contribution cancels. The attractor disappears.

Deletion becomes O(1) append-only (add the inverse), not a structural rebuild.

FAISS-style: Vec<Vec<f32>> → argmax (selection) Weighted form: Vec<(Vec<f32>, f32)> → Σ (field)

We validated this on 100k vectors: • FAISS: target stays rank-1 after “deletion” • Field-based model: exact cancellation (φ → 0), target unretrievable

The deeper point is that this isn’t a trick—it’s a semantic separation. • FAISS implements a selection operator over discrete points. • The weighted version implements a field operator where vectors act as kernels in a continuous potential. • Retrieval becomes gradient ascent to local maxima. • Deletion becomes destructive interference that removes attractors.

This shifts deletion from structural (modify index, rebuild, filter) to algebraic (append an inverse element). You get append-only logs, reversible unlearning, and auditable deletion records. The negative weight is the proof.

Implication: current vector DBs can’t guarantee GDPR/CCPA erasure without reconstruction. Field-based retrieval can—provably.

Paper with proofs: https://github.com/nikitph/bloomin/blob/master/negative-vect...
by rendall | 2025-12-17 06:27:18+00:00
There is no coherent principle that that cleanly includes Denmark, Norway, and Sweden while excluding Finland. Not geography, language, religion, culture or history.

Finland is not on the Scandinavian Peninsula, but it is physically contiguous with Sweden and Norway and deeply integrated into the same northern European ecological, economic, and transport space. If peninsulas are the criterion, then Denmark is already a special pleading exception.

Finland is officially bilingual, Swedish is a national language, and Swedish is historically entrenched in Finnish administration, law, and elites. Meanwhile Finnish is spoken by a large minority in Sweden. So language does not draw a clean boundary.

Lutheranism dominates across Finland, Sweden, Norway, Denmark, and Iceland.

Finnish culture is distinct in some ways, but so is Icelandic relative to Denmark, and Norwegian relative to Swedish. Distinctiveness exists inside the supposed core as much as between core and periphery.

Finland was part of the Swedish realm for centuries, was governed through the same institutions, and emerged into modernity shaped by the same legal and administrative traditions.
by AngryData | 2025-12-17 06:28:38+00:00
Its from when cars were new and it was hard to convince people to buy them to start with instead of just using their horses and buggies and manufacturers didn't spend money on marketing or shipping or sales outside of the local area. So independent car dealers setup shop, bought cars, shipped them across the states, marketed them, trained mechanics to service them, built gas stations, and built a customer base. Then as soon as all the marketing was done and sales started picking up in the area the manufacturer would pop in, undercut the local dealer who just spent all the money marketing and showing off cars and building up stock, buy out their skilled mechanics, and left the dealer with all the debt from advertising and training that they could no longer pay off.

For awhile they got away with it, but eventually it became obvious as to what manufacturers were doing and not having to advertise and built up a local car and mechanic and gas supply economy, so legal protections were put in place to protect the independent dealers from getting shafted.

Of course add on another 100 years of political fuckery all around the industry and you get the mess of today.
by figmert | 2025-12-17 06:28:40+00:00
I'm late to the party, but Gitea as has Gitea Actions[0] based on their fork[1] of act[2]. Their claim is that it's mostly compatible with GitHub Actions. I wonder if this can be spun off to have the control plane run separately and integrate into GitHub Action. Or alternatively mirror the repo for Gitea Actions only.

[0] https://docs.gitea.com/usage/actions/overview

[1] https://gitea.com/gitea/act / https://gitea.com/gitea/act_runner

[2] http://github.com/nektos/act
by mc3301 | 2025-12-17 06:30:31+00:00
Because 少年 in hiragana is しょうねん: spelled out that is "sho u ne n"

Many, but not all long vowels in japanese follow these:

ああ a i -> as in おかあさん, mother

いい i i -> as in ちいさい, small

うう u u -> as in すう, to smoke

えい e i -> as in せんせい, a teacher

おう o u -> as in こうえん, a park

Yes, exceptions to this exist (like おお) and some are actually dipthongs and not actually long-vowels, but easier to think of them like that.
by jjk166 | 2025-12-17 06:30:38+00:00
> People want journalists to publish quickly AND only publish what’s fully verified.

Not contradictory. People want information to be verified quickly. That's the job. The person who can do it the fastest gets the scoop. Publishing unverified stuff isn't doing the job faster, it's not doing the job. You can get away with cheating for a bit, as you can probably guess what's going to wind up getting verified most of the time, but that's all the more reason to punish cheaters when they eventually are caught.

And even then, publishing rumors and speculation are fine so long as they are clearly noted as such. It is only when unverified statements are treated as facts that there is a problem.

> They want anonymous sources named "in the spirit of truth," without grappling with the reality that doing so would instantly dry up anyone risking their job, or worse, to provide information.

You're not supposed to cite an anonymous source saying there are bodies buried; you're supposed to learn where the bodies are buried from the anonymous sources and then show the bodies as evidence. There is no need for an appeal to authority when you have proof. If a story relies on cited sources they should be named, and if no one is willing to go on the record then you shouldn't be relying on cited sources.

Also we should be pushing for strong whistleblower protections, especially reporting when whistleblowers are retaliated against.

> They expect journalists to release raw information as soon as they have it, while simultaneously acting as perfect filters

Who is asking for either raw data streams or that the news act as filters? People expect evidence (ie things that can be verified) and analysis (ie context for the evidence presented). Omitting unreliable evidence is fine, but people complain when the standard for reliable evidence changes without good reason.

> never amplifying rumors, or being wrong, even as new facts emerge.

If you publish actual facts, they will remain facts no matter what new facts emerge. Truth never contradicts truth, it only expands the story. It is perfectly fine to have incomplete facts, you better have a damn good reason if you have false facts.

> They want neutrality, except when neutrality conflicts with their priors.

No one wants neutrality, they want integrity. You can enthusiastically report that your side is right any day of the week so long as you're also willing to report when they're wrong. It's when evidence is chosen to fit the narrative rather than the narrative developed around the evidence that there's a problem.

> It's no wonder that morale among journalists is at an all-time low.

Morale should be low in an industry driven to compromise it's standards and race to the bottom, and the worst offenders are the most highly rewarded. This should be an impetus for change.
by bsder | 2025-12-17 06:31:03+00:00
And now lets overlay the number of trucks vs population. Note where most of the total number of pickup trucks (not per capita--flat out total) are.

Hint: most of the trucks are NOT in the rural areas due to the fact that the rural areas, by definition, do not have that much population. Also, rural areas tend to have old beater cars because gas prices are an issue and pickup trucks generally get quite a bit worse gas mileage than a basic sedan.

The problem is that the vast majority of pickup trucks are, in fact, being sold in the suburbs which don't have any of the problems with having to go off of a road.
by alexmccain6 | 2025-12-17 06:31:33+00:00
That’s roughly the direction I’m thinking as well. Bank-to-bank transfers (e-transfers, ACH, SEPA, UPI, etc.) are already legal and widely used for paying businesses directly, without card networks or pooled balances.

The idea isn’t to change that, but to provide a self-hosted, non-custodial orchestration layer around those rails. The software wouldn’t hold funds or act as a counterparty....it would just help merchants initiate and observe transfers using their own bank relationships, with clear settlement and no payout abstraction.

Where things get tricky is cards, which are a very different model. But for bank rails, I agree the legal foundation already exists, and the question is more about how much orchestration you can provide before it’s considered intermediation.

Happy to be corrected if I’m missing something.
by nl | 2025-12-17 06:31:34+00:00
I think most things humans do are reflexive, type one "thinking" that AIs do just as well as humans.

I think our type two reasoning is roughly comparable to LLM reasoning when it is within the LLM reinforcement learning distribution.

I think some humans are smarter than LLMs out-of-distribution, but only when we think carefully, and in many cases LLMs perform better than many humams even in this case.
by v3g42 | 2025-12-17 06:32:04+00:00
Hey, I’m one of the builders behind vLLora, so let me clarify the reasoning.

We split the project intentionally: everything embeddable (the Rust crate you ship inside your own product) is released separately under Apache 2.0. So if you’re embedding it, you’re not inheriting license-key / “licensing baggage” concerns in your codebase. (https://crates.io/crates/vllora_llm)

The parts under the fair-code license are the local debugging UI/tooling. Will always be free to use, we just don’t want it copied and resold.

Any paid, advanced observability lives in a separate cloud offering under a different name so there is no confusion whatsover.

We use it to build deeper agentic workflows. it’s been extremely useful for iterating and we want to share this free to use with everyone. Happy to share our experiences if you want to know more.

Re: "no moat, just a few prompts + Claude/Codex". I’ll be a bit cheeky you’re entitled to that view, but we’re in different camps. Some folks vibe code everything; We believe in having proper tools. You still want a screwdriver for screws.
by justcool393 | 2025-12-17 06:32:26+00:00
why wouldn't you? these are easily compressible text files. storing even like 100x into a 400 day (at most, the default for GH is 90) box is downright cheap to do on even massive scales.

it's 2025, for log files and a spicy cron daemon (you pay for the artifact storage), it's practically free to do so. this isn't like the days of Western Union where paying $0.35 to send some data across the world is a good deal
Show HN: FitSaver – A small app I built to turn fitness content into habits
by chetansorted | 2025-12-17 06:33:57+00:00
Hi HN,

I’m building FitSaver as a side project after noticing I was collecting fitness content instead of actually working out. Social platforms are great at inspiration, but terrible at execution. Once you leave the feed, there’s no structure to help you follow through. FitSaver lets you take a workout video and turn it into something actionable:

A defined routine Timed rest Progress you can track

The goal is simple: reduce the mental overhead between “I should do this” and “I’m doing it.”

The app is still early and rough around the edges.

I’m sharing it here to learn:

Whether this is a real problem beyond my own experience? Available via TestFlight for now: https://testflight.apple.com/join/Mz7HkFhn
by LargoLasskhyfv | 2025-12-17 06:34:30+00:00
I tried both of them out. They are not for me, ATM. Maybe the too light for you results from different hardware. I have screens where I can adjust brightness and contrast separately, running at a color temperature of 5000K (warm).

That's different from what most laptops do, or fiddling with xgamma, or one of its frontends, using 'redshift', etc.

Even at brightest sunshine I don't go over 55% brightness, otherwise during the day, between 38% to 44%, at night just 20%, with contrast always two below these settings, or any I may use in between.

Despite all this, pictures look just right, even if I visit sites for calibration.
by simonw | 2025-12-17 06:35:51+00:00
All of the prompts I used are in the article. The two most relevant to testing were:

We are going to create a JavaScript port of ~/dev/justhtml - an HTML parsing library that passes the full ~/dev/html5lib-tests test suite. [...]

And later:

Configure GitHub Actions test.yml to run that on every commit, then commit and push

Good coding models don't need much of a push to get heavily into automated testing.

I used Codex for a few reasons:

1. Claude was down on Sunday when I kicked off tbis project

2. Claude Code is my daily driver and I didn't want to burn through my token allowance on an experiment

3. I wanted to see how well the new GPT-5.2 could handle a long running project
by wavemode | 2025-12-17 06:36:05+00:00
> you write routes and logic in JavaScript, and the CLI compiles everything into a single Rust + Axum binary using the Boa JS engine

It's not clear to me how this would have better performance than plain Node.js, which is a C++ binary using the V8 JS engine.

It looks like you're handling routing in Rust, but this seems unlikely to move the needle measurably. In fact, it could be hurting you - you're basically betting that the rust program (route request + invoke JS interpreter + marshal data) is faster than the much simpler JavaScript program (route request). That doesn't seem likely.
by EmilStenstrom | 2025-12-17 06:36:55+00:00
Talking about "thieves" is very much going back to the idea that software is the same thing as physical things. When talking about software we have a very simple concept to guide us: the license.

The license of html5ever is MIT, meaning the original authors are OK that people do whatever they want with it. I've retained that license and given them acknowledgement (not required by the license) in the README. Simon has done the same, kept the license and given acknowledgement (not required) to me.

We're all good to go.