Some unlit matches and a burnt one. A new match with a leaf sprouting out of it.
Some unlit matches and a burnt one. A new match with a leaf sprouting out of it.
Photo by Tangerine Newt on Unsplash

I can remember the exact moment that I realized the gravity of it. A coworker had sent me a link to an article from the Mayo Clinic on Slack. I skimmed the article until I reached a section called “Job burnout symptoms”, which included a bulleted list of questions to help you diagnose whether you were suffering from job burnout. I slowed down to read the list.

Have you become cynical or critical at work?
Do you drag yourself to work and have trouble getting started?
Do you lack satisfaction from your achievements?

With each question that I read, my…

I am fully aware that birthdays are just rituals. Functionally, they don’t really mean much at the end of the day; they just happen to be easy enough to use when we want to represent milestones and impactful events. And yet, I love these rituals. They are an opportunity to reflect and meditate on what has already passed — and in a way, they allow us to find some stillness in preparation for what is to come.

I’m turning thirty tomorrow, and I certainly don’t expect that I’ll feel much different tomorrow than I do today. But cumulatively, I feel…

Logical time and Lamport clocks (part 2)

Throughout the course of this series, we’ve been learning time and again that distributed systems are hard. When faced with hard problems, what’s one do to? Well, as we learned in part one of this post, sometimes the answer is to strip away the complicated parts of a problem and try to make sense of things simply, instead.

This is exactly what Leslie Lamport did when he approached the problem of synchronizing time across different processes and clocks. As we learned in part one, he wrote a famous paper called “Time, Clocks, and the Ordering of Events in a Distributed…

Logical time and Lamport clocks (part 1)

Over the course of this series, we’ve seen many instances of how things can more complicated than they seem. We saw this with failure, and we saw it with replication. More recently, we discovered that even the concept of time is more complex that we might have originally thought.

However, when the things that you thought you knew seem more convoluted than ever, sometimes the answer is to keep it simple. In other words, we can keep a problem simple by stripping out the confusing parts and trimming it down to its most essential parts. …

Ordering distributed events

One of the hardest things about distributed systems is that we often find ourselves needing to approach them very differently than other problems in computing. Distributed computing forces us to reevaluate how we’d approach even the simplest obstacles in a single system model.

We recently began exploring one such example of this when we took a closer look at ticking clocks and how unreliable they are in a distributed system! As we learned, there is no single global clock in a distributed system, which makes it hard to ever agree on what time it is. …

Ticking clocks in a distributed system

We often spend a lot of our lives blissfully unaware of how something works. Most of the time, this ends up being an okay thing, since we don’t really need to know how everything around us works. But there are some times when we realize just how much complexity been hidden from us, abstracted out, tucked away neatly so that we never have to think about it.

I had one of these realizations recently when I discovered that I had never thought twice about a simple thing that I work with on an hourly basis: time! I’ve been using computers…

Parsing through partitions in a distributed system!

When it comes to tech jargon, one thing seems to always hold true: everyone has a different opinion about what certain words mean. I realize this fact every once in awhile; most recently, I came across it while trying to learn a new distributed systems concept.

The term “partition” is used a lot in distributed system courses and books, but there are also a slew of other terms that get lumped into this category as well. Until recently, I thought I knew what the term meant in the context of a distributed system, but as it turns out, there was…

Redundancy and replication: duplicating in a distributed system

When it comes to programming, there are certain conventions, idioms, and principles that we run into and reference as a community quite often. One of those principles is the idea of “Don’t Repeat Yourself”, or DRY for short. I encountered this idea early on in my programming career, and it seemed pretty straightforward to me at the time: in order to maintain clean, concise code, it was important to ensure that one didn’t repeat the same lines or logic in our codebase.

But over the years of my career, I’ve learned and seen more, and realized that that repetition is…

Foraging for EVEN MORE fallacies of distributed computing!

So much of what makes distributed systems hard to content with is the fact that, as a system grows, it changes. Furthermore, the things around the system — parts of the system itself, its dependencies, and the people who maintain it — are also each capable of changing as well.

In part one of this series, we looked into the first four of the famous eight fallacies of distributed computing. Conveniently, those four fallacies all centered around the network, and the misconceptions and falsehoods that many developers can fall prey to when they are dealing with a distributed system. …

Foraging for the fallacies of distributed computing!

So much of computing is based on assumptions. We design systems operating on a set of assumptions. We write programs and applications assuming certain parts of their systems will work a certain way. And we also assume that some things can potentially go wrong, and we (hopefully) attempt to account for them.

One big issue with building computer-y things is that, even though we’re often dealing with complex systems, we aren’t always capable of reasoning about on a big-picture level. Distributed systems are certainly a great example of this (you knew where I was going with this, didn’t you?). Even…

Vaidehi Joshi

Writing words, writing code. Sometimes doing both at once.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store