Gave my OpenClaw assistant access to cloudflared and told it to set up a private Matrix server. Came back to a fully working Conduit homeserver with its own account and project rooms. It literally built its own home. ๐คฏ
@brankopetric00 think of each container as a separate computer/server/pod/whatever on the same physical network, you wouldn't try to reach the other computer by using localhost, you can use container B's ip address or the container name
I manage the treasury for my gated community. Got handed a nightmare Excel file - inputs scattered everywhere, easy to break.
So I built Vivmos to replace it. Been running our community on it - expenses, payments, monthly assessments.
Targeting Latin America (site's in Spanish) because condo software there is stuck in 2005.
https://t.co/EuXrDFhWeZ
Building multi-tenant SaaS in Go? Data isolation is harder than it looks.
I built go-multitenant - schema-per-tenant PostgreSQL with:
โข Subdomain, path, or header-based tenant resolution
โข Gin middleware that handles context automatically
โข Built-in plan limits and migrations
https://t.co/WGthoEpKoK
@brankopetric00 If team scaling is a metric involved in deciding whether to move from a monolith to microservices, I would first question the underlying reasons for scaling the team.
Distributed tracing generates a LOT of data. You can't keep everything. So how do you decide what to sample?
Head-based sampling:
Decision made when the request starts. Simple random selection (e.g., keep 1%). Fast and predictable costs, but completely blind to outcomes. That rare error you are trying to debug? Probably not sampled.
Tail-based sampling:
Collect all trace data temporarily, make the keep/discard decision after the request completes. Now you can sample based on what actually happened: errors, high latency, specific user segments.
The tradeoff is complexity vs insight. Head is simpler to implement but you're gambling. Tail requires buffering data before deciding, but your sampling becomes informed.
In practice, most teams go tail-based with tiered retention rules:
- 100% of errors
- 100% of p99 latency
- A small sample (1%) of successful 200s
You're still sampling to control costs, but errors and slow requests are never dropped by luck. Normal traffic gets sampled enough to establish baselines without blowing up storage.
Don't gamble on your observability. Keep what matters, sample the rest.
A lesson about Firebase Realtime Database at scale:
Firebase makes it easy to push live data to clients. Subscribe to a path, get updates. Simple.
But here's where it gets expensive:
When clients observe a broad dataset, every update sends the full payload to every connected user.
payload size ร concurrent connections ร update frequency ร cost per GB
At small scale, this is invisible. At large scale, this equation runs away fast.
If you're building real-time features:
- Narrow observation scope โ clients should only subscribe to what they need
- Use delta updates where possible
- Do the math on network transfer before you scale
- Evaluate if Firebase is the right tool for your specific use case
The pricing model that works at 1K users may not work at 50K+. Calculate it early.
@ThePrimeagen vibecoding means leaving knowledge gaps to be 100% filled by LLM output. You can still have all your code written by an LLM, but using your knowledge/expertise/direction.
If you built your backend with AI, search your codebase for:
- query( without parameterized inputs
- Missing LIMIT on SELECT statements
- No try/catch around external API calls
5 minutes now saves you a 3am incident later.
Built your MVP with Claude Code, Cursor, or Lovable?
Check these before you launch:
Input sanitization (SQL injection is still a thing)
Rate limiting (one bad actor can kill your server)
Error handling (users will find every edge case)
Database indexes (works at 100 users โ works at 10k)
AI gets you 80% there. The last 20% is what keeps you from getting hacked or crashing on launch day.