2014-08-20

SQL != Memcache != Mongo != Redis

I love me some noSQL. However, there is a time and a place for each technology. I put this presentation together for Asheville Coder's League in 2014. There slides are below, followed by a recording of my presentation. (sorry for the potato quality)

Read more
2014-03-05

The Struggle Against Entropy

We all know that entropy is going to win, eventually. That's considered a given in physics. And empirically we can say that's true in our own lives. Our laundry goes from clean to needing to be cleaned; our meals go from cooked to eaten; our bodies go from born to dead. Even when we make efforts every day to slow or reverse these processes, eventually, inevitably, entropy will win.

Read more
2014-01-08

Motivations

Take a moment and reflect on why it is that you do what you do. Have some meta-thoughts: thinking about why it is that you are thinking what you’re thinking. The only way to change the future is to notice the present decide to act.

Read more
2013-11-19

Appraising Your Gem

Thoughtbot has done it again with appraisal, a neat and nifty gem for testing your gem in different ruby and rails environments. It's especially useful when combined with Travis to specify which continuous integration environments should be used or ignored..

Read more
2013-11-08

Keeping a Secret

Rails 4 introduces a new way of signing cookies that differs from the previous method in Rails 3. When you upgrade to Rails 4, you are likely to receive "DEPRECATION WARNING: You didn't set config.secret_key_base". As pointed out in the guide for upgrading rails, you can simply run "rake secret" to generate a new secret, and paste that into config.secret_key_base inconfig/initializers/secret_token.rb. However, do we really want this crucial security key to be hard-coded in our application and pushed to our repository? What if our repository is public?

Read more
2012-12-21

Good Enough Never Is

I really enjoy reading Cindy Alvarez and I highly recommend that any product managers read and internalize her advice. If we all did, the world would be a much easier place with which to interact. Recently, I appreciated her post titled Good Enough vs. Good Enough Never Is about how the phrase "good enough" is *not* an end, but rather a means to an improved product.

Read more
2010-12-09

Social Proof with Redis

I learned about this method of implementing social proof from the guys at Scribd during their Web 2.0 Expo presentation “Social Design with Facebook”. When implementing avatars, the Scribd guys suggest that you show all users who have liked a particular item; but show the CURRENT user’s friendsFIRST so they can quickly recognize their friends’ avatars at the top of the cluster of avatars. These are the avatars that really matter; the rest of the avatars are just to prove how popular a given item is.

Read more
2010-12-09

Real-Time, In-Browser Notifications with Node.js and Faye (HTML5 WebSockets)

For real-time, in-browser notifications, I just learned about this at a Node.js Meetup presented by Xydo(let me know if you would like an invite). Xydo wanted to be able to notify a user in their browser whenever an event happened (like a friend sent them a direct message; or a news topic they followed was updated). The main idea is that the user should not have to refresh their page to see that these events are happening – they should know in real-time, in their browser.

Read more
2010-06-09

Needing to Scale is a Good Problem to Have

I just finished listening to Scale at Facebook from InfoQ QCon 2010 where Aditya Agarwal (Director of Engineering at Facebook) discusses the layers that make up Facebook and where/how their content is stored, retrieved, aggregated, and presented. Which would you rather have? Over-architected? Or under-architected? To echo Aditya's sentiments: needing to scale is a good problem to have.

Read more