Bob Belderbos @bbelderbos.bsky.social · 18hHow to deal with probabilistic systems (LLMs)? Build deterministic systems around them. My expense invoice scanner is a good example. The LLM reads the invoice and shows me what it finds. I can accept, edit, or discard the result before anything gets added to my records. 111
Bob Belderbos @bbelderbos.bsky.social · 02/10/2026Agents write code fast. Knowing whether it's right is the slow part. In our cohort you write the code yourself first, learning the patterns behind reliable agents: typed data, Protocols, a service layer, and "the model proposes, you decide". → pythonagenticai.com 011
Bob Belderbos @bbelderbos.bsky.social · 02/10/2026In an age where we're constantly urged to move faster, sometimes we have to slow down 🏃 💡 So I'm starting a book club: - Read and discuss a classic programming book - 3 weekly threads to discuss learnings + experience - If enough people, get on a call to dive deeper 131
Bob Belderbos @bbelderbos.bsky.social · 01/10/2026I just hand-coded a simple FSM (Finite State Machine) in #Python 💡 Some people might ask: It’s 2026. Why even code by hand? Because the thinking, debugging, and deeper understanding that go into an exercise like this are still valuable. 130
Bob Belderbos @bbelderbos.bsky.social · 30/09/2026User: "Refund order 4817." Model: {"order_id": 4871} Valid schema, wrong order. The refund goes out anyway. 😅 Structured outputs guarantee the shape. Not the truth. 111
Bob Belderbos @bbelderbos.bsky.social · 30/09/2026With LLMs producing more code, judgement + deep fundamental skills really matter now! And in spite of AI supposedly making us so much more productive, these tools trick us into delegating thinking + bias towards shipping fast. But what about deep understanding, knowledge and learning? 100
Bob Belderbos @bbelderbos.bsky.social · 29/09/2026Knowing #Python syntax != ship a complete app. 🐍 That's the gap my free Python Foundations course bridges. Week 2 is now live. 🎉 Last week we set up the workflow: terminal, Git, uv and your first pull request. This week we give our dev journal a CLI - end state 👇 120
Bob Belderbos @bbelderbos.bsky.social · 29/09/2026Starting to see the fruits of commitgraph.app Struggling with habits? Maybe you just need something to enforce them? 💡 📈 000
Bob Belderbos @bbelderbos.bsky.social · 29/09/2026+3 weeks commitgraph.app is really helping with this!commitgraph.appcommitgraph · Commit to what matters. Every day.An industrial-grade daily protocol tracker. Up to 5 habits, checked off, with a streak heatmap. No clutter, no gamification. 000
Bob Belderbos @bbelderbos.bsky.social · 29/09/2026I am definitely leaning towards option 2 when teaching on video. Because tools + speed ≠ learning. But I’m curious to hear from you: Do you prefer videos that show raw, fast execution using modern tools like Claude? 100
Bob Belderbos @bbelderbos.bsky.social · 28/09/2026Calling an LLM is easy. Building systems around it is hard. 💡 • How do you validate that the response is actually correct? • How do you enforce strict input/output contracts? • How do you test your agent without burning through tokens? 110
Bob Belderbos @bbelderbos.bsky.social · 28/09/2026With execution speed of LLMs, deep programming fundamentals + knowledge matter now even more. 🚀 And this urges us to keep reading / studying the classics. 121
Bob Belderbos @bbelderbos.bsky.social · 26/09/2026Coming from Python, Rust can feel intimidating. 🤯 Strict typing. Ownership. Borrowing. It’s a very different mindset from dynamic languages. But you don’t need a background in low-level systems programming to learn #Rust. You need a good transition path from what you already know. 110
Bob Belderbos @bbelderbos.bsky.social · 25/09/2026Fail fast: break loudly and early, not quietly and later. A missing API key in production shouldn't become a mystery at 3am. In a recent PR, we moved config into a typed Settings class and made the API key a required field. No key → ValidationError that tells you exactly what's missing. 121
Bob Belderbos @bbelderbos.bsky.social · 25/09/2026pytest 'broke' yesterday had to do a `uv sync --reinstall` Claude's conclusion on the project's tooling: > ruff and ty worked the whole time because they're compiled binaries with no Python path baked in. pytest was the only script that broke. 100
Bob Belderbos @bbelderbos.bsky.social · 24/09/2026In <Python Agentic AI> we have you build an expense classifier agent. Classifying is the easy part: [in] "Coffee at Starbucks $5.50" [out] Food with 95% certainty. You can ship that but the 56th classification it will go wrong. LLMs are unpredictable. 111
Bob Belderbos @bbelderbos.bsky.social · 24/09/2026Got this really nice feedback from Wilfred, one of the developers in our current #Rust cohort. 🦀 Apart from putting in the hard work conquering Rust's steep learning curve, this is a good example how our cohort boosts effective learning: 100
Bob Belderbos @bbelderbos.bsky.social · 23/09/2026The technology is getting faster, but some of the pains are getting worse 🤔 “I'm getting more done, but somehow my workload isn't lower.” → What's the bottom-line gain? “If AI writes most of the code, am I still really engineering?” 120
Bob Belderbos @bbelderbos.bsky.social · 23/09/2026Nothing like building an app and: 1. validating it works for yourself and others. 💡 2. get real feature requests from people using it. 🚀 Apart from being more consistent with my own habits, I'm happy to see more people are jumping on commitgraph: 9 users are tracking 31 habits right now. 📈 100
Bob Belderbos @bbelderbos.bsky.social · 22/09/2026When demoing an app, you control the input. A live system has a user doing something random while you're asleep. Better prompting doesn't make your system more robust. It's the reliability layer that's rarely discussed amid the AI hype: - Retries that don't double-fire the webhook 211
Bob Belderbos @bbelderbos.bsky.social · 21/09/2026Learning #Python 🐍 syntax isn't the hard part. It’s everything around it where beginner devs typically get stuck: - the terminal / SSH keys, - git and the GitHub PR flow, - virtual environments, - dependencies and packaging, - writing your first tests, - linting, - etc. 110
Bob Belderbos @bbelderbos.bsky.social · 21/09/2026Classic programming books -> better words to steer AI agents. 💡 Listening to Matt Pocock on Pragmatic Engineer. He makes a good point to "mine" classic books for "leading words". 100
Bob Belderbos @bbelderbos.bsky.social · 18/09/2026My goto for a swappable backend in #python has been an abstract base class (ABC). There is a flexible alternative though: Protocol (typing module). Take LLM providers as an example. An ABC comes with a requirement: every provider has to inherit from your base class. 100
Bob Belderbos @bbelderbos.bsky.social · 18/09/2026Bruce Lee described the problem with AI coding assistants many years before they existed. He wrote that a teacher is never a giver of truth, only a *catalyst*: "a pointer to the truth that each student must find for himself." That's the exact line between a tool and a teacher or coach. 100
Bob Belderbos @bbelderbos.bsky.social · 17/09/2026More Rust goodness today 🦀 😄 Here is something weird for Pythonistas coming to Rust: ```rust use std::io::Read; let mut file = File::open("data.txt")?; let mut contents = String::new(); file.read_to_string(&mut contents)?; ``` We import `Read` but it's not being used anywhere? 100
Bob Belderbos @bbelderbos.bsky.social · 17/09/2026I recommend watching Felienne Hermans' recent talk "AI made me doubt everything about programming" I made me reflect on what #programming really is, how we value hard things more (the value of work), and the choice (responsibility) we have in how we use AI tools + the human side of the craft. 100
Bob Belderbos @bbelderbos.bsky.social · 17/09/2026To be expected from #Rust's awesome compiler 🦀 but this linting trick I learned today put a smile on my face. 😍 Add `#![warn(missing_docs)]` at the top of lib.rs and `cargo build` will output the exact list of missing docs. 120
Bob Belderbos @bbelderbos.bsky.social · 16/09/2026It's nice to get some early wins in every day. 💪 Feeling a bit less disciplined lately? Start tracking your habits with commitgraph.app, a little tool I built to stay accountable to yourself through tracking. Because Peter Drucker said it well 💡 "what gets measured gets managed" 100
Bob Belderbos @bbelderbos.bsky.social · 15/09/2026@jhodapp what are we doing to Pythonistas? 🤣 One of our students just told me he's noticing an increased use of #Rust idioms in his #Python code 🦀 000
Bob Belderbos @bbelderbos.bsky.social · 15/09/2026Who has gone local with LLMs for coding? Something like Ollama + Qwen3-Coder + OpenCode/Aider, or a different setup? I'm curious how the best local models compare to the big frontier models for real coding/agentic work? And what are you running them on? 000
Bob Belderbos @bbelderbos.bsky.social · 14/09/2026How do libraries run #Rust inside #Python? It all comes down to 4 steps: 1. Write Rust code. 2. Annotate it with PyO3 macros. 3. Let maturin compile and install it. 4. Import the result. New article seeing this in action for a hand-rolled JSON parser: belderbos.dev/blog/how-li... 010
Bob Belderbos @bbelderbos.bsky.social · 12/09/2026There are people saying that now AI writes the code, you shouldn't need to know how to code. I think that misses the point. 110
Reposted by Bob BelderbosChristopher Trudeau @trudeau.dev · 11/09/2026On this week's episode, @digiglean.bsky.social and I talk about Polars vs SQL, signed links, loads of news, and more. With content from: @wagtail.org @marcogorelli.bsky.social @bbelderbos.bsky.social @snarky.ca @jetbrains.com and others not on the 🦋 buff.ly/Sl499afrealpython.comEpisode #311: Django Developers Survey Results & Reproducible Python Builds – The Real Python PodcastWhat are the latest trends uncovered in the 2026 Django Developers Survey? How are Django users employing LLMs in their development process? Christopher Trudeau is back on the show this week with… 183
Bob Belderbos @bbelderbos.bsky.social · 11/09/2026We went from “tutorial paralysis” to “build and change paralysis” in a matter of years. Now AI can build anything. But is it the right thing? AI can modify the code. But how do you give it enough context without breaking things? 100
Bob Belderbos @bbelderbos.bsky.social · 11/09/2026Come learn #Rust with me as your coach reltech.substack.com/p/come-learn...reltech.substack.comCome learn Rust with me as your coachYour chance to learn Rust in a fun group setting kicks off in 5 days 000
Bob Belderbos @bbelderbos.bsky.social · 11/09/2026Happy Friday! How's your productivity these days? I built a small tool to track important habits and see a graph how committed you are over time. I've used it for a week now and it's a nice daily push to focus on the things I really need to do. 🚀 Try it out here: commitgraph.app 000
Bob Belderbos @bbelderbos.bsky.social · 10/09/2026A lot of developers can write Python. Fewer can explain what happens underneath it. - What owns this data? - Who can mutate it? - Where are the allocations? - What happens when this fails? - Why is this code slow? - Where is the boundary between Python and native code? 110
Bob Belderbos @bbelderbos.bsky.social · 10/09/2026Spent 1 hour writing Python code. Spent 4 hours fighting PATH errors, virtual environments, and a merge conflict that seemed impossible to resolve. 🤬 If you're learning #Python, you've probably noticed that the syntax is rarely the hard part. It's everything around it: → the terminal 100
Bob Belderbos @bbelderbos.bsky.social · 09/09/2026FastAPI authentication is pretty well documented. Role-based access control (RBAC) is not always that intuitive though. 🤔 I have seen `if "Admin" not in user.roles: raise 403` hardcoded across different routes. Ok so use a decorator, but what about changing roles over time? 110
Bob Belderbos @bbelderbos.bsky.social · 09/09/2026I think this is a good realization by Sean Goedecke around #AI models and valuable skills moving forward: > We are not going to wake up in 2027 to find that the AI craze is over and everyone is writing code by hand again. 100
Bob Belderbos @bbelderbos.bsky.social · 08/09/2026The abstraction has moved up. Less syntax more decisions. 🚀 Practical greenfield example: Claude built my habit tracker in an afternoon. Some 'vibe coders' would call it done at this point. Engineers know this is where the real work starts: 100
Bob Belderbos @bbelderbos.bsky.social · 07/09/2026Learning #Rust is so much more fun with an engaging group! As a #Python coach, seeing developers going from zero Rust to writing a performant JSON parser is an amazing feeling. 😍 🚀 100
Bob Belderbos @bbelderbos.bsky.social · 07/09/20265 useful #Python patterns building a habit tracker app over the weekend: 1. Pure functions for more testable code 2. A schedule is a 7-bit integer 3. Let the standard library build the month grid 4. A query vocabulary on the (#Django) model 5. "Done and due" is set algebra 101
Bob Belderbos @bbelderbos.bsky.social · 06/09/2026Claude code spent 20% of time (or less) to get to 80% of a new app I am building. Then I spent 80% (and ongoing) to get the final 20% right. 100
Bob Belderbos @bbelderbos.bsky.social · 06/09/2026AI made building fast. That includes building the wrong thing faster. Before writing code, you need a tight scope: what to build, and more importantly, what NOT to build. I built a simple tool to pressure-test your idea before you spend weeks building it: 101
Bob Belderbos @bbelderbos.bsky.social · 05/09/2026Why I'd still learn #Rust 🦀 by hand in 2026 Justin Schroeder said something that stuck with me: > "Rust was such a horrible language for humans to write, and that's precisely what makes it incredible for agents." Isn't that interesting? 100
Bob Belderbos @bbelderbos.bsky.social · 04/09/2026Ruff flagged an unused import in Alembic's env.py Quick fix: ignore the linter :) `# noqa: F401` Instead this time I stopped and asked: > why is this import here if I never use it? 100
Bob Belderbos @bbelderbos.bsky.social · 04/09/2026Task finished != you've learned something. I think this is becoming increasingly important these days! Yes, use AI / agents, but stay knowledgeable. That's why I encourage you now more than ever to keep blogging + teaching; it forces you to really internalize things. 🚀 000
Bob Belderbos @bbelderbos.bsky.social · 04/09/2026Coding is nice, talking about code can be even more interesting. #Rust platform feedback / request: > I am missing the discussion about different solutions I remember from PyBites. That was the best part of the platform for me. Great idea and live now! 🎉 100