MurphyA/hacker-news huggingface dataset:
by jamesbelchamber | 2026-01-24 14:06:33+00:00
I think the wisdom of "just fork it" is that in a project the power lies with the people who do the work (yes, that power is often rented out in exchange for a pay cheque), and in an open source project you have the right to do that work without kowtowing to the authority of other people who did the work before you ("just fork it").

The important point lost in many of these anti-fork posts is that forks usually aren't hostile, and "just fork it" isn't usually a dismissal of people's input - rather, it's an invitation to do the work and to stop looking for permission. Which is really the core value of open source - no need for permission, "just do it". Forks also don't generally split communities because forks live within the community (and good community leaders foster the tolerance of forks).

As an example, I have a fork going of someone else's open source project which I made to meet my client's needs. I've got an email thread going with the project owner, it's all very friendly, and one day the fork might merge back in again (probably in parts). I think this is how most forks work, with the exceptions making big headlines partly because they're juicy gossip but mostly because they are exactly that - exceptions.
Show HN: Cook.nvim – an extensible code runner for Neovim
by notcalc | 2026-01-24 14:06:33+00:00
Hi HN,

I built cook.nvim, a Neovim plugin to run or compile the current file in a terminal, based purely on file extension and config.

Instead of baking language support into the plugin, runners are just shell command templates with placeholders ({file}, {exe}, {dir}, etc.), so it works with almost any language or toolchain without plugin changes.

It also supports project-local recipes.lua for things like :Cook build, :Cook test, or custom workflows, plus a small :Coop mode that pipes clipboard input into your program (useful for competitive programming).

Repo: https://github.com/07CalC/cook.nvim

Feedback welcome.
Show HN: Cook.nvim – an extensible code runner for Neovim
by notcalc | 2026-01-24 14:06:35+00:00
Hi HN,

I built cook.nvim, a Neovim plugin to run or compile the current file in a terminal, based purely on file extension and config.

Instead of baking language support into the plugin, runners are just shell command templates with placeholders ({file}, {exe}, {dir}, etc.), so it works with almost any language or toolchain without plugin changes.

It also supports project-local recipes.lua for things like :Cook build, :Cook test, or custom workflows, plus a small :Coop mode that pipes clipboard input into your program (useful for competitive programming).

Repo: https://github.com/07CalC/cook.nvim

Feedback welcome.
by Driver4732 | 2026-01-24 14:06:54+00:00
Oh boy, I imagine a number of companies would drop Open AI usage altogether if the terms change to say OpenAI now gets a cut of the profit from anything created from using AI. This is crazy and wouldn't need to be possible if they already had a profitable business model. Imagine other companies like Microsoft or Apple charging companies a 'technology empowerment fee' because you used Windows or Mac computers to create something.
by sodapopcan | 2026-01-24 14:07:00+00:00
You hit on something key here: the vast majority of the pro-articles are talking in the context of code vomit or content vomit or other types of vomit. As you say, it is beyond tiring, so we respond. I'm still waiting for that cancer cure!

> it's only been that person limiting it's own growth and productivity.

Maybe limiting raw productivity, but I sure don't buy that it limits growth. Maybe if all you ever did was copy and paste off of SO, but taking the time to study and deeply understand something is going to be much better for your overall growth. Also collaborating with humans instead of robots is always nice.
by andrewstuart | 2026-01-24 14:07:09+00:00
Only someone who doesn’t use it could say that.

Yesterday in 3 hours I built a fully working golang program that captures all browser network traffic from chrome and Firefox and filters and logs it with a TUI and includes a wide range of help and checks and fine tuning and environment config and command line options. Multiple cycles of debugging and problem solving and refinement until it was finished.

That is simply not possible to do by hand.

And if you don’t believe this, you think I’m exaggerating, then yeah you’re being left behind while the industry moves forward.
by publicdebates | 2026-01-24 14:07:09+00:00
The article is technically right, but only because the author misses the point.

Yes, one or two persons can't maintain a fork of a giant project for long.

But when you have a project with enough problems that there are thoughts of forking it, whether those are technical problems or social problems, and when that problem is big enough that enough people are thinking about forking it, you already have a new community.
by jraph | 2026-01-24 14:07:20+00:00
That's not technically HTML anymore.

But if you disagree with this, or somehow work around this statement by replacing your for element with some "for-loop" custom element (it is valid HTML to add custom tags with dashes in their names), my stronger argument is at https://news.ycombinator.com/item?id=46743219#46743554
by io_eric | 2026-01-24 14:07:20+00:00
You're right about the market positioning - WebCC isn't trying to be Emscripten. It's for when you want to build for the web, not just on the web. I'm actually using it myself to port my game engine, currently in the process of ripping out Emscripten entirely.

On the opcode parsing - the switch/case approach is intentionally simple and surprisingly fast. Modern compilers turn dense switch statements into jump tables, so it's essentially O(1) dispatch.

Your flush timing concern is understandable, but the architecture actually handles this cleanly. Buffered commands accumulate, and anything that returns a value auto-flushes first to guarantee correct ordering. For game loops, the natural pattern is batch everything during your frame logic, single flush at the end. You don't lose control, the auto-flush on sync calls ensures execution order is always maintained.

DWARF debug support is a great call
by bagacrap | 2026-01-24 14:07:42+00:00
The subscription model seems to profit off of inertia/inaction/forgetfulness/laziness.

There's a whole app called rocket money to fight back against the subscription model by helping you find and cancel subs. I've never used it and don't plan to but it would be cool if it helped push back against the modern shift towards subscription-everything.

Although if we're talking about software or anything else that could easily be one-time/up-front or ongoing, then I guess there's a case to be made that monthly subscriptions let you try before you buy, like rental skis. In that sense they are user friendly.
by jchw | 2026-01-24 14:08:00+00:00
> Aren't we all tired of this anti-AI stuff?

Let's do a quick analysis of the amount of money put forth to push AI:

> OpenAI has raised a total of $57.9B over 9 funding rounds

> Groq has raised a total of $1.75 billion as of September, 2025

Well, we could go on, but I think that's probably a good enough start.

I looked into it, but I wasn't able to find information on funding rounds that David Bushell had undergone for his anti-AI agenda. So I would assume that he didn't get paid for it, so I guess it's about $0.

Meanwhile:

- My mobile phone keyboard has "AI"

- Gmail has "AI". Google docs has "AI". At one point every app was becoming a chat app, then a TikTok clone. Now every app is a ChatGPT or Gemini frontend.

- I'm using a fork of Firefox that removes most of the junk, and there's still some "AI" in the form of Link Preview summaries.

- Windows has "AI". Notepad has "AI". MS Paint has "AI".

- GitHub stuck an AI button in place of where the notifications button was, then, presumably after being called every single slur imaginable about 50000 times per day, moved it thirty or so pixels over and added about six more AI buttons to the UI. They have a mildly useful AI code review feature, but it's surprisingly half-baked considering how heavily it is marketed. And I'm not even talking about the actual models being limited, the integration itself is lame. I still consider it mildly useful for catching typos, but that is not with several billion dollars of investment.

- Sometimes when I log into Hacker News, more than half of the posts are about AI. Sometimes you get bored of it, so you start trying to look at entries that are not overtly about AI, but find that most of those are actually also about AI, and if not specifically about AI, goes on a 20 minute tangent about AI at some point.

- Every day every chat every TV program every person online has been talking about AI this AI that for literally the past couple of years. Literally.

- I find a new open source project. Looks good at first. Start to get excited. Dig deeper, things start to look "off". It's not as mature or finished as it looks. The README has a "Directory Structure" listing for some odd reason. There's a diagram of the architecture in a fixed width font, but the whitespace is misaligned on some lines. There's comments in the code that reference things like "but the user requested..." as if, the code wasn't written by the user. Because it wasn't, and worse, it wasn't read by them either. They posted it as if they wrote it making no mention at all that it was prompts they didn't read, wasting everyone's time with half-baked crapware.

And you're tired of anti-AI sentiment? Well God damn, allow me to Stable Diffusion generate the world's smallest violin and synthesize a song to play on it using OpenAI Jukebox.

I'm not really strictly against AI entirely, but it is the most overhyped technology in human history.
by bloomingeek | 2026-01-24 14:08:25+00:00
Excellent article! I think another take away is that we should all take a class on electrical wiring safety. Wiring is fun and very interesting, but can be very dangerous. Classes and the literature that comes with it are invaluable. However, Youtube and the literature will only take you so far, safety wise. (I'm not affiliated with any tech school, I learned by being in the trades under the guidance of trained electricians, with test stands and real life testing.)
by hannob | 2026-01-24 14:08:35+00:00
I used to create a number of simple web pages in XHTML back in the days when we believed XHTML was the future. Recently, while going through and restructuring some of my old "online stuff", I learned that XHTML really isn't in a state that I'd want to use it any more:

* XHTML 1.0 and 1.1 are officially deprecated by the W3C.

* XHTML5 exists as a variant of HTML5. However, it's very clear that it's absolutely not a priority for the HTML5 working groups, and there's a statement that future features will not necessarily be supported by the XHTML5 variant.

* XHTML5 does not have a DTD, so one of the main advantages of XHTML - that you can validate its correctness with pure XML functionality - isn't there.

* If you do a 'view source' in Firefox on a completely valid XHTML 1.0/1.1 page, it'll redline the XML declaration like it's something wrong. Not sure if this is intended or possibly even a bug, but it certainly gives me a 'browser tells me this is not supposed to be there' feeling.

It pretty much seems to me XHTML has been abandoned by the web community. My personal conclusion has been that whenever I touch any of my old online things still written in XHTML, I'll convert them to HTML5.
by lifetimerubyist | 2026-01-24 14:08:51+00:00
Definitely was something surprising that I discovered when building with Sqlite recently. We're tought to avoid N+1 queries at almost any cost in RDBMs but in Sqlite, the N+1 can actually be the best option in most cases.

I had to build some back-office tools and used Ruby on Rails with SQLITE and didn't bother with doing "efficient" joins or anything. Just index the foreign keys, do N+1s everywhere - you'll be fine. The app is incredibly easy to maintain and add features because of this and the db is super easy to backup - literally just scp the sqlite db file somewhere else. Couldn't be happier with this setup.
by DonHopkins | 2026-01-24 14:09:36+00:00
MOOLLM has its own official currency -- MOOLAH!

https://github.com/SimHacker/moollm/tree/main/skills/economy...

The official currency of MOOLLM is MOOLAH. It uses PROOF OF MILK consensus — udderly legen-dairy interga-lactic shit coin, without the bull.
by 2OEH8eoCRo0 | 2026-01-24 14:09:52+00:00
> A group of fringe researchers thwarted safeguards at the National Institutes of Health and gained access to data from thousands of children. The researchers have used it to produce at least 16 papers purporting to find biological evidence for differences in intelligence between races, ranking ethnicities by I.Q. scores and suggesting Black people earn less because they are not very smart.

Yikes
by jraph | 2026-01-24 14:10:32+00:00
> React JSX, or Django/Jinja templates

Those are not HTML. PHP neither, even when used as a templating language for HTML.

> htmx endpoints

Not really familiar with htmx, but I would say this is HTML augmented with some additional mechanisms. I don't know how I would describe this augmented HTML, but I'm not applying my "not programming" statement to htmx (I probably could, but I haven't given enough thoughts to do it).

> In this sense, I'm not putting on a different hat when I'm working on the html, but just working on a different part of the program.

I agree with this actually. I wouldn't consider that writing HTML (or CSS) is really a separate activity when I'm building some web app.
by ndriscoll | 2026-01-24 14:10:40+00:00
I have this in my AGENTS.md:

## Task Management
- Use the projects directory for tracking state
- For code review tasks, do not create a new project
- Within the `open` subdirectory, make a new folder for your project
- Record the status of your work and any remaining work items in a `STATUS.md` file
- Record any important information to remember in `NOTES.md`
- Include links to MRs in NOTES.md.
- Make a `worktrees` subdirectory within your project. When modifying a repo, use a `git worktree` within your project's folder. Skip worktrees for read-only tasks
- Once a project is completed, you may delete all worktrees along with the worktrees subdirectory, and move the project folder to `completed` under a quarter-based time hierarchy, e.g. `completed/YYYY-Qn/project-name`.

More stuff, but that's the basics of folder management, though I haven't hooked it up to our CI to deal with MRs etc, and have never told it that a project is done, so haven't ironed out whether that part of the workflow works well. But it does a good job of taking notes, using project-based state directories for planning, etc. Usually it obeys the worktree thing, but sometimes it forgets after compaction.

I'm dumb with this stuff, but what I've done is set up a folder structure:

dev/
dev/repoA
dev/repoB
...
dev/ai-workflows/
dev/ai-workflows/projects

And then in dev/AGENTS.md, I say to look at ai-workflows/AGENTS.md, and that's our team sharable instructions (e.g. everything I had above), skills, etc. Then I run it from `dev` so it has access to all repos at once and can make worktrees as needed without asking. In theory, we all should push our project notes so it can have a history of what changed when, etc. In practice, I also haven't been pushing my project directories because they have a lot of experimentation that might just end up as noise.
Show HN: Afm – explore Apple's On device model. Now with WebUI
by scouzi1966 | 2026-01-24 14:11:30+00:00
Just released v0.9.1 of afm, a CLI that exposes Apple's on-device Foundation Models through OpenAI-compatible API endpoints.

What's new in v0.9.1 - Built-in Web UI:

Links:

GitHub: https://github.com/scouzi1966/maclocal-api

Release: https://github.com/scouzi1966/maclocal-api/releases/tag/v0.9...

You can now run afm -w to start both the API server and a chat web interface in one command. It integrates llama.cpp's webui and auto-opens your browser. No need to set up Open-webui separately if you just want a quick chat interface.

afm -w

That's it. Browser opens to http://localhost:9999 with a chat UI talking to Apple's on-device 3B model.

Other changes:

/props endpoint for webui compatibility

model field now optional in chat completion requests

llama.cpp pinned as a submodule for reproducible builds

What afm does:

Runs Apple's 3B parameter on-device LLM

OpenAI-compatible API (/v1/chat/completions, /v1/models)

Single-prompt mode: afm -s "your question"

Pipe mode: cat file.txt | afm

LoRA adapter support for fine-tuned models

Vision capabilities (text extraction, table OCR)

Works as a backend for Open-webui too

Install:

brew tap scouzi1966/afm

brew install afm

Requirements:

macOS 26 (Tahoe)

Apple Silicon (M1/M2/M3/M4)

Apple Intelligence enabled

Questions welcome.
by potluri | 2026-01-24 14:11:41+00:00
Just want to comment on the star background. I did something similar for my own site (link in bio). I ended up rendering the stars in a three.js scene because drawing them on a 2D canvas did not look like a satisfying effect. CPU usage was lessened as well, at least on my mobile and two desktops (can't verify your site's CPU utilization since I'm on mobile atm). It also fixed the issue where resizing the viewport would mess with the rendering of the stars, like it occurs in your app currently.
by tialaramex | 2026-01-24 14:11:41+00:00
Rust has been better than C++ about marking where there's a foot gun and where practical just nerfing it. core::mem::uninitialized() is an example. In 2016 if you'd said "Initializing my Doodad is too expensive, what do I do?" you might be pointed at the (unsafe) core::mem::uninitialized() which "initializes" any variable, such as your Doodad but er, doesn't actually initialize it.

But that's a foot gun, there are niche cases where this crazy stunt actually is correct (ZSTs are one), but in general the compiler was in effect licensed to cause absolute mayhem because this isn't a Doodad at all, which isn't what you wanted. So, they did three things:

1. Made a new type wrapper for this purpose, MaybeUninit<Doodad> might not be a Doodad yet, so we can initialize it later and until then the compiler won't set everything on fire but it's the same shape as the Doodad.

2. Marked core::mem::uninitialized deprecated. If you use it now the compiler warns you that you shouldn't do that.

3. De-fanged it by, despite its name, scrawling the bit pattern 0x01 over all the memory. The compiler can see this has some particular value and for common types it's even valid, a bool will be true, a NonZeroU32 will be 1, and so on. This is slow and probably not what you intended, but we did warn you that it was a bad idea to call this function still so...
by arendtio | 2026-01-24 14:11:42+00:00
> forking is easy, sustaining is hard.

That is exactly the point. But it makes sense if you look at it from the other side. When you put in the effort to maintain a project, there have to be boundaries to the social interactions, and when those are reached, "just fork it" is a pressure valve to protect the ones who put in the effort to maintain projects.

Many people think they know how something should be done better, but as a community, we have to protect the ones who are not just talking, but actually maintaining.
by GavinAnderegg | 2026-01-24 14:11:59+00:00
In the early 2000s I was 100% sold on the idea of strict XHTML documents and the semantic web. I loved the idea that all web pages could be XML documents which easily provided their data for other sources. If you marked your document with, an XHTML 1.0 Strict or XHTML 1.1 doctype, a web browser was supposed to show an error if the page contained an XML error. Problem was, it was a bit of a pain to get this right, so effectively no one cared about making compliant XHTML. It was a nice idea, but it didn't interact well with the real world.

Decades later, I'm still mildly annoyed when I see self-closing tags in HTML. They're no longer required and they remind me of the strict XHTML dream.

EDIT: I just checked, and my site (at least the index page) still validates! https://validator.nu/?showsource=yes&doc=https%3A%2F%2Fander...
by spockz | 2026-01-24 14:12:53+00:00
After using Stash for ages at work we switched to gitlab which was refreshing. It was fast, self hosted, and full of features, especially useful around quality gates and build on PRs. Then it was decided we should go for best of suite instead of breed and we went to azure devops.

It is slow as molasses, issues are more project management oriented instead of coding, quality gates are virtually non existent and builds are now slow. Builds are slow because instead of our beefy build servers they run on VMs, that are undersized and have IOPS restrictions, because downloading the cache for maven/docker/npm is relatively fast but actually expanding it on disk is slow, because just the simple orchestration to spawn a job is also slow.

I would love to go back to gitlab and I would even dedicate some time to performance tune it and contribute back. I think gitlab does everything right. (Technically, not sure about pricing and tiering.)
by cess11 | 2026-01-24 14:13:01+00:00
No, it is still just a database. It is a way to store and query information, it is nothing else.

It's not just the weirdness in Mongo that could exhibit non-deterministic behaviour, some common indexing techniques do not guarantee order and/or exhaustiveness.

Let it go, LLM:s and related compression techniques aren't very special, and neither are chatbots or copy-paste-oriented software development. Optimising them for speed or manipulation does not change this, at least not from a technical perspective.
by LightBug1 | 2026-01-24 14:13:38+00:00
I wouldn't strictly put all of them at the feet of the EU. While what you say is true, the Conservatives were frothing to privatise whatever they could. Labour just went along with the process (and I'm no Labour supporter either).

The one I won't forgive was our water. I believe we're the only developed country to have privatised our water, with disastrous consequences.

And that one can be squarely laid at the feet of Margaret 'Fucking" Thatcher (real name).
by convolvatron | 2026-01-24 14:14:55+00:00
So that’s an interesting case. I’d really like to keep language neutrality, because I don’t think we’re finished evolving yet. So this is a place where we need an abi. The first things we try to do is be simple…except for a terrible mistake with select, we don’t send arrays across that interface, sadly, we send c structs sometimes and I think that’s pretty horrible, because we have to try to lay them out in a compatible way, which is pretty fragile. The other sad bit is that we need to verify the addresses before we can operate on them, and that’s hugely prone to error.

Im curious if you have a suggestion about how to fix both of those. The structure thing can clearly be a more robust serialization. Addresses? Idk