Double Shot #457
I've got some excess capacity to take on new Rails work again.
- 31 Fascinating Ruby on Rails Tutorials & Guides - A fairly spotty roundup from Nettuts, but there's some good stuff.
- Rubricks - Another Rails CMS.
- 5 Tips to Scale Your RoR Application - Tips from Engine Yard.
- Jetpack - New Mozilla Labs project to make it easier than ever to write Firefox add-ons.
Double Shot #456
Late to bed and early to rise. Hmm.
- jQuery vs MooTools - An extensive comparison from a MooTools contributor. He appears to be trying to do a fair job, though.
- Need Code Help? - Zach Moazeni hooks up with RailsBridge to offer some pro bono code review. You'll see more of this from RailsBridge very soon.
- Meet MacRuby - The latest from PeepCode.
- Critical Mac OS X Java Vulnerabilities - It appears to be time to disable Java applets on OS X.
- ModelFactory - Another factory-based replacement for Rails fixtures.
- IP and Non-Competes for Employees - A generally sensible viewpoint from Obie (ie, he agrees to me that you shouldn't force employees to sign a ridiculous non-compete).
Double Shot #455
Today, I need to write more words about code.
- Ruby on Rails and the importance of being stupid - I suspect this blog entry from Philip Greenspun on a failing Rails application will be dismissed as FUD, but behind the willful ignorance he does have a good point or two.
- Taskit: a rails scheduler plugin - An alternative to using cron to schedule things for Rails apps. (via RubyFlow)
- Rails Contributors - Now hosted as part of rubyonrails.org.
- Sinatra 0.9.2 released - Now compatible with Rack 1.0.
- Station - A CMS plugin to integrate with any Rails application. Looks promising.
- TorqueBox - "Ninja-grade Ruby application platform" built on top of JBoss. The naming doesn't encourage me, but I should probably look in more detail.
- generators - A collection of Ruby on Rails generators.
Double Shot #454
Crossing fingers for a new contract today.
- Java Kicks Ruby on Rails in the Butt - Actually, this guy apparently can't find his butt - or current information on Rails - with both hands. Pretty funny.
- Product Launch - Thunder Thimble - If you don't already have a system in place for brand management, this could be interesting.
- Introducing Sammy: The tiny but swingin’ JavaScript Framework - Sinatra in Javascript, or some reasonable facsimile thereof.
- Rails Testing Frequently Asked Questions — The Non-Code Version - Some good advice from Noel Rappin, especially if you're new to testing.
- HighlyAvailableLAMP - I hope I never need to know this. But it's good to know the Ubuntu folks have been figuring it out.
- Wolfram|Alpha Firefox Search Extension - To add Wolfram|Alpha to the list of search providers integrated with Firefox.
Double Shot #453
This would be a good day for a few things to get finished.
- teachingkids - One of the new RailsBridge projects is getting moving.
- GitHub Documentation - Looks like GitHub is working closely with rdoc.info to integrate docs now.
Double Shot #452
It's ark-building weather here; good time to stay inside and write code.
- New Gem: Rack-noIE6 - Another solution to sending IE6 users off to upgrade.
- RailsMagazine #2 - Special RailsConf 2009 issue.
- SVNHub - Cute.
- Fibers & Cooperative Scheduling in Ruby - There are certainly parts of Ruby that I don't understand. This is one of them.
Twitter Screws Up
I don't often use this space to rant, but I'm up early with a small child and I'm a bit peeved at the moment. And my peevishness has something to do with software development, so it's moderately on-topic.
The target: Twitter, which in a "small settings update" decided to make things much less useful for those of us who use the service to discover new people. It used to be that if you followed Joe and he tweeted "@Mary: Like your new blog post on wombats" you'd see that update in your Twitterstream even if you didn't follow Mary (more precisely, you could turn on an option to make this happen). Then if you were interested in wombats, you could click through to @Mary's account and decide whether you wanted to follow her. Easy serendipity.
Now the option is gone, "to better reflect how folks are using Twitter regarding replies" and a unilateral declaration that the old behavior is undesirable. Horseshit. If it's confusing to new users, then change the default for the setting, don't remove it entirely. Seems to me that one of two things is going on here. Either this change was necessary for performance reasons (in which case Twitter's spin on the issue is a lie), or else this is another instance of the pernicious developer arrogance that says "we know better than our users." Either way, it stinks.
Will this be the end of Twitter? Nope. But if the change isn't reversed (which will mean Twitter is deaf to the crescendo of #fixreplies tweets), it'll make the service less useful to a significant number of users. And that's a shame.
Update: In a new blog post, Biz writes: "The engineering team reminded me that there were serious technical reasons why that setting had to go or be entirely rebuilt." Compare that with the wording from the first post: "However, receiving one-sided fragments via replies sent to folks you don't follow in your timeline is undesirable. Today's update removes this undesirable and confusing option." It is difficult to come to any conclusion from those two statements other than the simple: Twitter lied.
I'll miss the feature. I'll miss even more the thought that I could trust Twitter to be open and transparent with its users.
The target: Twitter, which in a "small settings update" decided to make things much less useful for those of us who use the service to discover new people. It used to be that if you followed Joe and he tweeted "@Mary: Like your new blog post on wombats" you'd see that update in your Twitterstream even if you didn't follow Mary (more precisely, you could turn on an option to make this happen). Then if you were interested in wombats, you could click through to @Mary's account and decide whether you wanted to follow her. Easy serendipity.
Now the option is gone, "to better reflect how folks are using Twitter regarding replies" and a unilateral declaration that the old behavior is undesirable. Horseshit. If it's confusing to new users, then change the default for the setting, don't remove it entirely. Seems to me that one of two things is going on here. Either this change was necessary for performance reasons (in which case Twitter's spin on the issue is a lie), or else this is another instance of the pernicious developer arrogance that says "we know better than our users." Either way, it stinks.
Will this be the end of Twitter? Nope. But if the change isn't reversed (which will mean Twitter is deaf to the crescendo of #fixreplies tweets), it'll make the service less useful to a significant number of users. And that's a shame.
Update: In a new blog post, Biz writes: "The engineering team reminded me that there were serious technical reasons why that setting had to go or be entirely rebuilt." Compare that with the wording from the first post: "However, receiving one-sided fragments via replies sent to folks you don't follow in your timeline is undesirable. Today's update removes this undesirable and confusing option." It is difficult to come to any conclusion from those two statements other than the simple: Twitter lied.
I'll miss the feature. I'll miss even more the thought that I could trust Twitter to be open and transparent with its users.
Double Shot #451
Ah, the joys of small children with irregular sleep schedules.
- Goodbye CruiseControl.rb, Hello Hudson - An argument for switching CI servers.
- Yes We Can. "require" over HTTP, That Is. - A new gem, http_require, is introduced.
- admin_data - Automatic browser-based management of database records in a relatively unobtrusive Rails plugin.
- Disqussion - Gem for using the Disqus API.
Double Shot #450
Wondering what coding joys today will bring.
- dots - Gem to provide "progress dots" for your scripts, like Test::Unit uses. (via RubyFlow)
- Rake 0.8.6 Released - With better Windows compatibility, something that more Ruby tools could use.
- Rails Rumble - Coming again August 22.
Seed Data in Rails 3
One of the perennial code smells in many Rails applications is the use of migrations as a way to carry seed data (data that needs to be added to the database on deployment). This doesn't work well because it's tough to maintain and doesn't play well with loading up the database from the schema file.
Rails 3 now has a new answer to this: a file convention and a rake task. The file is
[sourcecode language='ruby']
cities = City.create([{ :name => 'Chicago' }, { :name => 'Copenhagen' }])
Mayor.create(:name => 'Daley', :city => cities.first)
[/sourcecode]
This file then gets run by using the new
As with some other parts of Rails, this is the simplest thing that can possibly work. For a somewhat different take (that also works in Rails 2) take a look at Michael Bleigh's seed_fu or my own db-populate.
Rails 3 now has a new answer to this: a file convention and a rake task. The file is
db/seeds.rb
and it can contain arbitrary Ruby code, but generally it will look something like this:[sourcecode language='ruby']
cities = City.create([{ :name => 'Chicago' }, { :name => 'Copenhagen' }])
Mayor.create(:name => 'Daley', :city => cities.first)
[/sourcecode]
This file then gets run by using the new
db:seed
rake task, or via rake db:setup
which runs create, schema:load, and seed in succession.As with some other parts of Rails, this is the simplest thing that can possibly work. For a somewhat different take (that also works in Rails 2) take a look at Michael Bleigh's seed_fu or my own db-populate.
Double Shot #449
And so another week begins.
- Special Offer: The Spreedly Kickstart - Spreedly - which offers to take care of your SaaS billing for you - is offering $499 one-time payments for unlimited usage forever.
- Roleify - Authorization plugin that works with Thoughtbot's Clearance.
- Practical Tips for Attending a Rails Conference - Some notes from Dana Jones.
- open_gem - Gem plugin to open an installed gem in your default editor. (via Chad Woolley)
- Smalltalk: Our Death has been Exaggerated - Rubyists who are feeling all self-congratulatory over Bob Martin's RailsConf talk should probably read something from an actual Smalltalker.
- groundwork - Another set of Rails application templates.
- Rails 2.3.2: not ready for prime time - Courtenay is not happy with bugs.
Better Google with Firefox
I spend an enormous amount of time with Google, and I spend it in Firefox. Fortunately, the two work well together for me. A combination of scripts and Add-ons make Google much better for me than it is out of the box. If you want to supercharge your own Google, and get rid of unnecessary nonsense, here's the combo that works for me:
- CustomizeGoogle - Way too many options to wade through, but some of them are critical, including getting rid of all the damned ads (sorry, Google, but they're just noise to me) and rewriting image links to go to the images.
- GooglePedia - A lot of time the info I'm after is in Wikipedia. This extension puts the best-guess Wikipedia article right on the search results page. Only useful if you have a fairly wide monitor.
- No SearchWiki - Sorry again Google - the "SearchWiki" icons are not useful to me. This Greasemonkey script nukes them.
- QuickDrag - Highlight any word or phrase and then give it a quick flick with the mouse to open it in a search tab.
- Twitter Search Results on Google - If you don't want to wait for Google to build their own "real-time search" this GreaseMonkey script is a good start.
Double Shot #448
Rails 3 sounds potentially exciting. Now to watch for it to actually happen.
Stykz - Because everyone needs a free multi-platform stick figure animation program.
Railfrog - A long-dormant Rails CMS showing signs of coming back to life.
Breath fire over HTTP in Ruby with Typhoeus - New ruby library for parallel HTTP requests.
Double Shot #447
Today needs to be about writing code.
Record Filter - A pure-ruby DSL to replace SQL in ActiveRecord. Personally, I'd be happy with more SQL, but to each their own.
on APIs: more craft, less magic - "Rails seems to assume that you want to expose your database object model transparently through your API. In my experience, this is rarely what you want to do. In fact, it is a crazy way to live."
A git-style wiki system - Bryan Thompson ponders a way to help Rails newbies with common questions.
Double Shot #446
Up early with sleepless children. Gonna be a fun day.
Spree 0.8.0 Released - Another milestone for this open source Rails commerce platform.
Maps, Geolocalization and Optimization with Maptimize - Some fun techniques for those of you doing mapping in Rails.
Boks - AIR application that gives you a visual designer to set up layouts for Blueprint CSS.
How-To: Rack Middleware for API Throttling - A more reasonable use case for Rack than some I've seen.
Dreaming of Rails as the Next Microsoft Access - As an ex-bigshot in the Access world, I understand the sentiment here, but...no. I approve of devs with hats though.
Liquibase - XML-based tool for handling database change management. Looks interesting, but hard to see how I'd integrate it with Rails development.
Inkscape - Open source scalable vector graphics editor. Spiffy.
lazy_developer - A bunch of rake tasks to make working with Rails easier, notably (for me at least) one to reverse-engineer the schema to clean migrations.
Double Shot #445
Life goes on after the very successful RailsBridge launch.
RubyTrends - See which projects, addins, books, and practices are popular in the community. Or at least the part of the community that votes.
The First Rule for Software Development - Keith Casey explains why it's "Don't Trust the Users."
Inochi 1.0.0 - A milestone for this gem builder with lots of bells and whistles.
honeypot - Simple honeypots to keep spammers away from your Rails forms.
Double Shot #444
Hope folks are having a good time at RailsConf. Here are a few links for those who are still reading blogs this week.
Rails Contributors - This project has a nice new look and up to date stats.
Installing Sphinx with Postgres on Leopard - Another set of instructions worth stashing away.
Compass - CSS meta-framework that provides a bunch of other CSS frameworks ported to Sass.
Ruby Toolbox - Overview of various popular projects from GitHub.
CrossTwine - Apparently some flavor of magic beans to speed up dynamic languages like Ruby or Python.
Github Pages for Fun and Win - Some people are getting pretty sophisticated about the way that they use the GitHub web UI.
StaticMatic - Another alternative for doing quick static sites with some syntactic sugar.
CouchDBX - One-click CouchDB package for OS X.
Tonido Plug - This is one of those things that threatens to suck money out of my wallet for no good reason: a tiny web server in a power plug.
Announcing RailsBridge
This morning, I'm pleased to be able to announce a new initiative that I've played a small part in launching: RailsBridge. The easiest way to explain the reasoning behind RailsBridge is to quote from the web site:
The RailsBridge Mission:
To create an inclusive and friendly Ruby on Rails community.
The RailsBridge Guidelines:
RailsBridge is the product of intense discussions among 40 or so Rails and Ruby developers. We have quite a number of projects in the launching stage, from public Rails workshops to mentoring initiatives to some fun learning experiences for Ruby newcomers.
But the key message of RailsBridge is simple, and goes beyond any one project: the Rails community is the product of everyone who participates, and it can be a positive force for good in the world. We think there are enough Rails developers who feel this way that the somewhat negative image of Rails that is current in some parts of the web can be revised - not by claiming that we're welcoming, but by actually acting that way.
If you're already living in the Rails community that you want, great. But if recent events have convinced you that things could be improved, come join us! If we all work together to move things forward, then the awesome Rails codebase can be joined with an equally awesome community, and everyone wins. There's more information on the RailsBridge home page, or you can come join us on the RailsBridge Google Group to help build a better future.
The RailsBridge Mission:
To create an inclusive and friendly Ruby on Rails community.
The RailsBridge Guidelines:
- First, do no harm. Then, help where you can.
- Bridge the gap from aspiring developer to contributing community member, through mentoring, teaching, and writing.
- Reach out to individuals and groups who are underrepresented in the community.
- Collaborate with other groups with similar goals.
RailsBridge is the product of intense discussions among 40 or so Rails and Ruby developers. We have quite a number of projects in the launching stage, from public Rails workshops to mentoring initiatives to some fun learning experiences for Ruby newcomers.
But the key message of RailsBridge is simple, and goes beyond any one project: the Rails community is the product of everyone who participates, and it can be a positive force for good in the world. We think there are enough Rails developers who feel this way that the somewhat negative image of Rails that is current in some parts of the web can be revised - not by claiming that we're welcoming, but by actually acting that way.
If you're already living in the Rails community that you want, great. But if recent events have convinced you that things could be improved, come join us! If we all work together to move things forward, then the awesome Rails codebase can be joined with an equally awesome community, and everyone wins. There's more information on the RailsBridge home page, or you can come join us on the RailsBridge Google Group to help build a better future.
Double Shot #443
Technical first, then for those who want it, community.
Links about Rails, community standards, porn, and related topics start here. I think this is an important topic, but I realize many of you are just here for the software links. Skip 'em if you've had enough of the topic for now.
- Generate On A Lot Of Crack - Rails generator that aims to put even more magic into starting a new Rails project.
- Aardvark - New service that promises answers from real humans by passing questions out to an IM-based network. Email me if you want an invite.
- MetricFu 1.0.0 is Out - Rake tasks to run a whole bunch of metrics stuff over any Rails application, now exposing metrics via YAML for other tools to use as well.
- Hg-Git - A Mercurial plugin that allows using Mercurial with a git repository.
- inequal_opportunity - Plugin that lets you use inequality comparisons in ActiveRecord conditions with a hash syntax.
Links about Rails, community standards, porn, and related topics start here. I think this is an important topic, but I realize many of you are just here for the software links. Skip 'em if you've had enough of the topic for now.
- Ruby and Porn at GoGaRuCo - An outsider's view from Gadgetopia.
- The Modern Professional Developer - Audrey Eschright defends the idea of professionalism.
- Rehabilitating the Professional Rock Star - Avdi has a defense of his own.
- Stand and Be Counted - Nick Sieger stands up for what he thinks is right, and invites others to do the same.
- Stand and Be Counted - Charles Nutter stands up too.
- On Professionalism and Bigotry - Viewpoint from Evan Light.
- Ruby on Rails != Its Core Team - Luigi Montanez makes a point, though he seems a bit fuzzy about who's on core.
- Matt Aimonetti: Just Say You're Sorry Already - A plea from Mark Menard.
- Bad & Getting Away With It - Ben Hamill looks at some of the dynamics of bad behavior.
- Nastiness - Tim Bray chimes in with some recommendations for the community.
- C'mon, You Guys, We Can Do Better Than This - Another view from a .NET developer who happens to be female.
- SmutOnRails - Martin Fowler brings some perspective to the situation, and some recommendations.
- Not the Post - Words of apology from Josh Susser.
Double Shot #442
End of the month, hooray. If you're not madly rushing to meet deadlines, you might enjoy some of these links.
Testy - Yet another BDD framework for Ruby, this one with a minimalist vibe.
DFECT 0.1.0 - And yes, another testing library for Ruby as well.
Shmacros - A bunch of useful shoulda macros.
rdoc.info - Github-connected RDoc builder that you can hook into pretty much any project.
Flashbake - Git interface for text files written in Python that can suck things like your Twitter status into commit messages. Just plain wacky.
subscribe via RSS