Sequin Blog
blog.sequin.io · Company blog · on HN since 2022
Sequin's engineering blog covers Postgres change capture, APIs and webhooks, and Elixir topics like LiveView, GenServer and NATS.
What HN saysHN commenters call its "events, not webhooks" article a favorite and cite it as an alternative to fragile webhook implementations.
15HN people shared it
7linked it in comments
13stories submitted
648story points
3 years agolast shared
2022people per year2026
Most-shared posts
- 1Give me /events, not webhooks6 people · 153 points · first shared 2022 · 51 comments on HN
- 2All the ways to capture changes in Postgres4 people · 8 points · first shared 2023 · discussion on HN
- 3LiveView Is Best with Svelte2 people · 302 points · first shared 2024 · 154 comments on HN
- 4GenServer.reply: Don't Call Us, We'll Call You2 people · 2 points · first shared 2023 · discussion on HN
- 5We used Elixir's Observer to hunt down bottlenecks1 people · 152 points · first shared 2022 · 41 comments on HN
- 6NATS: First Impressions1 people · 24 points · first shared 2024 · 7 comments on HN
- 7Make it easy to find out what's changed in your API1 people · 3 points · first shared 2022 · discussion on HN
- 8Design patterns for extracting from REST APIs1 people · 2 points · first shared 2024 · discussion on HN
- 9Building a sync on HubSpot's API1 people · 1 points · first shared 2023 · discussion on HN
- 10Exploring Elixir's Break Menu1 people · 1 points · first shared 2023 · discussion on HN
What HN people wrote when they linked it
apitman · 2024-03-18
This is one of my favorite articles along these lines:
https://blog.sequin.io/events-not-webhooks/
synthmeat · 2023-09-21
Just to add to sibling comments, one killer feature for me is ChangeStreams[1]. It's miles ahead of what Postgres[2] offers, and it enables really interesting use cases. Some of my services built around ChangeStreams end up not doing a single query to the DB. Data is right there in the program memory, indexed how I need it to be, and program is immediately reactive to any changes in the DB.
[1] https://www.mongodb.com/docs/manual/changeStreams/
[2] https://blog.sequin.io/all-the-ways-to-capture-changes-in-postgres/
cpursley · 2023-09-20
Neat, this is the pattern I've been thinking about for a while now. Also glad to see this is Elixir based and that Jose is involved.
I've been using https://github.com/cpursley/walex (basically a fork of cainophile via a fork for subabase) to listen to Postgres changes in Elixir.
Sequin is also doing some neat stuff in this space as well: https://blog.sequin.io/all-the-ways-to-capture-changes-in-postgres/
sparsely · 2022-08-19
As this page makes very clear, it's actually pretty hard to make a robust webhooks implementation!
What alternatives are there? I've looked at:
* Publishing AWS EventBridge events to other accounts.
* /events instead of webhooks https://blog.sequin.io/events-not-webhooks/
* ???
spiffytech · 2022-08-03
The solution to receiving webhooks in unknown order is to ignore the payload and refetch the resource. Yet naively implemented, this still leaves race conditions on the recipient end: if two webhooks can come in at once, you have to make sure you process them serially, since your refetch or database write could complete in arbitrary order.
That's non-trivial engineering to foist upon every recipient of your webhooks.
I like the idea of the /events pull-based endpoint, which keeps engineering much simpler on for recipient: https://blog.sequin.io/events-not-webhooks/
tony-allan · 2022-02-23
If you run out of things to do...
https://blog.sequin.io/events-not-webhooks
PS: Well done!
anderspitman · 2022-01-07
This is an article on the subject I really enjoyed recently: https://blog.sequin.io/events-not-webhooks