What I Learned Writing a Dropbox Clone - Part 4 - Conclusion

For this final post, I'll talk about more “soft skill” type lessons I learned; lessons that seem to be common knowledge to many, but I still need to internalize in my day-to-day work.

Read More…
Posted on 2015-03-17

What I Learned Writing a Dropbox Clone - Part 3 - Inotify

In my previous post, I discussed how clientd 1) uploads a file's contents to hostd 2) after it has detected a change in said file. That raises the question: how do we detect if a file has changed?

Read More…
Posted on 2015-03-09

What I Learned Writing a Dropbox Clone - Part 2 - Filesystem Operations

In my previous post, I described the different pieces of the Sahara Sync program. For this post, I'll be focusing on the client daemon and how it interacts with the user; namely, how clientd manages the user's sync directory (which I'll be referring to as the sandbox). This post discusses the details of how clientd was implemented for Linux; many of the statements about the filesystem API may hold true for similar systems like *BSD or Mac OS X.

Read More…
Posted on 2015-02-01

What I Learned Writing a Dropbox Clone - Part 1 - Introduction

Nearly four years ago, I made the above commit on a new project I'd just started. I had been using Dropbox for a little bit, and I liked the idea, but I favor free software solutions for services, particularly when my personal data (like files) are concerned. I looked around to see if anyone had written an FOSS Dropbox clone, and the offerings in that space were very meager (just SparkleShare, and I think maybe a nascent version of OwnCloud ). I had some misgivings about some of SparkleShare's design, and OwnCloud didn't offer the same features I needed, so I decided to go ahead and write my own. Because the project was an effort to distance myself from cloud products, I decided to call it Sahara Sync (the Sahara desert having few clouds). 1)

Read More…
Posted on 2015-01-24

English: A Weakly Typed Language

Two of my hobbies are programming and languages, and I often think about how much the two of them have in common. A short while ago, I was asking my friend Maxim some questions about the distinction between perfective/imperfective aspect in the Russian language. This distinction is unlike how we distinguish tense/aspect in English, so it's often a pain point for native English speakers learning the Russian language. For example, in English, we make the following distinctions when talking about a past event:

Read More…
Posted on 2015-01-10