frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Open in hackernews

No as a Service

https://github.com/hotheadhacker/no-as-a-service
64•radeeyate•11mo ago

Comments

Haeuserschlucht•11mo ago
:)
artogahr•11mo ago
:)
blahaj•11mo ago
> Rate Limit: 10 requests per minute per IP

I understand that one wants some rate limiting so that others don't just use this as a backend for their own service causing every single request for their service to also create an API request. But this is as simple and resource unintensive as it gets for an HTTP server. 10 requests per minute is just silly.

Also could it be that the limit isn't enforced against the origin IP address but against the whole Cloudflare reverse proxy?

jaywcarman•11mo ago
10 requests per minute per IP is plenty enough to play around with and have a little fun. For anything more than that you could (should!) host it yourself.
blahaj•11mo ago
So it is just purposefully made to be less useful? Is that part of the joke?

The rate limit still pretty surely isn't applied per IP.

arp242•11mo ago
Mate, it's a joke, not a serous service. The only silly thing here is going off on a tangent about the rate limit.
mindtricks•11mo ago
If it helps you, think of the rate limiter as the "no" final boss.
choult•11mo ago
Well this is something... someone creating a service off the back of a meme that's been flying around my networks for the past two days...
ziddoap•11mo ago
Fun idea. I wonder why the rejection messages are repeated so often in the "reasons" file.

"I truly value our connection, and I hope my no doesn't change that." shows up 45 times.

Seems like most of the rejections appear between 30 and 50 times.

khanan•11mo ago
Was wondering the same thing.. Probably cruft so it looks impressive at a glance.
Retr0id•11mo ago
If you ask LLMs for a long enough list of things, they often repeat entries.
MalbertKerman•11mo ago
There are 25 unique responses in that 1000-line file.
justin_oaks•11mo ago
Once you remove the duplicates that are different only because of the typos in them, yes, that's correct.
mikepurvis•11mo ago
A single large file is also sadness for incorporating suggestions from collaborators as you're always dealing with merge conflicts. Better might be a folder of plain text files, where each can have multiple lines in it, and they're grouped by theme or contributor or something.
spiffyk•11mo ago
A folder of plain text files will be sadness for performance. It's a file with basically line-wise entries, merge conflicts in that will be dead easy to resolve with Git locally. It won't be single-click in GitHub, but not too much of a hassle.
Retr0id•11mo ago
It's ~fine for performance if you load them once at service startup. But I agree, merging is also no big deal.
mikepurvis•11mo ago
In fairness, I doubt most of these kinds of meme projects have a maintainer active enough to be willing to conduct local merges, even if it's "dead easy" to do so.

Maybe then this is really a request for Github to get better/smarter merge tools in the Web UI, particularly syntax-aware ones for structured files like JSON and YAML, where it would be much easier to guess, or even just preset AB and BA as the two concrete options available when both changes inserted new content at the same point. It could even read your .gitattributes file for supported mergers that would be able to telegraph "I don't care about the order" or "Order new list entries alphabetically" or whatever.

cf. https://github.com/jonatanpedersen/git-json-merge

KTibow•11mo ago
It might be a weighted random.
ziddoap•11mo ago
Might be!

Not the way I'd approach it, but as a joke service, if it works it works.

varun_ch•11mo ago
> {"error":"Too many requests, please try again later."}

I guess it still works.

lgl•11mo ago
Bug report: when the server is overloaded, the No's are no longer random :)
kenrick95•11mo ago
Classic Hacker News hug of death
xnorswap•11mo ago
It looks like it's limited to 10 requests per minute, it's less of a hug and more of a gentle brush past.

It's documented as "Per IP", but I'm willing to bet either that documentation is wrong, or it's picking up the IP address of the reverse proxy or whatever else is in-front of the application server, rather than the originator IP.

Why do I think that? Well these headers:

    x-powered-by Express

    x-ratelimit-limit 10

    x-ratelimit-remaining 0

Which means it's not being rate-limited by cloudflare, it's express doing the rate limiting.

And I haven't yet made 10 requests, so unless it's very bad at picking up my IP, it's picking up the cloudflare IP instead.

egberts1•11mo ago
Probably all those cookies tipped and triggered the connection rate limiter.
xnorswap•11mo ago
I'm not following you at all?
NotMichaelBay•11mo ago
It's so elegant. Even in failure, it's still operational.
riquito•11mo ago
Love it, it's brilliant, but I think the rate limiting logic is not doing what the author really wants, it actually costs more cpu to detect and produce the error than returning the regular response (then my mind goes on how to actually over optimize this thing, but that's another story :-D )
hotheadhacker•11mo ago
Rate limiting has been removed
Retr0id•11mo ago
It could be genuinely useful for testing HTTP clients if it had a wider array of failure modes.

Some ideas:

- All the different HTTP status codes

- expired/invalid TLS cert

- no TLS cipher overlap

- invalid syntax at the TLS and/or HTTP level

- hang/timeout

- endless slowloris-style response

- compression-bomb

- DNS failure (and/or round-robin DNS where some IPs are bad)

- infinite redirect loop

- ipv6-only

- ipv4-only

- Invalid JSON or XML syntax

zikani_03•11mo ago
Not exactly what you are asking for, but reminded me that Toxiproxy[0] exists if you want to test your applications or even HTTP clients against various kinds of failures:

[0]: https://github.com/Shopify/toxiproxy

deanputney•11mo ago
Not sure why, but reasons.json is mostly duplicates (as many as 50!) of the same 25 responses: https://gist.github.com/deanputney/4143ca30f7823ce53d894d3ed...

It'd be easier to add new ones if they were in there a single time each. Maybe the duplication is meant to handle distribution?

finnh•11mo ago
ah, yes, the "memory is no object" way of obtaining a weighted distribution. If you need that sweet sweet O(1) selection time, maybe check out the Alias Method :)
justin_oaks•11mo ago
Knowing that there are only 25 responses, it makes it all the more funny that rate limiting is mentioned.

And you can host the service yourself! Hard pass. I'll read the 25 responses from your gist. Thanks!

thih9•11mo ago
Example responses:

https://raw.githubusercontent.com/hotheadhacker/no-as-a-serv...

anonymousiam•11mo ago
Looks impressive, but out of the 1000 possible responses, only 26 are unique.
qrush•11mo ago
Oh great, it's Balatro's Wheel of Fortune card as a Service (WoFaaS)
hombre_fatal•11mo ago
I made a lot of things like this as a noob and threw them up on github.

As you gain experience, these projects become a testament to how far you've come.

"An http endpoint that returns a random array element" becomes so incredibly trivial that you can't believe you even made a repo for it, and one day you sheepishly delete it.

blahaj•11mo ago
I don't think things have to be impressive to be shown. A funny little idea is all you need, no matter how simple the code. Actually I find exactly that quite neat.
TehCorwiz•11mo ago
I think you'll enjoy this better: https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpris...
seabass•11mo ago
{"error":"Too many requests, please try again later."}

a missed opportunity for some humor

richrichardsson•11mo ago
{"error":"Computer says no."}
readthenotes1•11mo ago
Beats "I have a headache"
n8m8•11mo ago
inb4 someone genuinely doesn't understand why you wouldn't do this with an LLM
macleginn•11mo ago
A worthy spiritual disciple of the Journal of Universal Rejection (https://www.universalrejection.org/)
svilen_dobrev•11mo ago
nice. Reminds me of BOFH (Bastard operator from Hell) . And those box-like calendars with page-per-day with some excuse^w^w tip on each :)

https://bofh.bjash.com/bofh/bofh1.html

hotheadhacker•11mo ago
The API rate limiting has been removed.

Babies Born from Dead Parents Will Increase with New Tech

https://www.404media.co/babies-born-from-dead-parents-will-increase-with-new-tech-are-we-ready/
1•salkahfi•2m ago•0 comments

Euro-Office: License compliance and what open source means

https://nextcloud.com/blog/euro-office-license-compliance-and-what-open-source-means/
1•maxloh•7m ago•0 comments

LingBot-Map: Geometric Context Transformer for Streaming 3D Reconstruction

https://github.com/Robbyant/lingbot-map
1•flux_w42•7m ago•0 comments

Modern Spectacle

https://px.philosopheasy.com/architecture-illusion-soral-media-control/
1•obscureline•7m ago•0 comments

Isaac Asimov: The Last Answer (1980)

https://www.highexistence.com/the-last-answer-short-story/
1•genphy1976•8m ago•0 comments

Client-Led Game/Simulation Projects' Effects on Motivation and Career Readiness

https://dl.acm.org/doi/book/10.1145/3786353?af=R
1•salkahfi•10m ago•0 comments

Generative Drinker: An Idea for Improving Wine Compatibility

https://hajo.me/blog/2026/04/18/generative-drinker-an-idea-for-improving-wine-compatibility/
1•fxtentacle•10m ago•0 comments

A Japanese poet's diary helps scientists reconstruct solar cycles

https://www.npr.org/2026/04/18/nx-s1-5788782/how-a-japanese-poets-diary-helps-scientists-reconstr...
1•Brajeshwar•14m ago•0 comments

Value Numbering

https://bernsteinbear.com/blog/value-numbering/
2•tekknolagi•18m ago•0 comments

Graph RAG finds what's similar. We should aim for what's relevant

https://github.com/FlowElement-ai/m_flow
44•hjeffery•18m ago•0 comments

The Most Remarkable Case in Swedish UFO History [video]

https://www.youtube.com/watch?v=4nqAJrqvXlY
2•keepamovin•19m ago•0 comments

Why is my MacBook zapping me lately?

1•pavas•20m ago•0 comments

Atmospheric Aging and the Respiratory Toxicity of Nanoplastic Particles

https://pubs.acs.org/doi/10.1021/acs.chemrestox.5c00237
1•PaulHoule•21m ago•0 comments

EnsembleData – Social Media Scraping APIs, feedback!!

https://ensembledata.com/
1•slackwy•22m ago•1 comments

The Great Man-Made River of Libya

https://en.wikipedia.org/wiki/Great_Man-Made_River
2•keiferski•23m ago•0 comments

Running a Minecraft Server and More on a 1960s Univac Computer

https://farlow.dev/2026/04/17/running-a-minecraft-server-and-more-on-a-1960s-univac-computer
1•brilee•24m ago•0 comments

Managing Complexity with Mycelium

https://yogthos.net/posts/2026-02-25-ai-at-scale.html
1•tosh•26m ago•0 comments

LogsGo – an experimental log ingestion/query project I built to learn

1•SaumyaCodes•35m ago•0 comments

Why Japan has such good railways

https://worksinprogress.co/issue/why-japan-has-such-good-railways/
2•RickJWagner•36m ago•0 comments

We're Hooked on Satellites. It Could Blow Up in Our Faces

https://www.cnet.com/science/space/features/satellite-overcrowding-space-junk-low-earth-orbit-sta...
2•geox•36m ago•1 comments

Show HN: Pvm – A TUI to browse and run commands across multiple Python venvs

https://github.com/Higangssh/pvm
2•swq115•37m ago•0 comments

A Reality Check on the Inequality Panic

https://pastimperfect.humanprogress.org/p/a-reality-check-on-the-inequality
2•RickJWagner•37m ago•1 comments

SemanticForge: Making AI Values Verifiable Across Cultures

https://github.com/xiaojialove-DRP/SemanticForge
1•xiaojiahaina•38m ago•0 comments

Thumb-Shift Keyboard

https://en.wikipedia.org/wiki/Thumb-shift_keyboard
1•riffraff•39m ago•0 comments

Show HN: ApplyPilot – Self-Hosted AI-Powered Job Search Companion. Open Source

https://github.com/eliornl/applypilot
1•eliornl•48m ago•0 comments

Sperm whales' communication closely parallels human language, study finds

https://www.theguardian.com/environment/2026/apr/15/sperm-whales-alphabet-vocalizations-similar-h...
2•breve•48m ago•0 comments

Việt Nam: Local Police Dox and Fine Citizens over Critical Comments

https://thevietnamese.org/2026/04/social-media-crackdown-in-viet-nam-local-police-dox-and-fine-ci...
2•BaudouinVH•50m ago•0 comments

You can have an RSS dependent website in 2026

https://matduggan.com/you-can-absolutely-have-an-rss-dependent-website-in-2026/
2•swq115•51m ago•1 comments

How China Built Its Vast Natural Gas Stockpile

https://www.nytimes.com/2026/04/08/business/china-natural-gas-reserves-iran-war.html
1•bookofjoe•52m ago•1 comments

The Apple II Moment is here

https://hipocampus.ai/blog/apple-ii-moment
3•LivingGlitcher•56m ago•1 comments