HNHacker News
TopNewBestAskShowJobs

tonyhb

1,734 karma · joined December 18, 2013

founder/ceo @ Inngest (https://www.inngest.com)

tony@inngest.com

submissionscomments
tonyhb··on Seattle Bans Rental Junk Fees
Yes, this is the same as buying a unit and renting as in my original post.
tonyhb··on Seattle Bans Rental Junk Fees
No, it doesn't. It states that if a landlord has 3 houses and exits the landlord market, those houses are either kept unused or sold and are available for new buyers.
tonyhb··on Seattle Bans Rental Junk Fees
Small landlords don't own apartment buildings. They buy houses/units to rent, lowering availability for buyers. So, you'd at least want to look at the number of new apartment rentals available plus the number of first time house buyers to get a better picture.
tonyhb··on Neki – Sharded Postgres
Sam is not an asshole. His twitter is great, he's definitely opinionated, and if you haven't had the luck of meeting him you might misread his tone as grumpy. It's not. It's sarcastic/dry humour and honest.

They build good stuff and care.

tonyhb··on IPFS Maintainers Winding Down
Iroh seems more comparable to an L7 scoped Tailscale than it does IPFS. It's good, but pretty unrelated.
tonyhb··on Making Postgres queues scale
indeed, every ~week with essentially the same thing: skip locked.
tonyhb··on Google Cloud: Investing in the Future of PostgreSQL
Vitess was made by a... US tech company?
tonyhb··on Ask HN: Do you still run Redis and workers just for background jobs?
Inngest's Durable Endpoints aim to solve the durable API problem without messy DB txns, all within some tolerance: https://www.inngest.com/docs/learn/durable-endpoints.

Other than that, yes, durable execution does all of this for you.

TLDR on Durable Endpoints: you can automatically use steps in API endpoints which checkpoint state in the BG, and then retry on failure. This means you can run jobs in the background _somewhat_ transactionally (somewhat because there's delay between checkpointing) to minimize any tradeoffs here. And, if you want full transactionality, don't buffer checkpoints in the BG and instead do it synchronously.

Also, Redis is good for medium scale load. We're hitting millions of RPS (aggregated) on our services (I work at Inngest) and it doesn't scale so well at this load, at all. We had to invest in other infra.

tonyhb··on Vercel down in Dubai, EU affected also
AWS is down and so being a reseller ofc Vercel is down too.
tonyhb··on Railway (PaaS) global outage
IDK, it looks like servers were up, connectivity worked well, and some builds were failing. Wouldn't call that a big issue, and the same thing was happening with Vercel due to their git clones etc. yesterday too.

IOW, doesnt look as bad as the title suggests?

tonyhb··on BYD's cheapest electric cars to have Lidar self-driving tech
> And people die all the time.

Yes... but people can only focus on one thing at a time. We don't have 360 vision. We have blind spots! We don't even know the exact speed of our car without looking away from the road momentarily! Vision based cars obviously don't have these issues. Just because some cars are 100% vision doesn't mean that it has to share all of the faults we have when driving.

That's not me in favour of one vs the other. I'm ambivalent and don't actually care. They can clearly both work.

tonyhb··on Scaling Go Testing with Contract and Scenario Mocks
If you're testing the interface, changing the implementation internals won't create any churn (as the mocks and tests don't change).

If you are changing the interface, though, that would mean a contract change. And if you're changing the contract, surely you wouldn't be able to even use the old tests?

This isn't really a go problem at all. Any contract change means changing tests.

tonyhb··on Cloudflare outage on December 5, 2025
Cloudbleed. It’s been a fun time.
tonyhb··on GitHut – Programming Languages and GitHub (2014)
I really, really want this updated too and saw it in my bookmarks. Figured the historic data was interesting, and that someone might want to give this another go.
tonyhb··on Make any TypeScript function durable
Actually, both Vercel and Cloudflare are based off of the API that we built at https://inngest.com (disclaimer, I'm a founder).

I strongly believe that being obvious about steps with `step.run` is important: it improves o11y, makes things explicit, and you can see transactional boundaries.

tonyhb··on A subtle bug with Go's errgroup
Yeah, just... like, don't use ctx from WithContext after the errgroup. WithContext is an API that specifically and explicitly cancels the context on error. It's absolutely optional. It's not a bug at all. It's using the wrong APIs and using a variable out of intended scope.
tonyhb··on Build durable workflows with Postgres
You can totally leverage postgres transactions to give someone... postgres transactions!

I just figured that the exactly once semantics were so worth discussing that any external side effects (which is what orchestration is for) aren't included in that, which is a big caveat.

tonyhb··on Build durable workflows with Postgres
Anything that guarantees exactly once is selling snake oil. Side effects happen inside any transaction, and only when it commits (checkpoints) are the side effects safe.

Want to send an email, but the app crashes before committing? Now you're at-least-once.

You can compress the window that causes at-least-once semantics, but it's always there. For this reason, this blog post oversells the capabilities of these types of systems as a whole. DBOS (and Inngest, see the disclaimer below) try to get as close to exactly once as possible, but the risk always exists, which is why you should always try to use idempotency in external API requests if they support it. Defense in layers.

Disclaimer: I built the original `step.run` APIs at https://www.inngest.com, which offers similar things on any platform... without being tied to DB transactions.

tonyhb··on Bypassing Google's big anti-adblock update
if they’re not funded by adverts then you don’t need an ad blocker, right?
tonyhb··on Ask HN: Who is hiring? (July 2025)
Inngest (https://www.inngest.com) | Engineers, Marketing+GTM | Remote (US, San Francisco) | Full-time | $130-245k + equity Inngest is a developer platform that enables developers to build amazing, complex, and reliable products without the hassle of building and maintaining infrastructure. It combines modern orchestration, advanced multi-tenant aware queueing, and built-in observability packaged in an easy to learn and use product that any developer can learn. We're backed by top tier investors including a16z, Notable Capital, Afore capital and angels including Guillermo Rauch (Vercel) and Tom Preston-Werner (Github co-founder). We serve customers from startups and large co's like Resend, SoundCloud, Gumroad, TripAdvisor, Browser Use.

You: Want to be part of a fast growing startup that is changing how developers build software.

- Distributed Systems, Execution Engineer - San Francisco

- Product Engineer - Full Stack - San Francisco, Remote US

- Content Engineer, Docs - Remote US

- Product Marketer - San Francisco

- Dev Rel - San Francisco

Roles: https://innge.st/hn-july-25-hiring

About working @ Inngest: https://innge.st/hn-july-25-info

tonyhb··on FICO to incorporate buy-now-pay-later loans into credit scores
It’s not just the credit score - the APR offered is also chosen by the retailer.

0% financing costs the retailer 8%(ish) of the total amount, which is how the lender makes their money.

So in your case, the retailer didn’t want to lose that much of their margin.

tonyhb··on Waymo's market share in San Francisco exceeds Lyft's
In the partnership model Waymo charges uber for the ride and Uber charges the customer.

The interesting thing is that uber loses money on every ride. Waymo charges Uber more than Uber charges the customer.

On Uber’s side, though, this is preferable to losing the entire ride. Uber loses much more slowly by controlling the distribution and losing a few dollars per ride than by losing the entire customer base with no revenue from these customers.

tonyhb··on Show HN: A toy version of Wireshark (student project)
Was going to post about your company compliance space (which we use and love). That naming conflict is rough and it's the first thing I had in mind.
tonyhb··on Waymos crash less than human drivers
AFAIK, it's due to things like single frame construction and expensive + backlogged parts which you order directly from Tesla (as opposed to, eg, a drivetrain that may be made for 3 separate manufacturers).

Or, when you do have an accident it's typically more expensive to repair.

tonyhb··on OpenAI adds MCP support to Agents SDK
https://inngest.com and agentkit. disclaimer is I work on it.

Does all of the event stuff and state stuff for you. Plus the orchestration.

tonyhb··on The Frontend Treadmill
There are only a few popular, promoted alternatives to NextJS right now (that I know of): Remix and TanStack. That is, if you're fully React focused, ofc. I dont see promoting Remix as a red flag.
tonyhb··on Show HN: AgentKit – JavaScript Alternative to OpenAI Agents SDK with Native MCP
The framework itself is super low overhead. You can deploy this anywhere, and if you deploy to inngest.com the P99 latency of starting agents is sub-50ms (and you can also realtime stream steps, tools, or model responses to the browser).

One of the main differences is the DX — _how_ you define the agentic worklflows is far cleaner, so it's both faster to build and fast in production.

tonyhb··on Show HN: AgentKit – JavaScript Alternative to OpenAI Agents SDK with Native MCP
The main one is deterministic routing (https://agentkit.inngest.com/advanced-patterns/routing). Here's what that means:

Each agent builds up state via tool use. On each loop of the network, you inspect this state to figure out which agent to run next. You don't build DAGs or create odd graphs — you write regular code in a router.

Or, more generally:

* Each agent has a specific goal within a larger network. Several agents each working on smaller goals means easier prompt generation, testing, iteration, and a higher success rate.

* The network combines agents to achieve an overall objective, with shared state modified by each agent

* The network’s router inspects state and determines which agent should run next

* The network runs in a loop, calling the router on each iteration until all goals are met

* Agents run with updated conversation history and state on each loop iteration

Realistically the challenge with agents has classically been: how can I build something reliable, and how can this run in production reliably? These patterns are largely what we've seen work.

tonyhb··on IO Devices and Latency
This is really cool, and PlanetScale Metal looks really solid, too. Always a huge sucker for seeing latency huge latency drops on releases: https://planetscale.com/blog/upgrading-query-insights-to-met....
tonyhb··on Goravel: A Go framework inspired by Laravel
This is an LLM response if ever there was one.
Page 1 of 19Next →