Blog
Writing
Field notes on AI product engineering, full-stack software, and the decisions behind what I ship.
34 posts published
34 results
2026(2)
Why Vuti separates draft, review, scheduled, and published
The state model behind Vuti’s approval-first workflow, and why approval is product architecture rather than a marketing promise.
2 min read
Building Vuti — i built it because i was posting for a mobile toilet business
i built vuti because i was posting for a mobile toilet hire business. no, seriously. the side hustle i'm a software engineer. but i also run a side hustle — mahapa…
3 min read
2023(1)
2022(31)
30 days of Rust - Day Thirty - Game Of Life - continued
The final day of the 30 day challenge. It's really amazing to see how quickly time goes by. There's a saying my late brother Lesiba always said to me. Do or you…
3 min read30 Days of Rust · Day 30
30 days of Rust - Day Twenty Nine - Game Of Life
After having built quite a bit within the Rust ecosystem in the past month. I read that in order to continue learning, one needs to practice with harder goals. They…
3 min read30 Days of Rust · Day 29
30 days of Rust - Day Twenty Eight - Database
This blog is slowly taking shape now. It is becoming more and more like the blog you are currently reading this post on. Now we should store our data somewhere. I…
2 min read30 Days of Rust · Day 28
30 days of Rust - Day Twenty Seven - Integrating front and backend
So now that we have seen how to create both the client and server side (front-end and back-end), we need a way to link them up. This is exactly what I learnt today.…
3 min read30 Days of Rust · Day 27
30 days of Rust - Day Twenty Six - Blog Backend
Previously I built the capability to have multiple pages on my web application. View my previous post here for better context. Most of the pages are static and do…
3 min read30 Days of Rust · Day 26
30 days of Rust - Day Twenty Five - Blog Project - Routing
Yesterday, I created the home page of my website using Rust and Zero Javascript. I got a couple of questions from people. Is this indeed the end of Javascript and…
3 min read30 Days of Rust · Day 25
30 days of Rust - Day Twenty Four - A blog with Yew
After having learnt a lot about how Rust works in the command line and backend, I wanted to actually find out if one can build client facing web applications with…
3 min read30 Days of Rust · Day 24
30 days of Rust - Day Twenty Three - Macros
Did you know that used to print a line in the console is not a function? I was quite amazed when I heard this. It is actually a instead. Let's have a quick look at…
2 min read30 Days of Rust · Day 23
30 days of Rust - Day Twenty Two - Multi Threaded Web Server
Yesterday, I built a web server for TravCar. Check out the post here. The problem with that server is it can only handle one request at a time. If there is a…
2 min read30 Days of Rust · Day 22
30 days of Rust - Day Twenty One - Single Thread Web Server
As a web developer, I wanted to know if it's possible to build a web server using Rust. Can I have Travcar.co.za run on Rust, allowing us to serve our users with 10…
3 min read30 Days of Rust · Day 21
30 days of Rust - Day Twenty - Patterns and Matching
Time moves so fast. Today marks 20 days since I started to learn the Rust programming language. Two thirds of the way through and I can't and won't stop now. I can…
3 min read30 Days of Rust · Day 20
30 days of Rust - Day Nineteen - Object Oriented Programming in Rust
As a programmer, chances are you have come across the concept of Object Oriented Programming. Languages such as Java force you into this coding model. It is…
2 min read30 Days of Rust · Day 19
30 days of Rust - Day Eighteen - Concurrency
Modern day computers are very fast at processing data. This is partly thanks to concurrent programming as well as parallel programming. These two methods have been…
3 min read30 Days of Rust · Day 18
30 days of Rust - Day Seventeen - Smart Pointers Continued
Good artists borrow, great artists steal. By Pablo Picasso I am a huge fan of Medium. I read a lot of content from there. I wanted to share my blogs on their…
3 min read30 Days of Rust · Day 17
30 days of Rust - Day Sixteen - Smart Pointers
Day 16 - Smart Pointers Today's concept is by far the most advanced topic I have covered in Rust. It took me quite a long time to even get a bit of an understanding…
2 min read30 Days of Rust · Day 16
30 days of Rust - Day Fifteen - Publishing a Crate
In life, there's no need to reinvent the wheel. This is true for Rust and programming too. We can leverage other people's code in ours, in order to build even more…
3 min read30 Days of Rust · Day 15
30 days of Rust - Day Fourteen - Iterators
I took the weekend off of code to visit family and friends. 😅 I guess one needs time off every now and then, let's get back right where we left off. Day 14 -…
2 min read30 Days of Rust · Day 14
30 days of Rust - Day Thirteen - Closures
Today, I decided to take it easy and just learn a new concept. Closures. Day 13 - Closures Sometimes when programming, we need to pass functions around as arguments…
2 min read30 Days of Rust · Day 13
30 days of Rust - Day Twelve - Project: Predict My Country
Success has to do with deliberate practice. Practice must be focused, determined and in an environment where there's feedback. - Malcolm Gladwell Today, I decided…
3 min read30 Days of Rust · Day 12
30 days of Rust - Day Eleven - Testing our code
"I'm not a great programmer; I'm just a good programmer with great habits." - Kent Beck Rust does a lot to help us write reliable software with its amazing type and…
2 min read30 Days of Rust · Day 11
30 days of Rust - Day Ten - Traits
Ten days into the challenge and I must say I am growing at an exponential rate. I have always had a challenge with adopting new habits. Initially, the first couple…
3 min read30 Days of Rust · Day 10
30 days of Rust - Day Nine - Generics
If you have been a programmer for some time, chances are you have heard of the DRY principle, which means Don't Repeat Yourself. This simply means you should not…
2 min read30 Days of Rust · Day 9
30 days of Rust - Day Eight - Error Handling
If the world was perfect, code would always run with no problems. But unfortunaltely, that's not the case and we need a way to deal with it. We can either CRASH the…
3 min read30 Days of Rust · Day 8
30 days of Rust - Day Seven - HashMaps
Yesterday I learnt of Vectors which are amazing for storing data next to each other in memory such as a shopping cart. This is cool for most cases, the problem…
2 min read30 Days of Rust · Day 7
30 days of Rust - Day Six - Vectors
So far, most of the data we've had to deal with were single values such as . This works for most cases, but in order for us to build more useful programs we need to…
3 min read30 Days of Rust · Day 6
30 days of Rust - Day Five - Modules
It feels really good to know that a few people read my blog posts 📚. I have no idea what I am doing, and so do many people out there. I have already heard 2 people…
3 min read30 Days of Rust · Day 5
30 days of Rust - Day four - Enums
Oftentimes in code we come across situations where we need to represent data as just a set of possible variations. For instance, when making an online purchase, the…
2 min read30 Days of Rust · Day 4
30 days of Rust - Day three - Structure
Day 3 - Structs So far, I've just been working with variables and functions that are scattered around everywhere. This makes it a bit challenging for other people…
2 min read30 Days of Rust · Day 3
30 days of Rust - Day two - Ownership
Day 2 - Ownership Today was an easy Sunday. I decided to study the concept of ownership. I am yet to fully wrap my head around it, but I'm going to share what I…
2 min read30 Days of Rust · Day 2
30 days of Rust - Day one - Hello World
As a programmer, one needs to always be re-evaluating their knowledge and learning new technologies in order to stay relevant within the industry. Lately, a…
1 min read30 Days of Rust · Day 1
Building Travcar
Travcar is a long distance ride sharing platform which connects drivers to passengers who are going the same way. Watch my final 3 minute video pitch on Youtube…
2 min read