Good Design

Good design should be innovative.

Good design should make a product useful.

Good design is aesthetic design.

Good design will make a product understandable.

Good design is honest.

Good design is unobtrusive.

Good design is long-lived.

Good design is consistent in every detail.

Good design is environmentally friendly.

Last but not least, good design is as little design as possible.

Dieter Rams Former Design Director, Braun
Quote from Objectified by Gary Hustwit.

Sending Email Using Gmail and Action Mailer

I've used this for a new site, which I'll be mentioning very soon. It took me quite some time to figure out and get right.

The first thing to do is download the smtp_tls.rb file. I saved it in my Sinatra app, under lib.

Next create a file called mailer.rb in the same lib directory with the following contents:
require 'lib/smtp_tls'
require 'action_mailer'

class Mailer < ActionMailer::Base
def my_email(from_email, from_name, message)
recipients ""
from from_email
subject "Contact from " + from_name

body :name => from_name, :email => from_email, :message => message

Mailer.template_root = File.dirname(__FILE__)
Mailer.delivery_method = :smtp
Mailer.smtp_settings = {
:address => "",
:port => "587",
:domain => "YOUR_DOMAIN",
:authentication => :plain,
:enable_starttls_auto => true,
:user_name => "YOUR_USERNAME…

Unit Testing Using Context

Jeremy McAnally has released a gem called context allowing contexts in Test::Unit tests. It's all the rage, even those crazy Rails guys are doing it (although I did check out some of their unit tests earlier and couldn't find any).

Anyway, I'm way behind on my TDD and BDD and all other testing acronyms so I decided to give it a go. These are way simple tests and I actually did it the normal Rails way initially before "converting" to the context way of doing it.

I've got converting up there in quotes because it was really, really simple and I hardly did anything which is fantastic because the easier something that's good is to do, the more people will eventually do it; think Rails conventions.

Getting Started

Get the gem:
$ gem sources -a
$ sudo gem install jeremymcanally-contextThat is outlined as the install procedure, but you can't just use it as you must require that bad boy for your Rails app to use it - so put this in your test_h…

Rebuild the locate database on Mac

Just because I always forget.
$ sudo /usr/libexec/locate.updatedb

Merb 1.0

So Merb 1.0 was released 2 days ago during RubyConf, just sudo gem install merb to update.

I had to update my config/dependencies.rb file to read merb_gems_version = "1.0" and also sudo gem install webrat, which is a Ruby Acceptance Testing plugin. Here's the Git repo if you want to check it out.

Getting the Database name in Merb and DataMapper

After a lot of searching and banging my head against my keyboard I finally found how to get the database name for my Merb application:
Macintosh:ruby-rss-feeds marktucks$ merb -i
>> repository(:default).adapter
=> #, @name=:default, @transactions={}>
>> repository(:default).adapter.uri
=> #
>> repository(:default).adapter.uri.path
=> "sample_development.db" # YAY!
I'm sure there must be a better way to do this. A Rails::Configuration.database_configuration equivalent? But I just cannot find it. The Merb.config doesn't seem to have a database property / method. You can get stuff like the host (Merb.config[:host]).

Any suggestions / better solutions are welcome.

iTunes Library from PC to Mac

About a couple of months ago I switched from my PC to a MacBook and have never looked back since. I don't miss anything from my PC, except my iTunes Library. And contrary to my colleague's advice it seems as though you can't just copy all that iTunes guff from your PC to your Mac.

So I found this article on how to convert my iTunes library and copy all the music files from the PC to the Mac.

One small edit to this post is that in new iTunes 8, "Import Library" is now, for some confusing reason; File > Library > Import Playlist. "Consolidate Library" is also under File > Library.

It almost worked like a charm, but apparently it couldn't find some of my music, maybe something to do with the special characters in my Library.xml?