RailsConf 2012

RailsConf is an annual conference held in the United State which gathers together members of the Ruby on Rails community, new and old, for a few days of education, debate, comradery and pot pies. The 2012 conference took place last week in Austin, Texas and Fanzter was there. Most of our server-side software is written using Ruby on Rails and our team strives to keep pace with the latest developments in the project. Most of the time following blogs and watching screencasts and video recordings from conference talks is sufficient. But sometimes you just need to get face-to-face with other developers and feel the pulse of where things are headed.

I was asked to participate in a panel discussion titled "Real World Rails Apps at Massive Scale" along with some impressive other panelists from Zendesk , Groupon , Uken Games and Blue Box Group. Speaking to a packed room, we discussed the core strategies used to bust the myth that "Rails doesn’t scale". Further topics ranged from specific tools used, to how each company kept performance central to their product’s life cycle. A Q&A period closed out the talk and continued throughout the conference as attendees stopped panelists in the halls to dig into more specific topics.

The big opening keynote speeches are always a major draw. With RailsConf, the almost celebrity nature of the best known members of the community takes that to a higher level. The event kicked off with a keynote from the creator of Ruby on Rails, David Heinemeier Hansson (aka DHH), speaking about the nature of conservatism and fear of progress, exhorting upon the audience to look at progress as a way forward, not as a threat. The topics and language of the keynote were typically lively, though the cursing took some time to get warmed up to DHH’s usual level.

Monday’s closing keynote was by Rich Hickey, software guru and creator of Clojure, and focused on true meaning of the word simple. Rich urged us not “complect” concerns within our systems. His functional-driven approach was a refreshing reminder that there is a huge range of patterns and possibilities in software design, over which our job is to filter and select those which are appropriate to the problem at hand.

Day two opened with a crowd favorite, Aaron “tenderlove” Patterson. Aaron’s talks are legendary and this one opened strong and finished softly, with plenty of humor to lubricate the audience between the presentation of new ideas. Aaron presented a few ideas he’d like to see come to Rails 4, most notably a simple ActiveQueue interface. He also expressed his own riff on the Fear of Features mantra, organizing change into three categories: cosmetic, refactoring, and course correcting. The talk ended abruptly with an almost fear inducing call: “We need to be prepared.” Following Aaron was the presentation of the Ruby Heroes awards and a packed schedule of talks and pot pies.

An impromptu Rails Core panel lead into Tuesday’s closing keynote, a talk by the founder and CEO of TechStars, David Cohen. David’s talk may have struck some as a bit too heavy on the TechStars pitch, but plenty of ideas were applicable to most startups and mirrored much of our philosophy here at Fanzter. Especially resonant were the final two, “Quality Over Quantity” and “Usage is like oxygen for ideas”.

The final day of the conference was headlined by a live taping of the Ruby Rogues podcast. A popular and sometimes controversial group, the RR team donned silly hats and proceed to riff on each other’s ideas and the questions from the audience.

There were dozens of sessions during the conference, ranging from page speed optimization to using Ruby to hack a Roomba. The community had been challenged to make this the most public RailsConf yet, and the intrepid members of the New Haven Ruby Brigade took up the call. They lead a collaborative effort to document each talk in near real-time via a public GitHub wiki. These notes, combined with the upcoming videos from ConFreaks, should achieve the goal of making much of the knowledge shared at this RailsConf available to everyone who couldn’t make it to Austin.

The conference closed out with a long session of “lightning talks”, short talks done rapid fire on just about any topic the speaker wanted. These were quite fun and overall went off well. Everything from Sidekiq (a new background processing library) to “hacking” the airlines’ frequent flyer programs. RailsConf went out not with a whimper but with a roar. And pot pies.

Fanzter & New Relic

As mentioned previously, Fanzter loves having great tools to help make our products better and help us maintain the creative fever. While fast laptops and big monitors are certainly nice, a less visible tool that I find indispensible is the application performance monitoring service from New Relic. It can be difficult to explain the comforting feeling of seeing my applications' performance in near real time, and then being able to slice and dice the data right down to the individual (rare) slow request.

Pretty graph

Recently, I talked with Diane Davidson of New Relic about Fanzter's use of the service and how we've grown up along with it. New Relic was kind enough to compose a case study dubbed "Fanzter scores spot on performance with New Relic". It was quite interesting on our side to reflect upon how much this tool has meant to us over the years. If a site has a hiccup, it's the first place we turn to. Often New Relic is the source of the alert telling us something is wrong. And even when things are humming along, we've got the graphs up on our screens. Knowing what "normal" is for an app is critical to understanding what has happened when performance skews outside the norm.

As Ferris Bueller said, "It is so choice. If you have the means, I highly recommend picking one up."

Fanzter Tech 2011

What's changed since my first post on the technologies that power Fanzter's products? LOTS!

We often get asked by other entrepreuners, engineers, and even former co-workers, "what's your stack?". I thought that it would be interesting to give a high-level overview of the technologies we use and how our stack has evolved over the last few years. These technolgies helped us to serve over 20M users in 2011.

We've kept the best of what's worked well for us (Ruby on Rails, Solr, Memcache), improved on a few components, and brought some fresh players into the game as well. Our playbook builds on three guiding principles: agility, simplicity, and performance. We're a small team devoted to building the world's best consumer internet products. Our tools are the equipment we field to win the day. As such, we choose them carefully and evaluate their usefulness over the long-term.

No(t just)SQL

The star new player on the team is Percona Server with XtraDB. Their motto might as well be "We don't make MySQL, we make MySQL better." We've recently migrated our primary database over to Percona Server 5.5 and the results have been quite pleasing. The changes they've made make the performance characteristics of MySQL smoother and more predictable. And the improved diagnostic controls allow us to dig in and answer questions we previously had to guess at. I highly recommend anyone using MySQL check out Percona Server.

NoSQL databases systems have had a huge year in 2011, and our team has been working with these technologies throughout their gestation and growth periods. On the NoSQL side we've got Redis and MongoDB powering components of our operations. We've shifted much of the heavy lifting in our web apps into Resque worker jobs, and our in-house analytics (or as we call it, Fanalytics) is based on Sinatra and MongoDB. We like the speed and flexibility of these new players in the data storage space, but have been careful to prioritize shipping new features to our users over engaging in the lustful pursuit of new technologies for their own sake.

Taming The Cloud

Fanzter's products have always lived "in the cloud", but how we manage the servers that run our products has changed dramatically in the last year. We've pulled in the reigns of our server management and "in-sourced" it using Chef. We've been able to combine open source "recipes" from the Chef community with the system integration tools from OpsCode to simplify our server deployment and reduce our costs. Best of all, Chef recipes are written in Ruby, our preferred language.

Not every product is served from our own servers. We've moved some sites and services to PaaS juggernaut Heroku. The page you're reading is served off Heroku as a matter of fact. Working with Heroku's platform has been very interesting. While the platform has experienced some growing pains, stability and capability continue to improve.

Fanzter continues to focus our cloud efforts within Amazon Web Services (AWS). We've added their Simple Email Service (SES) and Simple Notification Service (SNS) to our acronym soup mix. We've even released a little ruby gem to make it easier to tie the God monitoring agent to SNS. Look for more open source software from us on Github in the future.

Monitoring & Performance

Like many of our peers, we're adicted to data. Graphs, live streams, slicing and dicing to distill knowledge from numbers. In the last year or so we've nurtured this habit with expanded tools and services to help us better understand our applications, servers and users. We've upgraded our subscription to New Relic's application performance monitoring platform and licensed it for even more servers. Every new server we launch with Chef is automatically added to their recently added Server Monitoring service as well. Being able to drill down and pinpoint performance or availability problems quickly is key to allowing us to sleep well at night, and to keep our operaitonal staffing lean and mean.

Besides New Relic, we've also added to our display components. My favorite is a set of Hubot-based interactive agents in our company Campfire chatrooms to report on iOS downloads, social media interactions, and we've built a live world-map that can show different types of activity from our various products as they happen, where they happened. Finally we've added the Graphite scalable realtime graphing system to our kit. This, combined with the extremely handy StatsD system allows us to quickly add metrics to tracking without adding configuration burden.

The challenge isn't collecting the data, it's having enough LCD monitors to display it all!

2012 is going to be a huge year for Fanzter and we've got a great, fresh toolbox to work with. Sound good? We're hiring!

Streaks 3.3 - Backups

For as long as I can remember, Streaks' users have been asking for a way to back up and restore their Streaks data. Back in the old days, there were no easy ways to transfer app data to and from an app. Since Streaks doesn't rely on any kind of web service, getting and sending data was never something that was very approachable.

But alas, we've finally made your Streaks data available! By simply using the iTunes File Sharing functionality (iOS 3.2+ required), you can now attach your device to your computer, open up iTunes, and transfer your Streaks data off of your device. When you want to restore your data, just copy it back over. Easy as pie. No weird web services, no weird new UI inside the app, just simple file access to YOUR data.

Thanks again to all you awesome Streaks users, keep up the good work with your goals!

Streaks 3.2 - We ♥ Streaks Users

Streaks -- The Motivational CalendarWe have a few iOS apps on the App Store, but none make us more proud than Streaks.

Sure, we consider Streaks a great achievement in simplicity while maintaining great functionality, but its the reviews that make our heart grow. Streaks users just adore it. Not only do they love it, it's actually HELPING them.

Review after review explains how Streaks helped maintain a habit, or quit a habit. Making neat software is one thing, but actually HELPING people’s lives and health is an amazing feeling.

So today we’re making Streaks 3.2 available. And once again, we’ve added a feature that our lovely users have been begging for, a passcode lock screen.

As of today’s update, you can now keep Streaks private or keep people from messing up your streaks by adding a passcode via the settings. Once you set a passcode, anytime you launch or switch to Streaks, you’ll be required to enter this passcode.

Following up our Notes update, this is just another feature we’ve implemented thanks to the input of our users. Thanks guys!

Download Streaks 3.2 (iTunes Link)