MurphyA/hacker-news huggingface dataset:
Show HN: Dora – Query codebase dependency graphs from SQLite (for AI agents)
by mrbutttons | 2026-01-24 13:46:39+00:00
TLDR:
AI agents brute-force their way through codebases with grep/find/glob to understand it. This CLI queries a local SQLite database of your codebase's dependency graph instead, giving agents accurate context for better plans on the first try.

I've been using Claude Code for my work for the past 6 months and it has been great. My workflow is very typical, start Claude Code > start planning my feature in plan mode > implement. And then just seeing the work, and occasionally steering it in the correct direction when it goes off track (which doesn't happen much).

But since Claude Code has amnesia and you can only put so much in your CLAUDE.md file, it always ended up brute forcing its way around the codebase to understand it first. Usually by picking an entry point first somehow and then walking up.

So I ended up building this, a simple CLI meant to be used by your AI agent, that you can drop in any project (as long as your language has a SCIP indexer).

It uses SCIP to index your codebase, and then the CLI converts it into a SQLite database. All commands are just wrappers around the queries, and you can just query the database directly. SCIP does not really work for documentation and general text files, I added an indexer for that in the CLI (this one is a bit wonky, I recently added it)

To set it up it:
1. Install the CLI in your system.
2. Install the SCIP indexer for your language.

To start using it in project:
1. Add the snippet in your agent memory file to tell it to prefer dora instead of other tools when doing code exploration.
2. Add the skill file for more detailed usage.
3. Add hooks to run the indexer at session start and at end of every turn, in the background.

I've been using it with my main work, and tweaking it as I find room for improvements. The idea is to keep it minimal. I'm able to get good plans on the first go.

Check it out:
Website - https://dora-cli.dev/
GitHub - https://github.com/butttons/dora
by redox99 | 2026-01-24 13:46:54+00:00
AI will beat humans at all tasks that are not subjective (such as a landing page being pretty), but instead can be determined to be correct or not (does an endpoint return the correct data? how fast?)

Just like a chess engine beats any human.

People think LLMs are still at the point of programming based on what they learned from the data they scraped. We're well past that. We're at the point of heavy reinforcement learning. LLMs will train on billions of LoC of synthetic code they generate, like chess engines train on self-play games.
by FrostViper8 | 2026-01-24 13:47:05+00:00
> By whose judgement is the css you speak of 'broken'? Just making random code changes without a corresponding ticket is a recipe for troubles down the line. I

Obvious display issues in a mobile app on the login which is the first thing you see.

> If you must do unprioritised work at the bare minimum create a issue tracker ticket to provide more information than can fit in a commit message.

I create tickets for each commit I do. So people know why I have done things. These people don't do anything of the sort.

> Something like selenium is good to automate acceptance testing (with screenshotting) cross browser as well.

I can't even get these guys to write basic unit tests for React components.

There are two different worlds. There is the world where things are done more or less properly and there is the rest of us. I've heard of some places that don't even use source control, CI builds or anything that may have been novel 25 years ago.
by rincebrain | 2026-01-24 13:47:28+00:00
The problem with that premise is that often, projects can be having trouble with sustainability already, so even if you're getting 90% of the people in your fork, that might still be too few.

If 90% of the contributions are by 10 people, if the project is large enough, losing one of them is going to be an enormous additional tax on people unless you can get an additional one to step up.
by bossyTeacher | 2026-01-24 13:48:30+00:00
> Aren't we all tired by this anti-AI stuff?

It's fine to be tired of this. What is not fine is pretending your beliefs/feelings represent everybody else's.

No one forcing you to read the article. He is as free to write what he wants as you are to complain about it. Balanced. Like all things should be.
by Dev_Master | 2026-01-24 13:48:31+00:00
I built a small desktop tool to batch-convert images to JPG with minimal friction.

Features include drag & drop (files and folders), batch conversion, optional recursive folder handling, preserving folder structure, skipping existing JPGs, adjustable quality, live progress/ETA, and auto-opening the output folder when done.

It’s a lightweight, portable Python/Tkinter app using Pillow (with optional HEIC support via pillow-heif). No install required—just run and convert.

Built mostly for my own workflow when dealing with large mixed image folders, but sharing in case it’s useful to others. Feedback welcome.
by trzeci | 2026-01-24 13:48:35+00:00
I love the idea and execution. I did some reading of the code webcc and it's just brilliantly simple, and delivers to the promise.

From the product perspective, it occupies a different market than Emscripten, and I don't see it's good comparison. Your product is borderline optimized to run C++ code on Web (and Coi is a cherry on top of that). Where Emscripten is made to make native C++ application to run on Web - without significant changes to the original source itself.

Now, the `webcc::fush()` - what are your thoughts about scalability of the op-codes parsing? Right now it's switch/case based.

The flushing part can be tricky, as I see cases when main logic doesn't care about immediate response/sharing data - and it would be good to have a single flush on the end of the frame, and sometimes you'd like to pass data from C++ while it's in its life scope. On top of that, I'd be no surprised that control of what flushes is lost.

(I'm speaking from a game developer perspective, some issues I'm thinking aloud might be exaggerated)

Last, some suggestion what would make developers more happy is to provide a way to change wasm compilation flags - as a C++ developer I'd love to compile debug wasm code with DWARF, so I can debug with C++ sources.

To wrap up - I'm very impressed about the idea and execution. Phenomenal work!
by d1sxeyes | 2026-01-24 13:48:44+00:00
I agree it’s often used to shut down discussion, but most often I’ve seen it when a contributor is losing an argument (their PR isn’t getting merged, or their feature request is rejected, or their bug is marked wont-fix) and they don’t agree.

“Victim blaming” is an odd phrase here. Could you clarify what you mean?
by hnlmorg | 2026-01-24 13:48:47+00:00
I’m a similar age and have also lived in a few houses over the years. I’ve never lived in any place that didn’t have more than one phone socket.

Though I have noticed multiple sockets are less common in really old houses which haven’t seen much modernisation, and less common in really new ones too (since builders expect most people will just use the master socket for broadband and people use mobiles for calls).
by kotaKat | 2026-01-24 13:49:15+00:00
From the further linked https://knowledge.wharton.upenn.edu/article/when-employees-f... -

> "They found the perfect observational setting in the retail chain, which has a well-established policy that managers hand-deliver a card and small gift to each employee on their birthday. The company designed the policy to foster meaningful personal interactions and strengthen the employee-manager relationship"

> "The team found no issues when cards and gifts were given within a five-day window of the employee’s birthday"

Part of me wonders more now if the slight also comes from the expectation of receiving a gift under this policy? If someone told me "hey, happy birthday, dude" that'd be good enough for me.
by rayiner | 2026-01-24 13:49:51+00:00
They were incarcerated in the first place because they’re the kind of person who commits crimes. About 50% of antisocial behavior is hereditary: https://www.jax.org/news-and-insights/jax-blog/2015/december... (“Based on a large number of twin and sibling studies that span almost four decades, the genetic contribution to delinquency is thought to be approximately 50%.”).

Moreover, people who turn out to be criminals develop delinquent behaviors at an early age: https://scholarcommons.sc.edu/cgi/viewcontent.cgi?article=63.... Criminality is highly associated with various disorders, like ADHD, etc.
Show HN: Convert OpenAPI Specifications into Agent Skills
by yz-yu | 2026-01-24 13:49:58+00:00
AI agents often need domain-specific knowledge to complete tasks. Rather than writing custom prompts or building MCP tools from scratch, leveraging existing API documentation is a practical approach - and OpenAPI is the de facto standard with battle-tested specifications maintained over years.

However, feeding raw OpenAPI specs to agents has limitations. Complex specifications can exceed LLM context limits, and even when they fit, loading the entire document for every request wastes valuable context.

Agent Skills solves this by structuring documentation for on-demand reading. Agents load only what they need - starting with an overview, then drilling into specific operations or schemas. Since file reading is a universal capability across agent frameworks, this approach works everywhere without special integrations.
by andrewstuart | 2026-01-24 13:50:26+00:00
This is true. I learned to program because I want to create.

I love creation and creating computer software. A vision appears in my head for a software idea and I have to build it, I am utterly compelled.

So I had to learn to program. I quite like programming it’s good to feel clever.

But my deepest joy is creating and it’s like a gift from heaven to get LLMs that can help me realize even my most ambitious creative visions.

It’s the outcome I want, not the experience of getting there.

I absolutely love what LLMs have brought to programming - accelerated creation.
by dpedu | 2026-01-24 13:50:54+00:00
In their latest available annual report, the Wikimedia Foundation reported that in 2024 they brought in $185M in revenue/donations, of which they spent $178M. Of that $178M, $106M was spent on salaries and benefits, and $26M on awards and grants. So, that accounts for 75% of their spending. "Internet hosting" is listed at only $3M though there are other line items such as "Professional service expenses" at $13M that probably relate to running Wikipedia too.

Scroll down to the "Statement of activities (audited)" section:

https://wikimediafoundation.org/annualreports/2023-2024-annu...
by xtiansimon | 2026-01-24 13:50:57+00:00
LOL. I was looking for an about link to learn who the author is, but there’s isn’t one. The more I scrolled the more I kept seeing these book covers all with the name. So I guess that stands for “about” link. Cheeky.

But what I really wanted to say, this reminds me of Scott E Page’s Coursera course on Model Thinking, and a book: “The Model Thinker
What You Need to Know to Make Data Work for You” also from 2018.
by bloomingeek | 2026-01-24 13:51:12+00:00
Here in the states, when we moved into our house that was built in the late 60's, every room had a phone jack. The exterior of the house had cabling strung onto the back and one side with lines installed, through the brick, into the separate rooms. There was also a line or two in the attic. Sometime in the early 90's, after I fired Southwestern Bell, I striped away all the wiring. Two of out kids had new homes built, both were wired with Ethernet cable only for communication.

<I can’t stress enough how much we love our phone sockets. It’s not uncommon to have a one bed flat with 2 phone sockets in the living room and 2 phone sockets in the bedroom and a master socket in the technical room. It’s ridiculous.>

My wife and I rented a flat in Amsterdam a few years ago. I noticed that there was a phone jack in the water heater room, which I thought was strange. Now I know. (I was looking for the broom, BTW.)
by bakugo | 2026-01-24 13:51:12+00:00
> I just don't really want to hear about your personal opinion on it any more.

And I don't want to hear about how the world of software engineering has been revolutionized because you always hated programming with a passion, but can now instead pay $200 to have Claude bring your groundbreaking B2B SaaS Todo app idea to life, yet that's basically all I hear about in any tech discussion space.

You should ask your AI assistant to explain to you why people would go out of their way to take a stand against this.
by mxuribe | 2026-01-24 13:51:15+00:00
You have great points here! Not only is linux a destination for folks who currently and historically might have used Windows....but beyond linux and the operating system itself, there's a whole massive opportunity for other open source *software* that sits atop the operating system, and that is where migrations (away from Microsoft stuff, etc.) will also happen...maybe not all at the same time...but yeah, awareness has increased and i think will keep rolling forward - even if slowly. I really hope that migration to opeon source software happens too!

As an American I'm super disgusted with the current administration and the awful things they are doing...but I'm also a big supporter of open source and an advocate of every group's sovereignty....so if increased digital sovereignty for many nations (and my good friends all over the world), plus more software freedoms for everyone globally is one of the unexpected manifestations...then that's wonderful, at least something good comes out of the current chaos! As Europe, Canada, other nations start pilots for using their own instances of open source software (like Owncloud,etc.), i welcome that and wish them all the best!!!
by jll29 | 2026-01-24 13:51:37+00:00
In my view, to be brutally honest, a man smart enough to be at MIT should be smart enough to protect his family; it's not that we didn't already know Trump from his first
presidency. His second time to be elected, but before he took office, would have been the time to start looking abroad.

You don't have to leave for China, there are
many places for a talented person (Canada's Vector Institute in Toronto, or good universities in Europe). He was comfortable rather than alert, and perhaps (I reall cannot look into someone's head) priorized his research environment highly (many scientists do).

I know a similar case, where a scientist in a similar area left the UK with his family after the Brexit referendum, but before the outcome of the EU-UK agreement. All his UK friends said "it will be a Brexit in name only" but there were cases of anonymous threats to European friends and slashed tires.

The main risks perceived were (1) disruption of the medical supply chain; (2) the announcement of the UK to aspire leaving not just the EU but also the Council of Europe (rejecting the European Court of Human Rights, including the right to see a legal representative); (3) the lack of any document to prove legal residential status (only possible via an app, nothing given in writing); and (4) a physical attack on trips outside London (the nationalist mostly live outside the capital).

It all depends on if you're trying to maximize (1) family safety OR (2) jointly maximize the quality of your research environment AND family safety or (3) only quality of the research environment, at the expense of anything else.

It's not too late to leave. The question to relocate and give up everthing is hard; it is the same question that Jewish familes had to decide in Nazi Germany, and many wrongly thought that because they were "proper, honest" citizens that should have nothing to fear was proven wrong, and the walls of the gas chambers of Auschwitz contain the scratches of their fingernails.

However your friend and his family decides, all the best wishes.
by traspler | 2026-01-24 13:51:58+00:00
While it‘s pretty great to have such a unified interface, there are many papercuts.
To me it has become a bit of a meme that you always end up in this old-issue flow: I want to do X -> Try it -> Run into an issue -> Search for solution -> Find an official bugreport that is 3-8y old. Also many features seem to be stuck in either the 80/20 hell or it the „we needed a bulletpoint on a feature list and built a barely working MVP“-situation. The slow interface, as mentioned in other comments, is so incredibly painful on MR-views that it drives me crazy some days.
by embedding-shape | 2026-01-24 13:52:23+00:00
I dunno, you're being pedantic :) Yes yes, the name clearly ends up "Markup Language" so yeah, with a very strict definition of programming languages, HTML is not one of them.

But if we use a broader definition, basically "a formal language that specifies behavior a machine must execute", then HTML is indeed a programming language.

HTML is not only about annotating documents or formatting, it can do things you expect from a "normal" programming language too, for example, you can do constraints validation:

<input name="token" required pattern="[A-Z]{3}-\d{4}" title="Must match ABC-1234 (3 uppercase letters, hyphen, 4 digits)" placeholder="ABC-1234">

That's neither annotating, just a "document" or just formatting. Another example is using <details> + <summary> and you have users mutating state that reveals different branches in the page, all just using HTML and nothing else.

In the end, I agree with you, HTML ultimately is a markup language, but it's deceiving, because it does more than just markup.
by mejutoco | 2026-01-24 13:52:24+00:00
> When you train a dog, you have to give a reward very soon after the desired behavior, otherwise the dog won't associate the reward with the behavior

Regarding dog training, one can use a placeholder for the reward. This is useful, for example, if you want to reward a dolphin jumping through a hula, because you will not be able to give the reward at that moment, but for example, you can say "yes!" or use a clicker at that moment, and give the reward later, and it will be clear what caused it.

For anyone training any animal, I recommend the book: Don't Shoot the Dog! The New Art of Teaching and Training by Karen Pryor (not affiliated in any way)
by bonzini | 2026-01-24 13:52:52+00:00
As someone who did assembly coding on the 8086/286/386 in the 90s, the xH and xL registers were quite useful to write efficient code. Maybe 64-bit mode should have gotten rid of them completely though, rather than only when REX.W=1.

AAA/AAS/DAA/DAS were used quite a lot by COBOL compilers. These days ASCII and BCD processing doesn't use them, but it takes very fast data paths (the microcode sequencer in the 8086 was pretty slow), large ALUs, and very fast multipliers (to divide by constant powers of 10) to write efficient routines.

I/O ports have always been weird though. :)
by shimman | 2026-01-24 13:53:33+00:00
lol this is not the same at all. If these tools were so good as they claim they wouldn't be struggling so hard to make money or sell them.

The fact that they have to be force fed into people is all the proof you need that this is an unsustainable bubble.

Something to keep in mind that unless you can destroy something the system is not democratic and people are realizing how undemocratic this game truly is.
Show HN: PyVRP, an open-source vehicle routing problem solver
by nawouda | 2026-01-24 13:53:36+00:00
Hi HN! We built PyVRP, an open-source solver for vehicle routing problems.

It can solve many practical routing problems, including those with time window constraints, multiple depots, and reloading. These problems all NP-hard, so PyVRP implements a state-of-the-art metaheuristic solver based on iterated local search. The local search optimisation engine is written in C++. On top of the solver, PyVRP exposes a high-level Python modelling interface. This makes it easy to solve large-scale routing problems from Python, at near-native speeds.

Docs: https://pyvrp.org/
by nathell | 2026-01-24 13:53:36+00:00
It’s ironic that the very site in question, despite claiming XHTML compliance, is served as text/html instead of application/xhtml+xml, so the browser will never parse it as XML.

To quote [0]:

> All those “Valid XHTML 1.0!” links on the web are really saying “Invalid HTML 4.01!”.

Although the article is 20 years old now, so these days it’s actually HTML5.

Edit: Checked the other member sites. Only two are served as application/xhtml+xml.

[0]: https://webkit.org/blog/68/understanding-html-xml-and-xhtml/
by don-bright | 2026-01-24 13:54:08+00:00
I spent a while on an open source project debugging some bizarre crashes. Cant remember exact detail but something like Someone was throwing an exception inside a destructor which had been triggered inside another exception. It was layers deep inside a massively templated 3rd party dependency library. so I like wound up parsing the string in the exception message and doing weird logic to make the program keep going since the exception wasnt actually a dire situation as far as the main program was concerned. So Exceptions can be fine in theory but I understand the idea that a ban can simplify a lot of things.
by moepstar | 2026-01-24 13:54:08+00:00
> But we are sized for the 40 RPS architecture

Just in case anyone else (like me) didn't get the reference:

> This page describes the GitLab reference architecture designed to target a peak load of 40 requests per second (RPS), the typical peak load of up to 2,000 users, both manual and automated, based on real data.

https://docs.gitlab.com/administration/reference_architectur...
by Reason077 | 2026-01-24 13:54:16+00:00
> "Paid the fee online, 20% VAT + a few pounds of handling fees ... It’s the normal procedure to buy things from Europe since Brexit 2020."

Why don't Amazon and other online retailers just charge you the UK VAT when you order and ship it "VAT paid", so it doesn't get held up at the border?

That's how it works in New Zealand. You pay New Zealand's GST when you place an order, not after it arrives. Any online retailer that ships over a certain volume of products to New Zealand is required to implement this.
by wpietri | 2026-01-24 13:54:37+00:00
Every community is the sum of its members. Each person who joins changes it, at least a bit. And each of those members is changing and growing.

When community members have different needs, forking should be a last resort. It's expensive, and it's wasteful unless two different groups have irreconcilable needs. It should only ever be suggested as a last resort, after other options have been exhausted.

However, it's often used as a first resort to shut down criticism and to protect existing power structures. The person who speaks up is, as here, treated as an outsider and an exploiter.
by Gluber | 2026-01-24 13:55:18+00:00
My take on AI ( at least for coding ) is the same as for dynamic languages ( python,ruby etc )

1. Its a great tool to reduce boilerplate
2. Its great for experimenting with ideas without the overhead that comes with starting a new non trivial project
3. Its great for one offs, demos or anything like that.
4. It helps me to work on some personal side projects that would have never seen the light of day otherwise.

The downsides:

1. As with dynamic languages its a great tool for EXPERT engineers ( not that i am calling me one ) but is often used by Juniors/Entree Level engineers who do not understand the problem, can't tell it exactly what to do, and can't judge the result. And thus it leads to codebases riddled with issues that are hard to find and since they produce a lot of code are a huge liability.

"But look what i made" .... no... no you didn't you don't even understand why its doing something.