Looking for .git in all the wrong places

Like many of you, I store my dotfiles in Git repos. However, I quickly encountered a problem with this approach: my configurations would often get out of sync between my various machines. Instead of writing a script to check for updates or just being diligent about it, I decided that I would integrate my configurations into something on my machines that check for updates already: the system package manager!

Read More…
Posted on 2015-04-21

Know your tools: using inputrc to save keystrokes in the MySQL shell

I do a lot of work with MySQL, and I often bemoan the lack of a concise shortcut to list tables matching a pattern. I much prefer psql's \d shortcut as opposed to mysql's SHOW TABLES. However, since the mysql client uses GNU readline, we can leverage readline's macro facility to make things easier on ourselves!

Read More…
Posted on 2015-03-30

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