Wednesday, 29 July 2009
Why bus tickets are getting bigger
Monday, 27 July 2009
Physical signs going the way of the buggy whip
Aside: I think that a watch is an exceptional good analogy in this case for figuring out where you are. Clocks were used for ship navigation and "time" is a fundamental component of GPS. An interesting read is the effects of relativity on GPS.
So, with everyone using a HUD that will help them navigate (in their own language of course), what use would a physical sign be anymore? It would just be an expense to build and maintain. If you had a "digital" sign that was available to people via their ubiquitous HUD's, your sign would always look new, be as you decide to have it today with much less cost in changing it, consume near zero of your own power (since you wouldn't have to pay to light it), no repair costs due to weather or vandalism, etc. Signs for navigation will go the way of the sextant. Signs for advertising? I'm assuming that it would be the same story. I just can't imagine how the conflict of "what advertisers want you to see" vs "what I want to see" will be resolved. Either way I figure that the future will be interesting. ;-)
Monday, 20 July 2009
I love the smell of rm -rf * in the morning
Some times when you have been stuck in the same place long enough and aren't able to make any progress, there's something really satisfying about deleting it all and starting over. Sometimes that actually fixes things. Mostly in the case of Windows, and, as I discovered today, WebSphere.
Clean slates are nice. ;-)
Sunday, 19 July 2009
Who's the audience and how are they going to consume the product?
I found myself making this mistake yesterday with a different kind of situation. We had some family over for a bbq and I decided that we'd serve some watermelon. I tried my hand at trying to carve it like a pretty flower. After watching several demos online and then creating a product that looked like a drunken monkey took a weed whacker to it (but everyone said it was nice), it was put on the table. No one touched it. Not even myself. It could be a case of too much food, but I think that it was just in the wrong format to be eaten at the bbq. I should have just quartered and sliced it. Fancy carving - dinner party. Brunch - melon balls. BBQ - slices.
When making it, I was thinking of first step. I should have thought of the last step and worked backwards. If you don't know where you're going, any path will take you there.
Thursday, 16 July 2009
Open Mind - Clear Entertainment
Out of interest, the movie was called The Soloist.
Tuesday, 7 July 2009
Everyone gets a meaningful URL
One of the things that I don't necessarily enjoy is messed up URL's. Don't get me wrong, I've done my part in creating some apps that create unreadable url's, but that doesn't mean that I liked it.
One of the issues we've had a work is part of CLF 2.0 (because it's a 2.0 world) where they talk about url's and how they should give equal treatment to both official languages when naming folders and files
. Now, having people talented at development and translation and have those translations jive with what the client feels is correct can be almost impossible. So having url's that are contained within an app is just a recipe for tons of QA and redeploys as discussions over the proper word happens.
Using annotations and spring's @RequestMapping
value attribute you can tie a controller or method of a controller to multiple url mappings. e.g. you can have your method run if someone hits home.html or maison.html The issue with this solution is 1) that your mapping is still within your code 2) you can't easily add support for another language.
Aside: stay with me on this one, I haven't worked through the issues like security. Andrew and I only came up with this last thing today.
Normally if you're using the @RequestMapping annotation you need to have the DefaultAnnotationHandlerMapping bean configured. This is what connects the url's coming into the app with the annotations configured. On start up it "registers" all the annotations. What you can do is have an external data store (property files, db, it doesn't matter) that will contain all the accepted urls for what's contained in the annotation.
Example:
public class MultilingualAnnotationHandlerMapping extends DefaultAnnotationHandlerMapping {
// TODO inject into bean
private String suffix = ".html";
// TODO inject as well, for both possibily have them as a Collection
private String prefix = "/";
@Override
protected void addUrlsForPath(Set<String> urls, String path) {
// this map you get from another service / file etc. Either cache it on this bean or somewhere else.
Map<String, Collection<String>> urlMapping = // ...
// the path is the thing that's found in the annotation
if (urlMapping.containsKey(path)) {
Collection<String> languageUrls = urlMapping.get(path);
// register each url
for (String url : languageUrls) {
super.addUrlsForPath(urls, buildKey(url));
}
}
// make sure we also add the original path as well
super.addUrlsForPath(urls, path);
}
private String buildKey(String path) {
return prefix + path + suffix;
}
}
Now in your controller class, you can just put in a something like @RequestMapping("my.admin.controller.key")
and have the urlMapping object above populated with a list of all the different translations for that key. eg. You can have key "my.admin.controller.key" point to [home, maison, casa], etc. You can even leave it to the original home.html as your key and just add mappings for the other languages.
This solution only helps solve the different translations coming in, it would still be required to have a tag lib or EL function or something that would put the correct name into your jsp or whatever. But having done this you can have the app provide meaningful urls to all the users, rather than a subset or none.
I'm actually hopeful that this solution would work well. ;-)
Thursday, 2 July 2009
In order to fly you've got to let go
The only way for the org to truly fly is to let go of some control, trust the people to do good work, and put in place the tools and processes that would help the people quickly identify and fix any issues.
Wednesday, 1 July 2009
1000th post!
A lot has happened since I've been blogging in this location. Started to date Laura, moved in together, got married and bought a house. Many friends have gotten married, babies have been born, and we've lost friends. In short, a lot of Life has happened in the last six years of blogging here.
Good times, good times. ;-)