Teaching practical programming through real-world applications. Tweets by @MikeHerman and @JanGiacomelli.

Joined December 2017
2,178 Photos and videos
TestDriven.io retweeted
The truth is, people who know how to code will always vibe code better than non-technical people. And if you already have a good design, the final product can look amazing. But if you let AI generate the entire UI from scratch, it usually ends up looking like AI slop.
21
6
78
4,523
TestDriven.io retweeted
Your FastAPI tutorial got you to "hello world." Now you have 40 endpoints, 3 Dockercontainers, and no idea how to deploy. This course is the missing second half. Join 1000 engineers who learned how to do that: testdriven.io/courses/scalab…
1
2
2
381
TestDriven.io retweeted
The DSF needs help. $500,000 in annual funding would allow us to sustain our three Fellows, maintain operational support for the DSF, create a clear path to hiring an Executive Director, and expand our ability to support the Django ecosystem at scale. djangoproject.com/weblog/202…
18
33
3,189
TestDriven.io retweeted
How ruined Sunday afternoon without gelato made us leverage AI to check whether dependency upgrades contain breaking changes that would break our product jangiacomelli.com/blog/how-t…
1
2
2
463
TestDriven.io retweeted
Announcing Our Talk Lineup! We're excited to share this year's talks covering Django, AI, PostgreSQL, HTMX, testing, deployment, open source, and more. Congratulations to all of our speakers, we look forward to seeing you in Chicago this August! 2026.djangocon.us/news/annou…
6
12
1,335
TestDriven.io retweeted
You change one line of implementation. 14 tests fail. The behavior didn't change. Your tests are coupled to how, not what. Learn how to test behavior, not implementation, with Complete Python Testing Guide: testdriven.io/courses/python…
1
1
5
858
TestDriven.io retweeted
Just last week, I finally took a stab at cleaning up part of our codebase that had been overdue for a long time. Not because “some idiot” implemented it (I was the major contributor 😅), but because things evolved over time. At some point, they became inconsistent, messy, and entangled. Did I enjoy that work? Not even a tiny bit. But it was like cleaning a kitchen. You can’t start cooking the next MasterChef meal until the kitchen is at least somewhat tidy. It’s not different for the codebases. Tidying up makes it easier to reason about and further develop things. So next time you feel like you have some spare time, go and clean something up. Even if a very small part. You’ll be grateful to yourself sooner or later. Don’t ask for permission. Just do it! No one asks for permission to clean up the kitchen!
1
1
9
654
TestDriven.io retweeted
My next newsletter issue is coming out tomorrow - Tutorial: How dependency auto-update broke production and what I did to prevent that in the future - Python tip: Get min element by custom key - AWS tip: Monitor Postgres queries Subscribe: jangiacomelli.com/#subscribe
1
1
2
408
TestDriven.io retweeted
One of my favorite things about traveling is how it shatters the illusion that the life you’ve always known is the only way to live. It reminds you that there are countless ways to live, and yours is just one of them.
32
1,214
5,417
74,216
TestDriven.io retweeted
FastAPI: Middlware vs Dependency - Which one to choose? - Need for something to happen for each request (e.g., CORS) → middleware - Need to inject typed value to your endpoints (e.g., auth user) → dependency - Need modifying raw response/request (e.g., compressing)→ middleware - Need to raise HttpException → dependency - Need to check something for a user (e.g., feature flag) → dependency
1
9
498
TestDriven.io retweeted
I’m in love with this sentence: “Consistency looks like nothing is happening, until everything changes.”
53
754
5,039
77,858
TestDriven.io retweeted
Jun 4
stackoverflow is a ghost town now. it’s like walking through an abandoned liminal space. the top question from the past month has 78 upvotes and is titled “how can i avoid using LLMs as a software developer”
231
562
17,776
755,677
TestDriven.io retweeted
The new feature is implemented. Changes are being deployed to production. All of a sudden, Slack is full of Sentry errors from clients. Code red! You dig into it and soon realize that the errors are due to the price attribute being missing from the response. Whoops! You’ve introduced an unintentional breaking change. Price is now cost, but clients still expect price. Let’s revert and fix! With all the AI tooling, this is becoming more expressed than ever. Added required request attributes, changed response type from str to str | None. We should catch such changes early in the process, not only when client errors start flying around. For FastAPI apps, that’s easy to do. FastAPI generates an OpenAPI schema out of the box. We can compare the schema from the PR with the schema from the main branch and detect breaking changes during the testing step in CI/CD pipelines. Read the full post to learn how to easily do that for FastAPI apps with oasdiff and GitHub Actions: jangiacomelli.com/blog/preve…
1
362
TestDriven.io retweeted
Best cache is no cache. Way too often, I see cache as the answer to your performance problems. Slow API responses due to slow queries? Just put Redis in front of the database. Cache always comes with a price. You need to create it, maintain it, and, worst of all, invalidate it at some point. So before you start running into Redis’s or CloudFront’s lap - check whether you really: - pushed everything from your database with indexing, partitioning, and repacking, - have optimized queries that are using index-only scans, - need to store that much data - need to access all that data - need to access data so frequently If there’s no other way, go for the cache. But often the problem lies elsewhere, and solving it means you don’t need to deal with the cache and its invalidation. Stick to simplicity!
2
1
5
808
TestDriven.io retweeted
AI took away all the fun of coding and gave us the worst parts of it: code reviews and writing specs.
4
4
8
750
TestDriven.io retweeted
Reading this will transform your life as a software developer and show you the true value of software testing. jangiacomelli.com/blog/testi…
2
4
584
TestDriven.io retweeted
Rewriting Python code with Rust seems easy. Especially with AI. But the devil is always in details. To confidently rewrite Python code to Rust with AI, you should follow these four steps 🧵
1
2
7
1,259
TestDriven.io retweeted
A peak career advice by Garry Tan: “At every job you should either learn or earn. Either is fine. Both is best. But if it's neither, quit.”
28
195
1,567
45,478