We've merged with the Big Nerd Ranch! Learn More

our blog

The Highgroove blog. Sit pit-side with us to learn how we work. Sometimes technical, sometimes business-oriented, but always focused on simple solutions.

Posts by the author derek

You are browsing posts by derek. Check out all posts on our blog.

    by derek

    Looking for insight? Skip the coffee

    Published August 11, 2008 tagged with: Keeping It Simple

    It hurts – it feels like giving up. You’re stuck on a problem and do the last thing that makes sense – stop thinking about it. And the minute you forgot about the problem the solution comes into focus. Sometimes it’s a shower, for others it’s a long walk or playing a video game.

    The Eureka Hunt – Why do good ideas come to us when they do?, an article by Jonah Lehrer published in the the July 28th issue of the New Yorker, covered scientific research on moments of insight. There were a couple nuggets on provoking insights:

    Simmer down the focus.
    Avoid things that help you focus (like caffeine).

    If you’re in an environment that forces you to produce and produce, and you feel very stressed, then you’re not going to have any insights…Concentration, it seems, comes with the hidden cost of diminished creativity.

    John Kounious, Cognitive Neuroscientist, Drexel University

    Set the alarm clock a few minutes early

    The drowsy brain is unwound and disorganized, open to all sorts of unconvential ideas. The right hemisphere is unusally active.

    Get in a good mood

    Jung-Beeman’s latest paper investigates why people who are in a good mood are so much better at solving insight puzzels (On average, they solve nearly twenty per cent more C.R.A. problems.)

    by derek

    Say hello at RailsConf

    Published May 28, 2008 tagged with: Ruby On Rails Scout

    Andre, Charles, and myself leave for RailsConf Thursday.

    If you want to discuss Rails monitoring, Javascript, the business of Rails, biking, camping, or dogs, talk to us!

    I’m the tall, skinny scarecrow-like figure with the big head. Charles looks like he might belong to a hipster boy band. Andre…well he looks completely normal. Just look for the scarecrow and the hipster – Andre will be the other one in our group.

    by derek

    Doing it your way

    Published April 23, 2008 tagged with: Keeping It Simple Business

    You need to be in the Bay Area. You shouldn’t be in the Bay Area.

    You need to work crazy hours. You shouldn’t work more than 4 days a week.

    You need to raise as much money as you can. You shouldn’t raise money.

    The topics above never seem to get old and I think it’s unfortunate.

    Just run your business the way that feels right. The majority of your time during the week is spent working. Whether you’re working for yourself or for someone else, if you’re not working the way you want to, it won’t last.

    by derek

    Scout's Grand Opening

    Published April 15, 2008 tagged with: Scout

    Scout, our server monitoring and application, is now available for public consumption.

    Scout is for the 95% of us that either gave up on installing & maintaining monitoring applications or used the old fashion monitoring method – an email from a customer when your web application is down. I’m not calling you out, it’s simply that monitoring used to be more painful than not monitoring. We think Scout changes that in a beautiful way.

    Scout makes it easy to bring all of your data together – from the monitoring standbys (url monitoring, server load, memory usage, etc) to modern day analytics (the number of user accounts on your web application, unique visitors, inbound links, etc). It’s all done through an easy plugin system that you configure through our web interface – you never have to login to each of your servers and install or edit monitoring scripts. You’re not limited to the plugins we built – you can roll your own with a couple of elegant lines of Ruby code.

    by derek

    What's different in this picture?

    Published April 02, 2008 tagged with:

    We’ve used Scout for several months internally. Along with Colloquy, Google Docs, Basecamp, and Skitch, it’s one of the few apps I use every day.

    We think this makes Scout a better service – we’re not watching Scout from a third-person perspective. However, sometimes things sneak through – the type of things that don’t bother you after using an application for months but can be hurdle to others when getting started.

    There were 2 nagging issues that stood out in the Scout user experience. I’ll cover how I addressed the first one here.

    → Read More

    by derek

    Wow!

    Published March 18, 2008 tagged with:

    We thought you’d like Scout – but we didn’t expect to reach our 100 account limit in about an hour and a half.

    We’re already collecting feedback and gearing up for the next launch.

    Don’t worry if you didn’t get in this time – we’re collecting lots of feedback for our full launch.

    If you’re need some more help getting Scout configured, have some feedback, want help writing a plugin, or just want to chat about Scout, drop by our public chat room or forums.

    Thanks, and stay tuned for the launch!

    by derek

    Graphing Rails Performance With Scout

    Published January 29, 2008 tagged with: Scout

    We’re using Scout, our monitoring and reporting application, to graph the performance of our Rails applications and servers.

    I’ve uploaded a video that looks at how one of our applications, PlaceShout, impacts the server load and Mongrel memory usage. I also compare PlaceShout’s footprint to another server.

    Watch the video:
    Graphing in Scout (1 min 47 sec)

    Past Videos on Scout:

    Installing the Scout Client (1 min 39 sec)

    Installing the Rails Requests Plugin (1 min 55 sec)

    Signup for our launch email list

    We’ve started emailing invites to Scout. Signup on our homepage, and we’ll give you access to Scout before the public launch.

    by derek

    Making it easier to eat healthier

    Published January 28, 2008 tagged with:

    Better = more work. Tools that “make better easier” are rare.

    I heard a radio advertisment for Safeway’s FoodFlex Program this morning. When you purchase groceries at Safeway and use your Safeway Card, Foodflex analyzes your purchases and suggests healthier alternatives. The program is accessed through the Safeway website.

    Dieting often means counting calories. It makes dieting more work than not dieting. Foodflex can do the counting for you. Sure, Foodflex can’t track meal-by-meal, but you get a reasonable overview of your eating habits based on your grocery purchases. A couple of healthier suggestions a month is an easier, more sustanable path to eating better than religiously counting calories.

    by derek

    Web App Service Plan Subscriptions

    Published January 22, 2008 tagged with:

    We’re working on our subscription plans for Scout. While working on the plans,
    we took a look at what other subscription-based services are charging for access.

    There are some definite similarities, but a couple of peculiar differences.

    Below is a quick sampling of what we found:

    Service

    Plan Options*

    Credit Card Required?^

    Free Plan Generosity

    Basecamp


    Project Management

    Free
    $12
    $24
    $49
    $99
    $149

    Yes

    Gives you a solid overview. You’re walled into 1 project, can’t upload any files,
    but you can invite unlimited people, create todos, send messages, etc.

    Highrise


    Contact Management

    Free
    $12
    $24
    $49
    $99
    $149

    Yes

    Very limited. 2 users, no file storage, and a single case (a way to group items together). It’s difficult
    for us to judge it unless we’re all using it to share information, and we
    can’t do that with the free plan.

    BlinkSale


    Invoicing

    Free
    $12
    $24
    $49

    Yes

    Very nice. Only major limitation is 3 invoices per-month.

    FamSpam


    Family email, photo gallery, and archive

    Free
    $12
    $24
    $49

    No

    Free Plan is pretty open – 4 family members, 10MB of storage, 100 photos.

    Wufoo


    HTML Form Builder

    Free
    $9
    $24
    $69
    $199

    Yes

    It’s enough. You’re limited to 3 forms, 3 reports, and 10 fields per/form. No file storage.

    FogBuzz on Demand


    Bug Tracking

    $25 per/user

    No

    N/A

    CrazyEgg


    Web Analytics Visualization

    Free
    $9
    $19
    $49
    $99

    Yes

    Very generous. Track 4 pages, limited number of visits. Stats are updated in real-time, limited tracking and sharing.

    * - All prices per/month
    ^ - Only applies to paid plans
    

    All of the services but BlinkSale and Wufoo are dramatically more useful with more people. Why then does Highrise’s
    free plan only allows 2 users (initially it was a single user)? 37Signal’s older product on the list, Basecamp, has unlimited users on
    the free plan.

    37Signal’s pricing model is widely copied (free/$12/$24/$49).

    FamSpam and FogBuzz on Demand allow you to signup for a paying plan without supplying a credit card. I assume after 30 days you need
    to enter credit card information. It’s an interesting idea because sometimes you don’t know if you need an advanced feature until you try it. The
    tricky part about this strategy is handling accounts that don’t decide to pay. Do you suspend all functionality or just parts of the application
    that paid plans can’t access? How to you handle access to data they may no longer have access to on a free plan?

    On the surface, CrazyEgg appears to be the most generous with their free plan. Many people may only want heat maps on a couple of pages anyway and
    how often the data is gathered may not be a major factor. There are a lot of people that could use their free plan perpetually.

    Being too generous isn’t necessarily a good thing. It takes time and resources to support free accounts, and that can take away from
    enhancements and service offerings to paying customers. Blinksale may have the best balance. You get most of the features, and if you’re willing
    to pay for an invoicing solution, you’re probably sending more than 3 invoices a month.

    by derek

    How popular are you? Find out with Scout

    Published January 14, 2008 tagged with: Scout

    Tracking the results of your blatant self-promotion campaign can be a time-consuming effort. You might be using Google Analytics for web traffic and FeedBurner for blog subscribers. You’re probably checking link referrals. You’re querying the database for usage statistics (user signups, logins, etc.), etc.

    Scout is an honest friend that gives it to you straight. Our friendly retriever will track, mash, and graph all of this data in real-time.

    For example, below is a graph generated by Scout. It shows the FeedBurner circulation of this blog (in red) vs. unique visits from Google Analytics on our Highgroove homepage (in blue):

    blog_vs_highgroove.png

    It doesn’t look like there’s a huge correlation there. What about unique visitors on PlaceShout (in red) vs. unique visitors on our Highgroove site (in blue)? Data via Google Analytics:

    placeshout_vs_highgroove.png

    There’s a correlation there. Traffic to PlaceShout appears to drives traffic to Highgroove.

    Currently, 3 Scout Plugins exist for grabbing external data:

    Seeing this data is extremely useful for answering questions that take quite a bit of work to find out manually (and can’t be updated in real-time):

    • How many of our unique visitors create a shoutout on PlaceShout?
    • As the number of sites linking to us increases, how does this impact traffic on our site?
    • How is traffic impacted when we publish our email newsletter?

    The great thing about these reports is they don’t require any updates – Scout continually grabs new data and updates the graph.

    Signup for our launch email list

    We’re launching Scout this winter – click here to signup for our launch notification. We’ll email that list before the public launch.

    Get Immediate Access to Scout

    I’d like to create a plugin to report back the number of people linking to a url on del.icio.us, but haven’t had time yet. Want to create this plugin? Shoot me an email at (derek at highgroove dot com) and I’ll give you immediate access.

    Past posts on Scout:

    by derek

    Get notified of slow Rails web requests with Scout

    Published January 07, 2008 tagged with: Scout

    When something bad happens you want to find out about it as quickly as possible.

    You’re probably notified of uncaught exceptions. What about slow web requests, which can be just as annoying to a user?

    Find about about slow web requests (and what might be causing them) in near real-time using Scout and the Ruby on Rails Request Monitoring Plugin.

    Here’s how it goes down:

    1. Install the Scout Client   watch a video (1 min 39 sec)

    Picture 8.png

    2. Install the Plugin   watch a video (1 min 55 sec)

    Picture 11.png

    …that’s it – you’re no longer a performance slacker.

    3. Scout reports back data

    Every 10 minutes, Scout collects information:

    Picture 12.png

    If you have a slow request, an alert is generated. You can view the offending requests and their request times:

    Picture 14.png


    View Web Requests on a Graph

    You can easily graph this data as well with Scout’s built-in graph builder:

    Picture 16.png


    Compare to other Rails applications

    …but that’s not all. You probably have multiple Rails applications. You can compare their performance on a single graph as well:

    Picture 17.png


    Look for trends against other data

    …we’re not done yet though…how about comparing the average request time vs. the size of the mongrel threads through the Process Usage plugin?

    Picture 18.png

    Since it’s easy to plot different data stats on Scout, you can quickly rule out possible reasons for slow performance. That’s half the battle.

    Signup for our launch email list

    We’re launching Scout this winter. Signup on our homepage, and we’ll give you access to Scout before the public launch.

    by derek

    Online Banking APIs

    Published January 02, 2008 tagged with:

    I’ve been researching ways to consolidate bank account information into a single, automatically updating view. There are a couple of new web-based options – most notably Wesabe and Mint – but those have a consumer focus. I’m more interested in viewing trends in our business – a real-time financial dashboard.

    Open Financial Exchange (OFX) Standard

    In January of 2007, the Open Financial Exchange standard was announced by Microsoft and Intuit. Many financial institutions provide support for a portion of the standard, namely the portion used by Quicken.

    The best list of OFX connection settings is here. A bank information generator is also available that retrieves connection data from the Microsoft Money website.

    Retrieving OFX data

    Once you obtain the OFX connection details for a financial institution, you can then connect to it to retrieve financial transactions. Getting to this point often isn’t straight forward. For many banks, the online login information isn’t the same as the data needed for the OFX connection. Some banks, like Wells Fargo, charge a monthly fee for OFX access. Finally, chances are your bank’s customer support line won’t know anything about OFX. Your best bet is to ask how to enable Quicken access (which uses the same OFX standard).

    There are a couple of libraries available for retrieving OFX data:

    • LibOfx is the library used by GnuCash to connect with banks online. Full documentation is available, but I didn’t find any tutorials for getting started.
    • OFX for Ruby is similar to LibOfx, but obviously in Ruby. There are a couple of examples included in the library download.

    In general, retrieving this data isn’t a straight forward process. OFX connection details are scattered, some banks haven’t made it easy to enable OFX, and there isn’t much information available on building an OFX client. It’s definitely primitive.

    Additionally, OFX transactions can be cryptic – a large part of Wesabe’s value is in its ability to provide better transaction formatting.

    How are others doing it?

    Wesabe and Mint are 2 fairly new web startups that automate the process of collecting account transactions. How they collect the data is very different.

    With Wesabe, you record a Firefox browser session, walking through the download process. You can then re-run the session and Wesabe then updates your account data using the script.

    Mint provides the most seamless experience. You simply provide your bank details (even PayPal works) and it grabs your transactions. Mint uses “Yodlee” to actually connect with financial institutions. Yodlee has been doing this for a while – they have a service called MoneyCenter that is remarkably similar to Mint – it actually has more features but lacks Mint’s visual appeal. My guess is Yodlee charges a pretty hefty licensing fee.

    The Future

    I wouldn’t bet on banks making it any easier to automate data retrieval. Erick Schonfeld of Techcrunch recently wrote a post that covered the API landscape very well – which types of companies are most likely to offer APIs and why companies that push APIs are very careful with what they are actually opening up. Opening up a core component of your business can spur some pretty dramatic changes – it will take a younger, upstart bank to spur progress.

    While it’s not here yet, I’d pay for a service that:

    • Made connecting to financial institutions as easy as Mint (just a user name and password – no OFX connection details needed)
    • Scrubbed transactions like Wesabe
    • Published an API for retrieving this data that didn’t require a customer account (in other words, the ability to query for bank account transactions from an account not directly setup through the provider)

    by derek

    See Scout Run - 2 screencasts added

    Published December 26, 2007 tagged with: Scout

    I’ve added 2 videos to the Scout homepage – they demonstrate 3 things:

    • Installing the Scout client on a remote server is almost too fast
        Watch the video (1 min 39 sec)
    • One-click plugin configuration (I’m installing the Ruby on Rails Request Monitoring Plugin, so if you’re a Rails developer, there’s an added bonus)
        Watch the video (1 min 55 sec)
    • My awkward narration voice (I think my voice actually cracks on one of them…I assure you, I am not 13 years old).

    If you’re looking for an easier way to monitor your servers and web apps, check out the videos. There’s a launch notification form on the Scout homepage as well – we’ll email people on this list before publically launching Scout.

    by derek

    Making local reviews meaningful

    Published December 18, 2007 tagged with: PlaceShout

    One issue we face with PlaceShout, our short-form local reviews site, is that many of the shoutouts may not be relevant to you. If you haven’t been to Nihon in San Francisco, you can’t agree or disagree with Natasha’s shoutout: “Swanky whiskey bar/restaurant. Food was good-small plate Japanese and sushi”.

    We recently implemented “Shoutouts You Might Be Interested” functionality to make it more relevant.

    Picture 2

    Nightly, we scan our database looking for places you’ve been. We find any shoutouts created at those places. These shoutouts are displayed on your personalized homepage, and you can quickly agree, disagree, or pass on each of the shoutouts. There’s a great chance you’ll have an opinion on these places since you’ve already voiced your thoughts on each of them in the past.



    Once per week, we email 3 of these shoutouts to you. Directly from the email, you can agree, disagree, or pass:

    Picture 3



    So far, it’s been very successful. 38% of users have voted on a shoutout from an email. This increased the number of votes on shoutouts by 27% (real-time voting from Scout):

    Picture 6



    It’s had a great impact for 2 reasons — it keeps our users informed of activity at places they’ve been and it makes browsing and searching PlaceShout better. The most accurate (and least accurate) shoutouts now have significantly more votes.

    by derek

    Planning vs. Smart Decisions

    Published December 13, 2007 tagged with: Business

    In just 4 years, Detroit Tigers General Manager Dave Dombrowski turned one of the worst franchises in professional sports into one of the best. I thought this portion of a recent Detroit Free Press column really summed up why:

    Early in Dave Dombrowski’s tenure as Tigers general manager, I asked him about the importance of having a clear plan, which I thought was lacking under the Randy Smith regime. His response was telling — more telling than I realized then. He shifted the conversation away from the word “plan.”

    “It comes down to making good decisions,” he said.

    by derek

    Hands down, the best cafe I've experienced - and the catch

    Published December 06, 2007 tagged with: Business

    Last week, I had the single best neighborhood cafe experience of my life. Amazing service. Gorgeous interior. Spotless. Plenty of unhidden power outlets. A luxurious back patio. Reasonable prices.

    Axis Cafe in the Potrero Hill neighborhood of San Francisco seemed too perfect. Like how an urban cafe might feel in an over-the-top daytime soap opera. Later, I found out that Axis Cafe was affiliated with re{NEW}, a ministry of Christian City Church San Francisco. 100% of the cafe’s profits support the Axis Community Project (ACP), which sponsors programs for the families of Potrero Hill.

    My favorite high school teacher preached: “show, don’t tell.” Axis Cafe does a great job of this – I couldn’t find any mention of the relationship at the cafe and I was never approached about anything related to the church, but the entire experience reflects very well on the people in charge.

    It’s similar to what Jackson Fish Market is doing with their suite of small web applications. Each of their applications is sponsored by a single brand, but the brand isn’t force-fed to you. It’s joining you on the experience. The well-executed web apps reflect highly on the brands that fund the web sites.

    Advertisements on many popular web sites seem to shout “hey, look at me”. It’s to everyone’s advantage to see less invasive forms of advertising work.

    BTW, If you are in Atlanta and looking for something similar, I’d suggest Octane. It’s a frequent work location for Charles.

    by derek

    Breaking away from the accepted path

    Published November 29, 2007 tagged with:

    Cormac McCarthy, author of No Country for Old Men, is a man that isn’t afraid to break away from the accepted structure of English language:

    • He doesn’t use quotation marks
    • He doesn’t tell you who is talking
    • Say goodbye to apostrophes
    • Occasional long sentences joined together by “and”

    In a previous novel, when a Spanish-speaking character spoke, he didn’t translate to English.

    His style makes the story of a drug deal gone bad in a remote desert location come alive. An author going through the motions might write long passages describing the scenery, the characters motives, their backgrounds, etc – but that doesn’t capture the confusion that would really occur in this situation.

    It struck home to me when thinking about building software – sometimes we go through the motions when solving a problem. We don’t focus on the problem itself. It’s asking ourselves “How can I build this RESTfully?” before really thinking about the end-user’s interaction. Perfect technical execution of an inferior solution is worse than breaking a pattern to better solve a problem.

    by derek

    Those "wow, things are changing" moments

    Published November 26, 2007 tagged with:

    This American Life recently profiled Harold Washington, the first black mayor of Chicago. The episode featured one of the most stiring sound bites in my recent memory – a portion of a debate that served as Washington’s coming-out party. It was easy to imagine myself listening to the minute-long segment on the radio and knowing instantly that whether I liked it our not, this longshot is going to win.

    I love these moments – when I hear/see/do something new, and know instantly that I won’t return to the old way. They are the reason I build web applications. Getting an email from someone that used one of our applications and experienced this is amazingly gratifying. It’s easy to forget that this happens regularly for many of us in the web industry, but other professions experience this much less frequently.

    Why do you build web applications?

    by derek

    This week in clipart

    Published November 15, 2007 tagged with:

    Picture 4.png

    When getting a shuttle to the airport, I came across this great idea immortalized in clipart.

    by derek

    Facebookin' with Ruby on Rails

    Published November 12, 2007 tagged with: Ruby On Rails Business

    Andre and I recently finished the initial launch of Placeshout’s Facebook application. There are several “getting started” tutorials available on building Facebook applications with Ruby on Rails, but there were quite a few issues we ran into that are beyond a “How To” blog entry.

    If you are building your first Facebook application, expect very slow going at the start. I’d take your time estimate and double it. Here’s why:

    • It takes some time to grasp Facebook in a multi-developer environment. You need to create separate Facebook applications with different names using different tunneling ports. You’ll also need to create several test accounts. Inevitably, I installed one application when I meant to install another. Getting our version control system setup for our development boxes and production system took some time.
    • Understanding how Facebook handles sessions. We ran into several issues – knowing when to require an app install vs. a login, handling an app install redirect inside an iFrame application, etc.
    • We ended up using a combination of Rails’ #respond_to and unique Facebook-only actions to handle requests. Many of our pages were quite different in Facebook, and trying to fit format-handling in the existing actions only made things more confusing.
    • Testing was a pain. Because we integrated with Placeshout.com, we needed to integrate user accounts. Planning and testing integration steps took quite a bit of time. Facebook and rFacebook have some testing conventions, but that’s like saying that because the speedometer in my Ford Escape goes up to 120 MPH, it can go 120 MPH.
    • The rFacebook gem and plugin were our weapons of choice. I don’t have any complaints. We modified several pieces of code to fit our application – including creating a user and installing the application, but that’s not out-of-the-ordinary. The rFacebook team has done a solid job in a short amount of time.

    In the end, it felt a lot like traveling to a non-English speaking country – at the start it’s difficult to get basic things accomplished. Once you get in a groove though, you enjoy the scenery and forget that at one time, you didn’t throw up when drinking tap water.

    by derek

    The NDA Litmus Test

    Published June 21, 2007 tagged with: Business

    There’s a very easy way to ensure that your project won’t be quoted by a quality, not-starving-for-work web development firm: make the firm sign a Non-Disclosure Agreement (NDA) before you provide an overview of the project.

    We care about confidentially and security, but we don’t sign an NDA until we hear an overview of the work. There’s too great of a chance that something you want done is currently living in one of our current projects. We don’t want to get involved in a legal gray area.

    So now for the real reason.

    In my life, I’ve never overhead an original, compelling idea that I could act upon better than the person who thought it up (this doesn’t discount the idea that I’m just not as smart as everyone else…but that’s another blog post).

    If Mark Twain gave me an outline of The Adventures of Huckleberry Finn and said “there’s everything – go ahead and write it!”, the book would have been better suited for kindling than English class. I don’t have the skills to put together a great novel (let’s be honest – I don’t have the skills to write a poor novel).

    Smart people know this. It’s not the idea – it’s execution, domain knowledge, and leadership.

    by derek

    (safely) Playing with your production data

    Published May 17, 2007 tagged with: How-to Ruby On Rails

    Sometimes our Ruby on Rails apps work perfectly with test data, but when they go to production, errors creep in. Debugging errors on a production server is a pain and a bit dangerous.

    Here’s what we do to quickly and safely debug issues on our production servers:

    1. Add the following capistrano task to create an SQL dump of your data. If it’s a large database, it may be worthwhile to compress the SQL dump as well.

    desc "Exports the production db to the home directory of user"
    task :db_dump, :roles => [:app, :db] do
      run("mysqldump -u #{database_username} --password=#{database_password} #{application}_production > production.sql")
    end
    

    2. Create the following rake tasks to grab database dump and import the data locally.

    namespace :db do
      desc 'Grab a dump of the production database on the server and places it in db/production.sql.'
      task :get_production do 
        `cap db_dump`
        `scp DEPLOY_USER@SERVER_NAME.slingshothosting.com:production.sql #{RAILS_ROOT}/db/production.sql`
      end
      
      desc 'Imports the database dump of file db/production.sql into development.'
      task :import do 
        `mysql -u root app_name_development < db/production.sql`
      end
      
      desc 'Grabs a dump of the production database from the server and imports the data into the local development database.'
      task :get_import => [ :get_production, :import ]
    end
    

    3. Install the Firefox plugin Server Switcher to make it easy to switch between the production and local server in your web browser.

    4. Disable mail in your development box – it’s not a good feeling when you realize you’ve emailed several thousand users while testing out a newsletter script.

    config.action_mailer.delivery_method = :test
    

    by derek

    Turning Conservation Into Loyalty

    Published April 17, 2007 tagged with: Business

    At the Bovine Bakery in Point Reyes Station, CA, there’s a custom shelf on the wall that holds a collection of coffee cups. I thought it was a nice decoration, but then I read the posted notes – people can leave a coffee cup and use it instead of a throw-away paper cup. It’s a win for the Bovine Bakery, the environment, and the Point Reyes community.

    Why I love this idea:

    • Less paper cups in the trash
    • The coffee is $0.25 cheaper when you use your own cup
    • I’d be more likely to get my coffee from a cafe where I leave my coffee cup
    • It’s a great decoration – the coffee cup is like an online avatar. My favorite is the metal coffee cup in the bottom right.

    by derek

    Utilizing the Callback

    Published February 16, 2007 tagged with: Business

    Recently I moved from San Mateo to San Francisco. Like any move, it involved a couple phone calls to utility companies.

    I was really impressed with Pacific Gas & Electric. When a company has a dominating position in their industry, it’s pretty easy to see why customer service can drop down the priority list.

    When I called PG&E to setup service at my new address, the call started like any other – the typical “we are experiencing an abnormally large call volume” message. But after that announcement, PG&E offered to call me back when an opening occurred.

    It worked perfectly – I received a call a bit later and was instantly connected to an operator.

    I’d argue that 99% percent of the time, it’s people and not technology that result in better customer service (here’s a great story about Best Buy and cookies). It’s great to see it work the other way.

    Call centers are a particularly interesting area. They won’t overstaff to just handle the peak times, but the service still needs to be adequate when things get busy. PG&E’s callbacks work great, but I’m also excited to see if companies like liveops can make an impact as well.

    by derek

    Charles Brian Quinn to lead Big Nerd Ranch Rails Class

    Published September 26, 2006 tagged with: Ruby on Rails

    John Adams. George Selkirk. Steve Ballmer. Charles Brian Quinn.

    The people above have something in common – they followed in the footsteps of an icon. For Highgroove Studios’ Charles Brian Quinn, it’s taking over Ruby on Rails training at Big Nerd Ranch from David Black, author of Ruby for Rails and leader of RubyCentral, and Marcel Molina Jr., member of Rails core and part of the team at 37Signals.

    If you’re looking at diving head-first into Ruby on Rails, this is the way to do it. The class, which is being held February 12-16, gives you a chance to be totally immersed in Ruby on Rails for a solid week (plus stay at a great hotel and receive some gourmet meals – don’t worry, Charles doesn’t do the cooking).

    Besides his great teaching ability and fun personality, one of the special things Charles will bring to the training class is real-world experience. He’s not dabbling in Rails – Charles has been building, deploying, and maintaining Rails applications for over a year at Highgroove Studios. If you’re looking for the complete Rails picture, Charles will give it to you.

    Ruby on Rails Bootcamp

    by derek

    Top 5 Rails Stories of the Week ( 9/4 - 9/10)

    Published September 11, 2006 tagged with: Ruby On Rails

    1. Java hearts Ruby

    The JRuby team gets assimilated into Sun. So what does JRuby do? Check out Jeremy Voorhis’ Hello World application and this presentation.

    2. J2EE RESTful support – not for the faint of heart

    Compare RESTful development in Java with Ruby on Rails. Wow – no wonder I’m happier getting up in the morning now. Scraped from Labnotes (pun intended).

    3. WebStats: Predator Edition

    In the Schwarzenegger flick Predator_, the alien could only see infrared light. Turns out it’s also useful when reviewing usage patterns on your website. Checkout the latest useful Rails application, CrazyEgg.

    4. Rails 1.2 Preview

    Six kids, and still has time for Rails. Bob Silva takes a look at what Rails 1.2 brings to the plate.

    5. Finally – an elegant way to test your HTML code

    Assaf Akin becomes the first Ruby news maker to make our list twice in one week. The prize – with food, water, and all vaccinations – will arrive tomorrow. Take a look at Assaf’s assert_select when you need to check your HTML output in functional tests.

    by derek

    Top 5 Rails Stories of the Week (8/28 - 9/3)

    Published September 03, 2006 tagged with: Ruby On Rails

    Here’s a look at the most thought-provoking Ruby on Rails news items of the week as determined by the always unbiased (but not beyond bribes) team at Highgroove:

    1. The Enterprise Rails Debate

    The best result of the latest “is Rails/Ruby ready for the enterprise debate” (see Joel Spolesky’s and DHH’s original cross-fire) was Justin Gehtland’s clarification of enterprise software. Frankly, Highgroove wouldn’t be in business (and growing) if Rails wasn’t a good choice in building software for the enterprise.

    *2. Ruby God Jamis Buck emerges from Idaho, releases Capistrano 1.9.1
    *

    Everyone’s favorite Rails Deployment tool, Capistrano, gets a major update. Jamis also clears up any confusion on the future development of Capistrano.

    3. Are Mocked Models the New Testing Trend?

    RubyConf Speaker Kevin Clark looks at a way to speed up your tests in an article on mocking models rather than using fixtures. We’re Test-Driven-Development (TDD) addicts here (it’s true – my recovery group class meets tonight), and faster-running tests is perhaps the greatest way to encourage TDD. Fixtures are great, but when refactoring is needed on a large application, they can be a major pain.

    4. Class Variables in Rails

    CNET Rails Guru Chris Wanstrath takes a look at class variables in Ruby and in Rails. Class Variables in Rails are often a constant source of confusion for many developers – take a look at this post for some clarity. James thinks Chris should have come right out and said: “Don’t use class variables. Use instance variables of the class instead.”

    5. Embrace the CRUD (sounds like a good name for a t-shirt)

    This is a little old, but worth noting. Scott Raymond gives a full report on the process of embracing the CRUD and becoming RESTful with a report on refactoring IconBuffet.com to REST. This is the most useful article we’ve seen because it walks through the conversion process rather than starting from scratch.

    by derek

    Hot Off the Presses

    Published September 02, 2006 tagged with: Clients

    I’ve been lucky enough to work on many client projects that make me (and my friends) generally excited. Blurb, a Highgroove client and a recently launched Ruby on Rails application, is one of those projects.

    Blurb makes it look like your portfolio, travel journal, fiction novel, or any other creative print piece belongs in a Borders bookstore with its own SKU. I’m already working on my first book, and I’m confident my creations will be some of the most unique Christmas presents this year (I sure needed it – I don’t even want to talk about my gift-giving history).

    Hats off to to Konstantin Gredeskoul, Brent Baker, and the rest of the Blurb team on a job well done.

    by derek

    Chicago's Urban Planning Gets Results the Agile Software Way

    Published August 22, 2006 tagged with: Agile

    There’s plenty of ways to scope and develop a web application. But frankly, it’s not that different than planning and implementing any other type of project. A recent San Francisco Chronicle article looked at Chicago and how rapidly the city moves on urban initiatives compared to San Francisco. The similarities between Chicago’s city planning philosophy and agile software development are uncanny.

    Former San Francisco planner Sam Assefa, now director of policy for Chicago’s planning department, had this to say about Chicago Mayor Richard M. Daley:

    Daley’s “innovations don’t come as this grandiose plan or vision,” Assefa said. "It’s about doing the small things well and working up incrementally. He says ’Here’s an idea. If it works, we’ll set policy and require it citywide.’ "

    And more great chunks of information on a San Francisco Sustainability Plan (sound at all like functional requirements?):

    Consider the 150-page Sustainability Plan for San Francisco approved in 1997 by the Board of Supervisors. Of the 15 sections, one on “energy, climate change and ozone depletion” was crafted by a 32-member “drafting group” that spells out 62 recommended actions such as “establish neighborhood energy-planning groups” and a vague directive to “create high-visibility demonstration projects.”

    Just another great example that the key to better projects isn’t more planning or acronym-filled design philosophies, but small, simple steps.

    by derek

    Simple Subdomain Authentication In Ruby on Rails

    Published August 14, 2006 tagged with: Ruby On Rails

    Using a subdomain as an account key (ie – highgroove.heartbeathq.com where “highgroove” is the account key) is a great way to personalize a web application. Rails has a nifty plugin written just for this, but the implementation information is a bit scattered. Here’s a step-by-step guide for implementing, testing, and simulating this powerful feature.

    → Read More

    by derek

    Synchronizing SalesForce and Ruby on Rails

    Published July 27, 2006 tagged with: Salesforce How-to Ruby On Rails

    Salesforce, the large Customer Relationship Management tool, and Ruby on Rails, the elegant web development framework, seem like an awkward pair. About as awkward as dipping a Wendy’s french fry in a frosty.

    Salesforce is large, often times confusing, and is a tool built for handling lots of different jobs. Rails is lean, elegant, and designed specifically for making web development easier. While Salesforce and Rails are dramatically different, they actually work very well together (much like a Wendy’s french fry dipped in a frosty – trust me).

    This unlikely pairing is sparked by ActiveSalesforce, a Ruby on Rails connection adapter to Salesforce-managed data. This Ruby Gem makes working with Salesforce data about as easy as the Rails-MySQL combination.

    Highgroove Studios is working on a Salesforce-Rails application, and one of the things we have to do is synchronize a local MySQL database with Salesforce. This is needed because the connection to Salesforce is slower than when working with a local database, and several parts of the application are time-sensitive.

    Here’s a look at how we designed the application to synchronize data between the local database and Salesforce.

    → Read More

    by derek

    Ruby Moment of Zen: #method_missing

    Published July 04, 2006 tagged with: Ruby On Rails

    Realizing that hitting “talk” on my phone dialed the previous number. Figuring out that the arrow next to my fuel gauge showed which side the car fuel door is on. Tab completion.
    A couple of times a month, I’ll have a “wow – that’s so useful and so simple” moment. One of the first times I experienced that with Ruby was with #method_missing.

    → Read More

    by derek

    Metaprogramming and Ruby on Rails

    Published June 27, 2006 tagged with: How-to Ruby On Rails

    Metaprogramming is your secret identical twin that likes doing all of the things you don’t. Need to take out the trash? Just tell your twin. Need to program in Java? Send your twin an email.

    Metaprogramming, defined as writing code that writes code by Why The Lucky Stiff, makes scaffolding, associations, validations, and the many magical parts of Rails possible. Implementing metaprogramming techniques can drastically eliminate duplicate code, making your applications far easier to maintain and build. It also lets your code do the work – not you.

    CampusSync.com, a client project of ours, is a collaboration site for college students. It has several administration areas that are almost identical, but not a good fit for Rail’s standard scaffolding. The solution to eliminating duplicate code: roll our own metaprogramming solution.

    → Read More

    The demo is up – take Heartbeat for a spin.

    It’s a single-web page control panel that lets you run any rake task within your application’s directory, from deployment to tests to migrations. If you can write a rake task, Heartbeat can execute it! Additionally, you can use it to monitor the uptime of your URLs.

    The app makes extensive use of RJS templates and AJAX.

    Heartbeat was built by myself (Derek Haynes) and Charles Brian Quinn of Highgroove Studios during the 24-Hour coding marathon that was Rails Day 2006.

    We’ve got big plans for Heartbeat, especially as it relates to Slingshot, our Rails Business Hosting Service. Stay tuned.

    by derek

    Faster Auto-Completion with Rails

    Published June 15, 2006 tagged with: How-to Ruby On Rails

    Auto-Complete is a great tool when it provides possible results BEFORE you finish typing. Unfortunately, using Rails’s included AJAX helpers to query the database as you type often results in a large delay before matches are returned.

    However, there is a lightning-quick option: pre-fetch the results in a Javascript array.

    In a client project, users can add labels to events on their calendar. To prevent users from creating variations of the same label name (i.e. – “favorite” vs. “favorites”), we needed to provide faster auto-complete functionality than that available through Rails’s provided AJAX helpers.

    We created a simple helper method for this case (special thanks to Chad Fowler and his Rails Recipes book for the inspiration).

    "Take a look at the local_auto_complete_field helper method. TXT (editor’s note: no longer available)

    To call the function from your views:


    <%= local_auto_complete_field(‘name’,@labels) %>

    In the above example, we are adding JavaScript-powered auto-complete functionality to the 'name' text field. The JavaScript array is generated by calling #name on each element in the @labels array. To override this behavior:

    <%= local_auto_complete_field('name',@labels, 
                                  :method => 'description') %>
    

    Here’s to faster auto-completion!

    by derek

    Atlanta and Silicon Valley

    Published June 09, 2006 tagged with: Atlanta Business

    Atlanta Technology Executive (and recent friend) Scott Burkett blogged recently on what Atlanta can do to emulate the entrepreneurial environment of Silicon Valley. Having lived in both areas, I’ve had a chance to meet and work with many remarkable entrepreneurs.

    I think Scott hit many of the comparisons between Atlanta and Silicon Valley on the head. Atlanta is full of smart engineers, isn’t as forgiving to entrepreneurial failures, and like Silicon Valley, does a great job celebrating entrepreneurial heroes.

    However, I don’t think the key to sparking innovation in Atlanta is tied to things like tax exemptions, venture funds, and cheap office space. When a company can start worrying about those things, they are already on their way. Innovation comes much earlier on in the process.

    What are the biggest differences I’ve seen between Silicon Valley and Atlanta?

    → Read More

    by derek

    Simple Rails Business Hosting With Slingshot

    Published June 01, 2006 tagged with: Hosting Ruby On Rails Slingshot

    We love Ruby on Rails – since 2005, all of our applications have used the web framework. But we don’t enjoy deploying Rails applications.

    Announcing Slingshot – simple hosting for Ruby on Rails business applications. Why is Slingshot better than traditional hosting for Rails applications?

    • Slingshot is built by full-time Rails developers with dozens of applications in production. We’re intimately familiar with the framework and the ins and outs of optimizing the hosting environment.
    • Stability. We offer 2 plans – basic, with a maximum of just 4 accounts per/server, and dedicated, where it’s just you! We believe you shouldn’t have to spend your time worrying how other customers are effecting the performance of your Rails applications.
    • A ready-to-go deployment stack for Rails apps. We test every account with a robust Rails application using Lighttpd, MySQL, SSL, SVN, Capistrano, and ActionMailer.
    • Simple, easy-to-follow help documents. System administration is the hidden cost of maintaining and deploying Rails applications. Our guides are based on our work deploying our own Rails applications.

    Take a look at our plans, and feel free to contact us with any questions!