|« January 2006||March 2006 »|
I'm Ryan Lowe, a Software Engineering graduate living in Ottawa, Canada. I like agile software development and Ruby on Rails.
I write this blog in Canadian English and don't use a spell checker. Typos happen.
» Full-time Ruby on Rails freelancer
» Full-time with Rails since May 2005
» Former committer for RadRails (now Aptana)
» I also have a few Rails side-projects in development:
1. wheretogoinTO.com Toronto nightlife
2. Hey Heads Up! TODO list and sharing
3. Layered Genealogy family history research
4. foos for foosball scoring
5. fanconcert for music fans (on hold)
Hiring Rails developers? I can telecommute by the hour from Ottawa, Canada
»» Email: rails AT ryanlowe DOT ca
Now hosted on Hey! Heads Up -- check it out!
Derek Lowe's (Ryan's older brother) words at Ryan's funeral
firstname.lastname@example.org no more
Forging Email Headers: Good, Bad or Ugly?
Sarcastic Dictionary (Part 1 of Many)
Twisting Rails is Risky Business
Risky Business? My Take on Early Alphas
Whoa, it's August 2007
A Postscript to "Growth at the grassroots"
»» All Blog Posts
David Heinemeier Hansson
James Duncan Davidson
Signal vs. Noise
Amy Hoy: (24)slash7
Luis de la Rosa
# Trying not to Marry my Tweaks
I like the idea of iterative development: you integrate a new thing, you take some feedback, you tweak the new thing, you tweak the whole site and you repeat.
After adding discussion forums and blogs to FanConcert, the site has taken on a new personality. This is exactly why I didn't want to tweak too much too early: I add a simple feature like forums and the whole mood of the site changes.
The trick to software agility, I think, is to not get married to your small tweaks. It can be hard to do but the greater good of the site is more important -- and that's integrating new, big features into the site.
Every time a new feature is added it's good to step back and see how that effects the site as a whole. That's what I'm trying to do with FanConcert: see the forest for the trees.
Given that I'm under self-imposed time constraints, I'm using my time to integrate more of these big features into FanConcert than constantly tweaking the current state of the site.
After all, a new feature could come along and wipe out all of those tweaks because it needs to. Overall that can translate into wasted time spent tweaking too much. It's better not to be emotionally attached to those tweaks, it makes them easier and faster to completely nuke. Buh-bye!
It's hard though. I want to make the site look good (and navigate well) right now but I have to balance that with some pragmatism. If all I do is tweak this site is never going to work for people ... and I think that needs to be the bottom line.
# Closing Discussion Threads
I should probably preceed this topic by saying I don't use traditional Internet discussion forums a lot. That may be an advantage though, since I'm not 'stuck' in that paradigm necessarily. It might be easier to look outside the box from my vantage point.
On FanConcert a user can start a thread in a forum and others can post replies. To make my terminology clear: on FanConcert a thread is a specific topic of discussion and a forum is a grouping of threads under a broader topic, like an artist, venue or concert.
Here's how I see it: the user that started the thread is trying to reach out, either to express his/her opinion or to ask a question. Other users may respond to the thread to give their own opinions or to answer the question.
However, once the user is satisfied that the thread has served its purpose they should be able to close the thread and not allow any more replies. This could also be done automatically after a certain time period (like 30 days).
The upside is that people move on and aren't always posting to the same threads. Threads would then stay a reasonable size so people can follow the discussion. Right now by default the user that started the thread is notified by email every time someone responds to the thread. Once the user is satisfied the thread has served its purpose, closing it means that he doesn't hear about it any more. If someone else wants to start a different thread about the same topic and continue the discussion, that's their decision.
The downside is that someone could want to make a useful reply to a closed thread! Though that user could simply send a private message to the user that started the thread or start a new thread so that people searching for an answer would be able to find one.
A minor upside from a site administration standpoint is that closed threads are easier to archive and cache, since they will never change after they are closed. But I'm really trying to consider the social implications.
What do you think FanConcert should do with respect to closing threads?
# Page Caching and Time Zones
Right now, FanConcert operates in GMT. That was fine because no one really noticed times that much. Now that discussion forums and blogs are in FanConcert, times are more obvious. It's becoming much more important to represent time properly, especially to the user's local time zone.
A user should be able to set a timezone in their preferences and all of the times they see on FanConcert should be shown in this time. This can be a problem if the forum pages are cached! Or is it? Maybe not...
# Page Caching and Personalized Content
FanConcert has a lot of content that can be read anonymously (like artist pages) but can also be personalized if a member is looking at it.
This brings up an interesting problem when I want do page caching. Page caching lets you keep around a static copy of a dynamic page, so if there have been no changes to a dynamic page since the last time it was requested, you just send the static copy. This can save server processing time and make the server seem faster.
Unfortunately almost every page on FanConcert is personalized in one way or another. So a goal could be to strip the personalized information from the pages so that there's a static base to the page (which can be cached) and then dynamic information can be overlayed on top or integrated within the page.
To the user the page seems personalized but on the back end they are actually getting a cached page plus some personal treatment on top of it or within it.
AJAX could be a good way of accomplishing this effect seamlessly. When I request an artist page, I could get the cached copy on the first request which fires off an additional request to get personal information (my tags on that artist, for example).
Then FanConcert could have the best of both worlds: decent page caching and personalized content. I wonder if the effort would be worth it?
# Make a <div> not 100% wide?
Here's a question for my readers:
A <div> usually takes up 100% of the width of the page. How do you make it only take up the width needed by its contents? I've tried using width:1px but that just compresses the contents -- the div literally tries to go to 1 pixel. I don't want to use a fixed width like 500px.
The only workaround I have so far is to put a table around the div. The table only takes the width it needs for the contents and the div inside it only fills the table, not the whole page. An example is the artist page on FanConcert.
I'd rather not have to use a table though. The solution needs to work in the major browsers, any ideas?
# FanConcert is Syndicated
I'm very happy to announce that I've added syndication feeds (RSS, Atom and OPML) to all searches in FanConcert. The URLs for the syndication formats are simple and clean. For example, upcoming concerts for Coldplay have a search URL of:
The corresponding RSS and Atom feeds have
Ruby on Rails routing makes these types of URLs very easy to do. I just set up the following routes:
I'm using the new Feed Icon to link the feeds. This icon has already been adopted by FireFox and IE7, so people will be able to recognize it and what it means.
# Blogs at FanConcert
Every user now has a blog at FanConcert where they can write about whatever they want. Most people will probably write about music but it doesn't matter.
I've meshed together FanConcert's blogs and discussion forums in order to consolidate all of the discussion. The only differences between blogs and forums are:
As usual, this is just an initial implementation and I'm looking forward to your comments to improve blogging on FanConcert. RSS and Atom feeds for forums and blogs are coming very soon, that's the next thing I'm working on.
I also want to make it easier to link to things in FanConcert from blog and forum posts. It's not a good idea to allow HTML in posts -- Roy suggested using BBCode and extending it for things in FanConcert. For example
Your blog is linked right from your home page. Start posting!
# Dangerous Metrics in Olympic Ice Hockey and Project Management
The software project management course at the University of Ottawa was pretty good but there were points that stood out. One great point was that people will optimize their behaviour depending on how you measure it.
In the software development world, project managers (PMs) sometimes collect metrics so they can gauge their project's progress. For example, a PM may measure the number of tasks each programmer completes per day. He may also measure the number of defects the QA team reports per day.
These metrics can be quite dangerous if you don't pay attention to the side effects. From the above examples, how big are the tasks in question? Each task can take a different amount of time for a developer to complete. QA personnel could submit many trivial defects in order to increase their daily counts. Quality suffers in the name of quantity. These side effects can have negative consequences for the project.
Let's switch gears to Olympic hockey. The Canadian women's Olympic team beat their three opponents in the round-robin part of the tournament by a total of 36 goals to 1, giving them a goal differential of 35.
Now the women's team is taking some serious criticism for running up the score on poorer teams. Among others, Don Cherry has said that dominance by one or two teams in an olympic sport could lead to its cancellation, like baseball/softball in the summer Olympics.
Why did the Canadian women's team run up the scores? Because the tournament rules state that the team with the highest goal differential gets home-ice advantage in the gold medal game. Home-ice advantage can be very important so the Canadian team is running up the scores.
If people don't want the really good teams running up the scores on poorer teams, they need to remove the incentive to do so. Goal differential in the round-robin is a poor measurement anyway because it's often the case that the two teams in the gold medal game played in different pools against completely different teams. Canada had a large advantage in their pool by playing Italy, a team that is only playing in the tournament because they are the host country. Canada beat Italy by a score of 16-0.
How can they determine home ice advantage in the goal medal game? How about world rankings before the Olympics? The teams are already seeded so that the pools are balanced. Countries could be seeded overall based on past official tournament performance or even the previous olympics.
 Home-ice advantage gives the team the last change on face-offs as well as other advantages.
# Prose, Look and Feel
While adding discussion forums to FanConcert I've also gradually been improving usability. The major pieces are starting to come into place, so it's easier to see where things should go and what they should look like.
FanConcert is not the easiest it could be for new users, so it needs some work there. I'm still adding things to your FanConcert home page. What else would you like to see here?
# I'll Give You a Topic; a Peanut is Neither a Pea Nor a Nut ... Discuss
Every object (artist, venue, concert, release, etc) has a discussion forum. There's even a discussion forum on every FanConcert user's profile (here's mine).
I'm going to add a forum to the bottom of every FAQ page so that users can discuss them. I really liked this aspect of the PHP manual, where people could post stuff related to the part of the docs you were looking at.
I made a page for other discussion forums (not connected to specific objects). Right now there's only one forum in there called General Help but we'll definitely be adding more forums. Suggestions?
This is the intial implementation of discussion forums, so I'm eager to hear your feedback for how they could be improved. Soon I'll be adding RSS/Atom feeds and forum searching. I'll probably add a preference to be notified by email when people respond to your threads.
This is another feature to allow more social interaction on FanConcert. What's next? I'm thinking every user should have a blog where they can talk about music (or anything they want). This shouldn't be too hard -- a blog is just a discussion forum where threads can only be started by one person. The other posts in the thread are the same as blog comments. Simple.
# Getting Social, More Tagging
Having a rudimentary scoring/moderation system in place for FanConcert means that I can focus on other important areas now. What FanConcert really needs at the moment is more users, to test its limits and find new problems. So feel free to spread the word. :)
It may seem a bit funny to want people to find problems but that's exactly the kind of feedback you want on an agile software project. I like negative feedback -- it's far more constructive -- but some people, especially friends, are reluctant to give it. Strangers though, usually aren't afraid to dole out a deserved flaming or slap across the head.
But I digress... right now I'm adding social features to FanConcert to make it easier for users to communicate with each other, share their music preferences and recommend music to others. FanConcert's structured and moderated information will be the very important base that all of the social features will rely on, which is why I felt so strongly that I had to work on that first.
In hindsight I'm not sure that early introduction of some social features would have helped FanConcert in the long term, especially since they would have delayed me getting to this point with scoring/moderation in the first place. It's not a bad idea to take some time and look back and see if your 'guesses' turned out to be good ones. That might be a better way to make better guesses, it might not.
The way I see it, the number of FanConcert users had to be kept at a manageable level -- especially when I was already getting enough good feedback in terms of volume. There was no reason to expand at that point and there was also the secondary issue of possibly disappointing people with a very 'unfinished' and unpolished product. At least with my friends I could say "try this out and let me know what you think BUT keep in mind that it's not finished". In a way, I was prepping people to give the level of feedback I needed. The polish is still far from done but important features are in place to support more people contributing and moderating. I like where FanConcert is right now.
Now that the basics are in, I'd like to allow people to interact more. What kind of things would you like to see? How would you like to talk to people and share common musical interests? What kinds of social interaction are already working on other websites?
Here's where I am right now with social features: you can send internal mail messages directly to other FanConcert users.
Yesterday I added the ability to tag concerts, releases and users just like you could tag artists as "Favourite". With those tags you can make a list of the concerts you have seen and a list of the releases (albums) you have so that other users can get an idea of your tastes. These lists are linked from your profile (here's my profile).
You can tag other users as "Friend" and they'll have an elevated status for you. Recommendations (not implemented yet) from friends could carry more weight. You could block email or recommendations from non-friends. There are lots of possibilities there. The "Friend" tags could also be used to create networks (graphs) of connected people with similar interests or in similar geographic areas. Could be really cool!
I'm very interested in getting discussion boards on every single artist, venue, concert and release (and others). In fact it will probably be the next major thing I work on. People will be able to talk about anything they want there and there will probably be a Slashdot-like moderation system to emphasize good threads.
Other information websites like imdb.com and Wikipedia have this type of back-channel discussion going on. Most people probably don't even know it's there but the hardcore users and contributors use it to organize themselves and to socialize. I'd like to emulate that effect with discussion boards on FanConcert.
Anyway, this is getting long enough for now, enjoy FanConcert!