For the record, Trump's decision to halt all foreign aid, no matter how haphazardly enforced, is good for you as an African.
The fact that so many African healthcare programs are dependent on USAID funding in the first place, is NOT down to American benevolence. It is in fact, a deliberate US foreign policy decision to make your essential systems dependent on the US government, so that Washington DC gains functional control over the day-to-day running of your country, much like how a drug dealer gives his victim their first dose of heroin for free, knowing that the victim's body will become physiologically dependent on heroin, and they will die without it - which will make them do absolutely anything for the drug dealer.
Your African government is currently that heroin addict, and the US government is the drug dealer. In exchange for that hit of healthcare funding and other types of funding which your country does not need to beg an outsider for, but somehow only seems to be able to get from USAID, your government is forced to play whatever economic and geopolitical role asked of it by the world's biggest gangster in Washington DC.
Trump is obviously not trying to help you (quite the opposite actually), but his decision IS helping you in spite of himself.
So instead of crying about how Trump is condemning HIV positive people to die, maybe ask why the money for antiretrovirals only seems to come from USAID, in the same countries with political appointees who get paid more than even American political appointees. Then ask yourself why a philanthropic donor would watch the people he is donating money to live more lavishly than him, and yet decide to keep giving them more money. He must either be the world's greatest dumbass, or he has another reason for giving them that money.
I think it's fair to say that you know which one the US government is.
๐ช๐ต๐ ๐#?
Some people often ask me why I chose C# instead of many other languages, and here I will try to explain why.
C# emerged as a strongly typed language that combined the robustness of C++ with the simplicity of Visual Basic. It was a Microsoft answer to Java, but better shaped (no entity beans and stuff), and it was developed increasingly to adapt to modern times. It was recently announced as a ๐น๐ฎ๐ป๐ด๐๐ฎ๐ด๐ฒ ๐ผ๐ณ ๐๐ต๐ฒ ๐๐ฒ๐ฎ๐ฟ ๐ฎ๐ฌ๐ฎ๐ฏ by the TIOBE index.
What are some C# features that I like:
๐น ๐ข๐ฏ๐ท๐ฒ๐ฐ๐-๐ข๐ฟ๐ถ๐ฒ๐ป๐๐ฎ๐๐ถ๐ผ๐ป: Encapsulation, inheritance, and polymorphism form the cornerstones of C#'s object-oriented foundation. Classes, interfaces, and abstract classes create a well-defined way of reusable and maintainable code.
๐น ๐๐ฒ๐ป๐ฒ๐ฟ๐ถ๐ฐ๐: Allows creating types that work with different data types without compromising type safety.
๐น ๐๐ฎ๐บ๐ฏ๐ฑ๐ฎ ๐๐ ๐ฝ๐ฟ๐ฒ๐๐๐ถ๐ผ๐ป๐: These anonymous functions add a touch of functional programming charm, streamlining code with less ceremony.
๐น ๐๐๐ก๐ค (Language Integrated Query): Master the art of data manipulation with LINQ. This robust set of extensions brings the expressiveness of query languages directly into your C# code, letting you dance with data with ease.
๐น ๐๐๐๐ป๐ฐ๐ต๐ฟ๐ผ๐ป๐ผ๐๐ ๐๐๐ฎ๐ถ๐๐: Navigate the complexities of asynchronous programming with grace. C# 11's top-level statements and static local functions refine the flow, ensuring your code stays straightforward and performant.
And also some less used features:
โก๏ธ ๐ง๐๐ฝ๐น๐ฒ๐ for Returning Multiple Values: Simplify methods that need to return multiple values.
๐๐๐๐๐๐ (๐๐๐, ๐๐๐๐๐๐) ๐ถ๐๐๐ ๐๐๐๐๐()
{
๐๐๐๐๐๐ (๐ท, "๐ท๐๐๐๐");
}
// ๐๐๐๐๐
๐๐๐ (๐๐๐๐๐๐, ๐๐๐ก๐) = ๐ถ๐๐๐ ๐๐๐๐๐();
โก๏ธ ๐ฃ๐ฎ๐๐๐ฒ๐ฟ๐ป ๐ ๐ฎ๐๐ฐ๐ต๐ถ๐ป๐ด: Offer a concise syntax for type checks and casts.
๐๐๐๐๐๐ ๐๐๐ = "๐ท๐ป";
๐๐ (๐๐๐ ๐๐ ๐๐๐ ๐ || (๐๐๐ ๐๐ ๐๐๐๐๐๐ ๐ && ๐๐๐.๐๐๐ข๐ฟ๐๐๐๐(๐, ๐๐๐ ๐)))
{
๐ฒ๐๐๐๐๐๐.๐๐๐๐๐๐ป๐๐๐($"๐ธ๐๐๐๐๐๐ ๐๐๐๐๐: {๐}");
}
โก๏ธ ๐๐ผ๐ฐ๐ฎ๐น ๐๐๐ป๐ฐ๐๐ถ๐ผ๐ป๐: Improve code organization and readability within more extensive methods.
๐๐๐๐๐๐ ๐๐๐๐๐๐ ๐ฝ๐๐๐ => "๐ผ๐๐๐๐";
๐๐๐๐๐๐ ๐๐๐๐ ๐ถ๐๐๐๐() => ๐ฒ๐๐๐๐๐๐.๐๐๐๐๐๐ป๐๐๐("๐ท๐๐๐๐, " + ๐ฝ๐๐๐);
โก๏ธ ๐๐ ๐ฝ๐ฟ๐ฒ๐๐๐ถ๐ผ๐ป-๐ฏ๐ผ๐ฑ๐ถ๐ฒ๐ฑ ๐ ๐ฒ๐บ๐ฏ๐ฒ๐ฟ๐: Allow defining member bodies using concise lambda expressions.
๐๐๐๐๐๐ ๐๐๐๐๐๐ ๐ฝ๐๐๐ => "๐ผ๐๐๐๐";
๐๐๐๐๐๐ ๐๐๐๐ ๐ถ๐๐๐๐() => ๐ฒ๐๐๐๐๐๐.๐๐๐๐๐๐ป๐๐๐("๐ท๐๐๐๐, " + ๐ฝ๐๐๐);
โก๏ธ ๐ก๐๐น๐น-๐ฐ๐ผ๐ป๐ฑ๐ถ๐๐ถ๐ผ๐ป๐ฎ๐น ๐ข๐ฝ๐ฒ๐ฟ๐ฎ๐๐ผ๐ฟ๐: Simplify checks for null before accessing members or elements.
๐๐๐๐๐๐ ๐๐๐๐๐ ๐ฟ๐๐๐๐๐
{
๐๐๐๐๐๐ ๐๐๐๐๐๐ ๐ฝ๐๐๐ { ๐๐๐; ๐๐๐; }
}
๐ฟ๐๐๐๐๐ ๐๐๐๐๐๐ = ๐๐๐๐;
๐๐๐๐๐๐ ๐๐๐๐๐๐ = ๐๐๐๐๐๐?.๐ฝ๐๐๐?.๐ป๐๐๐๐๐.๐๐๐๐๐๐๐๐(); // ๐ฝ๐ ๐ฝ๐๐๐๐๐๐๐๐๐๐๐๐๐ด๐ก๐๐๐๐๐๐๐
What else I like in the C#/.NET Ecosystem:
๐ธ ๐๐ฟ๐ผ๐๐-๐ฝ๐น๐ฎ๐๐ณ๐ผ๐ฟ๐บ ๐ฑ๐ฒ๐๐ฒ๐น๐ผ๐ฝ๐บ๐ฒ๐ป๐: With the introduction of .NET Core, C# expanded beyond Windows, embracing Linux and macOS.
๐ธ ๐๐ผ๐บ๐บ๐๐ป๐ถ๐๐ ๐ฎ๐ป๐ฑ ๐ฐ๐ผ๐ฟ๐ฝ๐ผ๐ฟ๐ฎ๐๐ฒ ๐๐๐ฝ๐ฝ๐ผ๐ฟ๐: Backed by Microsoft and a vibrant open-source community, C# stays cutting-edge with regular updates and a wealth of libraries. There is even open communication and discussion between the language design team and the community.
๐ธ ๐๐ฝ๐ฝ๐น๐ถ๐ฐ๐ฎ๐๐ถ๐ผ๐ป ๐๐ฒ๐ฟ๐๐ฎ๐๐ถ๐น๐ถ๐๐: From desktop applications to mobile apps (via Xamarin), web applications (ASP. NET), and gaming (Unity), C# is versatile.
๐ธ ๐๐ป๐๐ฒ๐ด๐ฟ๐ฎ๐๐ถ๐ผ๐ป ๐๐ถ๐๐ต ๐ฒ๐บ๐ฒ๐ฟ๐ด๐ถ๐ป๐ด ๐๐ฒ๐ฐ๐ต๐ป๐ผ๐น๐ผ๐ด๐ถ๐ฒ๐: Actively evolving to integrate with advanced technologies like cloud services, IoT, and machine learning.
๐ธ ๐๐ฟ๐ฒ๐ฎ๐ ๐ฑ๐ผ๐ฐ๐๐บ๐ฒ๐ป๐๐ฎ๐๐ถ๐ผ๐ป: Microsoft offers comprehensive, up-to-date documentation for all critical features.
Check the full C# mindmap with all essential features.
Which features do you like, and which do not?
The complete .NET Developer roadmap for 2024 with all learning resources is in the comments.
#csharp #dotnet
Coach @imogotsi gives Vainah Ubisi her ๐. The Bulls Daisies' enforcer has continued her brilliant form for the Springbok Womens team in the @wxvrugby