Hacker News

Ditching Discord

Hacker News - Thu, 02/19/2026 - 9:11pm
Categories: Hacker News

Rented Virtue

Hacker News - Thu, 02/19/2026 - 9:10pm
Categories: Hacker News

Show HN: What Chicken Said

Hacker News - Thu, 02/19/2026 - 9:08pm
Categories: Hacker News

Unpaid – AI payment reminders that verify, escalate, and auto-reply

Hacker News - Thu, 02/19/2026 - 9:05pm

I built a tool because I was tired of writing this email:

"Hi, just following up on my invoice from 3 weeks ago..." I ran a small business from 2016 to 2019 and lost it because clients didn't pay on time. The stress of constantly following up, not knowing what to write without sounding rude, feeling like you're begging to be paid — it eventually broke the business. I sold at a loss and went back to full-time employment. Years later, with an IT background going back to 1993, I looked at what was available. Every tool on the market is template-based. Same robotic email every time. Complex setup. Priced for enterprise. And they all still need you to manually check if the customer actually paid. So I built Unpaid. It connects to Xero, QuickBooks, or Stripe and uses AI (Claude by Anthropic) to write genuinely unique payment reminders — starting with a courtesy heads-up before the due date, then a 5-stage escalation from friendly nudge to final notice. What makes it different from templates: - If a customer says they've paid, Unpaid verifies it against your accounting data automatically. If it can't confirm after 3 days, it sends a polite follow-up asking for a payment reference. - If a customer disputes an invoice, reminders pause automatically and you're notified. - If a customer asks for the invoice to be resent, it's resent automatically. - All alerts and approvals come to your email. You don't need to log into a dashboard. You can also create invoices directly in Unpaid — they sync to your accounting software with your branding, logo, and payment link, exactly as if you'd created them in Xero or QuickBooks. I tested every feature with live Xero, QuickBooks, and Stripe accounts. Registered a sole trader business, used family as clients, made real payments with my own credit card. No sandbox, no demo mode. Stack: FastAPI + SQLAlchemy, Next.js, Claude (Anthropic), APScheduler, PostgreSQL, deployed on Railway + Vercel. Free 14-day trial at https://getunpaid.io (code PRODUCTHUNT for 30 days free). Would love feedback from HN — especially on the AI email generation approach and the verification flow.

Comments URL: https://news.ycombinator.com/item?id=47082761

Points: 1

# Comments: 1

Categories: Hacker News

Show HN: I maintain Valkey GLIDE – built a Node queue doing 48k jobs/s

Hacker News - Thu, 02/19/2026 - 8:29pm

Hey HN,

I'm a maintainer of Valkey GLIDE (the official Valkey client) and work on the AWS ElastiCache team. Day job is deep in database client internals — which gives me a clear view of where Node.js job queues hit a ceiling at scale.

The problems with queues like BullMQ aren't subtle: 3+ round-trips per operation, Lua EVAL scripts that NOSCRIPT-error on restart, Lists/BRPOPLPUSH primitives that predate Streams, and complete blindness to cloud topology (cross-AZ bills sneak up on you).

So I built Glide-MQ. High-performance job queue for Node.js built on Valkey/Redis OSS Streams, powered by Valkey GLIDE — a Rust core exposed via native NAPI bindings.

Because I maintain the underlying client, I could go further than an external library ever could:

1-RTT per job — completeAndFetchNext folds completion + next fetch + activation into a single FCALL. No more chatty round-trips.

Server Functions over EVAL — one FUNCTION LOAD, persistent across restarts. NOSCRIPT errors gone entirely.

Streams + Consumer Groups from day one — replaced Lists/BRPOPLPUSH. The PEL gives at-least-once delivery with fewer moving parts.

Cluster-native, not cluster-bolted — hash-tagged keys from day one. No {braces} surprise when you scale out.

AZ-Affinity routing — reads go to same-AZ replicas. Up to 75% reduction in cross-AZ costs on ElastiCache.

Batch API pipelining — addBulk for 1,000 jobs: 228ms to 18ms (12.7x) via GLIDE's non-atomic pipeline.

IAM auth — native ElastiCache/MemoryDB auth with auto token refresh. No secrets in env vars.

Numbers (no-op processor, Valkey 8.0, single node): - c=1: 4,376 jobs/s | c=10: 15,504 jobs/s | c=50: 48,077 jobs/s - 15KB payload compressed to 331 bytes (98% savings)

Also included: transparent gzip (zero config), OpenTelemetry tracing, TestQueue/TestWorker in-memory backend for unit tests without running Valkey, and chain()/group()/chord() for job pipeline workflows.

Companion package: @glidemq/dashboard — drop createDashboard([q1, q2]) into any Express (or any other framework) app and get a live REST + SSE UI across all your queues (avifenesh/glidemq-dashboard on GitHub).

Would love brutal testing on it abilities — especially from anyone burned by queue scaling in production.

Comments URL: https://news.ycombinator.com/item?id=47082516

Points: 1

# Comments: 0

Categories: Hacker News

Show HN: 6cy v0.3.0 – A streaming-first binary archive format

Hacker News - Thu, 02/19/2026 - 8:24pm

Hi HN — I made this.

Been messing around with a small archive format called 6cy. Not trying to replace zip or anything, mostly just exploring what happens if you make the format a lot stricter.

Every block describes itself. Checksums are always there. Codecs are UUIDs. If decoding can’t proceed cleanly, it just errors out. No fallback tricks.

The whole point was to avoid ambiguity and make corruption obvious instead of silent.

It’s still rough and evolving. Happy to hear thoughts.

Comments URL: https://news.ycombinator.com/item?id=47082467

Points: 1

# Comments: 0

Categories: Hacker News

Pages