MurphyA/hacker-news huggingface dataset:
Show HN: Page Builder in Pure TypeScript, No Framework Dependencies
by choc-dev | 2025-12-09 13:56:49+00:00
I built a simple page builder for non-technical users with built-in multilingual support.

The client is vanilla TypeScript - no React, Angular, or Vue because I wanted a smaller runtime, full control over the codebase, and freedom from framework churn.

Components are self-contained and composable (adding new ones doesn't require touching existing code). The backend is C# / .NET 10 with Entity Framework.

This is an early prototype. No account required - sessions use anonymized IP (SHA-256 + salt).

Link: https://dev.tukona.com/

It is self-hosted in my homelab (based in the EU), so it might be slow under load :)

Looking for feedback on the UX. My next goal is adding specialized components for a specific industry vertical.
by bena | 2025-12-09 13:58:05+00:00
Everything.

Retail stores are logistics. And part of that is product flow. There are trucks coming in every single day. When you buy an item at a store, that item is deducted from the store's inventory, when that item's stock reaches a certain threshold, an order is immediately placed to the distribution center, and that item is loaded onto a truck and could arrive as soon as that night.

There's no reason to keep anything "in the back" except for high demand items that aren't brought in by a vendor and overflow from items that didn't quite fill a shelf.
by immibis | 2025-12-09 13:58:52+00:00
Your test fixtures are introducing tighter coupling between the tests, than the code they are testing! In this scenario (a mock DB with data that a test relies on, which is incompatible with a new test you want to add), duplicating the fixture is correct. Different tests with incompatible requirements on state should use different mock data. In this specific case, however, it's also true that one of them can be modified to make the tests compatible. If you do red-green-refactor then you can duplicate first, and then coalesce by changing the first test.

"assert_equal names, names.sort" is a wrong answer. It would accept an empty collection.
Show HN: Turn any API into an embeddable AI agent
by rhozeta | 2025-12-09 13:59:23+00:00
Hey HN! I built a platform that lets you upload an OpenAPI spec and get an AI-powered chat agent you can embed on your website.

- The motivation: I kept seeing companies with perfectly good APIs, but their users still struggled with complex UIs or had to read through documentation. Meanwhile, building a custom AI agent requires significant engineering resources most teams don't have.

- How it works: Upload your OpenAPI/Swagger spec (or paste your API docs) The system maps out your endpoints and parameters You get an embeddable widget that understands natural language queries When users ask questions, the agent translates them to API calls and returns results conversationally

Example: An e-commerce site with an inventory API. Instead of navigating filters, users ask "Do you have running shoes in size 10 under $100?" and get instant results.

- Technical details: Uses LLM function calling to map queries to API endpoints Handles authentication (API keys, OAuth) Rate limiting and caching to avoid hammering your API Works with REST APIs (GraphQL support coming)

Current state: Functional MVP, testing with a few early users. Still figuring out edge cases around complex APIs and auth flows.

- What I'm looking for feedback on: Have you encountered this problem? How did you solve it? Security concerns I should be thinking about? Is this actually useful or just a cool demo?
by phantasmish | 2025-12-09 13:59:42+00:00
I thought it was from some music subculture. I first encountered it in the context of albums, around the early or mid 2010s.

I think it’s kinda lame in its escaped-containment form, and am surprised it’s been one of those things that stuck around as long as it has, but would place it low on my list of language gripes, personally.
by stared | 2025-12-09 14:00:03+00:00
> the AI atmosphere is absolutely nuts to me

It reminds me of "You maniacs! You blew it up! Goddamn you all to hell!" from the original Planet of the Apes (1968), https://youtu.be/mDLS12_a-fk?t=71

Quite ironically, the scene features a horse.
by neilv | 2025-12-09 14:00:04+00:00
The phrase "grinding LeetCode" refers to a kind of unmentionable self-stimulus indulged in by people who want tech jobs money, but are bad at software engineering, and who want to work with other people who are bad at software engineering.

It was most popular during zero interest rate phenomenon, when there were numerous investment scams based on startup companies that could have a very lucrative "exit" for those running the scheme, despite losing money as a business.

LeetCode falls out of favor when companies realize they need to build viable businesses, and need software engineers rather than theatre performances.
by YauCheukFai | 2025-12-09 14:00:24+00:00
Author here.

I built this interactive parser to demonstrate a theory: the Voynich Manuscript isn't a language to be read, but procedural code to be executed.

The terminal parses the script in real-time. As you type, you'll see it decode individual morphological operators before executing the full command.

Type p: System detects "Container/Sheath" morphology.

Type pchor: System executes the full command to generate the "Vase" structure (folio 19r).

It's a proof-of-concept to show the strict grammatical logic behind the illustrations. Happy to answer questions!
by crowbahr | 2025-12-09 14:00:25+00:00
You can't really compare those 2. Agents a re non-deterministic. I can tell Clod to go update my unit test coverage and it will choke itself, burn 200k tokens and then loudly proclaim "Great! I've updated unit test coverage".

I'll kill that terminal, open it again and run the exact same command. 30k tokens, actually adds new tests.

It's hard to "learn" when the feedback cycle can take 30 minutes and result in the agent sitting in the corner touching itself and crooning about what a good boy it is. It's hard to _want_ to learn when you can't trust the damn thing with the same prompt twice.
by troupo | 2025-12-09 14:00:55+00:00
> The function of the icon is to have distinct shape so you are able to visually distinguish menu items quickly in future (more you use the app).

I wrote it in a different comment elsewhere: this is exactly why you don't want icons on every menu item. When everything tries to be stand out, nothing does. It's much easier to distinguish groups and "it's the third item below the icon" than "out of these identical looking icons one of them points to a menu item that does what I want".
by epolanski | 2025-12-09 14:01:03+00:00
I agree fully, which is why I called it a (good) marketing bait. Worked on me.

Might be because I'm also considering finding new clients/jobs, and apparently even for 2/3 months of collaborations people are sending me through several rounds of algo questions, so it was a nice add on top of my leetcode and codewars drills.
by KellyCriterion | 2025-12-09 14:01:12+00:00
exactly this! You can do things nearby with one prompt which would have taken weeks before to tinker around; esp. ClaudeAI is very good with "give a detailed first prompt and some context sourcefiles and create a working example on first shot".

E.g. I have to deal with lot of reports and those are usually "never fully developed" because "we can add this one row/feature later" because "management want us to ship early". Now I can enhance our reports by whatever metric just by handing over a current XLSX-exportcode and tell the LLM: "now i want additionally XY here...."
by camillomiller | 2025-12-09 14:01:16+00:00
Honestly, the answer for me is yes. I had expected it. The signs were in all the comments that take the market forces for granted. All the comments that take capitalism as a given and immutable law of nature. They were in all the tech bros that never ever wanted to change anything but the number of zeros in their bank account after a successful exit. So yes, I had that thought you are finally having too.
by garciansmith | 2025-12-09 14:01:51+00:00
Panzer Dragoon Saga is a great game: some cool gameplay elements that later games didn't really ever seem to pick up to my knowledge. Really tight too, not long and grindy like so many JRPGs in the '90s. The solitary main character means it skips a lot of the RPG-with-several-party-members tropes too. It's too bad it never got a rerelease of some sort to make it more accessible to people (plus it was stupidly rare even when it was released; Sega even put out baffling magazine ads about how hard it was to actually buy), though as you point out so many of those are terrible anyhow.

Definitely agree with you about CRTs. I wish I had the room for one. It's fun to use a MiSTer hooked up to one and a modern flatscreen at the same time to compare.
by onionisafruit | 2025-12-09 14:03:01+00:00
I’ve found that golden master tests (aka snapshot testing) pair very well with fixtures. If I need to add to the fixtures for a new test, I regenerate the golden files for all the known good tests. I barely need to glance at these changes because, as I said, they are known good. Still I usually give them a brief once over to make sure I didn’t do something like add too many records to a response that’s supposed to be a partial page. Then I go about writing the new test and implementing the change I’m testing. After implementing the change, only the new test’s golden files should change.

They are also nice because I don’t have to think so much about assertions. They automatically assert the response is exactly the same as before.
by sheepscreek | 2025-12-09 14:04:01+00:00
The thing is, using an agent or AI to code for you is a learned skill. It doesn’t come naturally to most people. For you to be successful at it, you’ve got to adopt a mentor / lead mindset - directing vs doing. In other words, you have to be an expert at explaining yourself - communicating clearly to get great results.

Someone who hasn’t got any experience coding, or leading in any capacity, anywhere in life (or mentoring) will have a hard time with agentic development.

I’ll elaborate a bit more - the ideal mindset requires fighting that itch to “do it yourself” and sticking to the prompts for any changes. This habit will force you to get better at communicating effectively to others (including agents).
by zhangyiqun | 2025-12-09 14:04:24+00:00
As a non-native English speaker, keeping up with long-form technical podcasts creates a high cognitive load. I built this tool to focus on the logic and information, rather than mentally translating every sentence.

Existing AI dubbing tools were black boxes, expensive and hard to customize. So I built this CLI tool to automate the pipeline: extracting transcripts (Youtube/HTML/URL), translating them and generating audio using various TTS providers (Gemini/OpenAI/Self-hosted).
by graemep | 2025-12-09 14:04:35+00:00
One of those shows several cars in the photo and a single bike.

The other two show pedestrianised areas, and all three show pedestrians without any indication of how they go there. When I to to similar areas in my town (pop approx 23k) I have drive there, park, and then walk around.

I have several shops within easy walking distance and many people (including me) do walk to them, but quite a few drive. Few bikes (kids mostly) at shops although leisure cycling is VERY popular here.

One of the nice things about an edge of town area with its own identity as a village is we have a lot of local stuff which is walkable and friendly.
by plastic-enjoyer | 2025-12-09 14:04:37+00:00
> But for the majority of us, work means work.

This is true, however, I think that software engineering is an exception there. There are very few professions other than software development (maybe the arts?) where a growth mindset and tinkering on stuff in your free time seems to be mandatory. You don't see accountants or roofers skilling up in their free time. Furthermore, upskilling is less about pursuing one's interests than pursuing the interests of the market and I think this may be the issue for OP.
by lubbo | 2025-12-09 14:04:53+00:00
Hello HN,

I’m Lubos. I’ve been running production workloads on Docker Swarm for years. While the industry pushes Kubernetes for everything, I find Swarm to be the perfect sweet spot for small-to-medium teams who don't need the operational overhead of K8s.

However, Swarm lacks the modern tooling ecosystem. I found myself writing messy bash scripts to handle basic things like secret rotation, image tagging, and multi-environment deployments.

So I built Rollwave to solve this.

It’s a CLI (written in Go) that brings a "PaaS-like" deployment experience to your own servers.

What it solves:

1. Immutable Secrets & Zero Downtime: Native Swarm services cannot easily rotate secrets without downtime. Rollwave implements an Immutable Secret Pattern — it hashes your local secrets, creates versioned secrets in Swarm, and performs a rolling update automatically.

2. Integrated Build Pipeline: It parses your existing docker-compose.yml, builds images, tags them with git hash, pushes them to your registry (handles auth automatically), and deploys.

3. Multi-Environment Support: Deploy to Staging and Production from a single config using simple overrides (rollwave deploy --env staging).

4. Auto-Prune: It automatically cleans up old, unused secret versions after a successful deployment, keeping your cluster clean.

It uses your docker-compose.yml as the single source of truth, so you don't have to rewrite your entire infrastructure definition.

I’d love to hear your feedback—especially from those who still appreciate Swarm's simplicity.

Repo: https://github.com/rollwave-dev/rollwave
by devinprater | 2025-12-09 14:05:39+00:00
Thank goodness for emulation. With OCR, and now AI screenshot descriptions, I can know what menu I'm in, what menu option is selected, dialog on the screen, stuff like that. Case and point, Dragon Ball Z Budokai Tenkaichi 3 for the Playstation 2. On original hardware, I had no idea what I was getting when I'd finish a battle in story mode. Now, with NetherSX2 on my phone, after a battle, I can have TalkBack describe the screen, listen to the description of what I won, press B to exit the description, press A to advance the game screen, read the next thing I won, and so on. Of course, the app has to have an accessibility element that TalkBack can grab onto to describe, so ironically, Retroarch doesn't work for this, and either does Lemuroid, but I mean it's a start, and hopefully one day TalkBack can grab the entire screen for a screenshot without needing an element onscreen to latch onto.
Show HN: Human Code Principles – 12 principles for human-centered software dev
by janijarvinen | 2025-12-09 14:07:10+00:00
Hi HN,

I've been writing software for a long time, and over the years I've felt that most developer principles focus mainly on code structure or architecture. Useful, but only one part of the job.

I wanted something more human-centered -- principles about how we think about long-term consequences, avoid burnout, treat each other, and work responsibly with tools like AI. So I wrote a small set of 12 principles I call the Human Code Principles.

They're not a methodology or a set of rules, just an attempt to articulate values that seem to lead to healthier and more sustainable software work. I don't consider them finished or universal, and I'm interested in critique.

If you think something is missing, unclear, naive, or misguided, I'd appreciate the feedback.

Here's the link again in case the URL field is hidden on mobile: https://humancodeprinciples.org/
by lucyjojo | 2025-12-09 14:07:21+00:00
at that point keep them in there, quit using the "secrets in repo" strategy from now on and rotate all your secrets in your new vault.

you also have the option to cut a new repo. it's a small team, you don't have behemoth inertia.

(secrets in repo if your code is open-sourced is indeed not a good idea at any scale. it's also a bad idea if your secrets cannot be easily meaningfully rotated, like putting your social security number in a secret.)
by troupo | 2025-12-09 14:07:30+00:00
No. It's laziness and bad design. It's the most generic trash icon from the most generic icon set.

Same with "add row above/below" or the completely distinct action Create Filter/Filter by cell value.

They can be trivially improved with about 1 millisecond of conscious thought. Especially given the fact that these actions have been around in office software for literal decades, and more often than not with their own distinct icons.
by prescriptivist | 2025-12-09 14:07:37+00:00
Another thing I'd suggest: look into and use non-coding AI tools that improve productivity. For example:

Zoom meeting transcriptions and summaries or Granola. A lot of context is lost when you take manual notes in meetings. If you use a tool that turns a meeting into notes automatically, you can use those notes to bootstrap a prompt/plan for agents.
by burnt-resistor | 2025-12-09 14:07:58+00:00
I think it was a fun PR joke that was cool and funny itself and showed they didn't take themselves too seriously.

PS: What I miss from growing up - being awoken about 7:35 am to my next door neighbor's Solar Gold LS Wankel rev shifting from 1st->2nd as he commuted to Spectra-Physics.
by Brajeshwar | 2025-12-09 14:08:38+00:00
This is personal. However, many of the people I had meetings with love this. So, here we go.

Quite a while back, I realized that anything digital, from phones to computers, tends to become or look like very official/non-personal and hence looks bad, especially in 1:1 meetings. I decided to go with pen and paper, in a simple Notebook (A5 or A7 is my choice). I’m do not write anything personal, but the points shared or noted down between us are enough to remind me of any points that I might have noted in my mind.

I’ve carried this habit to many other meetings (non-1:1s too), even when there is a note-taker (AI or otherwise). My meeting notes usually get shared or used as references by other participants.

Even during the meetings, other participant(s) sometimes contribute to my notes. I don’t hate digital mediums; in fact, I have used Freeform on an iPad just like I use my Notebook for meeting notes.

The interesting part is that I learnt to draw like Dan Roam[1] quite a while back. So, my notes contain texts with a lot of arrows, stick figures, shapes, etc.

Sidenote: A lot of conversations got sidetracked to discussions about paper, fountain pens, the way I write, etc.

1. https://www.danroam.com
by adriand | 2025-12-09 14:08:41+00:00
Work that would have taken me 1-2 weeks to complete, I can now get done in 2-3 hours. That's not an exaggeration. I have another friend who is as all-in on this as me and he works in a company (I work for myself, as a solo contractor for clients), and he told me that he moved on to Q1 2026 projects because he'd completed all the work slated for 2025, weeks ahead of schedule. Meanwhile his colleagues are still wading through scrum meetings.

I realize that this all sounds kind of religious: you don't know what you're missing until you actually accept Jesus's love, or something along those lines. But you do have to kinda just go all-in to have this experience. I don't know what else to say about it.
by matsemann | 2025-12-09 14:09:04+00:00
To me, fixtures are a code smell. If you need so much common setup to test your application, the code under testing is doing too much. It's unfortunately quite common in Rails or Django projects. You need to pass the Foo model to your function, but it will lookup foo.bar.baz, so you need to wire up these as well, which again need further models. Of course everything also talks with the database.

Instead, if you're able to decouple the ORM from your application, with a separate layer, and instead pass plain objects around (not fat db backed models), one is much freer to write code that's "pure". This input gives that output. For tests like these one only needs to create whatever data structure the function desires, and then verify the output. Worst case verify that it called some mocks with x,y,z.
by scream4ik | 2025-12-09 14:10:03+00:00
Most agents store memory in two places: SQL for facts, and a vector DB for embeddings. These two systems drift out of sync whenever only one of them succeeds.

Example: SQL updates "user lives in London", vector DB update fails, and the agent keeps retrieving an old embedding ("New York"). After hundreds of writes, you get ghost vectors, stale context, and hard-to-debug behavior.

Vector DBs don't support transactions. So even with correct code, failures, retries, or async pipelines create a mismatched state.

MemState solves this by making SQL + vector writes one atomic operation: either both succeed, or both are rolled back. No partial memory.

Features: - atomic commits across SQL and vectors

- rollback of the last N updates

- schema validation to avoid malformed LLM output

- append-only fact log

- backends: SQLite, Redis, in-memory

- vector hook: ChromaDB (more coming)

Behavior example:

mem.commit(...) -> if vector upsert fails, SQL is rolled back automatically.

mem.rollback(n) -> optional manual undo.

Small benchmark (1000 writes, 10% random vector-DB failures):

Manual sync: 90 inconsistent records

MemState: 0

Use cases: long-running agents, LangGraph workflows, RAG pipelines, local/offline setups.
by masswerk | 2025-12-09 14:10:08+00:00
I'd suggest a simple test: remix menu items and icons and test, if this has significant impact on usability. If not, the icons are just arbitrary decoration and ultimately add clutter.

Referring to the examples provided in the article, I'd suggest that the impact on the Safari app menu should be minimal (so these are non-functional icons), while the impact on the Move & Resize submenu would be devastating and should result in confusion (so these are essential).

If you can remix with minimal impact, don't do icons. (In the case of the app menu, these are apparently meant to add structure, which is already established by other means like menu separators, so you have now two – or, including indentation, three – systems of structure and visual hierarchy that are fighting each other.)

Moreover, if you put icons everywhere, you're forgoing the facility to convey state, like active state checkmarks, since these, instead of standing out and signalling change, would be just drowned in the decorative clutter. (So what's next? Add color and/or animation, like swirling checkmarks?) And this, BTW, is also why the icons in the Move & Resize menu are effective: they are conveying and illustrating state (in terms of a preview), while most of the other menu icons (mostly referring to activities) do not. So, as a rule of thumb: icons referring to state may be useful and even desirable, while icons referring to activities are probably better left out. (And, if you feel the need for something like bullet points to mark your most important menu items, there's probably a deeper problem with your menu structure.)
by esafak | 2025-12-09 14:10:16+00:00
The model partially solves the problem but fails to learn the correct loop length:

> An investigation of model errors (Section 5) reveals that, whereas large language models commonly “hallucinate” random solutions, our models fail in principled ways. In almost all cases, the models perform the correct calculations for the long Collatz step, but use the wrong loop lengths, by setting them to the longest loop lengths they have learned so far.

The article is saying the model struggles to learn a particular integer function. https://en.wikipedia.org/wiki/Collatz_conjecture
by jack_tripper | 2025-12-09 14:10:16+00:00
Damn, Japan used to be the home of cool quirky consumer gadgets in the 80s-90s, I used to dream of as a kid, but sadly no more, now it's China.

Today's consumer innovations I see coming out of Japan are like "hey, wanna buy a cheaply made nostalgia-bate plastic replica of a popular 1980's digital Casio metal watch, for more than the price of a bluetooth smartwatch?"