austin entrepreneur

Announcing Clientperf: Simple Client-Side Rails Performance

Posted in Uncategorized by efalcao on June 21, 2008

I’m giving a talk at Austin on Rails next Tuesday on applying the 14 rules of high-performance websites in the typical rails mongrel/nginx stack, the main idea being to focus on some of the important implementation details when it comes to client-side performance optimization.

As I was planning, I realized that there was no simple as in the we’re-all-spoiled-with-rails simple way to measure client download times in production. Now, there is clientperf. It’s just a start, but decent enough to benchmark the actual client performance impact of any optimizations you make:

How it works

It injects javascript into the page that takes a timestamp at the top of the page and at the bottom of the page. Once the browser is done downloading, evaluating and rendering all assets, clientperf makes one last image request to your server with the start time, end time and the URL. Piece of cake.

How to install

gem install clientperf
clientperf /path/to/rails/app
rake db:migrate

and that’s it!



Thanks to Howard Rauscher for the javascript. Thanks to FiveRuns dev team for helping me learn neat things.

Enjoy and please let me know about bugs.


Unit Testing!

Posted in Uncategorized by efalcao on October 19, 2007

I think I’ve officially become a fan of unit testing. Last night I was writing some code while trying out the upcoming rails 2.0 and decided to write some unit tests. I have been writing rails code as a hobby and then with Evenlevel for at least a year now and have always avoided the automated testing. No More!

Why I Avoided It:

In the beginning, because I was too busy the learning the rails core. Lately, because I felt like it was a waste of time.

Why I Was Wrong:

You’re gonna have to test anyway. I used to spent time in the rails console testing out my models. How stupid. I wrote 12 tests last night. It took less time than manually testing and now I have a small but sure-to-grow suite of tests to perform sanity checks in the future.

¬†What’s Next:

Gotta learn functional and integration testing now.

Tagged with: , ,

What I Learned

Posted in Uncategorized by efalcao on October 16, 2007

I starting thinking about an Evenlevel post-mortem blog post. Each day that goes by it looks like we’re going to be able to relaunch with a different twist on things, so technically a post-mortem is not appropriate. Lets just call this “what I’ve learned…so far”

If you want to learn at the fastest pace in your life, start a company. I was one of the earliest employees at my previous job, and I learned so much; but I’m thinking that nothing holds a candle to starting a company yourself.

Ruby on Rails is developer bliss.

If you want to have fun coding, enjoy elegance and simplicity, there is no better framework.

Rails can also help you deliver a web application in less time

I can accomplish things in a minute with Rails that used to take me a whole day. It’s amazing how simple it is to build your data model and scope out all your controllers. The most time consuming part for me is still front-end (html + css) coding (actually, not so much the code, just settling on something that looks decent and is usable).

Outsource your IT infrastructure

Evenlevel is hosted on theplanet. This is fine, but for the next iteration we’re going with Joyent Accelerators. I spent too much time worrying about DNS servers, backups, etc. No More. Not only that, but Joyent costs less. I realize we weren’t going out and buying servers and colocating, but that was something we were going to eventually have to contend with. I really appreciate how you can scale with Joyent easily from day 1 (Just add more accelerators and BIG-IP load balancing).

Bootstrapping is really really hard

Save money or raise seed capital then quit your job. It is way too hard to burn the midnight oil or be a weekend warrior: Everyone suffers.

Tweaking performance pays off

Within a day of setting up nginx with gzip compression and page caching, Google starting crawling 10 times more of our pages. Two days after that, our search traffic quintupled. Not only did we reduce our bandwidth utilization and give our users a more enjoyable experience, but Google started loving us within a day.

Tagged with: , , , , ,