|« October 2004||December 2004 »|
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
# MT-Blacklist in Action
Here's a screenshot of MT-Blacklist doing its job for me. These are just the patterns I check for, not specific URLs that MT-Blacklist also blocks. I find that the filters are far better if you use regular expressions instead, because the spammers just change the URLs slightly by adding punctuation or numbers.
Can you imagine deleting all of those comments manually? Damn...
# Extensible Software
I've been meaning to write about this for a while now, but stuff has come up. It's certainly not a new topic but it's an interesting software engineering topic: writing extensible software.
And I'm not just talking about extensible for the developers themselves, I mean writing the software to include hooks for other developers -- usually users -- to add to your product.
Extensible software is starting to be more and more common. Development tools like Eclipse are extensible through plugins, my blogging tool Movable Type supports plugins, there are third party add-ons for MSN Messenger and Outlook. There are also extensions for my favourite browser, Mozilla Firefox.
Making an extensible or plugable architecture lowers development risk, because people will go out and make plugins for things they really want, which in turn improves the overall value of your product. Sometimes features that start on as "third party add-ons" end up in future versions of the product, like message logging in MSN Messenger. The MSN Messenger team can gauge the popularity of that third party add-on without risking development time on it. Then when it's popular enough they'll put it in the main product.
Another reason to be extensible is that you turn your product into a platform. The more "killer app" entensions there are for your product, the more in demand and ubiquitus the product will be because the product is required to use the killer extensions. This might explain why these types of products are often free because the companies that make them can make money in other ways by leveraging the platform.
When IBM they ran the Eclipse project, for example, they used the Eclipse platform for one of their enterprise products called Websphere Application Developer, which they sold as a development environment for their Websphere server product. Eclipse's popularity then increased as well because people were extending it in many ways, some not even related to Websphere or Java.
Another advantage is that some of the more advanced users prefer an extensible product over a restricted one. These advanced bleeding-edge users often start the adoption of a specific product, so it's worth appealing to them.
Keep in mind that if people are hacking on top of your product they will report defects to you so that their extensions will work properly. Free testing is always a good thing, and again will improve the value of your product with less work on your part.
# Real Life Takes Over for a Bit
Hey folks. It's been a while since I posted so I thought I better give an update. The index page even went blank a few days ago, as it only showed the last 14 days worth of posts. Now it shows 30.
Things have been a little busier with me personally, so I haven't had much free time on my hands. My car was having problems, I was looking for a new place to live, then found a new place to live and now I have to get myself organized and packed and then my grandfather passed away last week at the age of 92. I was also getting settled into my new job at Agnovi, learning the product to put myself into a good position to contribute new things.
An interesting thing about my grandfather was that he was blogger of sorts, and he had been for about forty years. He made a habit out of writing in small journals and datebooks about what went on that day, what the weather was like and who visited. I don't know how many of these little books there are yet but there seem to be a few dozen at least. After his funeral we all sat in my aunt's living room and read these little books and reminisced.
The idea was floated around to type up the journals in Word/WordPerfect so we could read them easier, but naturally I thought blogging software would be a better idea. People even volunteered to help type the books up so all I will have to do is copy and paste. I could just make a print-friendly template in MovableType, and generate some static HTML so that people can read it offline if they want. I'm not sure if that blog would be public some day, but in the short term it would be really neat for the family to browse through.
# Canadian Tire Service Leaves Me Unimpressed
My last post about experts was inspired by some work I'm getting done on my car. I was never really interested in cars, but now that I feel like I'm being taken advantage of I find that I have a little bit more motivation to learn. Here's the story...
Last weekend I took my car (a 1991 Dodge Spirit) into Canadian Tire in Kanata because the exhaust was shot and I was getting some noises around the front and rear tires. They fixed three things, and all three repairs were less than ideal.
The exhaust was replaced from the catalytic converter back, which I expected. What I didn't expect was for the mechanic to put a $65 muffler on a 13 year-old car by default instead of a cheap one. I didn't find this out until I got the bill.
The rear ball joint was replaced because it "had play", which means it moved around more than it should. I asked to get the old part back (and my request is on the receipt) but it was never returned to me. Besides that, there is *still* noise in the back right. Either there was more than one thing wrong on that side or they misdiagnosed the problem.
Those two problems take a backseat to the third problem. It comes with a story:
The third thing they fixed was the left front constant velocity (CV) joint. This joint delivers engine power to the wheel and ensures that even when the wheels are turned the tires move at the same speed (the constant velocity part).
The repairs were done on a weekend, and they called me 30 minutes before closing on Sunday to pick the car up. I couldn't make it down there in time so I picked the car up before work on Monday. After paying the bill, I drove the car down the Queensway from Kanata to Riverside to go to work, about 20 minutes.
Before work I went to Tim Hortons for a coffee. As I was going through the drive through I had to make a sharp left turn. During the turn I heard the loudest BANG I've ever heard a car make in my life. It was massive, I could easily feel it through my feet. This is twenty minutes after I got the car fixed, and I couldn't believe it.
The CV joint in my car consists of two joints, inner and outer, and it bends when the wheel is turned. All of you engineers out there will know about the concept of a moment and how that relates to forces. The larger the moment arm, the larger the force that is applied on the rotating system.
You can imagine the type of effect this has on a rotating front axle, when it's being bent to its maximum because I'm making a hard left turn through a drive through. The force is strongest at that point because the bent axle acts like a moment arm, even if it is at an angle. This is basic university physics.
I don't know what the bang is yet, but all evidence points to a broken motor mount (or engine mount). The motor mounts hold the engine to the frame of the car and my car has three of them: one in the front and two on each side. The two on each side allow for some (millimeters) lateral movement through turns and the one on the front prevents the engine from torquing forward or back when the tranmission is engaged and delivering power to the front axles/wheels.
When the wheels are turned all the way left the CV joint is acting like a moment arm, generating more rotational force than if the axle were straight. This puts increased stress on the mounts, which are trying to prevent the engine from moving. This is why I think that the CV joint repair and the motor mount failure (if that's what it was) are related.
The evidence mounted when I looked up information about motor mounts in my Haynes repair manual. It says that the motor mounts should be adjusted after a driveaxle replacement.
I went back to see the Canadian Tire on Friday but I was greeted by firm denial that the CV joint had anything to do with the motor mount failure. The guy (Mike) said that he's never heard of having to adjust the motor mounts after a front axle replacement, contradicting the Haynes manual. Guess who I believe.
He also said that if the mechanic had adjusted the mounts, it would have been on the bill (it wasn't). The same guy also repeatedly referred to my car is a Sprint instead of a Spirit, so I just left. It was obvious he didn't know what he was talking about if he couldn't even get my car right.
Mike brought up a good point though: the motor mounts could already have been damaged. As far as I know, they are the original mounts and are 13 years old. My point is that they should have been adjusted, or in the very least inspected. From a casual inspection, they may have seen that the mounts were too damaged to handle the force of a new CV joint and would have insisted that they be replaced (from what I've heard, broken motor mounts are a safety issue and they won't let you leave with an unsafe car).
The other possibility is that the CV joint is defective and exerted an irregular amount of force on the mounts. I see this as a possibility because they don't replace a CV joint with a new part, CV joints are retooled and reused. The CV joint and the labour are under warrantee, so if the CV joint is defective it is replaced at no charge.
This is what I'm going to ask them to do when I go in:
1. Find out what the bang was (probably motor mount, but confirm it).
Then I'd like an explanation of why or why not the failure is related to the CV joint replacement. If they didn't inspect or adjust the motor mounts when they replaced the CV joint I don't think they exercised due diligence in their repair, and should offer to share the cost of new motor mounts to compensate me for this laziness.
If the CV joint failed dramatically and damaged another part, I'm not sure of their policy on that. True, the motor mounts may already have been damaged, but they worked just fine with the old CV joint (and I made that same sharp left every weekday through Tim Hortons).
Given that the damage happened 20 minutes after I got the repairs the connection seems undeniable. The new CV joint caused this failure and I'd like Canadian Tire to take some responsibility for it or I'll take my business elsewhere.
Update: I went back to Canadian Tire twice last weekend, and both times the lines were long so I decided against it. The weekend is the only time I can go to that location because I need to drive to work. I wasn't too happy with what they did on the previous job either, so why reward them with more money?
So on Monday I went to the Canadian Tire (near my work) on Coventry Road at 7:30am. I told them the problems (vibration at high speed, engine moving around) and they said they'd get back to me "late morning or early afternoon".
2:30 PM (seven hours later) rolls around and still no phone call. Since I'd have to make arrangements to get home if my car wasn't ready by the end of the day, I gave them a call. They said it would be another hour before it was looked at. I told them to cancel the service and that I was picking it up.
The next day I went to a small garage near my work named Eagle Automotive. They looked at my car and determined that two engine mounts were cooked, the front right engine mount and the transmission-engine mount.
These two mounts are two shaped pieces of metal with rubber in between them which serves as an insulator. Over time the rubber breaks down and stops doing its job. The tranmission-engine mount was particularly bad because the outside piece of metal was split right down the middle (probably the source of the BANG I heard earlier).
They also removed a cosmetic piece of metal from the top of the right rear coil spring that was causing the clunking noise. I was happy with the service from this smaller garage and I think I'll stick with them.
Now that the car has new mounts, it drives stiffer and has even more vibration in the front end. What I'm afraid of now is that this vibration will slowly shake the car apart and break other stuff, so it should probably be fixed too. It could be an unbalanced wheel or the right CV joint or ..... *sigh*
I think the main problem with big garages like Canadian Tire is that you don't initially have direct communication with the mechanic. You tell a service agent what the problem is and he tries to guess what to do about it. Canadian Tire fixed neither the vibration in the front end or the clunking in the right rear (the problems) they just fixed damaged parts (the symptoms/results of the problems). It's a good start but they didn't finish the job. You wouldn't treat a patient this way, why do the same with a car?
It also doesn't help that their customers often don't know much about cars, but if you're going to serve and make money from the uneducated segment of the market then you have to take some responsibility for it.
As for Canadian Tire's work causing another part to fail: I still maintain that it's likely that it did. Should they have to pay for it? No, because it was just a weak part stressed by a stronger new part. What I was disappointed about was the fact thet they didn't check all of the parts that might be affected by this stronger part to see if they might break. It wouldn't have killed them to inspect the mounts. I've have the old mounts and it's obvious they are worn out just by looking at them.
I'm just glad my Dad picked up this engine noise or I never would have known I had an engine mount problem. The noise was so subtle that I didn't even notice it.