Ben Hollis

4.3K posts

Ben Hollis banner
Ben Hollis

Ben Hollis

@bhollis

Software developer, open source contributor, traceur, diver. I build @StatelyCloud, @ThisIsDIM, previously @Snapchat. he/they. @benhollis.net on BSky

Katılım Şubat 2009
151 Takip Edilen869 Takipçiler
Sabitlenmiş Tweet
Ben Hollis
Ben Hollis@bhollis·
ZXX
1
0
3
442
Ben Hollis retweetledi
Kaivalya Apte - The Geek Narrator
Kaivalya Apte - The Geek Narrator@thegeeknarrator·
We chose Excel over Postgres for our new product. Everyone called us visionaries. The context: •Building a mission-critical fintech platform •Expected thousands of concurrent users •Team of 4 engineers, all Excel power users •Zero database experience Why Excel won: •Conditional formatting handled our complex business logic •Native chart support eliminated need for visualization libraries •Didn’t need to learn SQL •Could hire interns who knew VLOOKUP •Local development was just double-clicking a file 18 months later: •Handling 47 simultaneous users (new record!) •$0/month vs projected $800 on Postgres •File corruption builds character •“Please don’t sort that column” Slack channel very active •Only 3 production incidents this week from someone opening it in Google Sheets •Learning what “merge conflicts” means in a whole new way Choose technology that makes your LinkedIn/X post go viral. Sent from my .xlsx file
Branko@brankopetric00

We chose Postgres over DynamoDB for our new product. Everyone called us crazy. The context: - Building a SaaS analytics platform - Expected complex queries and joins - Team of 4 engineers, all SQL experts - Zero NoSQL experience Why Postgres won: - JSONB handled our flexible schema needs - Native time-series support with TimescaleDB - Didn't need to denormalize everything - Could hire junior engineers who knew SQL - Local development was trivial 18 months later: - Handling 2M queries per day - $800/month vs projected $4K on DynamoDB - Never regretted it Choose boring technology that your team understands.

English
15
13
247
29.4K
Ben Hollis
Ben Hollis@bhollis·
@tzenes UUIDs as strings are my biggest pet peeve
English
1
0
1
38
Ben Hollis
Ben Hollis@bhollis·
@jamesacowling Yeah, unless you’re willing to justify everything you’re doing in terms of the caching behavior of HTTP proxies, you probably aren’t really interested in REST
English
0
0
3
1.1K
James Cowling
James Cowling@jamesacowling·
You can't represent everything a service does via an extremely limited set of verbs. This is why everyone misuses REST and sneakily writes data in GETs or uses POST for everything. Just use RPCs. You're a programmer, you like functions. You'd probably like Convex.
sunil pai@threepointone

REST is kinda dumb huh

English
55
22
631
109.3K
Ben Hollis
Ben Hollis@bhollis·
@timsehn Yeah that’s fair, I’m perpetually missing like 5 years in my timeline somewhere
English
0
0
0
14
Tim Sehn
Tim Sehn@timsehn·
@bhollis Gotta be more than a decade…Ruby fan seems like 2010 era Hollis.
English
1
0
1
27
Ben Hollis
Ben Hollis@bhollis·
A decade ago I was super into Ruby / Rails but now I just can’t stand the thought of using them. They’re just not in my toolkit anymore.
English
1
0
0
80
Ben Hollis
Ben Hollis@bhollis·
@bilawalsidhu Nice now they can do Pittsburgh directions! “Turn left where the Wendy’s used to be like 15 years ago” and “you can’t get there from here”
English
0
0
0
105
Bilawal Sidhu
Bilawal Sidhu@bilawalsidhu·
Google is now using Gemini to cross-reference ~250M places with Street View imagery to identify visible landmarks for turn-by-turn nav. Think iconic buildings, gas stations and restaurants. So instead of "turn right in 500 feet" you get "turn right after the Thai Siam Restaurant" with the landmark highlighted. AI solving the distance estimation problem by using what you can actually see. Rolling out in US.
English
196
335
7.5K
962.8K
Ben Hollis
Ben Hollis@bhollis·
Tried an experiment of having Claude vibe code an LSP server. We worked on the spec together, broke it up into a bunch of small tasks, then had it work on each task in sequence. At every step I made sure to push it to prove its code works, etc. I ended up with two copies of the LSP code (one was just “TODO: implement this” in a ton of boilerplate), three separate ways of testing LSP conformance (all hallucinated) and a config system that didn’t work with any of the (universally incorrect) samples it generated. The code didn’t even build, but it generated a long README with emojis bragging about how comprehensive it was. Whoops!
English
0
0
2
118
Ben Hollis
Ben Hollis@bhollis·
@tzenes They used to call those "unicorns", or like I call them, "people who know about computers"
English
1
0
1
37
Ben Hollis
Ben Hollis@bhollis·
@jamesacowling The way I've always put this is if the system does the same thing normally that it would in a disaster, you never have a disaster.
English
1
1
43
1.7K
James Cowling
James Cowling@jamesacowling·
Good systems have similar high-load and low-load behavior. I made a mistake designing the Dropbox storage system. Normally a read would fetch from a single disk. If that failed it would read encoded fragments from 9 distributed disks and reconstruct them into the original object. But if there's a load spike or capacity drop that triggers a timeout you now have 9x the request load, turning a blip into a disaster. (we fixed this later) We did better designing the cold storage system. Data is erasure coded within a region but also XORed across three regions. The naive idea would be to store chunk A in region 1, chunk B in region 2, and A⊕B in region 3. This seems nice - if that region 2 is down you can reconstruct B from region 1 and 3. Except if a region is down you're already struggling, you don't want to be almost doubling the load on the remaining regions. Instead we designed it so *every* read was from two out of three regions. Usually this was lower latency anyway and it meant that a whole region could go down without any considerable load spike on the remaining ones.
James Cowling@jamesacowling

Counter-intuitive advice for designing very large scale live-site services: 1. Don't have retries inside your system, only at the edges. 2. Don't have queues inside your system, only at the edges. 3. When shit really goes down process requests in LIFO order.

English
9
14
429
49.3K
Ben Hollis retweetledi
Tern AI
Tern AI@GetTernHQ·
At Snap, tool adoption wasn't mandated. It was inevitable. Ben Hollis built infrastructure with loose coupling + declarative config. Teams could work without coordinating. Design for the org structure you have, not the one you wish you had. youtube.com/watch?v=5zJ5I5…
YouTube video
YouTube
English
0
1
2
113
Ben Hollis
Ben Hollis@bhollis·
@jaredpalmer @github The developer-centric way would be to let folks build their own dashboard out of widgets with a YAML file in source control.
English
0
0
2
659
Ben Hollis
Ben Hollis@bhollis·
I’m excited to log on here and read takes on the AWS outage from people who’ve never built anything at real scale.
English
0
0
4
205
Ben Hollis retweetledi
Ram
Ram@sriramsubram·
It is impossible to call yourself an experienced infrastructure/distributed systems engineer if you have consistently switched jobs every two years. You become a rockstar engineer by building complex infrastructure, operating them at scale, migrating users, fixing issues and rolling out v2/v3 of the system. You learn a lot going through this cycle and learn important life lessons. It typically requires persistence and continuous grind for years to build reliable and scalable systems. My advice is to commit and persist for four years or more at a place to become a solid distributed systems engineer. Sounds old school but this is how it works. Ai is not going to speed this cycle anytime soon for building deep distributed systems.
English
20
45
539
34.4K
Ben Hollis
Ben Hollis@bhollis·
@BenjDicken Everything I’ve built in the last 20 years or so you probably wouldn’t even see a blip in the metrics.
English
1
0
1
70
Ben Dicken
Ben Dicken@BenjDicken·
Your database primary just failed. How screwed are you?
English
21
0
25
8K
Ben Hollis retweetledi
Nate Berkopec
Nate Berkopec@nateberkopec·
80 percent data access (n+1, unnecessary queries, index, connection counts, overloaded DB etc), 10 percent memory use, 10 percent everything else
Johnny Cache@johnnnycache

@nateberkopec what are the most common scaling and performance issues?

English
11
18
221
19.5K
Dillon Mulroy
Dillon Mulroy@dillon_mulroy·
my biggest up level as an engineer this year has been spending time deep diving dynamodb. still in awe at how well it scales if designed correctly i used to think it was just "aws mongo" 🤦‍♂️
Dillon Mulroy tweet media
English
24
6
202
26.3K
Ben Hollis
Ben Hollis@bhollis·
@dillon_mulroy @chronark FWIW that’s exactly what we’re solving with StatelyDB and Elastic Schema - all the scale of DynamoDB but changing your mind isn’t a big problem
English
0
0
0
49
Dillon Mulroy
Dillon Mulroy@dillon_mulroy·
@chronark yup, there are certainly tradeoffs. knowing your access patterns and domain up front is very important w/ dynamo.
English
1
0
8
693
Ben Hollis
Ben Hollis@bhollis·
This blows my mind. Prometheus isn't even good enough for our operational metrics (it can't count!) and they're using it for billing? I like the attitude of accounting mistakes favoring the customer, but just accepting data loss is wild. I assume customers want to know their actual accurate billable usage. tigrisdata.com/blog/billing-p…
English
0
0
2
90
Ben Hollis
Ben Hollis@bhollis·
Open source infrastructure is “free” in the sense of getting a free puppy. You have to consider the total cost of ownership, and nobody is adopting this stuff and not having to pay people to manage it.
English
0
0
2
64