Production Server Sysadmin Essentials from the Scout Team

Posted in Scout, Ruby on Rails Comments Comments

Cbq
CBQ
02
Feb

Deploying Rails applications has definitely become easier with the use of tools like Capistrano and Phusion Passenger (a.k.a. mod_rails/mod_rack), but really keeping them serviceable, maintainable, and always humming along can require a bit of work.

Andre over at Scout has written a fantastic guide—a checklist, really for putting a Rails or Sinatra application in production and keeping it up in tip-top shape.

Read the Production Server Sysadmin Essentials or, as Andre likes to call it: “Sysadmin Eye for the Dev Guy”.

Open-Source in Action

Posted in Open Source Comments Comments

Cbq
CBQ
24
Jan

A new client of ours had a big problem. The site they built was getting too many searches (a very good problem to have). The searches all used Andre’s geokit gem and the geokit-rails plugin to provide local results.

Even with the library’s multi-geocoder support (Google, with failover to Yahoo), the site was hitting the limits imposed by both services every day!

So, we quickly implemented a query caching mechanism that caches geocoding lookups that don’t change very regularly, saving the site from making all those API calls. But, the cool part is, we actually added this functionality to the open-source library itself, and the client’s application now directly benefits.

Several things will now happen, because we contributed back to the open-source library, instead of keeping this “addition” to ourself (and the client):

  • other developers facing this same problem can now leverage our code when they use geokit
  • other developers can now submit even more functionality, fixes or enhancements to our code, and even better support for problems we may have one day, meaning that we will eventually benefit from this too
  • our client now knows that the code they relied on us to develop now has even more developers eyeing it, making sure it works
  • our client (through us) is contributing to open-source, and can feel good about using open-source technologies, having fulfilled their part of the agreement they implicitly made, by leveraging the gains (and price) of implementing a solution based on open-source software

Truly leveraging open-source technology, when done right, can be a huge win for everyone: the client, vendor, and community.

Atlanta Startup Weekend Nov 13-15

Comments Comments

Cbq
CBQ
23
Oct

Alanta’s (3rd?) Startup Weekend is on Nov 13 – Nov 15 at ATDC.

We’re big fans of Startup Weekend for a couple of reasons:

  • the constraints—successful businesses are built on limited resources. A single weekend to come up with ideas, plan, execute, and launch a business is a daunting and fantastic lesson for anyone interested in starting a business.
  • the people—what happens when you get 15 crazy developers, 20 biz-dev folk, sprinkle in some opinionated graphic designers and some marketing know-it-alls? Sheer madness, of course! I don’t think you could build a better simulation for working with a diverse team towards a common goal.
  • the camaraderie—the business(es) coming out of Startup Weekend may not ever become the next Google (or Skribit), but the ideas and lessons learned by all are sure to make the tide rise here in Atlanta!

A very big thank you to our friends at The Kauffman Foundation, ATDC (and all the other sponsors) for their support of this Atlanta event.

Part II: We Just Undid Three Months of Dev work. Here's What We Learned.

Posted in Scout Comments Comments

Cbq
CBQ
20
Oct

We published Part 2 of our lessons learned from undoing 3 months worth of development work on Scout, our server monitoring service.

As developers, we love technically beautiful solutions. But sometimes the best features are the ones that get the job done—and prove themselves by providing real business value.

We hope you enjoy us sharing these lessons, if so: up-vote us on Hacker News and be sure to subscribe to the Scout RSS Feed or Follow Us on Twitter.

We Just Undid Three Months of Dev work. Here's What We Learned.

Comments Comments

Derek
Derek
07
Oct

Scout, our server monitoring service, has grown quite a bit in 2009.

We’ve documented 2 big lessons we’ve learned on the Scout Blog.

If you find it helpful, give us a vote on Hacker News.

Teaching Ruby on Rails

Comments Comments

Cbq
CBQ
22
Aug

At last month’s Atlanta Ruby User Group (Meetp), I gave a presentation on “Teaching Ruby on Rails.”

I’ve taught Ruby on Rails for the Big Nerd Ranch for almost 4 years now, and given on-site trainings all over the world, from Wells Fargo to the New York Times, to startups and even government agencies. I’ve also done this talk before at the first Acts As Conference (Ruby on Rails local conference in Orlando, Florida), but I have refined it a bit based on more experience teaching Rails at various organizations.

Being an effective teacher, and thus, Teaching Rails (and for that matter, any real technical programming language and framework) boils down to 4 main points:

  • Define Your Purpose
  • Know Your Audience
  • Give Relevant Examples
  • Teach How to Learn

We’re hoping to get video of the presentation up soon, but if you just want access to the slides with notes, I’ve provided them in the footnotes.

Apache Page Caching and Multiview

Posted in HowTo Comments Comments

Cbq
CBQ
04
Aug

I just wanted to post a quick note to anyone searching for problems with Rails Page Caching with Apache.

We just helped a client through a tricky issue that manifested itself through some strangely generated cached files.

The Problem

A visit to the resource:


http://example.com/articles

Would correctly generate the page:


/path/to/app/public/articles.html

Subsequent visits would load the cached page.

Read more... More

How to update a Facebook Page Status using the Facebook API

Posted in HowTo Comments Comments

Cbq
CBQ
19
Jul

For a client’s application, we needed to programmatically (without user-intervention) update the Status (Wall) of a Page for a Company. After researching the API and several guides, you would think it was just not possible..

In fact, there’s even a forum post on the Facebook developers forum on How to update facebook page status from 3rd party application where a Facebook employee explains that it is impossible (as of 2007, at least).

The good news is, it is not impossible (as of right now). Here’s how to update the Status of a Facebook Page Programmatically, through the API.

What you’ll need:
  • Ruby and RubyGems
  • A Facebook Account
  • A Facebook Page
  • A Facebook Developer Account/Access (we’ll go through setting this up)
  • A Ruby or Rails app with access to the facebooker library (either as a gem or using the Rails plugin).

Update: As pointed out in the comments, publishing through Facebook using the method described below does place content on the fan page, however, it is not displayed in any user’s feeds or streams, which makes it not quite so useful. We have since opted to go with the uber-cool ping.FM service and we even wrote a little ping.fm ruby wrapper library for their API.

Read more... More

Rails Rumble at Highgroove HQ

Posted in Atlanta Comments Comments

Cbq
CBQ
10
Jul

If you’re thinking about doing this year’s Rails Rumble, Highgroove HQ in Atlanta (map) is offering up our office space for any teams in the Atlanta area for the competition (Aug 22 – Aug 23).

Highgroove has a team, and we know of a few more folks seeking teams. Ping us if you’re interested in joining or forming one. Registration ends soon (this weekend)!

Writing Ruby Extensions in C the Highgroove Way

Posted in Open Source, What We Wrote, Presentations Comments Comments

Matt todd
Matt Todd
10
Jul

Trying to handle image manipulation, creating PDFs, or in-memory caching in pure Ruby is like trying to win the Tour de France on your hipster single-speed bike. The single-speed works 90% of the time, but when you have demanding performance requirements, it’s not good enough. Many popular Ruby libraries, such as MySQL/PostgreSQL, RMagick, and most of the webservers Ruby applications are deployed on (like Passenger, Mongrel, and Thin), harness the blazing speed of the C language and libraries to handle the heavy lifting and performance-intensive business that Ruby can’t keep up with on its own.

In some of my recent work, I had the opportunity to delve into and expand on a Ruby extension written in C for looking up geographic information based on IPs. This library was vital to one of our client’s projects that has immense performance requirements without the possibility of full request caching. By utilizing the existing GeoIP C library for accessing their special in-memory binary database, we were able to keep up with the demand the application would be seeing.

As is common at Highgroove Studios, along with making sure our contributions to the library were open sourced, I took the lessons and experience gained from this unusual endeavor and presented them to our local Ruby User Group here in Atlanta. I focused more on exposing the bridge between the Ruby and the C environments and understanding the internals of the Ruby language from a C standpoint. However, armed with this knowledge, any Rubyist is able to open up most any Ruby extension or even the Ruby language implementation itself and understand what’s going on. My goal was to get the developers over the initial hurdle of being able to read the code and understand it enough to investigate further.

Personally, I gained from this experience a better appreciation for the real beauty of the Ruby language and the effort required to make it as fluid and dynamic as it is as well as having a more thorough understanding of the internal workings of the language. Working this close to the language core has also made a difference on my Ruby style, both in trying to fight the language less but to also use it more efficiently and effectively.

For more information, check out the presentation slides1 and some of the C examples I wrote for the presentation2. Also check out the GeoIP I contributed to which inspired this whole adventure3.

1 http://www.slideshare.net/maraby/writing-ruby-extensions

2 http://github.com/mtodd/ruby-c

3 http://github.com/mtodd/geoip

Older posts: 1 2 3 ... 15