Thursday, January 18, 2007

Really Smart People

Finally caught up on some of my blogs today, and found some amazing stuff.

First, Pat Maddox uses a declarative style to push Rails very close to Seaside's clean and effortless modularity:

Your app is still generally useful because it's not tied to the workflow. You can bypass the entire workflow by just POSTing all the attributes of a Supermodel. You can combine steps by PUTting just a couple of the attributes at once.

The workflow is just a bunch of objects, so you can store workflows in the DB. Then you can do cool stuff like create an admin interface to maintain workflows. Imagine you're at a page that has all the possible workflow steps. Add/delete/rearrange steps with some AJAXy goodness.

A workflow can easily cross multiple controllers, it's not limited to the current controller.

The funny thing about this post is that Pat spends so many words of it beating himself up for not adhering strictly to the RESTful dogma that I don't think he has the faintest idea how brilliant what he's done actually is. That's something I'd be impressed to see coming from Jamis Buck.

Next up is Reg Braithwaite, consistently one of my favorite bloggers, with a very compelling argument that computer science matters more than ever:

You know how bit-twiddling in Java is irrelevant because you’re waiting for the database any ways? Well, we can’t afford to wait for this particular function, it’s one of those AJAX-y things that happens in real time. We can’t wait to go back to the database. So we have to load something into memory on the server, build a compact data structure, and traverse it quickly. And oh yes, we can’t have a lot of layers of crap, we need to get a response back to the browser with every key press.

For another client, we had to build a task dispatching system. It was like building a piece of a very lightweight fault-tolerant operating system. That operated across data centres in three different cities, moving jobs around from centre to centre. If you were in an interview and someone posed one of those hypothetical “how would you design a …” problems, would you think they stole the problem from some Amazon programmer’s weblog? Would you think “you don’t need that for business programming?” Well, we built that. For an ordinary, brick and mortar business that makes physical stuff.


Standards are rising. We’re doing more and more work that steps outside of the usual CRUD development.

Here’s the big reason why. Have you read people grousing about interviews where they’re asked about how to implement a search? And about what a waste it is because 99% of the time the database does it, and the rest of the time they stick it in a hash table? Well, in 2007 search matters. The database is a big part of that, but it’s not as easy as SELECT foo.* FROM bar WHERE ... any more.

Google has become the “start page of the internet.” As a result, everyone now thinks that the way to find stuff is to do a full text search. Everyone thinks that relevant results should be first. And I mean everyone, not just your “early adopter” users, you now have Joe Average calling your customer support hotline and complaining that the search page on your application—the one with a different field for each column in each table—is too hard and why can’t he just type something and get an answer?

Very cool.


  1. Dude, I spent one sentence apologizing for it. The very next sentence I said it wasn't a big deal, it could be easily fixed, I just didn't do it in my example.

    Anyway you've had me slightly embarrassed for the last few days. The workflow engine is pretty slick, and I'm looking forward to making it available to people soon. If nothing else, it should give people some ideas on how to really push Rails and web programming in general.


Note: Only a member of this blog may post a comment.