MurphyA/hacker-news huggingface dataset:
by smittywerben | 2025-05-18 15:29:08+00:00
Kafka is a write-ahead log, not a queue per se. It handles transactions to the disk. Not across the network.

RabbitMQ is neat out of the box. But I went with ZeroMQ at the time.

ZeroMQ is cool but during current year I'd only use it to learn from their excellent documentation. Coming from Python, it taught me about Berkeley sockets and the process of building cross-language messaging patterns. After a few projects, it's like realizing I didn't need ZeroMQ to begin with I could make my own! If ZeroMQ's Hintjens were still with us I'd still be using it.

It's like the documented incremental process of designing a messaging queue to fit your problem domain, plus a thin wrapper easing some of lower level socket nastiness. At least that's my experience using it over the years. Me talking about it won't do it enough justice.

NATS does the lower level socket wrapper part very nicely. It's a but more modern too. Golang's designed to be like a slightly nicer C syntax, so it would make sense that it's high performance and sturdy. So it's similar to ZeroMQ there.

I'm not sure if either persist to disk out of the box. So either of these are going to be simpler and faster than Kafka.

The DB people are probably trying too hard to cater to the queues. Ideally I'd have normalized the data and modeled the relations such transactions don't lock up the whole table. Then I started questioning why I needed a queue at all when databases (sans SQLite which is fast enough as is) are made for pooling access to a database.

Kafka supports pipelining to a relational database but this part is where you kind of have to be experienced to not footgun and I'm not at that level. I think using it as a queue in that you're short-circuiting it from the relational database pipeline is non-standard for Kafka. I suspect that's where a lot of the Kafka hate is from. I could understand if the distributed transactions part is hell but at that point it's like why'd you skip the database then? Trying to get that free lunch I assume.

I have an alternative. Try inserting everything into a SQLite file. Running into concurrency issues? Use a second SQLite file. Two computers? send it over the network. More issues? Since it's SQL just switch to a real database that will pool the clients. Or switch to five of them. SQL is sorta cool that way. I assume that would avoid the reimplementing half of the JVM to sync across computers where you get Oracle Java showing up to sell you their database halfway into making your galactic scale software or the whatever.

I must be stressed today. Thanks for asking.
by getnormality | 2025-05-18 15:30:00+00:00
I think the best single thing for programmers to know about combinatorics is combinatorial data structures. If you have a collection of objects and you need to iterate over all possible combinations, subsets, or permutations of that collection, libraries like Python's itertools do this for you. The resulting code will be clearer, more concise, and more reliable than if you reinvent the wheel with some hand-coded rat's nest of loops.

If you need to know how long that's going to take, you'll need to know some enumerative combinatorics.
by kstrauser | 2025-05-18 15:30:27+00:00
My experience was a bit different. I first saw a Starfire when we were deploying a bunch of Linux servers in the DC. The Sun machine was brilliant, fast, enormous, and far more expensive per unit of work than these little x86 boxes we were carting in.

The Starfire started at around $800K. Our Linux servers started at around $1K. The Sun box was not 800x faster at anything than a single x86 box.

It was an impressive example of what I considered the wrong road. I think history backs me on this one.

> It’s a bit sad that nobody gives a shit about performance any more.

Everyone gives a shit about performance at some point, but the answer is horizontal scaling. You can’t vertically scale a single machine to run a FAANG. At a certain vertical scale, it starts to look a helluva lot like horizontal scaling (“how many CPUs for this container? How many drives?”), except in a single box with finite and small limits.
by jasonthorsness | 2025-05-18 15:31:36+00:00
It’s difficult (impossible?) to force a font on the web in a way that can’t be overridden by some users. This must have been a font designed for device-specific applications picked up for other use-cases? Or maybe they just didn’t care that the long tail of users might see the string “googlelogoligature” instead of the logo.
Show HN: HTML QR Codes (Animated, Interactive, Programmable)
by Ciaranio | 2025-05-18 15:32:39+00:00
We just launched QRBRD, a QR code generator that creates live HTML5-based QR codes instead of traditional static images (PNG or SVG). Why might this interest you? Dynamic & Animated: Create QR codes that subtly animate or respond in real-time to data, significantly enhancing their visual appeal and user engagement. Fully Programmable: Leverage familiar web technologies (HTML, CSS, JavaScript) to easily design interactive, responsive QR codes Real-time Integration: Directly integrate QR codes with APIs or live data sources. Here’s a practical demo—a QR code adapting its visuals based on real-time weather conditions: → Live Weather QR Code Demo (no signup required https://signal.codes/2lyr) I spent years in AdTech, witnessing firsthand how even subtle visual changes dramatically influence engagement and ROI. Despite QR codes being widely used to bridge physical and digital interactions, their visual design hasn't evolved significantly in 30 years. They were originally designed for machine vision in factories in Japan, not human eyes. As connected displays (digital billboards, kiosks, TVs, web ads) become commonplace, QR codes should naturally become more enticing to human eyes, also more dynamic and interactive. Technical Details : HTML5 Native: QR codes as pure HTML/SVG/Canvas—reducing CDN overhead and static image hosting costs. Pixel-Perfect Responsive Scaling: Seamlessly scales for digital signage, kiosks, connected TVs, POS systems, and mobile. Instant Dynamic Styling: Real-time CSS changes to colors, animations, or states without additional API calls. Built-in Interactivity: Easily add animations, countdown timers, geo-location triggers, and sensor-based interactions (touch, tilt). Optimized Performance: Efficiently minified and compressed to ensure fast loads and minimal CPU/GPU usage. Cost Efficiency and Creativity: Animated and Interactive QR codes have the potential to drive higher user engagement than static, offsetting initial development complexity. Generative AI and recent coding tool advancements have significantly streamlined the creation process, lowering costs and speeding up development. Try it yourself: We offer a free tier (behind an email or Google login), allowing you to experiment. If you are comfortable with CSS and JS, you should be able to get pretty far. If you like what we have built consider buying credits so you can played with Create with AI and Edit with AI workflows: → QRBRD Signup Looking Forward to Your Feedback: This project has evolved significantly from initial experimentation (inspired by generative AI QR code art), expanding into numerous fascinating directions. I'm actively refining and prioritizing improvements, especially around compatibility across Android and iOS QR code detection. Excited to hear your critiques, suggestions, and the creative integrations you'd envision for dynamic, programmable QR codes. Your insights would be incredibly valuable as we continue refining QRBRD. Thanks for checking it out! Ciarán
by ednite | 2025-05-18 15:32:56+00:00
lol...thanks for the comment. Keeping fun and connection alive during those early parenting years wasn’t easy, but we figured out how to integrate it instead of cutting it out. A basement hangout with a toddler in a diaper and a crew of Bon Jovi–style teens wasn’t your typical "party", but somehow, it worked.

And yes, agree that BBQs are great opportunities when shared. Parenthood doesn’t have to mean social exile.
by lsaferite | 2025-05-18 15:33:44+00:00
Maybe calmly look at the spec and notice that the site does actually have a clear navigation to authorization (2025-03-26 > Base Protocol > Authorization).

You clearly have no desire to objectively evaluate what the specification is trying to do and are simply disregarding all aspects of the specification as trite or pointless. As such, this will be my last response of the subject.

I encourage you to take a breath and maybe try to understand why the specification was created in the first place before dismissing it fully.
by falsaberN1 | 2025-05-18 15:33:51+00:00
I'm sorry to inform you that the mere automated pre-processing used in building of a training set will most likely disable any form of poisoning because the image is being altered before training. All popular training tools do this.

Art stealing is a thing. I've had by art stolen regularly. Multiple Doom mods use sprites I made and only one person (the DRLA guy) asked for permission. I've had my art traced and even used in advertisements with me only finding out by sheer chance. I've had people use it for coloring without crediting the source. This has happened for more than thirty years. You can only learn to live with it, lest you risk going absolutely insane. If you are popular, people will do stupid stuff with your stuff. And if you aren't popular, you art is not going to be used to train, anyway (sets are ordered by popularity and only the top stuff gets used. The one with 3 upvotes is not going in.)
by amalcon | 2025-05-18 15:34:01+00:00
Score voting is just approval voting with an additional permitted tactical error.

In both systems, the correct tactic is to determine the two candidates most likely to win. Then, assign maximum score to whichever of those is better and to everyone preferable to that candidate.

It is never correct to assign a score between the minimum and the maximum, so why allow it in the first place?
by pierrebrunelle | 2025-05-18 15:34:03+00:00
You can indeed turn anything that you want into an MCP server, e.g. https://github.com/pixeltable/pixeltable-mcp-server.

Pixelagent is a reference implementation for a multimodal agent framework to show that an agent class is easy to build and users should be empowered to build their own from scratch for their use cases.

Regarding Memory, to me it's just about Data Storage, Indexing, Orchestration, and Retrieval and I don't know why we should abstract Memory away from users. Memory will mean so many different things for many use cases.

Let's say you want:

- Working memory: Holds current context and immediate interaction history within the agent's context window -> this is just about passing Q&A pairs to maintain context alongside with roles.

- Episodic memory: Stores specific past experiences and interactions -> this is just about indexing past exchanges and having semantic search on it.

- Semantic memory: Organizes specific knowledge in structured formats -> this is just about building a custom logic (udf) to decide how and what to extract insight from and then retrieve it.

I've implemented them all in this example: https://github.com/pixeltable/pixelbot
by linsomniac | 2025-05-18 15:34:17+00:00
Amiga had a similar issue. One of the chips (fat Agnes IIRC?) didn't quite fit in the socket correctly, and a common fix was to pull out the drive mechanisms and drop the chassis something like a foot onto a carpeted floor.

Somewhat related, one morning I was in the office early and an accounting person came in and asked me for help, her computer wouldn't turn on and I was the only other one in the office. I went over, poked the power button and nothing happened. This was on a PC clone. She has a picture of her daughter on top of the computer, so I picked it up, gave the computer a good solid whack on the side, sat the picture down and poked the power button and it came to life.

We call this: Percussive Engineering
by hbogert | 2025-05-18 15:34:59+00:00
i'm gonna be a dick; I hate how some of my friends raise their kids and make their kids my problem when they're visiting and they see me as a daycare. Besides being a host I now have to take care of my friends and feeding them alcohol AND at the same time I have to correct their kids to not breakdown my house. I'll wind down the socials with those parents who are not parenting and cherish the friends more who raise well-behaved children
by shepherdjerred | 2025-05-18 15:35:02+00:00
I guess there’s not really a good reason. Maybe there are specific constraints when working with LLMs? OpenAPI is quite verbose

Anyway, the technical merits don’t really matter. MCP (and any standard really) are only useful because they’re widely adopted. OpenAPI isn’t used for this, but MCP is. So, in practice, MCP is better for AI agents
by ModernMech | 2025-05-18 15:35:04+00:00
You have a point, but in making it I think you're undermining your argument.

Yes, it's true that computer systems are nondeterministic if you deconstruct them enough. Because writing code for a nondeterministic machine is fraught with peril, as an industry we've gone to great lengths to move this nondeterminism as far away from programmers as possible. So they can at least pretend their code code is executing in a deterministic manner.

Formal languages are a big part of this, because even though different machines may execute the program differently, at least you and I can agree on the meaning of the program in the context of the language semantics. Then we can at least agree there's a bug and try to fix it.

But LLMs bring nondeterminism right to the programmer's face. They make writing programs so difficult that people are inventing new formalisms, "prompt engineering", to deal with them. Which are kind of like a mix between a protocol and a contract that's not even enforced. People are writing full-on specs to shape the output of LLMs, taking something that's nondeterministic and turning into something more akin to a function, which is deterministic and therefore useful (actually as an aside, this also harkens to language design, where recently languages have been moving toward immutable variables and idempotent functions -- two features that combined help deal with nondeterministic output in programs, thereby making them easier to debug).

I think what's going to happen is the following:

- A lot of people will try to reduce nondeterminism in LLMs through natural language constrained by formalisms (prompt engineering)

- Those formalisms will prove insufficient and people will move to LLMs constrained with formal languages that work with LLMs. Something like SQL queries that can talk to a database.

- Those formal languages will work nicely enough to do simple things like collecting data and making view on them, but they will prove insufficient to build systems with. That's when programming languages and LLMs come back together, full circle.

Ultimately, my feeling is the idea we can program without programming languages is misunderstanding what programming languages are; programming languages are not for communicating with a computer, they are for communicating ideas in an unambiguous way, whether to a computer or a human or an LLM. This is important whether or not a machine exists to execute those programs. After all, programming languages are languages.

And so LLMs cannot and will not replace programming languages, because even if no computers are executing them, programs still need to be written in a programming language. How else are we to communicate what the program does? We can't use English and we know why. And we can't describe the program to the LLM in English for the same reason. The way to describe the program to the LLM is a programming language, so we're stuck building and using them.
by tverbeure | 2025-05-18 15:35:14+00:00
I worked for a company that bought one of these. It was delivered, lifted through the window of the server room with a crane and worked fine.

A few days later, our admin noticed over the weekend that he couldn’t remote log in. He checked it out and… the machine was gone. Stolen.

Somebody within Sun must have tipped off where these things were delivered and rented a crane to undeliver them.
by joshstrange | 2025-05-18 15:35:29+00:00
You can use Ollama as the backend so the data never leaves your computer.

Also, the line is blurry for some people on “privacy” when it comes to LLMs. I think some people, not me, think that if you are talking directly to the LLM provider API then that’s “private” whereas talking to a service that talks to the LLM is not.

And, to be fair, some people use privacy/private/etc language for products that at least have the option of being private (Ollama).
by perrygeo | 2025-05-18 15:35:31+00:00
Despite using vim and neovim for over 20 years, I'm still apparently a caveman when it comes to navigating. I both love and hate that this plugin calls me out for it. The "Hardtime Report" is a great feature, really shows just how pervasive my bad habits are. This could either help me improve - or force me to uninstall it in anger.
by dmd | 2025-05-18 15:36:23+00:00
> the Windows drive is probably formatted in NTFS so the Linux instance will need drivers to support it

This hasn't been true for decades now, thankfully! Read-only NTFS support has been built into the kernel for a quarter century already (1997, 2.1.74, and a better one in 2002, 2.5.11) - and full read-write support for 4 years now (2021, 5.15).
by conradludgate | 2025-05-18 15:36:45+00:00
disclaimer, employee at Neon, another postgres hosting provider

My understanding after looking into it, it seems that Xata+SimplyBlock is expected to use ReadWriteOnce persistent volume access modes. This means the claim can only be bound to one node.

I think this solves the split-brain problem because any new postgres readwrite pods on new nodes will fail to bind the volume claim, but it means there's no high-availability possible in the event the node fails. At least, I think that's how kubernetes handles it - I couldn't find too much explaining the failure modes of persistent volumes, but I don't see many other solutions.

At Neon, we solve this issue by having our storage nodes form a consensus protocol with the postgres node. If a new postgres node comes online, they will both contend for multi-paxos leadership. I assume the loser will crash-backoff to reset the in-memory tables so there's no inconsistency if it tries to reclaim the leadership again and wins. In the normal mode with no split-brain and one leader, multi-paxos has low overhead for WAL committing.
by Qem | 2025-05-18 15:36:50+00:00
Fun thought. Pope Leo XIV is the latest in a long line of popes whose names make reference to an old-world big cat, the Lion (Panthera leo). Given he hails from from the Americas, had he payed homage to a different, local big cat (Smilodon populator), we would probably have the first alliterative pope title: Pope Populator I.
by K0balt | 2025-05-18 15:37:29+00:00
I think maybe you underestimate memes. A meme is a self copying idea that propagates through “sentient” creatures, which can also include many animals. (Animals can become fearful of arbitrary non-threats through social transmission , for example, and populations of animals can develop cultural behaviors that persist generations after the stimulus for the behavior is removed)

Memes are most powerful when they are packaged in complex structures, such as ideologies, cultures, or religion.

Memetic structures can contain formal mechanisms of transmission, proof of infection / identification of in a out group, immune systems against memetic disease (disease from the perspective of the memetic system, not the organism), and even apoptositic isolation mechanisms to prevent out of control mutations. These memetic systems of ideas and ideology are subject to rapid iteration and natural selection, and ones that survive in the wild for significant periods become pseudo legitimized as primary cultural paradigms.

Memes are by far the most dynamic and influential factor in human evolution and development, and have been for quite some time. All wars are primarily memetic.
by Tijdreiziger | 2025-05-18 15:37:33+00:00
You can also be motivated because you like to consume media in the language (relevant for English and Japanese), because you think it will be useful for a job (English) or for travel (French, Spanish, etc.), or simply because you like the language.

If you don’t have any of these reasons to motivate you, the question arises of why you’re bothering in the first place.
by koltcov | 2025-05-18 15:37:50+00:00
Hi HN! I made this open-source plugin because the standard IntelliJ IDEA project tree always annoyed me with a long, cluttered list of External Libraries. This plugin folds external dependencies into grouped nodes, making navigation simpler.

It’s particularly useful if your project has many dependencies (like large Spring apps, Android projects, or Kotlin multiplatform).

Feedback appreciated!

GitHub: https://github.com/Frees/idea-plugin-external-libraries-fold... JetBrains Marketplace: https://plugins.jetbrains.com/plugin/27293-external-lib-fold...
by 2OEH8eoCRo0 | 2025-05-18 15:39:56+00:00
Stuff like this is a glimpse into the future that we were robbed of by the current big tech status quo.

They're running a 3rd party OS on their phone using a 3rd party external keyboard and 3rd party display. Interoperability! Imagine that! Running whatever software you want with whatever accessories you want on hardware that you own! Tech should have made it easier to accomplish this!
by jauntywundrkind | 2025-05-18 15:40:46+00:00
Some chips that have come out in the past 3 years with Cortex A7:

Microchip SAMA7D65 and SAMA7G54. Allwinner V853 and T113-S3.

It's not like a massive stream of A7's. But even pretty big players don't really seem to have any competitive options to try. The A-35 has some adoption. There is an A34 and A32 that I don't see much of, don't know what they'd bring above the A7. All over a decade old now and barely seen.

To be fair, just this year ARM announced Cortex-A320 which I don't know much about, but might perhaps be a viable new low power chip.
by blahgeek | 2025-05-18 15:40:47+00:00
I’ve been using vim for 10+ years. However I honestly don’t see the downside of repeating h or j to move up/down (with the key repeat delay adjusted to a small value). It’s more intuitive than using say 15j, which involves recognizing some number in the screen and then look at the keyboard to type because the upper number row cannot be easily touch typed
by ryao | 2025-05-18 15:41:12+00:00
So far, Qualcomm is not paying the royalty rate hikes since they are selling ARM hardware using cores covered under the ARMv8 architectural license that they obtained before SoftBank started pushing ARM to improve profitability.

It is interesting that you should mention MediaTek. They joined the RISC-V Software Ecosystem in May 2023:

https://riseproject.dev/

It seems reasonable to think that they are considering jumping ship. If they are designing their own in-house CPU cores, it will likely be a while before we see them as part of a mediatek SoC.

In any case, people do not like added fees. They had previously tolerated ARM’s fees since they were low, but now that they are raising them, people are interested in alternatives. At least some of ARM’s partners are paying the higher for now, but it is an incentive to move to RISC-V, which is no fee for the ISA and either no fee or low fee for IP cores. For example, the hazard3 cores that the Raspberry Pi Foundation adopted in the RP2350 did not require them to pay royalty fees to anyone.
by jovial_cavalier | 2025-05-18 15:41:41+00:00
So if a function dereferences a pointer, it doesn't make sense to check that it's not null inside the function?

Unless there's an actual performance implication, this is all purely a matter of taste. This is the kind of broadly true, narrowly false stuff that causes people to destroy codebases. "I can't write it this way, because I have to push ifs up and fors down!!!" It's a totally fake requirement, and it imposes a fake constraint on the design.