Double Shot #374
More career news later this morning. First, a few links.
Craft the perfect gem with Jeweler - Official release of this infrastructure for building gems with github.
Inochi 0.1.0 - Another alternative for building spiffy rubygems.
Not tested in IE initiative - I so want to use this on the next site that I roll out.
Announcing ActionRails
As many of you know, I've been increasingly active in the Rails community in the last year. Working on projects like the Rails Guides, This Week in Edge Rails, the Rails 2.2 Release Notes, and the official continuous integration server for Rails have thrown me into contact with the Rails core team and other prominent folks in the Rails community. A few of us have gotten to talking, and discovered that we have similar concerns about Rails and the way it gets used in the real world.
As a result, I'm happy to announce the launch of ActionRails, a new consulting firm jointly owned by Pratik Naik, Michael "Koz" Koziarski, and myself. We're not trying to be another group of developers who bang out Rails applications from start to finish (though any of us will be happy to talk to you individually about such projects). Rather, we're interested in helping customers complete successful Rails deployments and helping existing teams improve their Rails skills.
ActionRails is already working for a few select clients, helping them stay on top of the Rails universe, reviewing code, offering course corrections, and evaluating application architecture (among other things). You can hop over to our site for more information, or just drop me a line and I'll be glad to chat about what we can do for your team.
As a result, I'm happy to announce the launch of ActionRails, a new consulting firm jointly owned by Pratik Naik, Michael "Koz" Koziarski, and myself. We're not trying to be another group of developers who bang out Rails applications from start to finish (though any of us will be happy to talk to you individually about such projects). Rather, we're interested in helping customers complete successful Rails deployments and helping existing teams improve their Rails skills.
ActionRails is already working for a few select clients, helping them stay on top of the Rails universe, reviewing code, offering course corrections, and evaluating application architecture (among other things). You can hop over to our site for more information, or just drop me a line and I'll be glad to chat about what we can do for your team.
Double Shot #373
Looks like this is going to be a busy week.
RMagick 2.9.0 - Have you updated your RMagick install lately?
Git Cheat Sheet - This is a nice set of the basics.
It's a bird! It's a plane! No, it's a special offer! - Amy Hoy and Thomas Fuchs have an ebook on JavaScript performance coming out. You can get a discount, too.
Engine Yard Solo - Engine Yard management and Rails stack on Amazon EC2, starting at $129 per month.
Learn at Least One New Language Every Year - You've seen that advice. But have you considered learning something useful instead of something sexy? Peter Szinek has.
Y GIT IZ BETTR THAN X - Software development advice for lolcats.
Sinatra 0.9.0 released! - Another of the Ruby web frameworks to watch.
Rails and Amazon EC2 - Beginners guide - Looks like some good info here.
Double Shot #372
Anyone with sysadmin experience on Joyent + Rails + Passenger + Solaris who wants to pick up a few billable hours this month? Email me.
How I Test Controllers, 2009 Remix - Advice from Pat Maddox.
LaterDude - Rails calendar plugin with i18n support. (via RubyFlow)
Rails Documentation Projects - Some of what the Rails Activists have been up to.
The Evil calls back - Pratik Naik demonstrates a couple more rack middlewares.
Chef - Pure ruby configuration management system.
An Illustrated Guide to Git on Windows - Another resource for our friends who are stuck on Windows. (via GitHub)
Double Shot #371
Not sure whether the Rails community is more active lately or I'm just more involved, but plenty is happening these days. I'm blessedly busy.
The Best Environment for Rails on Windows - Yes, some people do run Rails on Windows. Here's a guide to getting started if you want to be one of them.
Tender - New customer support application that includes email and Lighthouse integration.
jQuery 1.3 - Now out, along with a new CSS selector engine and a foundation.
10 things to be aware of in moving to Ruby 1.9 - A selection of little gotchas to watch out for.
Double Shot #370
Waking up early is nicer when you find a signed contract in your email.
Scruffy - Pretty SVG-based graphs in Ruby.
Firebug 1.3.0 - New version of this essential browser-based debugger.
rspec-1.1.12 is released - I should find time to get up on the latest improvements here.
Book Excerpt and Interview: Rails for .NET Developers - Nice content from Rob Bazinet over at InfoQ.
Rails Prescriptions - Free e-book on Rails testing.
The Rails Activist Team - Coverage from About.com.
Activist Status & Wiki Project - And here's what the Activists are up to.
Take the Ruby on Rails Hosting in 2009 Survey - Planet Argon wants your info (but promises to share).
Jeweler - Tool for developing Rubygems on GitHub.
Double Shot #369
Another 4AM wakeup call from my youngest. Well, it's more time to get something done.
What's Up at Heroku - Looks like what's up is a new version of this web-based Rails environment, together with continued free access to the first version.
Creating and Distributing your own gem: a quick rundown - A quick start using newgem and github.
HAML and Sass - The latest from PeepCode. I should probably find time to watch this somehow.
Double Shot #368
Looking forward to a Monday of massive code merges. If "looking forward" is the right word for it.
rails-footnotes - Another debug toolbar plugin for Rails.
The Django Book 2.0 - Now starting on revisions to bring it current.
Test Or Die: Validates Uniqueness Of, Shoulda and Factory Girl Edition - An exercise in making tests less repetitive.
ActiveRecord threading issues and resolutions - Concerns specific to ActiveRecord 2.2 and MySQL.
Subdomain accounts with Ruby on Rails explained - Robby Russell digs into some of the common patterns here.
IE Net Renderer - Free in-browser rendering to see how things look on IE 5.5 through IE 8 Beta 2.
git ready - Daily tips on git usage. Definitely an RSS feed to subscribe to.
The power of JRuby - Some reasons why you might want to pay attention to this project.
Double Shot #367
Remind me to never again take a job that involves reconciling against imported data from a system that makes different assumptions.
A Clarification on Public API - As it applies to Rails 3.
Rails Debug Bar - A way to stick debugging info at the bottom of rendered views.
Double Shot #366
Early-bird children help when you need to get an early start.
Making Highrise faster with memcached - Another worked example of performance tuning.
Using Firebug to Debug Unobtrusive Javascript - Tools like this might make me take another look at UJS.
PTHPasteboard 4 - The latest alternative I'm looking at for a shared pasteboard on OS X. (And what luck - they're on Mac Update Promo today)
Propane - Dedicated OS X desktop app for Campfire. I'm looking at it, though so far I'm not finding much advantage over Fluid + Greasemonkey for my use patterns.
Double Shot #365
Winter appears to have returned to this part of the country.
Undo Last Commit - A useful git-ism to know.
The Cost of Net Negative Producing Programmers - Jay Fields ruminates about a problem that most of us don't like to admit the existence of.
Requests Per Second - Koz thinks about the use and misuse of metrics.
Git Submodules - The basics, via August Lilleaas.
Piet - A very colorful alternative programming language.
Double Shot #364
Thanks to everyone who helped make the Rails Activists launch a success. Now we just have to tap all this great energy for useful things.
HTTParty Goes Commando - New command-line interface for this ruby interface to the web.
gitcred - Page Rank for git users, as if you needed something else to compare.
saasy - Single sign-on and SAAS billing solution for Rails.
RailsLodge - Another Rails community site that I hadn't run across before.
Only the beginning - Status report from the Github folks. Wow, have they only been around for a year?
git - The main git site has been through a redesign, and looks much nicer than it used to. Check out the "Tools & Hosting" page.
Double Shot #363
Stay tuned for some Rails news later today.
Rapid Fluid Support - A how-to on adding SSB support to a web application.
consent - A new access control layer for Action Pack.
simplepay 0.2.0 - An upgrade to the Amazon Simple Pay gem just in time for me to need it.
RSpactor 1.0.1 - First 1.x release of this project for automatic spec running on OS X.
Freelancing Tips via Rails Camp 4 - Some good ideas here for beginning freelancers.
@the_rails_way.awaken! - Good news: The Rails Way is coming back.
Announcing the Rails Activists
I've got two major announcements to make affecting my professional life this month. Today the first of them is ready to go live: I've accepted a position with the new Ruby on Rails Activists team. Probably the easiest way to explain what that means is to quote from the blog entry announcing our existence:
Generally speaking, the Activists will be working alongside the Rails Core team, with the intent of helping publicize Rails and pull together efforts from all parts of the Rails ecosystem. We have a lot of ideas about what this could translate to in terms of concrete initiatives, but I'd like to emphasize that we're here to support the rest of the community, not to direct it. If you want to get involved with promoting Rails and improving things, feel free to contact any one of us to discuss how we can help out. I'm easy to find:
mikeg1 on Twitter
MikeG1@larkfarm.com via email
mikeg1a on IRC (freenode.net, almost always in #rubyonrails)
It's also important to note that although there are four of us who are now in some sense authorized to speak on behalf of Rails, this does not mean that everything we say is an Official Statement. We all have our own businesses and blogs and so on, and we have lives beyond Rails activism, shocking though that may be. For example, just because I link something on this weblog doesn't mean it's gotten some official stamp of approval.
We also intend for the communication to flow in as many directions as possible - one of our roles is to serve as ombudsmen for the Rails community. If for any reason you're feeling frustrated in an attempt to talk to the core team (though personally, I've found them very approachable), do get in touch to see if we can help.
As some of you have probably guessed, the new team owes something to the much-discussed merger of Rails and Merb. In addition to picking up the best ideas from Merb, Rails is also working on picking up some of the best patterns from the Merb community. Just as Rails isn't throwing out all of its old code to become a copy of Merb, we're not throwing out all of our old activities (such as the Rails Guides) to copy Merb's ecosystem. What we are doing is trying to incorporate some of the energy from the combined communities to revitalize both of them as they become one.
So stay tuned to see what initiatives emerge from this new group and its interactions with the wider Rails community. If you have any questions, I'll be more than happy to address them in comments here or privately.
The mission of the Rails Activists is to empower and support the worldwide network of Ruby on Rails users. We do this by publicizing Rails, making adoption easier, and enhancing developer support.
Generally speaking, the Activists will be working alongside the Rails Core team, with the intent of helping publicize Rails and pull together efforts from all parts of the Rails ecosystem. We have a lot of ideas about what this could translate to in terms of concrete initiatives, but I'd like to emphasize that we're here to support the rest of the community, not to direct it. If you want to get involved with promoting Rails and improving things, feel free to contact any one of us to discuss how we can help out. I'm easy to find:
It's also important to note that although there are four of us who are now in some sense authorized to speak on behalf of Rails, this does not mean that everything we say is an Official Statement. We all have our own businesses and blogs and so on, and we have lives beyond Rails activism, shocking though that may be. For example, just because I link something on this weblog doesn't mean it's gotten some official stamp of approval.
We also intend for the communication to flow in as many directions as possible - one of our roles is to serve as ombudsmen for the Rails community. If for any reason you're feeling frustrated in an attempt to talk to the core team (though personally, I've found them very approachable), do get in touch to see if we can help.
As some of you have probably guessed, the new team owes something to the much-discussed merger of Rails and Merb. In addition to picking up the best ideas from Merb, Rails is also working on picking up some of the best patterns from the Merb community. Just as Rails isn't throwing out all of its old code to become a copy of Merb, we're not throwing out all of our old activities (such as the Rails Guides) to copy Merb's ecosystem. What we are doing is trying to incorporate some of the energy from the combined communities to revitalize both of them as they become one.
So stay tuned to see what initiatives emerge from this new group and its interactions with the wider Rails community. If you have any questions, I'll be more than happy to address them in comments here or privately.
Using Amazon Simple Pay from Rails
I've recently been working to integrate Amazon Simple Pay into an application. In general, this has been pretty straightforward, thanks to the simplepay gem, which was recently bumped to version 0.2.0. (Amazon also has their own Ruby sample for ASP integration, which came in handy for a first smoke test - though unfortunately at the moment the Amazon site is having trouble delivering that file).
For the most part, using the simplepay gem is quite straightforward. There's a helper to build a payment form:
[sourcecode language='ruby']
Click here to send us $120 every year
:amount => 120.00,
:description => "Annual Subscription",
:recurring_frequency => "1 year",
:abandon_url => amaz_abandon_customers_url,
:collect_shipping_address => false,
:immediate_return => false,
:ipn_url => amaz_ipn_customers_url,
:process_immediately => true,
:reference_id => @customer.id,
:return_url => amaz_return_customers_url
}) %>
[/sourcecode]
When Amazon executes callbacks, it sends a signature parameter along so that you can verify that the request is legitimate. This is the only spot where I ran into a little gotcha. The simplepay gem includes a helper to validate the parameters of a request to see if they match the signature, but you have to be sure to take out the parameters that Rails inserts before you call it:
[sourcecode language='ruby']
def amaz_ipn
params.delete('controller')
params.delete('action')
if AWS::SimplePay::IpnValidator.valid_ipn_post?
(Simplepay.aws_secret_access_key, params)
# save the results somewhere
render :action => 'show'
else
logger.info "bad request from Amazon Simple Pay"
render :nothing => true, :status => 200
end
end
[/sourcecode]
Also note that you should send back a 200 response even if you're unable to verify the signature. This will prevent Amazon from sending the same request to you over and over again.
For the most part, using the simplepay gem is quite straightforward. There's a helper to build a payment form:
[sourcecode language='ruby']
Click here to send us $120 every year
:amount => 120.00,
:description => "Annual Subscription",
:recurring_frequency => "1 year",
:abandon_url => amaz_abandon_customers_url,
:collect_shipping_address => false,
:immediate_return => false,
:ipn_url => amaz_ipn_customers_url,
:process_immediately => true,
:reference_id => @customer.id,
:return_url => amaz_return_customers_url
}) %>
[/sourcecode]
When Amazon executes callbacks, it sends a signature parameter along so that you can verify that the request is legitimate. This is the only spot where I ran into a little gotcha. The simplepay gem includes a helper to validate the parameters of a request to see if they match the signature, but you have to be sure to take out the parameters that Rails inserts before you call it:
[sourcecode language='ruby']
def amaz_ipn
params.delete('controller')
params.delete('action')
if AWS::SimplePay::IpnValidator.valid_ipn_post?
(Simplepay.aws_secret_access_key, params)
# save the results somewhere
render :action => 'show'
else
logger.info "bad request from Amazon Simple Pay"
render :nothing => true, :status => 200
end
end
[/sourcecode]
Also note that you should send back a 200 response even if you're unable to verify the signature. This will prevent Amazon from sending the same request to you over and over again.
Double Shot #362
Somehow it doesn't seem like it should be Friday already.
Linotype FontExplorer X - This came in handy when I wanted to compare some sample text in various fonts I already have installed. I'm sure there are other ways, but it was free.
Sanitize - Sanitization seems to be in the air. This one is a whitelist-based HTML sanitizer.
Cerberus - A continuous integration server for Ruby and Rails software.
Double Shot #361
Welcome to 2009. Now I'm off to fix some date-related bugs.
Ansuz CMS and BrowserCMS - Must be Rails CMS day; here are two that I just caught announcements for.
Cool Routes Trick: Dev Cheat - Route everything in dev but not in production.
Geokit 1.2.0 - Now separated into a gem and a plugin.
Allowing custom CSS in your app - court3nay is out with a sanitizer for CSS.
Double Shot #360
2008 was a good year for me professionally. Here's hoping that 2009 shapes up even better.
- Ubiquity 0.1.3 - Just out, the new version of the command line for Firefox. Like TextMate, this is one of those applications that I know I'm barely scratching the surface of.
- What good is a flexible paperclip? - Thoughtbot's file attachment plugin is getting some overhaul.
- Espresso Public Beta - MacRabbit's new web development environment. I need to find time to play with this, too.
- [ANN] Ruby 1.9.1 RC1 is released' - I'm responsible for this, you know: it happened minutes after I managed to get 1.9.1-pre2 installed.
- Learnivore! - Aggregation portal for Ruby and related screencasts.
Double Shot #359
I spent a lot of yesterday working on the Rails continuous integration story. Well, you know, it was shiny...
acts_without_database: Using ActiveRecord for Non-Database Backed Objects - A sometimes-useful technique.
rubigen 1.5.1 - This code generator is coming full-circle, having originally come from Rails and now being included back into Rails.
ColumnScope 1.0 - Rails plugin to make it easier to return just column values. Looks interesting.
Double Shot #358
I spent a lot of yesterday deep in the Rails source, trying to figure out why some tests weren't passing. No final conclusion but I think I'm on the right track.
Timecop 0.2.0 - Gem for freezing time to make it easier to write reproducible tests. Here's the original announcement.
Pages Generator - Another helpful little tool from GitHub.
Bringing Merb's provides/display into Rails 3 - DHH gives us a peek at one of the planned bits of merging.
Dispatch from the Front Lines - And Yehuda Katz is also writing about the work to come. The more of this sort of thing we see from the merged team, the less FUD there will be to go around.
Overview of Jekyll - a static site generator written in Ruby - A look at the tool that's tied into GitHub's pages.
Kontrol - a micro framework - Yes, it's another small Ruby web framework.
subscribe via RSS