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