Double Shot #512

Lots of people are excited about Rails and 37Signals being mentioned in Microsoft’s annual Form 10-K. I think that’s just silly. This isn’t any sort of acknowledgement that Microsoft considers us a serious threat; it’s a “cover your ass” survey of software and firms whose business overlaps that of Microsoft. For some perspective, go look at other 10-K’s; for example, the one for McDonald’s says “The Company‚Äôs competition in the broadest perspective includes restaurants, quick-service eating establishments, pizza parlors, coffee shops, street vendors, convenience food stores, delicatessens and supermarkets.” So, yeah – McDonald’s:street vendor::Microsoft:37 Signals. That’d be about right.

  • NoSQL: If Only It Was That Easy – Look at some of the currently-sexy database alternatives by someone who actually evaluated at heavy load.
  • Deployment Script Spring Cleaning – New ideas on using Capistrano with git, from the GitHub guys.
  • Napkee – Convert Balsamiq Mockups to HTML/CSS/JSS/Flex 3 source.
  • Lone Star Ruby Conference – One more week for registration for this Texas conference at the end of the month.
  • Cerberus 0.7 – Lightweight continuous integration, now with Bazaar support and better Git support.
  • RailsBridge BugMash – Contribute to the Rails core – Just a reminder: it’s coming up this weekend.
  • complex-form-examples – Ryan Bates takes a shot at showing ways to manage forms with nested attributes.
  • va_cache – Simple caching for Active Record virtual attributes.
  • Double Shot #498

    Early morning with small child and thunderstorms.

    Double Shot #497

    Up late deploying stuff last night, so just a couple of quick links this morning.

    • snail – Start of an ambitious attempt to build a plugin to format international mailing addresses.
    • Firebug 1.4.0 – Officially released, and nicer than 1.3. Of course those of us on the bleeding edge have moved to 1.5 alpha builds already.

    Double Shot #496

    It looks like the Fairy Godmother Department’s lunch hour may be over.

    • Many Ways to Tag Taggables – Tobias hunted down all the Rails tagging libraries he could find. Looks like he settled on acts_as_taggable_on, which is the one I use too.
    • fleakr – Flickr API integration gem recommended by a couple of my readers.
    • read_from_slave – Read your Rails data from a MySQL slave database, while ensuring that writes go to the master database.
    • Programming Contest! Win iPhone 3GS & $2,000 Cloud Credit – Engine Yard is planning a contest that is going to make Twitter even more annoying for a while.
    • Choosy – OS X utility ($12) to let you choose a browser when you click on a link.
    • Ruby Versions – SSH access to a bunch of new and archived flavors of Ruby.

    Double Shot #495

    Time to get back on the daily sales and marketing wagon. Contract, where are you?

    • Build Guild – Spreading social/technical gathering of web folks. I’d be tempted to start an Evansville/Newburgh chapter if I actually knew any other web folks around here.
    • wikicloth – Mediawiki markup for Ruby.
    • flickr_fu – I may need a flickr interface in Ruby soon. This one looks promising.

    Double Shot #494

    Lots of interesting new stuff showed up over the weekend:

    • i18n – The i18n gem has reached version 0.2.0 with lambda support among other goodies.
    • can_touch_this – A permissions system extracted from rboard.
    • sort_by – Active Record/ Action View extension to produce user-sorted, paginated tables in your views.
    • Posterous now supports TrailerAddict embeds and Github Gist code drops. – With Gist support, Posterous is getting to be an interesting alternative for a quick & dirty coding blog.
    • Installing FreeImage and ImageScience on Debian Linux – Came in handy, though note that the current version of FreeImage has changed.
    • Ruby 1.9.1 & Friends – Ryan Bigg has revised his big blog entry on how to get rails up and running on 1.9.1. It’s getting closer to prime time.
    • padlock_authorization – Simple object-based role authorization plugin. If I wasn’t rolling my own authorization I’d probably try this one next.
    • Glow – The BBC gets into the JavaScript library business. Big selling points appear to be downlevel browser and multiple version support.
    • Mercurial: The Definitive Guide – Bookmarking in case I’m ever forced to use Mercurial.
    • Phoenix – Real-time editing for web pages, including HTML, CSS, and JavaScript, within the confines of Firefox.
    • Announcing Appsta – Gem that extends the templating facility in Rails 2.3 with knowledge of GitHub and Heroku, among other things.

    Big Old Rails Template

    A few people have asked me about the Rails application template that I’ve put together recently. For those who are interested, it’s now available for review and download as a gist. To use it, just specify the -m switch when creating a Rails application:

    rails new_app_name -m lark_template.rb

    I should warn you of two things. First, it’s a pretty heavyweight template, sticking a lot of stuff into the new application. This suits me, because I have a lot of things I use in just about every application, but it may not suit you. Second, Rails templates are not one-size-fits-all; you’d be better off treating this as a starting point to steal from than a finished template to use (though if you want to use it, feel free).

    Here’s a list of what this template sets up:

    Coding Tools

    • Authlogic for user authentication, including password resets, anonymous_only, authenticated_only, admin_only application helpers
    • World’s simplest authorization system: manage multiple string roles on users with User#add_role, User#remove_role, User#clear_roles, and User#has_role?
    • Date formats: :us, :us_with_time, :short_day, :long_day
    • live-validations for client-side JavaScript data entry validation. Add :live_validations => true to form_for declarations to hook this up.
    • Paperclip for attachment management
    • /pages/css_test will show most CSS styles in action
    • Searchlogic for magic named scopes and search forms – Includes attribute_equals, attribute_does_not_equal, attribute_begins_with, attribute_like, attribute_ends_with, attribute_greater_than, attribute_null, attribute_blank etc. etc.
    • Stringex for extra string functionality – acts_as_url, String#to_ascii, String#to_html, String#to_url, String#remove_formatting, String.random
    • US State application helpers
    • will-paginate for pagination

    Database Tools

    • Hooked up for PostgreSQL
    • admin-data plugin for administrative UI. http://localhost:3000/admin_data will get you to the application’s data. On production, only admin can view data, no one can edit (modify config/initializers/admin_data.rb to adjust this)
    • db-populate for seed data

    Deployment Tools

    • fast_remote_cache strategy for deployment
    • rubiadhstrano for deployment recipes; automatically uses multiple targets, so: cap production deploy for deployment to production
    • superdeploy for additional Capistrano tasks. cap -T for full list.

    External Services

    • Exceptional for error tracking. Go to /pages/kaboom to test after finishing Exceptional setup.
    • New Relic for performance tracking

    Testing Tools

    • Shoulda and Test::Unit for testing
    • Mocha for mocking
    • Object Daddy for factories
    • Generated code is already covered by tests
    • parallel-test for faster testing. rake test:parallel:prepare[2] to set up two test databases. rake test:parallel[2] to distribute tests across two cores
    • rack-bug for request/response/perf analysis. http://localhost:3000/__rack_bug__/bookmarklet.html to add bookmarklet to browser.
    • shmacros for additional Shoulda macros: should_accept_nested_attributes_for, should_act_as_taggable_on, should_callback, should_delegate, more
    • More extra shoulda macros: should_have_before_filter, should_have_after_filter
    • metric-fu for static code analysis. rake metrics:all, configure in Rakefile
    • inaction-mailer is installed for development environment, so mails sent during dev will end up as files in /tmp/sent_mails

    Double Shot #493

    There are days I need to remind myself that I’m happier on the open source side of the fence.