Technical Debt Broker. Vim, Ruby, PLT. CTO at @dextofficial

Sofia, Bulgaria
Joined July 2007
Stefan Kanev retweeted
there used to be a natural limit to how much you could huff your own farts, but now you can build factories to fart for you and huff until your mind can fold space
5
9
107
5,033
Stefan Kanev retweeted
I don't know whether AI will replace human programmers. But I know that when you die, you will meet Dijkstra, and He will not smile upon the ungrammatical prompt that you wrote to vibe an incorrect sort function with 300 unit tests locking in the logical errors for all eternity.
9
31
4
485
20,515
Stefan Kanev retweeted
wise words from the best systems engineer I've worked with: "two things that make code actually maintainable: 1. reduce the layers a reader has to trace 2. reduce the state a reader has to hold in their head" applies to every codebase. always.
48
263
26
3,968
116,583
Stefan Kanev retweeted
“We used to review every line of code before it went into production”.
161
1,181
81
17,484
617,835
Stefan Kanev retweeted
We had a discussion to replace Postgres with Cassandra because “we needed to scale”. 1. Ran a quick workload check + Peak traffic: ~250 reads/sec, ~40 writes/sec + Data size: 60-80 GB + Biggest pain: p95 latency spikes during a couple heavy queries 2. Did a simple cost + complexity comparison + Postgres (RDS) upgrade + read replica: cheaper and boring + Cassandra: more nodes, more ops, more tuning, more weird failure modes + Also you lose strong constraints and ad-hoc querying becomes pain 3. Measured the real bottleneck + Missing index on a high-cardinality filter + One endpoint doing N+1 queries + No connection pooling, app opened too many connections under load + Long transactions causing lock waits 4. Fixed the basics + Added the right composite index + Rewrote the N+1 into one query + Added PgBouncer and sane pool limits + Reduced transaction scope, moved slow work out of the request path 5. Result + p95 dropped from ~800ms to ~120ms + CPU stayed flat, no more connection storms + Zero new infra, zero new operational burden Sometimes the boring solution is the right solution. Most scaling “needs” are just missing indexes, bad query shapes, and no guardrails.
Client wanted to replace SQS with Kafka for better throughput. Ran a cost comparison: - SQS at their volume: $45/month - MSK minimum cluster: $180/month - Plus EBS storage for brokers - Plus time managing Kafka operations Their throughput needs: 100 messages/second. Kept SQS. Added a dead letter queue they'd been missing. Sometimes the boring solution is the right solution.
12
19
1
336
48,066
Stefan Kanev retweeted
ok more clarity - good programming looks like structuring things in a way where certain bugs are impossible LLMs are not good at this they just accomplish the primary task
27
22
5
658
27,764
20
618
12
18,881
193,938
Stefan Kanev retweeted
The worst programming language.
217
263
60
6,604
240,657
Stefan Kanev retweeted
We are entering a new era, folks
51
79
27
1,903
109,727
Stefan Kanev retweeted
Rails is like you are given a race car. You just fly. Nothing more consistent than a picture of @dhh himself to illustrate that for my next talk/keynote on Rails and productivity. (Speaking at Mobile World Congress next week.)
3
1
58
4,378
Stefan Kanev retweeted
Something I like (among many other things) in @palkan_tula's book is its rationale about errors for some situations. For example, validation of an internal model attribute should be strict: true (raises), because its violation means there is a bug in your code you want in your face to jump on it like a lion (my dramatism). There's no point in having a soft error message in `errors` as if the attribute came from a form, there is no end user to present that message to. Or, authorization violations should raise. Yes. Because regular users shouldn't even be able to reach that spot. The view is responsible for hiding links, buttons, menu items, etc. well-intentioned users cannot access. Besides, people hacking your system do not need a fancy reponse, they only need go fuck themselves (my dramatism, again).
2
2
34
4,866
Stefan Kanev retweeted
It’s true.
173
554
113
6,790
1,046,614
"What one programmer can do in one month, two programmers can do in two months." - Fred Brooks
35
359
30
2,433
220,150
Stefan Kanev retweeted
Today I ran Turbo C++ 3.0 from 1992 in a DOSBox. It runs instantly, compiles instantly, steps instantly, syntax highlights instantly - even though DOSBox is emulating actual 386 speed. It's crazy how much modern software underdelivers :(
127
271
49
2,938
263,624
$433M money raised, and a $5.6bn valuation happened. Postman needs to do a lot more than request inspection to justify this. For these numbers to make any sense, they would need to do $1bn+ in ARR for a freaking API client utility... Looking around, there are so many companies that are in deep trouble. They have raised a ton of money on crazy valuations they'll never grow into.
Uhhhh what happened to Postman? I just want to send, and inspect http requests? What is all this shit?
77
177
53
1,981
1,226,723
Stefan Kanev retweeted
I like this trend. Nature is healing.
23
221
18
1,637
147,258
Complaining that testing (in general) slows down software delivery is like complaining that brakes slow down a race car.
14
49
3
186
23,398
3000 BCE: Imagine a hot shower... 1000: Wouldn't a hot shower be nice 1200: Wouldn't a hot shower be nice 1400: Wouldn't a hot shower be nice 1600: Wouldn't a hot shower be nice 1800: Wouldn't a hot shower be nice 2000: Ah, nice hot showers for all 🚿 2020: How about a cold shower?!
158
1,010
136
13,830
4,065,055
Stefan Kanev retweeted
18
91
18
749
75,692