:: My Introduction to Systems Programming and Distributed Systems ::

Dabbling the Depths of Systems Programming

When I began learning to code in Python, a language that dominates machine learning tasks, I dreamt of one day becoming a “real engineer.” This aspiration obviously nebulous, undefined, elusive and ever-changing. What did I mean by “real engineer”? I identified three key aspects: working with a language “close to the metal,” using a compiled language, and delving into distributed systems—systems that operate seamlessly across two or more machines. Embarking on this journey, I soon realized it demanded a more meticulous approach to system design, architecture, and the use of specific programming primitives.

Choosing Rust for the Orion Network

The goal is for all backend components of the Orion Defensive AI network to be developed in a systems programming language. Given its inherent distributed nature, the network required a performant language alternative to traditional choices like C++. We selected Rust, recognizing its steep learning curve but valuing its reduced bug introduction risk due to features like the memory “borrowing system,” strict type safety, and a notoriously rigorous compiler.

Understanding Distributed Systems Complexity

Distributed systems are inherently complex, characterized by intricate structures, intricate communication and control relationships between components, and unpredictable behaviors. This complexity escalates with the system’s scale, complicating testing and behavior prediction. The primer “Thinking in Systems” illustrates this with an analogy of baths connected in series and parallel—simple to predict in small numbers but increasingly chaotic as the system expands. This example underscores the dynamic, sometimes non-linear nature of complex systems.

The Marvel of Modern Engineering

To me, the true marvels of modern engineering are not ancient structures like the pyramids or Angkor Wat, but the advancements allowing us to distribute information workflows on a global scale. The concept of the cloud as “someone else’s computer” epitomizes the level of concurrency and parallel computing that defines our era. Interestingly, both ancient pyramids and modern microprocessors share a common dependence on sand.

Working “Close to the Metal”

Working close to the metal involves direct manipulation of hardware components like memory (RAM), processors, storage, and worker threads. Unlike higher-level languages such as Python—great for beginners and single-threaded operations—systems programming languages like Rust provide enhanced control and the capability for parallel processing. Python, alongside JavaScript, has become immensely popular for its ease of use and applicability in fields like machine learning and web technologies. However, these languages compile at runtime and offer limited control compared to systems programming languages.

Want to help de-shit our code?

My journey into systems programming is just beginning, and there’s much I have yet to learn. I’m still grappling with the basics, applying Python-like logic to systems programming—a fools approach but the only one that I knnow. Nevertheless, my early experiences with LAN parties and cybersecurity have fueled my passion for understanding and controlling information flow. If you are a backend engineer interested in co-founding Orion Defensive AI and enhancing our codebase, please contact us.

Published by Aylex Riom

We're all just walking each other home. - Ram Dass ----- Infinitely curious. Insufferably impatient.

Leave a comment