closing comments

The spammers won (well not really), after getting tired of deleting spam en masse (by the thousands every other months or so), I decided to close comments on some older posts that happen to have a better page rank than most. If you really need to get to me, please feel free to use the Contact me page

Even though I’ve been considering this for a while, this was in part prompted by Jesper of Just add water

His comment policy is simple:

In the future we will probably mark all of the above comment types as spam. Yes, some of the comments actually add value, but most of the comments actually are just made to improve ranking.

We will continue to manually approve the comments we mean will add value.

We will continue to hold comments for manual moderation. (so if your valid comment does not show up within a few hours, please contact us).

Actually, mine is even simpler.

– you must pass the Akismet test.

– you must pass my own test: I review anything Akismet approves and will delete anything that looks, sounds or smells like spam. So even if your comment gets approved initially, I reserve the right to remove it. If that sounds arbitrary, so be it. Although I believe I have been quite fair in the past and will continue to be.

Disagree? Send me your feedback

Unrelated note: Did you check out Twitter Essentials ?

in News | 243 Words

merb 1.0

merb has reached 1.0. What a tremendous achievement from all all contributors, and Ezra more specifically and Wycats

If you can’t wait, use

 gem install merb --source

Should be available by tomorrow on your regular gem mirror

gem install merb


ANN: rails-undo-redo

To this day, very few web apps provide any undo/redo capabilities. This is really not such a good thing for usability. There are a few exceptions like gmail, but it does not go far enough to provide what every one is used on their desktop.

Ever since I read Assaf’s post on the subject, and left hungry for more, as Assaf only helps you on the UI side and leaves you all the heavy lifting, I have been thinking that there must be a way to make it a lot easier to implement undo/redo in a consistent manner, and in a way that is as easy as rails has gotten us used to.

After a few failed attempts, and building on the work of Brian Durand and his Acts As Revisionable and ActsAsTrashable plugins, that I’ve reused (and probably abused as well), I have come to realize a few (obvious?) things, namely that:

for Undo/Redo to work, it needs to

  • Work across all models
  • Capture the list of changed objects (UndoRecords)
  • Group these UndoRecords per User Action (UndoActions)

Then undo and redo are just a simple matter of replaying the UndoRecords in the right order.

All my previous attempts, and most other plugins I got inspiration from focused on one model, and even though you need this as a building block, for any real application, you need to be able to undo changes across multiple models (even beyond belongs_to, has_many type changes).

When you look at the types of changes to a model in details, you really have 3 types of changes Create, Update and Destroy (these are the C-U-D in CRUD, even if you are not doing REST), and undoing each one requires special handling, so this is also tracked and managed by UndoRecord.

To make a long story short, I’ve packaged all these ideas into a new Rails plugin: Rails Undo Redo (and very soon a gem as well, because this can help, and that’s also easy, or very easy), you can now easily transform any Rails Application using Active Record into a full fledged multi level undo/redo application like most desktop application.

For a full how-to, read the Rails Undo Redo project page, or try the Rails Undo Redo demo.

ANN: git-rails

Git is quickly becoming one of the best option for using a DVCS (Distributed Version Control System). Git main goal is to be quick (most everything you do is local), and has already been battle tested by the Linux Kernel dev team.

Recently, I’ve started experimenting with git after Rick switched Mephisto to git.

Even though things are pretty straightforward, some things are easier than others, especially when you have to take it all in in one shot.

So, over the weekend, I created git-rails, completed with a rubyforge project, an installable gem (gem install git-rails), and a git repository hosted by Gitorious

Currently, git-rails provides 3 functions:

  1. init repository (hookup to remote git repository, rails aware .gitignore)
  2. install plugin managed by git (using git submodules)
  3. update plugin

For now, I’m happy to use giston to manage svn hosted plugins, but I’m considering whether to add that functionality as well. We’ll see how things go.

To get started with git-rails, head over to the new git-rails project page.

Inspired by piston, and its newest sibling: giston/braid


If you have a Mac, or want one, then you should surely take a look at the $49 bundle MacHeist has put together. An amazing value, with lots of cool apps. Plus 25% of your purchase goes to charities.
It’s like getting 1password, CoverSutra (truly cool), and Snapz Pro for half the price, and getting all other 11 Mac Applications for free. Check it out (via Obie Fernandez)

Update: I had the link wrong (using https), and you could not see the apps. Fixed. Also forgot to mention you also get CSSEdit. And possibly VectorDesigner if they reach the $300,000 donation level.

Ruby Gem 1.0 is out

RubyGem 1.0 is out.


Which means that if you see

undefined method `require_gem' for main:Object (NoMethodError)

You’ll need to replace require_gem by just gem.

For example, unless you have the very latest version of ruby-debug (0.9.3), you’ll see the above error. In that case, though, updating your gem is simpler.

Upgrade to Windows XP?

This was just too good to pass up! Vista has been getting a pretty bad rap anywhere you look (well, at least anywhere I look, and from second hand experience helping people with their Vista machine), so here’s your chance to finally Upgrade to XP

Ok, you can stop laughing now.

And for a real upgrade

(via Reginald)

in News | 59 Words

Dreamhost codes

I’ve had my ups and downs with Dreamhost and I’m now running nano RAILS on a kick ass VPS with gentoo.

But for a starter ruby site (nano RAILS was hosted there for over a year!), it is hard to beat their price, and they do run quite nicely with fcgi. If you want to run multiple apps, using mongrel, then sure it is not for you.

I’m also running lots of wordpress blogs (Home Recipes and Why not create a Side Business) and I’m happy with the no hassle way to get them setup and how smoothly they run.

Any way, to make a long story short, Dreamhost has finally decided to update the way you create codes for their Coupons.

So if you want to get started with a pretty good host, and need a new domain name, you can get that domain for free for the life of your account by using the code NANODOMAIN (plus you get the max $50 off, which is a nice chunk of change).

Or if you already have a domain, but want a unique IP, you can use NANOIP (and you also get $50 off).

Or you can take advantage of that last week to get $97 off with NANO97.


in News | 211 Words

An amazing lesson in Micro Biology

If you are just curious about how things work, or a big fan of Micro Biology, you should not miss this 10 minutes video.

David Bolinsky has created an amazing video where he shows in stunning motion the inner working of the cell. This may have been staged so that visibility of what’s going on is increased, but the video are just breath taking. I look forward to watch his entire creation

Or if you prefer, the higher resolution version

Thanks to TED for sharing!

in News | 84 Words

Finally migrated to Mephisto

Big sigh of relief…

… and yes, everything went fine. Well, mostly. If something looks amiss, please use the brand new feedback page (thanks Rick!) to let me know. I’ve tried to redirect most existing urls to their new ones as Mephisto and Typo slightly differ on how they generate the permalink portion, but may have missed a few (so if you get an error page when something used to work, please do let me know!).

After much hesitation, and having dreaded the minutiae of the conversion, I’ve finally made it!

In fact it was the switch to a brand new VPS with a 1Gb of memory that was the trigger. Since I was reinstalling everything from scratch (more on that shortly), I figured now was the time to bite the bullet. And it went much easier than I expected :). I’ll try to put down some notes on some the pitfalls to avoid within a few days.

Suffice it to say that I’m quite happy with the result and this blog is now running with nginx (yeah!!!) and a cluster of mongrels on a fined tune gentoo vps (I’ve kept detailed notes that I will share soon).

I’ve also ported the Brighthouse theme by Richard White to Mephisto and will add it to the Mephisto Theme Gallery as soon as I get to clean it up and remove the nano RAILS specific stuff. In fact, I’m curious as to whether you would rather have the theme with AdSense and TextLinkAds: (aff) included, or maybe the ability to turn them on/off?

Also new is the Archives page, and hopefully the new error page will help people find what they were looking for.

in News | 293 Words