MurphyA/hacker-news huggingface dataset:
Show HN: Omni-LPR – A multi-protocol license plate recognition server
by habedi0 | 2025-09-01 14:15:10+00:00
Hi everyone,

I've made an open-source server in Python (called Omni-LPR) that exposes automatic license plate recognition (or ALPR) as a toolbox for LLMs and AI agents. It can also be used as a standalone microservice.

Here are some of its features:

- Installable as a Python package: `pip install omni-lpr`.

- Self-hostable for 100% local and private inference.

- Exposes tools via a native MCP endpoint for agents and a standard REST API.

- Includes examples for direct integration with tools like LM Studio.

- Hardware-accelerated backends for CPU, OpenVINO, and CUDA for faster performance.

Project's GitHub repo: https://github.com/habedi/omni-lpr
by Quarrelsome | 2025-09-01 14:15:26+00:00
I'd imagine the volume we're discussing aren't even aware of options outside of the appstore.

A study was done a while back of average user competence and when given the task of arranging a meeting in a calendar app for a time where all participants could attend (given calendar conflicts) a meagre 5% of participants succeeded. The bar is tragically low for technical literacy and 95% of people (ballpark) fail to clear it. I'd imagine the first time these sorts of people are aware of side-loading is when they get scammed by being told to side-load some malware. So for these people they wouldn't even notice their digital rights being eroded or taken away completely, because they don't even understand how or why they'd be important.
by jibal | 2025-09-01 14:15:26+00:00
I do understand you, but you and your "conviction" are wrong. Apparently you aren't even familiar with AlphaZero.

> Adding pieces up only increase complexity up to a point.

As you said, until you reach 32 pieces. What you vastly underestimate is how much complexity is added at each level. You're like the king in the fable who agreed to give the vizier a small amount of grain: 1 grain for the first square, 2 grains for the second square, 4 grains for the third square, etc. The king thought he was getting a bargain.

> The thing is : you don't need to train it on all games from the endgame table before it converges to perfect play.

But you do, because there is no algorithmic simplification, at all. Strong chess players understand that while there are common patterns throughout chess, their application is highly specific to the position. That's why we have endgame tables, which are used to solve positions that pattern matching doesn't solve. You can get excellent play out of an NN, but that's not the same as solving it. And the absence of Bellman violations is necessary, but not sufficient ... you can't use it to prove that you've solved chess. The fact is that it is impossible within pragmatic limits to prove that chess has been solved. But so what? Programs like AlphaZero and Stockfish already play well enough for any purpose.

Anyway, you're free to go implement this ... good luck. I won't respond further.
by ChrisRR | 2025-09-01 14:16:05+00:00
The first line of therapy is not stimulants though, this is a massive falsehood that gets spread by those seeking ADHD treatment.

The first way to tackle ADHD is to manage your behaviour and manage the way you deal with ADHD. If you can't handle the pattern of behaviour, then stimulants don't make you magically able to concentrate. If you're in a pattern of seeking out distractions, then stimulants can potentially can increase that behaviour

What stimulants do help is for you to be able to get over the hump of wanting to get back to what you should be doing. It reduces the difference between boring task and other tasks and you need to be able to address your behaviour so that you can take advantage of the boost that meds give you

Unfortunately I've seen way too many people intentionally mess up their titration so that they're overdosed, bouncing off the walls and claiming that they're cured because they can clean the house for 10 hours straight. That's totally missing the points
FUGC: Understand the GC in Fil-C
by ricecat | 2025-09-01 14:16:08+00:00
FUGC is the GC of Fil-C, a C/C++ language extension for memory-safe, here's the previous post to introduce Fil-C. In this post, we will introduce FUGC briefly.

Non-stop, concurrent, mostly parallel

FUGC (Fil Unified Garbage Collector) is a non-stop, concurrent, and mostly parallel garbage collector. This means the program, often called the mutator, continues executing while garbage collection takes place, with only minimal pauses. By overlapping collection work with normal program execution, FUGC avoids the long stop-the-world interruptions typical of traditional collectors, while parallelism among GC threads helps it reclaim memory efficiently.

https://www.gizvault.com/archives/understand-the-gc-in-fil-c
by mpalmer | 2025-09-01 14:16:23+00:00
I don't see the point of doing that; the stories' power comes from myth/archetype. They're fables. Anansi is a trickster god; the characters he tricks tend to be other gods, spirits or archetypes. They're not normal people. They're already meant to teach, and connect with kids. It's been happening for centuries.

I see you identifying a need (African storytelling traditions should be preserved), which is great. But I would really recommend talking to experts in this field before monetizing features that dilute these cultures' canon.

We do not really mean, we do not really mean that what we are about to say is true. A story, a story; let it come, let it go
by hollerith | 2025-09-01 14:16:27+00:00
Media decoders are an important attack vector. Examples include PDF viewers and the library that produces thumbnails for display by the file browser. (One way to attack a media decoder is to get the user to open a malicious email, but there are other ways.)

The web browser is an important attack vector, and there are no Linux distros that sandboxes the browser anywhere near as effectively as Android and ChromeOS do except maybe Qubes, but Qubes is stuck using X for the display server and using Zen, both of which have been abandoned by their maintainers and aren't receiving enough maintenance attention to fix security vulnerabilities. I.e., Qubes's reputation for security probably comes from the fact that it was relatively secure many years ago.

Android and ChromeOS use selinux to sandbox the browser. Fedora uses selinux, too, but it only sandboxes server software: any program including a web browser started by the user is unconstrained (unaffected) by Fedora's selinux implementation.

The kernel is another important attack vector (and Linus has always been bored by and impatient with security considerations.)

Ditto the C library. Note that GrapheneOS uses a special, hardened C libary (which in the last few years has migrated to at least one security-focused Linux distro, namely, secureblue, but of course none of the people that show up here on HN proudly proclaiming that Linux is more secure than iOS or Android use secureblue, and the lead of the secureblue project freely admits that MacOS iOS Android and ChromeOS are more secure than secureblue is).

You know how one of the arguments for Wayland is the fact that there is no way to prevent any process from reading the contents of any X window? Well, to actually achieve this "window privacy" inherent in Wayland requires active support from the compositor, and Gnome has the only Wayland compositor that actually provides this support.

Till the vulnerability started getting exploited some time last year, anyone could upload a theme to KDE's theme store that could run arbitrary code when the user chose to install it. No one was reviewing uploaded themes for malware or warning users of the danger.

Hyprland uses a trampoline (files at a known location in the file system that are occasionally executed by Hyprland) for reasons that are hard to explain if we assume that Hyprland's maintainers care anything about security.
by estearum | 2025-09-01 14:17:26+00:00
The COVID vaccines are an absolute miracle of modern medicine and it's people like yourself who have turned it into a tragedy.

Without the hysterical and scientifically illiterate people complaining about the COVID vaccines, we very likely could've had a renaissance of investment into next generation biotech platforms like mRNA. Instead, they "have" to be destroyed because the woke right can't read a scientific paper and real information takes more than a tweet or TikTok video to convey.
by taf2 | 2025-09-01 14:17:51+00:00
Thanks it was a fun to dive back into the multiplexing loop logic and finally refresh that code with socket action from libcurl and new ruby APIs...

1. the C parser in libcurl is much faster then ruby's and libcurls support for HTTP/2 and multiplexing - even back in 2010 while at LivingSocial we used curb to improve site throughput (it's improved a lot these days) with the multi interface at my current company CTM we can push out millions of webhook requests with very little CPU burn.

2. Fiber support is needed because like a normal C extension would call a function to open a socket write some bytes, wait, write some more and then wait, and read some, wait and read some more again. All of this while basically the CPU is idle and we're just waiting there blocking a whole ruby thread or even worse process (typical ruby process running rails could be pretty big too so that's a lot of memory consumed just waiting around doing basically nothing). Ruby threading model really helped this and curb was one of the few libraries or only one i know of that played nice with the ruby global interperter lock so multi-thread web apps could do stuff on other threads while one thread was blocked waiting on IO. With this new curb update now a single thread can do multiple http requests with overlapping IO meaning while one fiber is waiting another fiber can do some busy work like queue up more http requests or read something from a db.

3. The key is we're rb_wait_for_single_fd so any reactor (if i'm understanding what a "reactor" really is correctly) can run and do busy work while we're waiting on a file descriptor. It should* work correctly now, if you run into issues i'd love to know about it and help get them fixed.

What I'm hoping for now for ruby is either puma implements a Fiber pool rails db adaptors fully add fiber support then we should as a ruby community have a really nice story around multiplexing I/O to be more competitive with node.js / golang for web socket and other I/O heavy workloads. By competitive here i mean we can use less memory since we'll be able to keep our CPU's busy while we wait for the network or even disk (maybe).
by fragmede | 2025-09-01 14:20:05+00:00
> However having to cut and paste a meme into ~/Downloads so I can share it on Discord or Slack is a constant PITA.

Why round trip it through the file system or Files.app? That seems like extra (annoying) work On my iPhone, I copy the meme onto the clipboard and then I open discord/slack/signal/Whatsapp and find the right channel/chat, and paste right in there.
by evantbyrne | 2025-09-01 14:20:51+00:00
Is it possible that some of the mismatch in how people view Go's type system is due to experiences differing from writing applications vs writing libraries? I personally find some of the repetition in Go code to be tolerable when writing web applications and CLI tools, but a real issue for the composability of libraries with different purposes. Going back to the database toolkit example, the query builder can easily return a result type, but what if I also want to handle validation of input before the query and then later return a HTTP response? Well to chain a result type end-to-end in Go requires it to have knowledge of all the different types/interfaces that it could map to, which I believe is way too broad of a responsibility for one type, even though all of those features feel as though they could very naturally chain together and reduce down to a single error. These kinds of type limitations effectively force Go libraries to live on their own islands where they don't compose with one another.
by estearum | 2025-09-01 14:21:05+00:00
> Assisted suicide only makes sense in situations where the person is in extreme chronic pain and no palliative care or treatment can be provided, which is rather rare.

As medicine and technology advance, assisted suicide will make sense/be required in nearly 100% of natural human deaths. With enough money, we will be able to keep people "alive" (on paper) arbitrarily long. It will be nothing like what people think of when they describe extended lifespan, but turning off all the robotic parts will still be tantamount to assisted suicide.
by adgjlsfhk1 | 2025-09-01 14:21:43+00:00
there is a trade-off, but it doesn't help too much because of you take more time, you need more error correction which takes more qbits. the best trade-off probably comes from dropping the error correction to the point where you go from 99% reliability to 1% reliability. doing so will increase your rsa factor time from ~1 week to ~1 year and probably saves you ~an order of magnitude in qbits

The big thing that could change the numbers is more reliable qbits. Most of the calculations so far are done with qbits right at the edge of where error correction works (about 5x better than current qbits). if you get another 10x in qbit quality you probably drop the required qbits by ~100-1000x.
by vprokopyuk | 2025-09-01 14:22:04+00:00
mig provides a simple, yet effective, minimalist, yet complete Go package for building PostgreSQL migration infrastructure in Go using the full power of PostgreSQL-native SQL, the flexibility of Go templates, the ubiquity of CLI automation, and the reliability of ACID transactions. The package exposes a minimal interface for setting up, configuring, and scaling migrations in Go. The package provides a convenient CLI commands for applying and reverting migrations. The final result is a convenient, self-contained executable binary with embedded migration apply and revert files ready to be applied both in the cloud and on premise
by xorcist | 2025-09-01 14:23:22+00:00
Yet free military, completely socialized and completely state funded, is completely unproblematic. It's even in such high organizational regard that it is usually considered a merit to have made a career there, even in the private sector.

That should teach us that we can't look at soeciety from some sort of logical principles. It bears all the markings of sociologically created in-groups, or as the kids would put it, "identity politics". It doesn't have to make sense.
by Joker_vD | 2025-09-01 14:23:25+00:00
Actually, there has been some research into building exceptions on the "basically, passing std::exception* into every function and checking what's inside it on every return" idea, and it was about as fast as the traditional table-based unwinding, took way less space in the executable, and re-throwing exceptions was actually faster [0][1]

[0] https://news.ycombinator.com/item?id=22483028

[1] https://www.research.ed.ac.uk/portal/files/78829292/low_cost...
Show HN: Dialog – An Orchestration Layer for VoIP-Agent Applications
by farar-ajp | 2025-09-01 14:24:50+00:00
Dialog is a simple and easy to understand VoIP-Agent orchestration layer for building VoIP-Agent applications. You can use Dialog to assemble the VoIP provider, Speech to Text (STT), Text to Speech (TTS), and LLM of your choice into a low latency VoIP-Agent application. It features:

• Simple, extensible, modular framework

• Concrete implementations for VoIP, STT, and TTS, plus abstract Agent classes for extension

• Multithreaded deployments

• Event-driven architecture

• Isolated state — modules exchange objects but never share references

I'm looking for applications for the framework. Please reach out if you would like to collaborate on a VoIP-Agent application using Dialog.
by paulcole | 2025-09-01 14:24:52+00:00
> To get that to work half-decent, you have to take on a PM/Tech-lead role, you're no longer a senior engineer.

But you’re saying it can be half-decent?

The problem is that about 75% of HN commenters have their identities tightly wound up in being a (genuflect) senior engineer and putting down PM/tech-lead type roles.

They’ll do anything to avoid losing that identity including writing non-stop about how bad AI code is. There’s an Upton Sinclair quote that fits the situation quite nicely.
by yorwba | 2025-09-01 14:25:27+00:00
It's an off-the-shelf camera: https://www.viewproonline.com/products/a40-pro-40x-optical-z... It's hardly surprising that Russian drones use cameras made in China. For comparison, Ukrainian drone manufacturers also started out using Chinese cameras before they developed cheaper options optimized for their use case: https://militarnyi.com/en/news/ukraine-launches-production-o...
by leobg | 2025-09-01 14:25:28+00:00
Yes, exactly. You want to randomize the parts that are irrelevant. For example, if you're classifying news articles, you may want to shorten them anyway. A human would be able to tell what category an article belongs to without reading the whole thing - so may do a combination of URL, headline, beginning, middle, and/or end. And if you do that, it's easy to turn one training example into 10 or more. You just vary the length of the individual parts.
by turboat | 2025-09-01 14:26:21+00:00
Interesting. If you don't mind, I have a few questions:

1. Is the "big VM with root" running macOS itself, or a different OS?

2. Do you do any work on the bare metal version of macOS, or do you just start the VM in the morning and do everything from there?

3. How do you experience the performance/UX of the VM?

4. Do you know why Company B IT has set up this VM solution, instead of a plain old MacBook locked down with Apple's enterprise management tools?

5. Can you explain more about the App Store? Is it the actual Apple App Store but restricted to a curated set of apps, or is it a different system? If so, is the store a custom in-house thing or is it provided by a vendor?
by bluGill | 2025-09-01 14:27:05+00:00
we spent a billion dollars to rewrite our code breaking everything. 15 years latter and we have a better product than the old stuff- but 15 years ago was pre c++11, and rust didn't exist. i cannot honestly ask for another billion dollars to repeat that again and we are stuck. We must keep the old code running and if your new thing isn't compatible with whatever we did back then you are off the table.

c++26 still builds and runs that c++98 and so we can use it. Rust is nice but it can't interoperate as well in many ways and so it gets little use. you can call that bad desingn - I might even agree - but we are stuck.
by aleph_minus_one | 2025-09-01 14:27:20+00:00
> Ironically, e-bikes, at least in the EU, are having the exact opposite effect. More people that don't normally ride bikes are using e-bikes to get about.

At least in Germany people rather joke that the moment e-bikes became popular, people began to realize that they suddenly became too unathletic to be capable of pedaling a bicycle. I know of no person who uses an e-bike who did not ride an ordinary bicycle before.

> In the EU, an e-bike REQUIRES some physical effort any time for the motor to run.

The motor must shut off when 25 km/h is reached - which is basically the speed that a trained cyclist can easily attain. So because of this red tape stuff, e-bikes are considered to be useless and expensive by cyclists who are not couch potatoes.
by snowwrestler | 2025-09-01 14:27:23+00:00
Having a single bullet point about using a trust is insufficient, as it is quite complicated to receive a trust. There are other options for managing estate planning that will work well for ordinary families (those with less than ~$28 million in total assets).

The marketing around trusts is a classic information asymmetry. Law firms selling the service of setting up a trust know it’s not simple for heirs, but that is essentially repeat business for them. Many heirs will need to hire a lawyer to help retitle and transfer assets in the trust, and dissolve the trust if they want to personally control the assets.

And people buying the service of setting up a trust will, by definition, never know how it ends up. (Maybe unless they themselves have received a trust.)

A trust is a powerful tool for protecting wealth across generations. It’s not easier than basic inheritance.

Edit to add: the easiest way to avoid probate is to designate beneficiaries on all your financial accounts. These supersede will instructions and avoid probate. You can do the same thing on vehicle titles, at least in some states.

Real estate is more complicated so the easiest thing on your heirs is to not own any real estate at the time of your death. :-) Or if you have real estate you would like to pass on, that specifically is a good use case for a living trust (with only the real estate inside it).
by lukaslalinsky | 2025-09-01 14:27:31+00:00
As a long-time programmer, I have super positive experience with Claude Code. I can write all the code it can, I'm certain I can do it better, and I can probably do it faster as well. However, what I don't have is time and energy. I can spend the little time I have on the requirements and review, and let CC deal with the stuff in between, while I focus on personal life. It's a huge value to me. It literally got my back into the programming game.
by Spooky23 | 2025-09-01 14:28:52+00:00
It sounds like you make a living doing stuff that has an incredibly small, ninja-like team, has a very low change rate, or is something that nobody really cares about. Things like RPO/RTO, multi-tenancy, logging, etc don't matter.

That's amazing. I wish I could do the same.

Unfortunately, I cannot run my business on a single server in a cage somewhere for a multitude of reasons. So I use AWS, a couple of colos and SaaS providers to deliver reliable services to my customers. Note I'm not a dogmatic AWS advocate, I seek out the best value -- I can't do what I do in AWS without alot of capital spend on firewalls and storage appliances, as well as the network infrastructure and people required to make those work.
by cvoss | 2025-09-01 14:29:12+00:00
> sure, use an extra atomic to synchronize threads

What? That would make the situation worse. The execution has a weird unintuitive quirk where the actions of thread 3 seem to precede the actions of thread 1, which seem to precede the actions of thread 2, yet thread 2 observes an action of thread 3. Stronger synchronization would forbid such a thing.

The main question of the article is "Is the memory model _weak enough_ to permit the proposed execution?"
by GoblinSlayer | 2025-09-01 14:29:36+00:00
>Installation is not the same as support and isn't the same as trouble shooting.

The meme is still alive that windows accumulates garbage and becomes slower with time, so you need to reinstall it periodically. Reinstallation is also how you fix regressions, because ms is busy with cloud services.

>It isn't unusual situation in Linux.

As I remember, on linux I have an ample choice of kernel versions, but I didn't encounter regressions. For windows intel provides only the latest drivers.
by basisword | 2025-09-01 14:29:37+00:00
The end of an era! Goodbye xcworkspace. For most of my use cases SPM is now much easier to use and causes less issues but a great effort from all the Cocoapods maintainers over the years.

I wonder how interoperable SPM is though with non-Xcode build pipelines (e.g. Unity projects, ReactNative, Flutter, etc)?