Português English


Sharp The Rusty Code feature

Sharp The Rusty Code

Once upon a time, in the land of curly braces, I, a devoted C# enthusiast, embarked on a daring adventure to explore the mysterious realm of Rust. Rust burst onto the scene like a supernova, capturing the hearts and minds of developers around the globe. Its focus on safety, performance, and concurrency has earned it a dedicated following, and even the Linux kernel couldn’t resist Rust’s allure. As Rust continues to make waves in the world of systems programming, C# watches from the sidelines, confidently flexing its newfound performance muscles and ready to take on any challenge that comes its way.

While Rust’s safety features and swift performance tempted me, its cryptic syntax and peculiar design choices soon had me pining for the familiar embrace of C#. Rumor had it that C# and .NET 7 had been hitting the performance gym, so I decided to rekindle our romance. In this blog post, I’ll chronicle my journey back to C# and compare its newfound strength with Rust using some good ol’ benchmarking results.

C# Sharpens Its Edge

It turns out that while I was flirting with Rust, C# had been diligently honing its edge like a master swordsmith. .NET devs had been forging tirelessly to improve C#’s performance and the .NET runtime, forging the razor-sharp .NET 7.

The Computer Language Benchmarks Game showcased the fruits of C#’s labor, revealing significant improvements in execution time and memory consumption. C# now slices through performance benchmarks alongside Rust, demonstrating that it’s no longer the blunt underdog in the performance arena.

Meanwhile, the TechEmpower web framework benchmarks crowned ASP.NET Core among the elite, proving that C# and .NET 7 can deliver high-performance web applications with the precision of a finely-crafted blade, rivaling Rust-based web frameworks like Axum.

C#’s “New” Superpower

During its time at the forge, C# discovered a new superpower: Ahead-of-Time (AOT) compilation. This newfound ability allows C# to compile code into native machine code before runtime, skipping the more leisurely Just-In-Time (JIT) compilation process.

AOT compilation not only reduces startup times but also enhances performance optimization. AOT and JIT compilations are like two superheroes with different origin stories, each with its own strengths and weaknesses. AOT, the more proactive of the two, compiles code into native machine code before runtime, flexing its muscles to reduce startup times and optimize performance. On the other hand, JIT, the more leisurely and contemplative hero, compiles code during runtime, taking its sweet time to optimize based on the application’s real-world usage.

C#, being the more application-driven and versatile chameleon that it is, initially chose JIT as its trusty sidekick. However, as C# realized it could cater to more performance-critical scenarios, like games, it embraced AOT, stepping out of its comfort zone and broadening its horizons.

  • AOT-only
    • C
    • C++
    • Rust
  • JIT-only
    • Java (mostly JIT, but can use AOT in specific cases)
    • Ruby
  • Both AOT and JIT
    • C#
    • Go
    • Kotlin/Native (for native platforms)

The Rusty Side of the Coin

Rust is undeniably a fascinating language, boasting a focus on safety and exceptional performance. However, its syntax and design choices can sometimes feel like deciphering ancient hieroglyphics. With a slew of abbreviated keywords like fn, mut, and impl, Rust might as well be speaking in code.

In addition, Rust’s syntax deviates significantly from its more familiar counterparts like C# and Java. Rust’s concepts of lifetimes and ownership can leave developers accustomed to garbage-collected languages scratching their heads in bewilderment.

Check a box on which concept to you ever heard of:

  • Lifetimes and Ownership
  • Borrow Checker
  • Pattern matching syntax with match and _ (wildcard)
  • Option and Result types for error handling
  • Trait-based generics
  • Macros with a ! syntax

Congratulations: you scored Zero points!

Meanwhile, C# retains its elegant simplicity, with meaningful keywords and design choices that prioritize readability and user-friendliness. Over time, C# has embraced modern features like pattern matching, nullable reference types, and async/await, all while maintaining its easy-going charm.

Back to The Future

My escapade into Rust was undoubtedly an eye-opening experience, allowing me to appreciate the powerful capabilities of both languages. However, Rust’s enigmatic syntax and design choices had me yearning for the warm, familiar comfort of C#. Returning to the latest C#, I discovered a language that had evolved and adapted, offering a potent combination of performance, elegance, and ease of use.

As C# and .NET 7 bask in the limelight, little do they know that .NET 8 is waiting in the wings, ready to dazzle us with even more breathtaking improvements. Rumor has it that .NET 8 will further incorporate functionalities from popular third-party libraries, making it an even more enticing one-stop shop for developers. With the pace of innovation accelerating, the future of C# and the .NET universe looks brighter than ever.

So, my fellow developers, let my tale be a testament to the importance of keeping an open mind and daring to explore new horizons. However, sometimes, the grass isn’t always greener on the other side. In my case, I found that C# was the perfect blend of power and familiarity that I had been seeking all along.

As you navigate the tumultuous seas of programming languages, remember to consider your project’s specific needs, performance requirements, and personal preferences. Each language has its quirks and charms, and the right fit will depend on your unique circumstances. In the end, it’s about finding the language that makes your heart sing and your code soar.

Oscar Awards 2023 feature

Oscar Awards 2023

The USA’s Academy of Motion Picture Arts and Sciences is about to host the annual Oscar Awards. These are the movies that I watched and can comment on.

  1. Everything Everywhere All at Once (9★★★★★★★★★): the best film overall. Fun and provocative. The Chinese actors are AMAZING. I would vote for Best Leading Actress, Supporting Actor, and Supporting Actress. Not to mention visual effects and wardrobe. The amount of different outfits that only blinked on the screen is staggering.
  2. Triangle of Sadness (8★★★★★★★★): my favorite movie from Oscars’ 2023. Yet, I know it has zero chance of winning anything. It’s a harsh social satire that will definitively make you scratch your head. It’s a running joke in my family about the taste for scatology and this movie delivers.
  3. Top Gun: Maverick (7★★★★★★★): a fun sequel that leverages the original movie. Great visuals, and a good story.
  4. Guillermo del Toro's Pinocchio (7★★★★★★★): lovely adaptation. It’s a bit dry in the storytelling department, with abrupt story deviation (mostly due to the source material), but I liked it.
  5. Elvis (7★★★★★★★): Austin Butler, the actor playing Elvis delivers a top-notch performance. Tom Hank’s character, in counterpart, is kinda annoying. The movie has a strong first half and a sluggish second one. It’s one step of being a documentary, but enjoyable nonetheless.
  6. All Quiet on the Western Front (7★★★★★★★): the opening scenes showing the boys eager to participate in the war contrasting with the first moments in the field are real lessons. But the movie is a series of misfortune tales merged.
  7. Glass Onion: A Knives Out Mystery (7★★★★★★★): it was nominated for Best Adapted Screenplay. I’m now curious about the original text. It might be good. Again, it’s still a zoo of characters with a boring detective.

Also, let’s check what will be said about the Will Smith “incident” from last year.

A Skyrim Review A Decade Too Late feature

A Skyrim Review A Decade Too Late

Ah, Skyrim, the game that we’ve all sunk countless hours into and have been rewarded with hundreds of dragons slain and hundreds of hours of gameplay. I mean, the game was released on 2011-11-11. It’s like Bethesda knew that we needed something to distract us from the impending doom of the Mayan calendar.

As a massive fan of fantasy RPGs, I picked up Skyrim on release day. Was one of my first purchases after getting a job in Rio de Janeiro. After playing for more than a hundred hours, I reviewed it but never finished it. My mage-thief AquaDiFiori was halfway on the main quest, and she was the leader of some of the factions. It was then that I realized that Skyrim is one of those games that you can sink an endless amount of hours into and still find new things to do and explore.

Recently, I decided to restart the game after several years, using various mods to fix some bugs and add more embellishments to the game. I played as a mage in the College of Winterhold, a thief in the Thieves Guild, an assassin of the Dark Brotherhood, and a warrior in the Companions, most with the same character, the female wood-elf UberCamelot. It was like a choose-your-own-adventure book, but with more dragons and less page flipping.

Skyrim is dead

One thing that frustrated me about Skyrim is the absence of a credits screen after the ending. What’s the point of defeating Alduin if you don’t get to bask in the glory of your victory while the credits roll? Instead, players can continue to explore the world. It’s like you’ve saved the world, but the world is still “I used to be an adventurer like you, then I took an arrow in the knee.”

Of course, one of the biggest downsides of the game is the frequent crashing. I get it, Skyrim is a huge and complex game, but wired bugs are one thing (for Bethesda Studios, it is a feature, not a bug), crashing after 10 years of patches is another completely. It’s still infuriating when you’ve spent a lot of time managing your inventory, crafting and enchanting items, and the game suddenly crashes. Quick save is your best friend in this game.

Despite the crashing, I enjoyed Skyrim very much. The game is incredibly immersive, with breathtaking scenery, atmospheric music, and realistic sound effects. The combat system is intuitive, and the ability to choose different skills and abilities for your character provides a lot of variety in gameplay. The world feels alive, with NPCs going about their daily routines, animals wandering around, and the occasional dragon swooping down from the sky. More than my memory served me. It’s like living in a high-fantasy version of a nature documentary.

Skyrim is dead

That being said, while Skyrim is an excellent game, I still think that The Witcher 3 is a better game. It has a more engaging storyline, better-developed characters, and a combat system that feels more refined. Side missions feel more meaningful and have a greater impact on the game’s story. But hey, that’s just my opinion. Don’t @ me.

In conclusion, Skyrim is an excellent game that just won’t Fus Ro Dah-way anytime soon! It’s been years since its original release and yet people are still shouting and modding. Keep selling well on every platform under the sun. It provides endless hours of entertainment.

My rating, after all these years, continues to be high. Finally, the Laat Dovahkiin will retire from the land of the Dovah. Let’s wait for the next scroll.

The final dovah is–over
The final dovah is–over

Home Assistant and The Dawn of Smart Homes feature

Home Assistant and The Dawn of Smart Homes

Smart homes are becoming increasingly popular as technology continues to advance and become more accessible. You can control various devices and appliances in your home through a single app or voice assistant. It can include lights, temperature control, security systems, and more.

You can control these lights through voice commands through platforms like Google Assistant or Amazon Alexa. With smart lights, you can easily set the mood in your home by adjusting the color, brightness, and temperature of the lights. You can also automate lighting by setting schedules or creating scenes, such as turning on the lights when you enter a room or dimming them for movie night. The typical sales pitch “Endless Possibilities” does apply here!

I started to transform my house into a Smart Home about a year ago and I’m loving it!


One of the most affordable and customizable options for building a smart home is to use Home Assistant with a Raspberry Pi. Home Assistant is an open-source platform that allows you to integrate and control various smart devices in your home. It is free and can be easily installed on a Raspberry Pi, making it accessible to people with a range of technical skill levels. Home Assistant supports a wide variety of smart lights, including those from popular brands like Philips.

One of the benefits of using Home Assistant with a Raspberry Pi is that it is free of paid service. All smart-device companies offer a paid subscription service to unlock some extra features. The Home Assistant community has hundreds of tips and tutorials to replicate them on your own. This means that you don’t have to worry about recurring subscription fees or being locked into a specific platform.

Unlike paid smart home services, particularly those in other countries, you can be confident that your private information and data are secure and not being monitored or accessed by anyone else. You have full control over your data and devices, and you can be sure that your security cameras, personal information, and other sensitive data are not being shared with any third parties. This level of privacy is crucial in today’s world where data privacy concerns are becoming more widespread. By choosing this DIY smart-home setup, you can enjoy the benefits of a connected home without worrying about the privacy implications of using a paid service.

Node-RED, included as a plugin, allows for even greater customization and automation in your smart home. You can create “flows” that automate various tasks, such as recording security video when motion is detected, sending notifications to your phone, or turning on the lights when you enter a room. This can make your smart home even more intelligent and responsive to your needs, freeing up time and effort that would otherwise be spent on manual tasks. The plugin provides a visual interface for building these automations, making it easy to set up and modify your flows, even if you have little to no programming experience. By incorporating Node-RED into your Home Assistant setup, you can take your smart home to the next level and make it truly your own.

I had to configure an online backup. Raspberry Pi has a history of failing, especially the micro-SD. It gives me peace of mind knowing that even if my Raspberry Pi fails, I can easily restore my Home Assistant setup without any hassle.

Wallet and Keys Free

Another great feature of a smart home is the ability to leave your keys and wallets behind when you leave the house. With smart locks and phone-based payment systems, you now can control access to your home and pay for purchases with just your phone. It can make life much more convenient, as you won’t need to carry a bulky keychain or wallet everywhere you go. It’s pocket freedom! Simply use your phone to unlock your front or garage door, and pay for your morning coffee – all without ever having to dig through your pockets or purse. The counterpart is the single point of failure: in case I lose my phone (or get robbed), I will have no money and no way to enter my house. :(

I did the right thing to start to automate my home a year back. Building a smart home with Home Assistant on a Raspberry Pi is a cost-effective and customizable option for people who want to control their home appliances and devices from one central location. A valid warning: it’s addictive to tweak each device or flow to fit your taste. Just take care of not getting into the rabbit hole!

Lutris: Games in Linux Easier than Ever feature

Lutris: Games in Linux Easier than Ever

Lutris is an open-source gaming platform for Linux that allows users to easily install and manage Windows-only games without having to dual-boot or use a virtual machine. It works with a wide range of sources, including Steam, Epic Game Store, Origin, and Ubisoft.

Under the hood is Proton, the compatibility layer. It is not an emulator. Unlike traditional emulators, which run games in a virtual environment, Proton is a conversion layer that translates Windows system calls to Linux system calls. This allows Windows games to run natively on Linux without any performance loss. The result is that games run on Proton often perform just as well, or even better than they would on native OS. This is because it takes advantage of the performance optimizations and features of the Linux kernel, while also providing compatibility with Windows libraries and APIs. Proton also uses various performance tweaks and optimizations to improve the performance of games on Linux, and it is regularly updated with new features and bug fixes to support both recent AAA titles and older games.

I have been using Lutris on my daily Kubuntu system for the past 3 years and have had a great experience playing a wide range of games, from the latest blockbuster releases to older classic titles. From my experience, Lutris and Proton work exceptionally well and I have been able to successfully play most of the games without any problem. The process of installing and running games through Lutris is straightforward and user-friendly. The platform also provides a wide range of options for configuring and optimizing game performance, which is particularly useful for older or resource-intensive games.

Another great advantage of using Lutris is that it unifies all of your game libraries from different stores into a single interface. This eliminates the need to switch between different launchers or applications to access your games and makes it much easier to keep track of what you have installed and what you want to play next. You can browse and manage your entire collection of games from one place, regardless of where you purchased them from. If needed, Lutris launches the launcher automatically for you.

In addition to the convenience of having all of your games in one place, Lutris also provides a variety of tools and features that can enhance your gaming experience. For example, the platform allows you to create custom game configurations and launch options, manage your game saves, and keep track of which games you have completed. With Lutris, you have all of the tools you need to manage your gaming library and get the most out of your games.

Valve, the company behind Steam, has also made a significant contribution to the development of Linux gaming. They have invested a lot in developing Proton, which is now a key component of Lutris, and also the Steam Deck, a handheld gaming console that runs on Linux. This investment by Valve demonstrates a strong commitment to the Linux gaming community and it’s great to see that the gaming experience on Linux is getting better and better.

Note: You can check the list of all games that that are working fine in ProtonDB and Lutris DB. The most problematic games are those that require some anti-cheat feature, because they are tailored for Windows and use intrinsic techniques.

Lutris and Proton are powerful tools that provide a seamless gaming experience on Linux. The platform is user-friendly, easy to configure, and constantly updated to support new games and features. Have fun!

Proton db