|« December 2005||February 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
[email protected] 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
# Transient Tags on FanConcert and Artists Requiring Updates
I've added a new feature to FanConcert today: if an artist needs to be updated, you can tag it with Needs Updating. This tag will last for 60 days before it is automatically removed, unlike the other permanent tags like Favourites. I'm calling these tags transient tags because they disappear after a while.
Why remove the tag after 60 days? Bands have periods of activity and inactivity. When a band is on tour, they may be constantly adding new dates so they constantly need updating even after they announce their initial tour dates. Keeping the tag around for a short period covers that and you can re-tag the artist to reset the 60 day period over and over again if you need to. By automatically removing the tag after 60 days, the system is just reflecting the fact that the users don't need information about that band any more because the band is inactive.
These tags also give focus to bands that people want updated, purely from a popularity angle. If you're actively looking for bands to update to get more reputation points, I've made a list of the artists that are most tagged as requiring updates: 50 Top Artists to Update. But it doesn't stop at just adding the concert dates -- other people can score the dates that have already been entered, which is why I don't mind that the Needs Updating tags stay around for two months. It would be nice if people are constantly checking that the dates are correct while the band is still actively on tour.
Here's the best part though: If you're too busy to add concerts for an artist but know they should be there, you can just quickly tag the artist with Needs Updating and someone else will handle it. You can still contribute to FanConcert by alerting other people about bands that need updates without having to do any data entry yourself. I'm just looking out for my lazy contributors out there. ;)
# Ruby on Rails 1.0 Test Performance
The new Ruby on Rails project I'm working on is giving me an opportunity to start from scratch and incorporate all of the lessons I've learned from FanConcert so far. The new project is also giving me an opportunity to try out new things with Rails with a clean slate and then incorporate those things in FanConcert. It's benefitting both projects.
An example is Ruby on Rails' testing support, which has been improved for the 1.0 release. Rails testing supports two new settings: 1) transactional fixtures and 2) not using instantiated fixtures. Both of these settings can improve the performance of unit/functional test runs, which improves the speed of development if you run the tests a lot -- and given I like to test first, I run tests a lot.
What are these two settings? First I need to explain what Rails fixtures are: they are objects that are loaded into the test database at the beginning of every test method and used during the test. Fixtures are deleted and freshly reloaded after each test method to avoid method-to-method side effects -- very important!.
Transactional fixtures leverage a database's support for transactions to rollback the database after each test method instead of deleting all of the records and reloading them. This can result in a large performance improvement, as you will see by my numbers below.
Instantiated fixtures are fixtures in the form of regular Ruby objects available in test methods as instantiated member-level objects. If you don't need to create these instantiated fixtures before each test method, you'll save time. There's another benefit to not using instantiated fixtures: readability. Here's a comparison:
Sometimes the type of the object isn't this obvious, and the explicit use of the class name to access the fixure --
What are the performance benefits? Here are the numbers for FanConcert (mean results over several runs):
Old Rails default - unoptimized:
Using transactional fixtures:
New Rails default - Transactional fixtures, not instantiated fixtures:
As you can see, using transactional fixtures reduced the test run time almost in half. Then not using instantiated fixtures reduced the test run time almost in half again.
After using both of these settings my total test suite run is over 3 times faster! How can I not be happy with those kinds of real-world results?
# FanConcert's Got Mail
You can send internal mail messages to other FanConcert users now. To send someone mail click on any link with their username to go to the user's public profile. In the profile there's a link to send mail to that user.
If you go into your FanConcert preferences, you can be notified by email when you get new FanConcert mail messages. When FanConcert's internal mail support matures, these email notifications will be ON by default. Right now they are OFF by default and you must turn them on in your preferences.
Mail support is new so it's still fairly rough and incomplete (you cannot delete messages as of today). I'm very interested in your feedback. Feel free to send me test messages.
# FanConcert: The Big Two
FanConcert is still alive, I've just been distracted lately by another project and some full time job opportunities. Resumes take a long time to get right! Thanks to everyone that've given me kind referrals, I appreciate it.
FanConcert has many problems, I'm not afraid to admit that. A difficult aspect of shipping early and often is that you're out there long before you're ready and everyone can see your flaws. It might be a lot like naked public speaking but I wouldn't know firsthand.
Shipping early is also a great advantage though. I'd still be chasing my tail around the room if it weren't for the excellent feedback I've been getting from FanConcert's users, even just from the limited pool of people I've told about the site and a few people who have wandered in from Google.
After a long hiatus and some time to reflect, I see two main problems with FanConcert that need immediate attention. One is basic and is something my users told me I needed a long time ago. The other is more technical.
The basic one is the ability for users to socialize and interact. Originally I pictured FanConcert being strictly a music news site but there's nothing sexy about information -- no matter how new or relevant it is. FanConcert needs more to keep people interested and constantly coming back.
Here are some ideas people have come up with:
More socializing gives FanConcert the opportunity to snowball in a way it just can't right now. It would also provide a reason for accurate information to exist on FanConcert: if you want to tag every concert you've ever been to, they all have to be in FanConcert. Same with all of your albums.
The technical problem has to do with naming objects. This has been a really big thorn in my side from day 0 and there are several issues that need to be addressed:
Lots of open issues there! The good news is that shipping early exposed all of these problems. I'm confident that by continuing to ship often and by listening to feedback we'll knock them off one by one.
# US Opinion on the Upcoming Canadian Election?
OK, citizens of the USA -- I'm listening. It seems like Canadians couldn't help but get their two cents in on your last election so I'm willing to listen to your opinion on our election, which will take place next Monday, January the 23rd. Who do you think we should vote for?
The Liberals (headed by current Prime Minister Paul Martin) currently have a minority government but held a majority here for 12 years previous (under Jean Chrétien). They are effectively tied in current polls with the Conservative party (headed by Stephen Harper). The NDP (headed by Jack Layton) is farther left than the Liberals on issues like the environment and health care but are gaining ground on the Liberals as the leftist party of choice because of multiple allegations of corruption within the Liberal party.
Like the US, we don't have proportional representation in Canada. The country is divided into ridings (with approximately the same number of citizens per riding) and each riding has an elected member of parliament. The Prime Minister is the head of the party with the most seats in parliament.
A majority government occurs when the party with the most seats has more than half of the seats in parliament. As a party they can win any vote brought forth in parliament. If no party holds the majority of the seats the party with the most seats is said to have a minority government and must compromise with other parties to win votes brought forth in parliament.
Given the latest polls, there's an excellent chance Canada will continue to have a minority government. However, it is hard to say whether that minority government will be Liberal, Conservative or maybe even NDP.
So what do you think, USA? I'm more than happy to hear your viewpoints.
# Munich Review
I saw Munich yesterday and I thought it was quite good. It was nearly three hours long but compared to King Kong it was a much smoother ride and I felt less restless. There are spoilers in this review. Disclaimer: I was baptised Roman Catholic.
What really helped me understand this movie was an excellent documentary aired by the CBC just a few weeks ago. I'm not sure if it was a CBC production and I can't find the title but it gave an excellent overview of the entire Munich massacre and it's aftermath, which made Munich (the movie) much easier to follow.
The overriding themes of Munich to me were 1) people fighting to have their own home; 2) the battle in the Middle East between Israelis and Palestinians having no conceivable end with each side trying to eradicate the other completely; and 3) "regular" people turned assassins who progressively get used to methodically killing people, even to the point where they take a detour from the list of names.
I was curious how an obviously Jewish director like Spielberg would handle both sides of the conflict and he did it in quite an interesting way. Instead of Palestinians giving their side directly (aside from one direct discussion between an Arab and a Jew posing as a "Jew sypathizer") during most of the movie the arguments were given on both sides by Jews. The most interesting part was the discussion between Jews about which side was more violent, with one Jew reminding another that violence is how the Jews occupied Israel in the first place.
It's hard to criticize Spielberg for being one-sided when the movie is about one side -- but even so I think the movie did a decent job while at the same time (not surprisingly) producing no new arguments on the subject as far as I could tell.
I have to wonder if maybe the script could have been beefed up to be more cerebral. On the other hand people were actually leaving the matinee I was at, so maybe the movie was too cerebral and not "pedestrian" enough for a Spielberg blockbuster-type movie. As far as major motion pictures go, I thought it was a passable mix of discussion and action/suspense/mood/violence "eye candy" (ie. the arm hanging from the fan).
People shouldn't go in there expecting a documentary style, just as they shouldn't expect that from other "based-on-events" movies like Saving Private Ryan or Enemy at the Gates. Those movies had more action zip, whereas Munich seemed more subdued, with Avner getting more and more depressed and paranoid as the movie went on. The violence was less of a "cool looking" vehicle and more along the lines of necessary to tell the story.
One last thing: at the end of the movie, the twin towers of the World Trade Center are clearly visible in a panning wide shot. They look absolutely seamless, which makes me wonder if maybe the whole skyline was a matte painting (to simulate the 1970's NYC skyline) or if the towers were digitally added to the shot later. It seems like adding them digitally to a panning shot would be quite difficult, but what do I know? :)
Overall? Go see this movie in the theatre. Try to see that documentary on the CBC/Newsworld first though.
# King Kong Review
Please, if you haven't seen the movie don't read my King Kong review. This review contains spoilers because it talks about specific special effects.
King Kong is seems like an unnecessarily long film, and that's not a good thing. It's an action film and yet there's all of this time spent on story that could have been tightened up. There are also unnecessarily long shots of locations/scenes that could have been shortened.
All three Lord of the Rings movies were long but they didn't feel long until the last half hour (at which point, all three dragged on). At King Kong, I was getting restless an hour into the film when they hadn't even left New York yet!. We all know what happens at the end of King Kong, so delaying the final payoff scene just seems silly to me.
My other main issue with King Kong were the special effects but before I get into that I'll tell you the ones I liked: King Kong himself was flawless. His hair, his movements, his behaviour was all very believable. The fights with other CG characters like the dinosaurs looked really good but were too long with too little payoff at the end of them.
Problem areas included the full shots of Kong where he's holding Ann Darrow and she's moving in his hand. The mix between CG and Darrow just didn't look good, they could have (and should have) done much much better. Another unrealistic part was the men running with the dinosaurs when the "camera" faces them. Again, the mix between the dinosaurs legs and the real men just didn't look realistic, and it took away from the film.
I lost some patience with King Kong early on and didn't get it back until Kong escaped at the end of the movie, which was really cool and pretty much the only part of the movie that didn't feel slow pace-wise. Overall, a it was a decent movie but it's a heck of a long time to wait for an action payoff.
The last thing I didn't like was Ann Darrow standing on the top of the Empire State Building with Kong and a slow breeze wisping through her hair. I don't care if it's morning and there's no wind on the ground, it's going to be damn windy at the top of the Empire State Building. So windy you can't just stand on it with high heels on. As cool as those scenes were, that point just bothered me.
# Two Thousand Six
I've had a bad cold for the past week and though it was pretty nasty it left as quickly as it arrived. Why do I always get sick on vacation? Anyway, I'll be getting back to work very soon.
It's funny how the end of one year (and the start of a new one) gets people reflecting on everything. I suppose its as good a milestone as any. After Christmas, winter seems to be generally a less hectic time that allows for reflection. Less sunlight, more time inside -- it gets the gears turning.
FanConcert isn't making money, so it's gut-check time. I made the end of 2005 my deadline and things didn't work out. Either I figure out a way to get income from it very quickly or it becomes a part-time hobby.
Bottom line is: I need to start drawing a salary from somewhere. For the next month or two I'll still be working on the site but at the same time I'll be actively exploring my options for the future.
If you know of anything opening up and you think I'd be a good fit, let me know at