Intermediate SQL: WHERE vs HAVING

Recently, at Work I gave an introductory SQL tutorial. Since the purpose of the tutorial was to teach SQL for the purpose of answering questions about groupings of data, the tutorial ultimately reached a discussion of WHERE versus HAVING. I thought I'd share the explanation I used in case others felt confused why SQL has two keywords that serve such a similar function.

Read More…
Posted on 2015-05-01

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