The solution to South Africa’s economic problems isn’t more government controls. It’s less government and a commitment to good governance. Most of our economic problems have been caused by the government. Therefore, more government controls can’t be the solution. #economy #politics #markets
From 1977 to the early 80s, people were rightly concerned with events unfolding in the Rhodesian war, and the new Zimbabwe and many 10s of 1000s people left the country for greener pastures. Those who stayed behind labeled those who were leaving as "taking the Chicken Run" or "taking the gap."
There was a distinct rift between the two. Some saw leaving as a cowardly act and snickered and bickered about the turncoats running away from the war-torn nation and leaving them behind to "fight the commies."
It was a time of great pressure and desperation. Families torn apart, a people already under much duress further fractured by these issues.
50 years later, the same thing is happening in South Africa to minorities here who are being forced to be either 'stayers' or 'leavers'.
It is a hugely traumatizing circumstance when one has to decide the fate of one's family and future under stress from both the local environment, such as the clear and imminent fall of South Africa and the cultural peer pressure one falls under during the gut-wrenching decision to "take the gap."
In my experience, those who left mostly thrived in their new worlds, and those who stayed fought bravely through the decline, often succeeding in work and business.
We should remember these things today. Be kind to one another and remember that there's nothing new under the sun. It's all happened before.
One thing to add is that those who stayed on in Rhodesia will testify to the fact that it gets a whole lot tougher over the years as the revolutionary governments destroy the country before your very eyes.
Have a great day, whatever you choose to do.
I just watched a @udacity video about building AI Agents. It started with the presenter admitting they knew nothing about product development, couldn't tell us what the acronym PRD stood for, and then presented a really awful PRD as an essential first step in the work. The presenter joked that they were a programmer, so, of course, didn't know (or evidently need to know) what a PRD was. They then presented a "user story" that was actually a waterfall requirement that didn't mention the user's work at all.
In AI-assisted software engineering, not understanding product development is a guaranteed path to a crappy result. It's an essential part of the minute-to-minute work. The initial prompts are all about the product, and product decisions permeate the implementation details in subsequent prompts as well. If you don't even know what that term means, you can't do the work. When you write a prompt, you own it. Working with third-hand information from a Product person you don't know or talk to just doesn't cut it. If you don't have the skill, you need to pair or mob with somebody who does.
Programmers using AI cannot bury their heads in the sand and imagine that coding is the only thing that matters. I've heard devs make jokes about their ignorance while rolling their eyes as they say the word "product," as if it's some sort of lesser skill. They often frame the product people as adversaries. (Sometimes they are, but that's a different level of organizational dysfunction.) These same programmers often denigrate testing as well, and think of architecture as some black art they don't need to understand. None of that is justified or correct. Living in a silo will specialize you right out of a job.
To me, the minimum skill set needed to use an AI effectively is communication (with users, each other, and the LLM), product development, programming (not just coding), testing, refactoring, software architecture, and English composition. (Badly written prompts quickly get you into garbage-in/garbage-out territory.) Every one of those skills is involved in every prompt I write. If you don't have the skills, then again, pairing or mobbing solves the problem, but working alone without essential skills doesn't cut it with me.
This thinking, of course, flies in the face of the push to solo work I see in some AI-heavy development shops, but I think those shops will solo themselves to failure. Programming is not now, nor ever was, something you could do alone if you wanted optimal results. "It takes a village" and a plethora of skills. If you don't have those skills, acquire them. Learning is part of the work.
Tim Ottinger posted this drawing over on LinkedIn 👇 [https://t.co/NtIzo3QOKH]. He's absolutely correct about this.
Here's an example: I once built what amounted to a small blog system that had a comments feature. My initial idea was a standard comments dashboard. When somebody made a comment, it would go onto the dashboard, and then I'd send an email out asking for approval. A link in the email got you to the dashboard. Google Groups works exactly that way.
Then I started building. I like to keep early versions as simple as possible, so my first version skipped the dashboard entirely and sent an email with an "approve" link in it. If I didn't get an approval within a few days, I deleted the comment.
I released that.
Nobody complained. Nobody asked for a dashboard. A link in the email was just fine.
So, I was finished. There was no need to create that complicated dashboard at all, given that everybody was happy. Nobody ever requested a dashboard, but if they had, I would have added it at that point.
Here's another example:
When I build microservices, I take the notion seriously that the service should be fully self-contained with impermeable boundaries and no dependencies on anything external. That principle means that every microservice must have its own data store. There is no shared database in the system. (This is standard microservice architecture, described in a myriad books—please read one of those before you argue with me about how crazy I am. Many thousands of microservice systems don't have a shared database.)
Version one of my services often uses the simplest data store possible: everything is in memory. No SQL. No serialization. Just a collection (usually JSON in a key/value dictionary).
So, once I've deployed that and proven to myself that the business logic is working, I often (not always) add persistence by serializing to a local file on the disk using the easiest mechanisms available. Usually, that's not any official serialization system—I just create a flat file with those key/value pairs in it.
Often, I'll stop at that point. If the key/value pairs are working, there's no point in doing anything fancier. In any event, seems like bringing in an SQL server to handle a database with one table and a couple of columns is way more trouble than it's worth.
So, the lesson here is: (1) work incrementally in very small batches; (2) build the simplest possible thing; (3) if absolutely necessary, add a bit more, but again, build the simplest possible thing; (4) don't futureproof—if the current thing is good enough, stop.
All too often, the word "leader" is used to describe a mere manager. That's not a leader in any real sense. You cannot be anointed as a "leader" by upper management. Leadership cannot be imposed. A person in that position claiming they're a leader is puffery—a source of (often quiet because they're in a position of power) ridicule.
Leaders don't call themselves "leaders." They lead simply by being themselves.
Leadership is a personality trait. You cannot train a person to be a leader. The notion of a "leadership seminar" is a snake-oil rebranding of management training.
Teams confer leadership. It emerges when someone behaves in an inspiring way. A true leader does not have "followers" in the conventional sense. Mindlessly obeying or mimicking someone is cult behavior. Being forced to follow or obey is bullying, not leadership.
Leaders set examples, not impose ways of working. They make sacrifices, not require them. They inspire, not demand. They don't require respect; they're respected. Force and leadership cannot coexist. A power dynamic is a bully's tool, not a leader's.
So, I find that whole "leadership" framing to be disengenuous at best. I wish we'd drop it altogether.
Happy Birthday #KafkaStreams 🎉
10 years ago, Apache Kafka 0.10.0.0 was released. It was the inaugural release of @kafkastreams — What a journey!
Thanks to almost 500 contributors! It would not have been possible without each and everyone of you!
The Court Order
Farmers may, without permission from the Minister or other state officials:
✅ Privately procure lawfully produced vaccines.
✅ Privately administer lawfully procured vaccines.
The Minister may not:
❌ Interfere in the commercial relations of those who lawfully import vaccines and their international suppliers.
Context
The Minister tried to centralise control over FMD vaccines, barring farmers and livestock owners from privately procuring and administering vaccines without state permission.
Sakeliga, SAAI, and Free State Agriculture have argued since January 2026 that there is no lawful impediment to privately obtaining and administering approved FMD vaccines.
Today, the court confirmed our assessment.
We are called xenophobic for asking a simple question:
How does a country with 33% unemployment absorb millions of undocumented migrants WITHOUT a plan?
That's not hate.
That's MATH.
The leaders who should answer that question are too busy calling you names to avoid answering it.
Migration is real. So is the cost.
Who's paying it? Not the politicians.
The poor are.
@pookiepolls Not to mention the hot mess that is Petrosa.
But sure, let's start even more state owned companies to do the same thing that the ones they already ran into the ground did, and lose even more billions.
Explain to me why our electric bills never decrease, even though we have swapped to all LED lights, energy star appliances, built massive solar and wind farms.
South Africa has a bright future.
Once communism and everything that goes along with it is removed, and don't tell me the ANC isn't communist.
Poland is one of the greatest recoveries in modern history. In the early 1990s it bounced from a crippled economy and hyperinflation to one of Europe’s fastest-growing economies.
Estonia is most likely the most dramatic per capita. Went from poor and corrupt to one of the most digitally advanced countries of today.
A common pattern across all of them:
Corrupt systems eventually lose legitimacy.
The young generation stops believing the decline is normal. Institutions start mattering more than liberation methodology. Economic freedom and competent governance compound over time
South Africa isn't ahead. It's behind.
We are not an example to other countries of what might happen to them. We are an example of what has happened to others.
Nations can recover far faster than people think once momentum changes. But these ideologies need to end up in the ocean.
It's a simple choice.
The latest unemployment figures provide much more reason for Ramaphosa to resign than Phala Phala.
Yet, he has the audacity to say that people who want him to resign are trying to "reverse the renewal of our society".
Where is this so-called "renewal" exactly?
It evidently exists nowhere other than in the imaginations of Ramaphosa and other political elites.
@Recon1_ZA Turn BEE on it's head, scrap minimum wage, stop replacing experienced personnel with mediocre just to fulfil 'quotas'. Instead incentivise apprenticeships, re-employ retired artisans to run the apprentice programmes.
@Recon1_ZA Repeat: the RET comrades of the ANC have stolen your life. Not the trained economist Mbeki who was doing a good job, the hard left RET faction who are fighting so hard to keep looting.
If you are an unemployed person/youth looking for work in South Africa, I want you to listen to me very carefully, because no politician is going to campaign by telling you the truth.
South Africa's unemployment rate is currently 32.7%
At a sustained 5% annual GDP growth (we've barely achieved 1% for over a decade), reducing it to 20% would likely take 12-18 years.
Read that again.
Read it again.
IF 5% - maybe 12-18 years.
This assumes some translation from growth to jobs, but SA's structural issues create jobless growth. This is why investment doesn't = employment.
Even optimistic models project slow progress.
4% growth barely dents youth unemployment.
Again, Cyril and their policies can't achieve 1%.
The majority of you will NOT SEE employment in your lifetime. I'm sorry to tell you that.
The ANC has stolen your life.
Every dream you ever had.
Wrap your mind around that.
Have a blessed day.
The hidden cost of "enterprise" .NET architecture:
Debugging hell.
I've spent 13+ years in .NET codebases, and I keep seeing the same pattern:
Teams add layers upon layers, to solve the problems they don't have.
IUserService calls IUserRepository.
IUserRepository wraps IUserDataAccess.
IUserDataAccess calls IUserQueryBuilder.
IUserQueryBuilder finally hits the database.
I've seen a lot of classes having one-line methods whose sole purpose was to call the next layer and that's it.
But to change one validation rule, you step through 5 layers.
To fix a bug, you open 7 files.
The justification is always the same:
"What if we need to swap out Entity Framework?"
"What if we switch databases?"
"What if we need multiple implementations?"
What if this, what if that.
The reality:
Those "what ifs" don't come to life in 99% of cases.
I haven't worked on a project where we had to swap the ORM.
But I've seen dozens of developers waste hours navigating through abstraction mazes.
This happens with both new and experienced developers.
New developers asking on Slack all the time:
"Where to put this new piece of code?"
But senior developers are too busy to answer that message. Why? Because they are debugging through the code that has more layers than a wedding cake.
The end result?
You spend more time navigating than building.
Good abstractions hide complexity.
Bad abstractions ARE the complexity.
And most enterprise .NET apps?
Way too much of the second kind.