2008-10-28

Basecamp API for BungeeConnect

+ = ?

12 classes. 60 functions. 6 test applications. 30 unit test functions. One big fat API wrapper. BungeeConnect applications can now completely integrate with 37signals' Basecamp Project Management application.

Why?

Well, 37s are an arrogant group of developers; they even admit to it in their book. Ask them for a new feature and the answer is "no", or in my case "there's an API, build it yourself." So I am, in BungeeConnect, and you can too. (My own itch is moving todo-items from one project to another, something 37s has been reluctant to offer.)

Prerequisites.
Getting Started.
  • Login to the Bungee Builder, and create a new Solution.
  • Modify the Solution's Depencies to include the Basecamp API
  • If you want to modify the API, Import it (you'll probably want to, as there aren't any inbuilt Adapters).
  • In a class in your TypeLib, add BasecampAPI as a field.
  • Before you can go to town, you'll have to setup the API. Now there's nothing stopping you!
Issues.
I've got two rather minor functions that are still throwing 404 errors - I'm working with 37s (via the forums) to get to the bottom of it, but again, they are minor, and I don't consider them showstoppers.

A bit larger, is an issue I found with BungeeConnect: their HTTP Utility doesn't properly auth PUTs, so none of the Update functions currently work. Bungee Labs has labeled this as Issue #7889 - hopefully it will be resolved sooner rather than later.

In Conclusion...

I'll be maintaining the BungeeConnect code until someone else steps up with better code, so drop me a line with any issues you encounter, or just let me know what cool tool you're building!

P.S. I'll be dropping another blog post soon about a new site I'm building for making Basecamp better using a variety of small tools.

2008-09-05

37Signals says IE6 sucks

In a recent blog post, 37 Signals, originators of Ruby on Rails, and a series of extremely popular web applications, reminded users of their intent to stop supporting Microsoft's Internet Explorer 6.

Jason Fried, President of 37Signals blogged yesterday:
"We will not intentionally break IE 6 compatibility, but we will also not invest significant time or resources into making sure we are backward compatible with IE 6 after October 1, 2008."
What's a poor IE6 user to do?
"In order to continue using the products without any hiccups, Internet Explorer 6 users should upgrade to a newer browser..."
... like Firefox, or Safari, or maybe even Google Chrome (if you can work around their EULA).

Why drop support for a browser you've invested so much work in already?
"Continued support of IE 6 means that we can't optimize our interfaces or provide an enhanced customer experience in our apps. Supporting IE 6 means slower progress, less progress, and, in some places, no progress. We want to make sure the experience is the best it can be for the vast majority of our customers, and continuing to support IE 6 holds us back."
This reflects strongly on the culture of 37Signals and their customer base. In the original post, it was noted that, "..IE 6 usage has finally dipped below a small minority threshold of our customers...". This is contrary to browsers overall, as w3Counter still reports IE6 as the top browser in their August '08 stats, accounting for 29.91% of all browser hits. 37Signals is an amazingly successful, forward-thinking, and arrogant set of developers. Their customers, by reflection are mostly the same, and I'm proud to be counted among them. I just hope Firefox 2 isn't next on their hit list...

Of course, if you're using GNU/Linux or a Mac, this doesn't effect you anyway. ;-)

2008-08-15

Silicon Mechanics: 'Wow'ing the Customer


Silicon Mechanics is building a new server for my company right now. They advertise 'Expert Included', implying you will receive top-notch support along with an excellent server. What that fails to imply is the amazing support you'll get before you order.

I submitted a quote through their web site, and requested the idle noise level of the server: something they're not currently publishing. Within 48 hours I got an email from Tim Groen, a member of their sales team, apologizing for the delay. In the meantime they had pulled a server, ordered a sound level meter, found a quiet room and tested the server. Wow #1.

Unfortunately, the server as quoted was louder than I was willing to tolerate (I work in the same room as our server rack). Tim asked a few questions about my priorities on the system, and what I would be willing to give up to get it quieter.

Shortly thereafter, I got another quote via email. Same system, but labeled 'quiet cousin'. Instead of chopping out any of my requested features, they opted to custom tune the system, with a guaranteed maximum SPL within my tolerances. Wow #2.

I got a call from Tim today, informing be the system was going to be a tad more expensive than originally quoted, as they were replacing the standard fans with something quieter. I approved the price change and got another email, which showed the fans they were including: maglev fans. Wow #3. I had no idea there were such things, but having experienced a maglev train I am expecting a rather quiet server.

Tim also told me to expect delivery next week; a full week ahead of their original estimate. Wow #4.

Update:

The server was delivered today, and unwrapped Christmas-morning-style. My co-hort and I bench-tested the server, and were very pleased with the noise level. Then the fans spun down after POST. I admit it; we giggled. The system is quieter than we expected, by far. Wow #5.

In the rack, compared to the rest of the noisemakers, I can't tell the server is running, save for a subtle low-frequency hum. Now to get openSUSE running on it, and start virtualizing (noisy boxes go first)!

Full disclosure: Silicon Mechanics sponsors my local Linux event, Linuxfest Northwest.

2008-07-25

Freezing Rails 2.10 with MS SQL Server

So I'm starting to catch up with a lot of the deployment improvements in Rails up to 2.1.0; I'm freezing Rails, and any associated gems. Some of my apps run against Microsoft SQL Server, so the activerecord-sqlserver-adapter is required. That's where I ran into trouble; trying to freeze that in... apparently a frozen instance of Rails expects the adapters to be frozen as well!

So, here's my recipe for freezing Rails into your app, with support for Microsoft SQL Server:
  1. If you've already frozen rails, you'll need to unfreeze it:
    rake rails:unfreeze
  2. add the gem dependency to your environment.rb:
    config.gem "activerecord-sqlserver-adapter",
    :lib => "active_record/connection_adapters/sqlserver_adapter",
    :source => "http://gems.rubyonrails.org"
  3. Install your gem(s) if you haven't already:
    rake gems:install
  4. Freeze your gem(s):
    rake gems:unpack
  5. Refreeze Rails (I use my gems - you could do this from edge instead):
    rake rails:freeze:gems
Viola! Your Rails app now includes the Rails version it runs against, and any requried gems, including ActiveRecord's SQL Server Adapter.

P.S. This would be easily adaptable for any external ActiveRecord adapter (Oracle, db2, etc.)

2008-07-14

Ruby, JRuby, and Rails Application Development (with Passion!)


Starting July 15th, Sang Shin, a Java architect and evangelist from Sun Microsystems, will be leading an online course on developing Ruby on Rails applications, including the use of JRuby. The free course includes 20 weekly lessons (including homework - bah) starting with Ruby fundamentals and working through all the major Rails areas, closing with four complete Rails applications. Of course, Sang will focus the materials on using the free, open-source NetBeans IDE and JRuby runtime.

I'll be acting as an Advisor for the course (the open-source version of a T.A.) along with five other members of a very diverse group. With 998 members and counting, anyone should be able to find a study-group to help out; groups have already formed with cultural themes - Indians, Brazilians, Mexicans, Syrians, etc.

So, if you're interested in learning the nuts and bolts of building a Rails application, join the group by sending an email to ruby-on-rails-programming-with-passion-subscribe@googlegroups.com or visiting the group site.