One thing most web applications need is a static page template. Now, whilst the page content might be static, the template itself might need to be dynamic – either because it’s going to change in future, or because you’ve got dynamic user information that appears in the tempalte.

So the most obvious way around this is the static controller. Dead easy, this: generate a new controller called static (or whatever you want). Then just write views for it named after pages you want. For instance: your about.rhtml file can contain all your “about” information. Then, when you hit up /static/about (to use the default routing), you get your static content, without having to make a whole page from scratch in public_html. You could even write a new 404 page on this controller.

All that remains, once it’s working, is to write some dedicated routes, and then the “static” controller can be hidden from existence – just route /about to :controller => "static", :action => "about" and you’re done. No need to write any controller logic at all!

Going on from there: one view I’ll always add to that template is the “foo” action.

So: when you’re mocking up a page, you’ll probably use lots of dummy links. Everyone expects this, because it’s obviously just a flat mock. But when you mock up an application, and show it to stakeholders in a working state, they click on things, and wonder why they get ActionController exceptions when it breaks. Also, they wonder why the link that breaks stuff is always /foo.

Obviously, it’s because I’ve left link_to "/foo" all over the shop. Have no fear: the easy way around this is to route /foo to :controller => "static", :action => "foo", and then write a static page called foo.

When you do this, the page should explain that it represents functionality that hasn’t been added yet, but will be added soon, and that the developers haven’t forgotten it.

This (from experience) reassures stakeholders that the thing that is not working will be working soon. It also means that when they do find “grey screen” errors, it either means that something’s genuinely broken, or it means that the developers really have forgotten something. Time to update that link to point to foo.

It sounds trivial, but it turned out to be an effective communication of diligence on the developer’s part, and saved much time in meetings explaining that “yes, we’re working on that”. Consider it, next time you’re developing for external stakeholders.

Do Dirt!

29 June 2006

…and get away clean.

My pal Joey Muck is doing some music/dancing shindig with a few of his pals. “A club night in London’s trendy Clerkenwell”, if you please. 8-2am, tonight – I’m probably leaving well before 2 because nobody appears to have got the message that whilst Thursdays may be the new Fridays, they’re still school nights.

Anyhow. If you like mucky pop, rude raps, sleazy rock, and filthy electro (and god knows I do) get down there tonight and shake some.

(Also, if you’re that way inclined: Do Dirt’s Myspace page)

From the second page of this interview at Eurogamer with him today:

If all we do with the power of next gen hardware is increase our poly counts we’re doomed. We have to use that power to create new gameplay experiences – up the simulation level… find new ways to exploit physics… create more interactive worlds than we could dream of before… create virtual actors that can do more than run and shoot.

Yes, yes, a thousand times yes (even if the Gabe Newell/Richard Garriott school of game production has its merits, too). It’s a cracking interview – and today’s only the first part… so be sure to check back again tomorrow.

Availabot!

25 June 2006

So, now that Jack‘s show is happening, S&W have finally decloaked Availabot.

Wow. Suddenly lots of cryptic conversations with Matt over the past few months make sense – mass production, Chinese toy factories, the hell of USB serial communications.

It’s a lovely thing. I really like the emphasis on the individuality – rapid fabrication of appearance, username hard-coded into hardware – one physical thing represents one digital thing, and it’s obvious and understandable without the need for a Thinglink idea or a product code. Matt Jones’ Availabot looks like Matt Jones. When I hand you the red-headed one with a quiff, you know it’s mine; plug it into your computer and that’ll confirm it.

Also, it harks back to the peripheral vision idea of Glancing, I guess; I really like this quotation on the page:

Rather than showing up on your screen, it shows availability as a physical object in the world. That means that you can move the puppet out of view when you don’t want to be distracted, watch out for it when you’re working on other tasks, and have a background awareness of your friends from the corner of your eye.

Hiding things by hiding them on your desk, not your “desktop”. Paper bags, stacks of books, not command-H. We procrastinate (or indicate busy-ness) physically, after all. Made me grin.

Anyhow: awesome concept, probably complex in execution, but very elegant nontheless. I hope it goes somewhere!