May 20, 2024Ardan Labs
From the Ardan Community
Introduction: Join Herbert in an insightful discussion on concurrency, where he tackles the complexities of data races and how various programming languages address them:
Understand the crucial role of recognizing data races in concurrent programming and their potential impacts.
See practical examples illustrating the chaos caused by data races and learn how Rust’s compiler prevents such issues, ensuring program stability.
Explore Rust’s unique features like null pointer avoidance and reliable error handling, which enhance safety and reliability in concurrent programming tasks.
Continue reading May 15, 2024Ardan Labs
From the Ardan Community
Introduction: Embark on a journey into the heart of software design with the Ultimate Software Design series, where Bill navigates through the intricacies of crafting robust and maintainable code in Go.
Understand the importance of prioritizing clarity over brevity in code, fostering better understanding and collaboration among Go developers.
Learn how to ensure precision in every aspect of Go development, emphasizing the necessity for precise semantic meanings in components, functions, and variables.
Continue reading May 13, 2024Ardan Labs
From the Ardan Community
Introduction: Delving into the intricate realm of type coercion, Herbert’s insights offer invaluable guidance for Rust developers grappling with the complexities of data type conversions:
Learn the art of clearly indicating intent in code, a crucial skill for enhancing readability and maintainability in Rust projects.
Explore Rust’s meticulous approach to data mutability, leveraging features like &mut references to uphold program integrity and prevent unintended modifications.
Discover how embracing Rust’s principles of clarity and safety empowers developers to craft robust and reliable codebases, ensuring long-term success in software development endeavors.
Continue reading May 3, 2024Ardan Labs
From the Ardan Community
Introduction: Delving into the intricate realm of type coercion, Herbert’s insights offer invaluable guidance for Rust developers grappling with the complexities of data type conversions:
Gain insights into the nuances of type coercion, a fundamental aspect of programming languages, and its potential pitfalls, drawing parallels with numerical computation surprises.
Explore how Go and Rust tackle inadvertent type coercion, prioritizing program integrity by making it challenging to assign values between incompatible types.
Continue reading April 29, 2024Ardan Labs
From the Ardan Community
Introduction: Delving into the critical issues of overflow and underflow, Herbert’s insights offer valuable takeaways for Rust developers:
Rust’s static analysis capabilities enable early detection and prevention of overflow and underflow errors, allowing developers to address potential issues before they manifest in runtime environments.
Through Rust’s emphasis on safety and correctness, developers can leverage built-in mechanisms to handle overflow and underflow situations gracefully, reducing the likelihood of software crashes and unexpected behavior.
Continue reading April 22, 2024Ardan Labs
From the Ardan Community
Introduction: Exploring the critical issues of “use after free” and “use after move,” Herbert’s insights offer a valuable understanding to Rust developers:
Rust’s ownership system acts as a powerful safeguard against memory safety issues like “use after free” and “use after move,” ensuring code correctness at compile time.
By understanding the risks associated with these memory management pitfalls, Rust developers gain deeper insights into crafting more secure and reliable software, leveraging Rust’s robust memory handling mechanisms.
Continue reading April 15, 2024Ardan Labs
From the Ardan Community
Introduction: Rust’s memory safety features are advantageous to Rust developers because they:
Ensure robust protection against buffer overflows and underflows, enhancing the reliability and security of software.
Empower developers to manage type coercion effectively, promoting code reliability and safety while facilitating safe type conversions.
Provide confidence in writing concurrent code by enforcing strict mutability rules and synchronization, thereby preventing data race issues and ensuring code correctness and efficiency.
With these memory safety features deeply integrated into Rust’s design, developers can build more reliable, secure, and efficient software, spanning various aspects of memory management, type handling, and concurrent programming paradigms.
Continue reading Introduction In my previous post, I discussed the current state of looping in Go. In this post, we’re going to look into a future feature for the Go programming language called range-over function experiment. Go lacks a standard iterator protocol and this is an attempt to provide one. We’ll discuss the motivation for adding this new feature and see some examples on how to use it.
NOTE: In order to run the code, you need to set the GOEXPERIMENT environment variable to rangefunc (e.
Continue readingIntroduction Looping seems like a basic topic: Write a for loop with a termination condition, and you’re done. However there’s a lot of ways you can write a for loop in Go. Knowing more about the different versions of for will help you choose the best option to accomplish your tasks and it will help you prevent some bugs.
Some Assembly Required What kind of code is generated by the compiler for a for loop?
Continue readingIntroduction After writing the Kubernetes (K8s) CPU Limits post, I was wondering what happens when a K8s memory limit is set for the same service. I’ve been hearing at workshops and at Ardan how people are experiencing Out Of Memory (OOM) problems with their PODs when setting K8s memory limits. I’m often told that when an OOM occurs, K8s will terminate and restart the POD.
I wanted to experience an OOM, but I was also curious about three other things.
Continue reading