# Lessons from Investigating Software Bugs, Including Dropbox's File-Sync Architecture

DevFeed: [Lessons from Investigating Software Bugs, Including Dropbox's File-Sync Architecture](<https://devfeed.tech/articles/love-your-bugs-29451.md>)

Original publisher: [Read original article](<http://akaptur.github.com/blog/2017/11/12/love-your-bugs/>)

Published: 2017-11-13T02:23:00Z

Content type: opinion

Language: en

Sources: [Allison Kaptur](<https://devfeed.tech/sources/allison-kaptur.md>)

Topics: [bug](<https://devfeed.tech/topics/bug.md>), [dropbox](<https://devfeed.tech/topics/dropbox.md>), [Filesystems](<https://devfeed.tech/topics/filesystems.md>), [Back end](<https://devfeed.tech/topics/backend.md>), [Cloud](<https://devfeed.tech/topics/cloud.md>), [client](<https://devfeed.tech/topics/client.md>)

Tags: [architecture](<https://devfeed.tech/tags/architecture.md>), [backend](<https://devfeed.tech/tags/backend.md>), [bugs](<https://devfeed.tech/tags/bugs.md>), [client](<https://devfeed.tech/tags/client.md>), [cloud](<https://devfeed.tech/tags/cloud.md>), [dropbox](<https://devfeed.tech/tags/dropbox.md>), [file](<https://devfeed.tech/tags/file.md>)

## AI overview

A keynote transcript argues that investigating software bugs can be entertaining and instructive. It introduces a Dropbox bug and describes a simplified architecture in which a desktop client detects filesystem changes, hashes files into 4MB blocks, and stores those blocks in a backend key-value store.

## Source excerpt

In early October I gave a keynote at Python Brasil in Belo Horizonte. Here is an aspirational and lightly edited transcript of the talk. There is also a video available here. I love bugs I'm currently a senior engineer at Pilot.com, working on automating bookkeeping for startups. Before that, I worked for Dropbox on the desktop client team, and I'll have a few stories about my work there. Earlier, I was a facilitator at the Recurse Center, a writers retreat for programmers in NYC. I studied astrophysics in college and worked in finance for a few years before becoming an engineer. But none of that is really important to remember - the only thing you need to know about me is that I love bugs. I love bugs because they're entertaining. They're dramatic. The investigation of a great bug can be full of twists and turns. A great bug is like a good joke or a riddle - you're expecting one outcome, but the result veers off in another direction. Over the course of this talk I'm going to tell you about some bugs that I have loved, explain why I love bugs so much, and then convince you that you should love bugs too. Bug #1 Ok, straight into bug #1. This is a bug that I encountered while working at Dropbox. As you may know, Dropbox is a utility that syncs your files from one computer to the cloud and to your other computers. 1 2 3 4 5 6 7 8 9 10 11 12 +--------------+ +---------------+ | | | | | METASERVER | | BLOCKSERVER | | | | | +-+--+---------+ +---------+-----+ ^ | ^ | | | | | +----------+ | | +---> | | | | | CLIENT +--------+ +--------+ | +----------+ Here's a vastly simplified diagram of Dropbox's architecture. The desktop client runs on your local computer listening for changes in the file system. When it notices a changed file, it reads the file, then hashes the contents in 4MB blocks. These blocks are stored in the backend in a giant key-value store that we call blockserver. The key is the digest of the hashed contents, and the values are the contents themselves. Of cou