Sign in

Dinos Theodorou

@dinostheo.bsky.social
134 followers 77 following 241 posts

Software Engineer @buffer.com 🛠️ In 🇳🇱 from 🇬🇷 ❤️🏀 dinos.start.page

PostsRepliesMedia
Dinos Theodorou @dinostheo.bsky.social · 11/09/2026
I think that Tzolakis did the smart move that very few realized initially and I’m happy for him. No matter what will happen in the coming few games or months, or what people say for him in the socials, I think he already put his name on the notebooks of the people that matter.
000
Dinos Theodorou @dinostheo.bsky.social · 11/09/2026
Apart from the 3/3 clean sheets, he went to an EPL club where he didn’t have to fight for the first team or wait for years on the bench for a chance. On top of that any clean sheet for Hull makes the football news.
100
Dinos Theodorou @dinostheo.bsky.social · 11/09/2026
When Tzolakis moved to Hull I would read people in Greece criticizing his decisio, saying he should have left Olympiacos for a bigger club or not at all. I was on that side too. But I now realize the intelligence of his move.
110
Dinos Theodorou @dinostheo.bsky.social · 08/09/2026
I'll be testing something here, don't mind me
100
Reposted by Dinos Theodorou
Buffer @buffer.com · 21/08/2026
Yesterday we wrapped Build Week at Buffer, and 71 teammates shipped 56 new internal tools in just four days! 🎉 🧵 Here is what those four days looked like in numbers:
1101
Dinos Theodorou @dinostheo.bsky.social · 21/08/2026
Found a tiny tiny frog while doing some works outside my house 🐸
Tiny little green frog the size of half a thumb
000
Dinos Theodorou @dinostheo.bsky.social · 19/08/2026
@diegocasmo.bsky.social let me fix that real quick 😂 #buildweek
My empty Buffer Creator log, from the creators dashboard that Diego Castillo built.
111
Dinos Theodorou @dinostheo.bsky.social · 04/08/2026
🌅
2 children enjoying the sunset and the waves by the sea in Zeeland
000
Dinos Theodorou @dinostheo.bsky.social · 29/07/2026
Repping @buffer.com on vacation! 💚🚲
Bike with a Buffer keyholder in a camping.
030
Dinos Theodorou @dinostheo.bsky.social · 22/07/2026
just 2
000
Dinos Theodorou @dinostheo.bsky.social · 22/07/2026
testing with 8 images
000
Dinos Theodorou @dinostheo.bsky.social · 12/07/2026
The sound of a Greek summer 🇬🇷 This is the τζιτζίκι (tzitziki), the cicada. Not to be confused with tzatziki 😄 It makes a sound all day long and as a kid I found it super annoying. Hearing it again after many years though, made me happy. It just made me realize how much I ve missed Greek summers.
Cicada bug on an olive tree
000
Dinos Theodorou @dinostheo.bsky.social · 03/07/2026
I'll just leave a comment here
100
Dinos Theodorou @dinostheo.bsky.social · 23/06/2026
Haaland's club scoring ratio is ridiculous, but the one with the national team feels unreal. No disrespect to Norway's team 🙏 , lots of talent there and I would love to see them go very far. Just wondering what his numbers would be, if he would be playing for Germany, Spain, France or England
Erling Haaland's scoring performances for his clubs and national team, screenshoted from his Wikipedia page
000
Dinos Theodorou @dinostheo.bsky.social · 24/05/2026
2023 against Real Madrid, we lost on a buzzer beater. Tonight, against Real Madrid again, they almost stole it at the very end one more time. This sport and this team has taken 10 years off my life. But tonight we celebrate. Olympiacos are the EuroLeague champions of 2026. #Olympiacos #EuroLeague
Vezenkov and Fournier celebrating after winning the 2026 Euroleague final with Olympacos
000
Reposted by Dinos Theodorou
Andrew Yates @ay8s.com · 24/05/2026
Get ready to build. Not long to go now. #BufferAPI
012
Dinos Theodorou @dinostheo.bsky.social · 13/04/2026
Testing
010
Dinos Theodorou @dinostheo.bsky.social · 01/04/2026
I can say that the passive aggressive "wisdom" trait, is an understatement 😅
Claude Code Buddy, an Owl called Wickel.
With the following

"Perpetually exhausted from         │
│  spotting your obvious bugs before   │
│  you do, speaks in exasperated       │
│  hoots and passive-aggressive        │
│  wisdom."
310
Dinos Theodorou @dinostheo.bsky.social · 18/03/2026
Turing test 2.0 😅
010
Dinos Theodorou @dinostheo.bsky.social · 17/03/2026
one more test
000
Dinos Theodorou @dinostheo.bsky.social · 16/03/2026
just testing something here
000
Dinos Theodorou @dinostheo.bsky.social · 13/03/2026
I moved from 16” to 14” 3 years ago. I had a second monitor, but I hardly turn it on. I’ve noticed that without being intentional with it, I use my keyboard more to navigate between app, but also on the apps themselves.
011
Dinos Theodorou @dinostheo.bsky.social · 23/02/2026
The best personal experience with AI, is when you are looking for the name of something. You describe how it looks, where you used it, saw it, etc. and gives you a few options. Then you can search in any language, market etc. My latest find is in Dutch, "wisselstift" 😅
020
Dinos Theodorou @dinostheo.bsky.social · 14/02/2026
I got one last year and the nostalgia hit really hard 😅
010
Dinos Theodorou @dinostheo.bsky.social · 09/02/2026
The machines took over. I'm the assistant now. #ClaudeCode
ClaudeCode response wishing me good luck with the fixes.
010
Dinos Theodorou @dinostheo.bsky.social · 27/01/2026
Yep, 100%
000
Dinos Theodorou @dinostheo.bsky.social · 24/01/2026
If you are looking for part 4 ⬇️ bsky.app/profile/dino...
000
Dinos Theodorou @dinostheo.bsky.social · 24/01/2026
Result: - 10s–100s dupes/day - 100s–1000s/month At >1B rows, that’s not a ship you turn around easily. ⚖️ Decision: draw a line. Add a deduplication key. DB is the final guardrail. 🧠 Lesson: locks fail, timing drifts, scale amplifies tiny mistakes.
100
Dinos Theodorou @dinostheo.bsky.social · 24/01/2026
🔒 Our safeguards (on paper): 1️⃣ Fast lookups 2️⃣ Pre-storage locks 3️⃣ DB unique index We removed #3 early on (pre-publish comments lacked part of the compound key). Locks worked up to 1–2ms timing differences between consumers 😬
100
Dinos Theodorou @dinostheo.bsky.social · 24/01/2026
⚙️ Setup Simple, Producer → consumer ingestion pipeline (heavily scaled) ~100M events/day ~50% comments related Sometimes we receive 1000s of comments in seconds. Some duplicates come from the source, other from our own fan-out. The system is idempotent, so nothing bad should happen, right? 🤞
100
Dinos Theodorou @dinostheo.bsky.social · 24/01/2026
Part 5️⃣: Duplicate comments (aka how we shot ourselves in the foot 😅) We almost nailed the data model for Buffer’s Community. Then we broke it and started creating duplicate comments in some edge cases 🫠 ⬇️
The famous spiderman "clone" meme, with 2 spidermen pointing to each other. 
This is as a funny reference to the text writing about duplicates
110
Dinos Theodorou @dinostheo.bsky.social · 22/01/2026
are you still testing?
010
Dinos Theodorou @dinostheo.bsky.social · 09/01/2026
After that it’s “just” configuration, API-specific constraints, and edge-case testing Trees not my favorite interview question, but it turns out they are pretty useful in production sometimes 😄 ➡️ Next: We store duplicate comments in some edge cases and how did we solved it in our huge DB.
000
Dinos Theodorou @dinostheo.bsky.social · 09/01/2026
🧩 Then everything else clicked into position: * Comments could be placed correctly in the graph * The rest of the ingestion pipeline worked out of the box * We could reliably detect whether a comment had already been replied * Adding support for new APIs became a matter of normalization and tests
100
Dinos Theodorou @dinostheo.bsky.social · 09/01/2026
🔄 The real challenge was normalization and specifically 3rd party data. Some platforms (e.g. Bluesky) made this easy as they had all the context needed Others were challenging (e.g. Instagram). For those, we needed to find: * where a comment belongs * who it replies to * to be unique in the tree
100
Dinos Theodorou @dinostheo.bsky.social · 09/01/2026
🌳 The comment tree Conceptually, comments form a tree under a post: * The root node is the post * A post can have 0..n comments * Each comment can have 0..n replies * Replies can themselves have replies and so on In other words, conversations naturally form a contextual tree.
100
Dinos Theodorou @dinostheo.bsky.social · 09/01/2026
When we started building Community, there were many unknowns. We knew we wouldn’t foresee everything, but we knew we had to nail the data model. Did we nail it? Sort of. We also made some wrong decisions early on, which led to duplicate comments and took us a while to fully understand and fix.
100
Dinos Theodorou @dinostheo.bsky.social · 09/01/2026
Part 4️⃣ : Comments trees Have you ever had one of these engineering role interviews where you have to build a tree? Something you most probably never have to do in your role? At @buffer.com, we don’t ask those type of questions. Yet, the irony is that we had to build one for Community 😅
Screenshot of the UI representation Comments contextual tree, in Buffer's Community feature.
120
Dinos Theodorou @dinostheo.bsky.social · 08/01/2026
Reply it is
000
Dinos Theodorou @dinostheo.bsky.social · 08/01/2026
Do you still getting comments?
000
Dinos Theodorou @dinostheo.bsky.social · 29/12/2025
🏭 Producers need to be fast * first-tier auth & validation * forward+ack quickly * no dedup, no heavy logic ⚙️ Consumers * horizontally scalable * idempotent This setup let us ship new integrations fast Part 4 will go deeper on how we unified different 3rd party data into a single Comments context
000
Dinos Theodorou @dinostheo.bsky.social · 29/12/2025
❓ Is this the best setup engineering-wise? Probably not. But when we started, we already had many unknowns: * multiple 3rd-party APIs * different delivery mechanisms * different data models So we chose familiarity and experience and focused on product problems instead of engineering experiments.
100
Dinos Theodorou @dinostheo.bsky.social · 29/12/2025
🎨 High-level design All data first hits a gateway service (producer). Not one service, but several depending on delivery: webhooks, stream/firehose, etc. Output schema though is the same and what consumers can handle. Flow: producer → SQS (sometimes SNS) → consumers → DB
100
Dinos Theodorou @dinostheo.bsky.social · 29/12/2025
Part 3️⃣: How we designed our ingestion pipelines (and why) Our ingestion design is intentionally dead simple 😅 At its core, it’s a classic producer → consumer pattern, with a few variations depending on how data is produced.
A high level system design of an ingestion pipeline. 

Gateway service -> SNS -> SQS -> Consumer worker -> DB
110
Dinos Theodorou @dinostheo.bsky.social · 22/12/2025
The result: Alert fires → on-call spins up the backup pipelines → flips the flag → impact reduced in minutes, not hours 💪 Most users barely impacted. ➡️ Up next: how we designed our pipelines and why ⬅️ Part 1: bsky.app/profile/dino...
bsky.app
Dinos Theodorou (@dinostheo.bsky.social)
Part 1: How we switched ON Community across 6 networks and 8 API integrations On the 12th of November we launched Community at @buffer.com We launched across • Threads • Instagram, 2 different APIs •…
000
Dinos Theodorou @dinostheo.bsky.social · 22/12/2025
During beta we had faced similar outages that helped us build backup pipelines, which could run on different triggers: scheduled and background Running those permanently and at scale though would be overkill, so: 1️⃣ Periodic backfills 2️⃣ Frequent for active 3️⃣ Configurable clients with a feature flag
100
Dinos Theodorou @dinostheo.bsky.social · 22/12/2025
Some context on our real-time pipelines: 🌊 Bluesky → firehose 🪝 Facebook, Instagram, Threads → webhook events 🔍 X → filtered stream Most events arrive within seconds. Some include full payloads, others act as signals that trigger follow-up API calls.
100
Dinos Theodorou @dinostheo.bsky.social · 22/12/2025
Part 2: When real-time integrations went down just after launch The first week after launching Community at @buffer.com, we experienced 2 major outages with our real-time integrations. Both were outside our control, but still high impact for a newly launched feature.
2 timeseries Datadog charts displaying a outage on 13 and 20 November respectively by pointing to the moment with a red arrow.
110
Dinos Theodorou @dinostheo.bsky.social · 16/12/2025
➡️ Part 2 coming up. We experienced not one but two major outages with our real time integrations in the very first week after launch 😱
000
Dinos Theodorou @dinostheo.bsky.social · 16/12/2025
3️⃣ This also let us experiment with monitors, incidents, alerts, and on call playbooks. This will be the focus of part 2. 4️⃣ Finally, we adjusted infrastructure provisioning to reach a healthy balance. Enough capacity to anticipate growth, without being massively overprovisioned.
100