The thing that accelerated my software career was solving a real business problem.
Bob Belderbos
@bbelderbos.bsky.social
Helping developers master Python, Rust & AI by building production-grade software Co-founder @ Pybites • 20 years building software
What I dislike about #AI, apart from the temptation to outsource our thinking, is the increased verbosity in communication. Frontier models are getting wordier. 🤔
In spite of all the AI newness + hype, I am increasingly going back to software books that have been around for decades (the gem below is from 1975) 😍
What is sqlmodel / sqlalchemy's `flush`? It's like an intermediate step; the database executes within an open transaction, but the changes are not yet permanently written to disk as `commit` does. See it as a "draft save" vs "publish it" (final).
Rust 🦀 isn't replacing Python. It's replacing the parts of Python that hurt the most.
LLMs writing code is awesome. I leverage it every day. They cannot decide though what to build vs not to build. I ditched a vibe coded web app the other day in favor of a GitHub action that did the same job, if not better.
Day 15 · Capstone: Mini Parser 🦀 The final day + exercise. Combining many concepts you've learned over the last two weeks: Tokens → parsed value → typed result. Enums, `Result`, `match`, ownership; all in one capstone exercise. You'll write some real #Rust in this one. 💪
Not sure what to build next? Sometimes the most trivial things are interesting candidates. I am running `emo` dozens of times each week. It came out of the need/want to quickly search emojis from the command line and copy them to the OS clipboard.
From Simon Willison’s excellent newsletter. 💡 #cybersecurity is going to be increasingly critical / important over the coming years!
Day 14 · Pattern Matching 🦀 😍 Python 3.10 got `match`. 🎉 #Rust has had it for years, and it's a beast!
Day 13 · Custom Error Types 🦀 Python: subclass a built-in exception (e.g. `Exception`) #Rust: define an `enum` of everything that can go wrong.
10 terminal windows open with agents running simultaneously? 🤖🔄 The net gain is probably negative. Focus on fewer things (ideally one) to get greater, more meaningful results. 📈
Writer’s block, or do my ideas just lack real-world complexity? Sitting on a stack of draft posts, but none of them feel appealing enough right now. Maybe it's just the summer 🌞, but being a data-driven 📊 guy, time to get some insights.
Day 12 · Structs 🦀 Your Python `@dataclass` → #Rust `struct`. Notice the `impl` to add methods (behavior), Rust cleanly separates what data looks like (struct) from what it does (impl).
Day 11 · Ownership & Borrowing 🦀 🤯 The big mental shift you'll have to make: the ownership model. Which is the reason #Rust can do without a garbage collector (GC).
My driving instructor was ruthless. At the time, I hated driving lessons. But looking back? I’m a confident, sharp driver today because of that tough love and early struggle.
Can't wait to benchmark + optimize my #Rust JSON parser this week. Entering week 6 of the cohort ... 🦀 💪
Day 9 · Result Handling 🦀 Python throws exceptions ("exception handling"), #Rust returns errors as values: `Result<T, E>`. This is another concept I really dig, because it's more explicit: the failure is right there in the type signature. And you must handle it!
Day 8 · Enums & Match 🦀 This is where #Rust starts to feel really nice. 😍 Enums make impossible states unrepresentable and `match` enforces this at compile time!
Most people struggle with one key thing in Agentic AI: How do you actually systematize it for production? 🧵
Day 7 · Vectors 🦀 Python's list → #Rust's `Vec<T>`. Similar mechanics: dynamic, growable, heap-allocated arrays. But every element is one known type, and the compiler holds you to it.
On my tech reading stack 📚 -> more #security + #rust + #cleancode • Building Secure and Reliable Systems • Design Patterns and Best Practices in Rust • Clean Code What are you reading this weekend?
Somebody in our #Rust cohort had a lightbulb moment the other day: a single match-and-bind pattern wiped out a chunk of boilerplate. 💡 It led to a great quote on dev ergonomics 👇
Calling an FnMut Closure Needs `mut` A closure that mutates captured state is FnMut; each call changes the closure itself, so its binding needs `mut` too. Rust is explicit: the mut signals that calling this closure has side effects. Your turn: rustplatform.com/closure-capt... #rust #python
Day 6 · Strings & Slices 🦀 #Rust has multiple string types; two to get familiar with first: `&str` and `String`.
"Rust is for people who want to be punished." That was Jochen three months ago. A lawyer who codes for fun, years of Python, zero Rust. Then a podcast episode, a $49 offer, and a cabin on the Danish coast.
Push state logic into the model Django @property turns cryptic state checks into named predicates — one source of truth your views, templates, and tests all read the same way. #python
Day 5 · Control Flow 🦀 In #Rust, `if` is an *expression*, it returns a value. So instead of assigning inside each branch, you can assign an entire if-else block, for example: `let grade = if score > 90 { "A" } else { "B" };` Pretty elegant!