At work we have a Django application where we use Celery for handling long running tasks. When we moved into Amazon Web Services last month I deployed RabbitMQ in a Virtual Private Cloud. As I was configuring things I saw recommendations to avoid clustering across availability zones in the same region. In the name of getting things done quicker and keeping the configuration simpler I tried a standard mnesia backed cluster despite the warnings from the man on the Internet. I had assumed that the problems that were hinted at might have to do with a high volume of messages and that I would get by with our low volume queue, but that was not the case.
Today the results for Coinbase's Bithack came out. It was a lot of fun building Bitcoin Retail and I learned a lot, but I don't know if I will bother next time they have a competition. For me it all comes down to judging. You see, with my app I'm able to see database records created and modified with every action that is taken on the site. Why? Because Bitcoin Retail is all about accounting.
This morning I learned a valuable lesson about access tokens and refresh tokens while using the Coinbase API. When using my refresh token to obtain a new access token I had missed adding a line that stored the new refresh token that came in the response. This caused the following refresh to always fail because the refresh token was now wrong. The good news is that I was storing the entire json response and decoded that to pull out a valid refresh token.
I recently decided to update my fork of ejabberd when I started looking at building a new app that requried messaging. Maintaining a fork can be a little bit of work, but sometimes you just want some features that upstream maintainers don't care about when bulding things like Chatmongers. There have also been some discussions about the differences between git and svn at work and I decided to do a "big" merge so as to put my money where my mouth is and generate an emperical data point when saying git is nice to work with. It went pretty well except for one mistake, but I attribute that to being in a hurry/careless.
Today a friend of mine needed some help with ejabberd. I had a lot of fun working on Chatmongers and working with my fork of ejabberd. Through all of this I learned a few things about how I like to manage ejabberd. I developed a few rules for managing ejabberd so that I could have improved quality of life through applying consistent patterns. These patterns are expressed in the ejabberd setup instructions I gave to my friend.