Too Lazy to Learn Alone? Ask ChatGPT to Join You
You may have noticed that, in the last few years, the Rust language has become a true Intenet darling. Developers with backgrounds in Javascript or Python are rushing to make Rust their second, third, or Nth language over weekends, advocating for its crushing superiority on the grounds of its irrefutable performance and reliability. Sassy content creators are filling the metaverse with playful thumbnails featuring Ferris, the adorable crab mascot spearheading Rust into stardom. Even supposedly r
Learning Tries with Dinosaurs
A cool thing about being a software engineer is that there is always something new to learn. Although I was familiar with some common data structures like Lists, Stacks and Trees, I was guilty of not knowing about Tries. As the name suggests, Tries are essentially a type of Tree. They are optimized for searching and retrieving keys organized in hierarchical structures: each node would store a key value and have a varying - although limited - number of children that represent valid successors in
Designing an unreliable RPC framework in Rust
My latest side project is a distributed application with real-time features. A single authoritative server contains the system-wide information used by a few clients to run the application logic in sync. Nodes are required to exchange time-sensitive data at fixed intervals: information must arrive on time and expire as soon as a new message is received. In this setting, I want a lightweight, fast, and versatile communication protocol that doesn't get in the way. UDP is arguably a better choice
3 lessons learned from implementing Raft in Go
As part of my continuous learning journey, I recently picked up a Distributed Systems class from MIT that uses Golang in its labs. The course is great: all the lesson registrations and supporting materials are available online and are summarised in the syllabus. I especially liked the idea that I could learn something new about distributed systems, fine-tune my Golang skills and build something cool by developing the take-home assignments at the same time. I wasn't disappointed. After taking up
Exactly-Once Upon a Time
Implementing exactly-once processing in a distributed system Exactly-once delivery is impossible in a distributed system. This unfortunate reality is shown by a variety of mind experiments, among which the two generals' problem is one of the most famous. However, this is where we engineers had to set aside our differences and cooperate for the greater good. Namely, we solved the exactly-once delivery problem in a brilliant way: by avoiding caring about message delivery altogether! First of all
Italy's stop to ChatGPT is BS
As a teenager, I soon had to come to terms with a rough truth: Italy is seldom first. It's highly unusual to see the name of my country connected to profitable companies, technological breakthroughs, or at least pop culture mainstays. The grandeur of the Roman Empire and Renaissance city-states is long gone and even the Italian economic miracle of the 60s, an industrial and social revolution that gave Italy a respectable seat in the G8, is now a distant memory. I can barely believe that just 30
Into the modern coder cockpit: my take on Github Copilot
Despite covering some neat ChatGPT feats a few months ago, I didn't take the next logical step to try Copilot, Github's AI coding support tool. However, my interest was sparked last week, as a coworker of mine shared a screenshot of an AI-generated test suite. The prompt was reasonably simple and the generated test cases were relevant: enough to make me want to subscribe to GC free trial and contribute to the advent of the singularity event. I will avoid covering in detail what Copilot can or c