|« January 2003||March 2003 »|
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
Everyone seems to get down on school around midterm and final exams, when all of the joyous procrastination comes to a head. Just keep in mind you're paying for this misery ...
I kind of like it, myself. I see working and school to be complementary vacations from each other. Just when you're ready to pull your hair out about one you switch.
Coincidentally, they also have complementary effects on the old bank account.
# K9 Surfing
Someone reminded me of this classic cartoon: "On the Internet, nobody knows you're a dog."
# I'd Rather Be Snowboarding
"I would say for two years or so Burning Man ruined me as a writer. It so surpassed anything you could imagine. It's more far-out than one of Italo Calvino's invisible cities. It made me want to be making some really elaborate, crazy sculpture. Then, you're faced with the already ascetic labor of writing, which seems even more clerical and monkish and miserable by contrast because also it's so solitary, whereas the Burning Man thing is so much about interactive and communal creation."
I feel the same way about software writing. I really like software, but the mostly solitary nature of programming means that you're not out with a group of friends having fun when you're writing it. I guess that goes for any desk job, but it's a drawback nonetheless.
# Well Off Profs
Have you ever wondered which employees of the Canadian university you attend had salaries of over $100,000 or more last year?
# What Do You Want Us To Do Today?
Robert Scoble asks "What do you want Microsoft to do?".
How about what I don't want Microsoft to do? Two off the top of my head:
1. Don't allow restrictive DRM policies in your future operating systems. When I buy digital music in the future I don't want to have to worry about how many more times I can listen to it before it expires. Same goes with digital TV, movies, games, software, articles or books. I want to be empowered, not controlled -- not treated like I might be a criminal. That, my dear Microsoft, is trustworthy computing.
2. Don't use your file formats or protocols as a way to control market share. When a company makes a document using your software it should be able to open it however it wants in the future. The company shouldn't have to worry about being able to read its own documents as a reason to extend their contracts with you. And protocols - don't take an existing open protocol (Kerberos), programming language (Java) or markup language (HTML) and extend it in a way that serves your business interests. You're not contributing to the technology community, you are dividing it and giving people no choice but to resent you for it.
# Why Pyra for Google?
Wired has an interesting theory on why Google bought Pyra. One thing though: why do they need to buy Pyra to use publicly available information? That is the heart of the issue. There are two reasons I see:
1. Pyra needed the money. They were tired of living on KD and having server problems. This deal gives Pyra some much needed breathing room.
2. Control. What better way to control what blogs look like than to buy up a blog factory? The funny thing is, RSS is already out there and public. Maybe Google wants a foothold on the inevitable RSS2.
Why not another blog company?
1. Pyra has software and hosting - an end to end solution that others, like MoveableType, don't have.
# Administering A and B
I realised that test suites are the best way to administer A and B tests. You keep the tests where they always were but move them between Test Suite A and Test Suite B. No complicated software necessary -- and Test Suite A always stays green.
# Managing Yesterday's Test Methods
I didn't get into the test method management end of things yesterday because it's a topic on its own. Some main issues are:
1. When does a B test become an A test?
I'm going to take the easy way out and not answer #3. I have some ideas on #1 and #2 though.
One thing I didn't mention yesterday is that B test methods also include methods written for new features. Once the entire feature is completed those test methods can be promoted to A and should always be green. This also follows the XP premise of completed stories -- once the story is done the customer signs off on it and it goes into the finished story pile. The A tests represent the fact that all of these completed stories still work and that makes the customer very happy.
So who makes the promotions? The customer of course. They don't have to know what each test method does but until the whole feature is signed off all of its test methods stay at B.
# More on Unit Tests
I was talking to Jim today about this problem with JUnit and came up with a solution. Give unit your test methods classifications.
For example, the team wants to ensure that the project is "always green". Tests that work should stay working. These tests would be called A tests methods. However if a bug is found in the code good practise dictates you want to write a test for it right away, exposing the defect. This new defect test is a B test method.
So you don't want to break the "always green" A methods, but you still allow for the other B tests to exist so they reveal bugs.
We also want to store the results of the unit test for each and every checkin we do, or at least at major intervals (maybe only daily builds) so that we can compare them and notice changes in the B test methods (ie. new passes). For these we shouldn't have to worry about A methods because developers aren't allowed to check in code if it breaks any existing A test method - don't break the build!
# Win Server 2k3: The Road to Gold
Parts one and two of a three part article about the NT-family of Microsoft Windows. Part one deals with the history of the NT family, while part two describes the development process used within Microsoft and the War Room. Part three hasn't arrived yet, but it will deal with Windows testing.
# IM Vacation
I'm going to take a break from IM for a while -- too many hours are being lost. I might have IM clients on but I'll be N/A or Away. If you need to contact me you can also email me or call my cell phone.
# Bloggers v. Aggregators
For those that don't want to keep up (and I don't blame you, it's not that exciting) with the world of blogs, here's a short explanation of the difference between bloggers and aggregators.
Bloggers have something to say (and often few people who will listen to their banter). They aren't collectors, they are thinkers.
Some sites mainly aggregate and postulate at the end. That is quite alright but without the aggregation would people be there to read the latter parts? -- it might be just another collection of infrequently read opinions.
These popular aggregators usually have a large fan base grown out of the early days of the web and many years toiling in front of a computer screen writing their own HTML or CGIs before the days of blogging software. It's almost impossible to start a decent aggregation site these days from scratch. People already have their favourites -- and collecting all of those links without help is just plain time consuming.
So I ask you -- where do the majority of longtime aggrebloggers find the time? I surf the net a few hours a day, but not enough to collect link after link on the same topic or sort through a pile of emails on said same topic. Maybe my interests are just too varied to be an aggregator ...
... on second thought, maybe that's a good thing. ;)
# Guthrie on Mass Testing
A fascinating post from Microsoft blogger Scott Guthrie on Microsoft's development cycles and especially the automated testing procedures.
I love how after 8 weeks of straight implementation (AKA destabilization) the QA team is called into action for 6-10 weeks to write "detailed" tests to stabilize the code again. Why wait?
... and the not-so surprising answer is: because developers hate writing tests for their own code. So rather than go into the nitty gritty and write their own detailed test suites, the QA team does the dirty work and the developers squash bugs for 2 months. Wow, that's exciting stuff.
If everything is automated like it is on that project, take advantage of it -- make the developers write their own tests. Make them swallow their pride and find their own mistakes right away with a well-written test rather than two months from now in the form of bug reports ... they will be learn to be better coders for it. Otherwise you are just tempting them to implement lazily.
PS> It's funny how shortly after some people were saying that Microsoft didn't get blogs there are suddenly tons of them. What did they do, release a company-wide memo saying "It's OK to blog! PR beat Legal in a foosball game at lunch!"?
I guess so .... and the Microsofties rejoiced.
# A Cold Cup of Carbon
Playing around with the Mac OS X Development tools and found this short Interface Builder and Carbon API tutorial on the Apple web site. A pretty simple app but boy is the C++ painful to look at.
I think I'll stick with Eclipse and Java for now.
# Scrum Book Review
As if there weren't enough "Agile" software methodologies already, welcome Scrum into the mix. Slashdot has a book review of Agile Software Development with Scrum by Ken Schwaber and Mike Beedle. Here is a nice picture version of Scrum.
While I haven't read enough about Scrum to give an opinion on it, it looks very XP-ish. I might pick up that book with that Chapters gift certificate I've been meaning to use ...
I just read about Scrum and it sounds very interesting (the picture version I gave earlier actually has a good concise explaination of Scrum as well -- links in the left menu). Scrum focuses more on the project and feature management angle than the software itself and gives XP more of a leg to stand on from the management side. It seems as though all of the other XP practises including unit testing and pair programming are also incorporated.
# My Life is Passing Me By ...
# Silent But Deadly
Does anyone know of good, quiet case and processor fans? I have three fans at the moment - one on the processor heatsink and another two on the front and the back of the case.
I'm running an AMD 1.5Ghz and I heard they run hot which explains the overkill. While the air circulation seems to be very good it's so loud it drowns out the TV across the room. Can I replace/omit the fans or should I get a new case as well?
# Google Buys Pyra
Google buying Pyra is significant to this blog because Blogger was the first piece of blog software I used ... back in 2000. Most people don't have the luxury of self-hosting their blogging software like MT so Blogger is very useful. Although lately it's been doing wonderful things like not letting me publish and corrupting my templates. Hmmm ...
There has been some negative coverage of Google lately. It's the kind of coverage that comes with being popular and having people thinking you are up to no good. If you are really that concerned about Google keeping track of your searches don't allow Google's cookies and use anonymizer software. Even with cookies and an IP address what privacy information could they possibly glean from that? Don't be so freakin paranoid.
And while we're on the topic of cookies, do you really think that Google is the only site that does this? Every major site does this on some level. For example, The New York Times tracks people by username. Do I care that they know I read technical articles and probably have my DSL IP logged? No.
But I digress - Google is not a monster and you don't have to use it. The worst thing about technical people crying wolf is that the general public doesn't know what a wolf even looks like. Don't be "that guy", man. Don't do it.
Update: Slashdot has a post on the article.
# Mobo Crasho
The motherboard crashed for the first time since the reformat. The knock-on-woods didn't help it I guess.
I don't know what to do with it. It's obviously unstable, but now that I don't do serious work on my AMD box, do I care? Not really. The Mac is my main machine now ... I only use my PC to browse the web and IM people. If I weren't so disappointed with the MSN client on Mac OS X (nice work MS) I would be using it on the Mac as well. So what to do with this 1.5Ghz AMD PC?
# New Stylesheet
Yup, I made a new stylesheet. This is what my creativity looks like at 5am.
# Carbon v. Cocoa?
I was just starting to mess around with the Mac OS X developer tools (which are free, by the way) when I wondered "what's the difference between the Carbon and Cocoa Mac OS X APIs?". I found answers here, here and here.
# Stutz on Microsoft
David Stutz, who recently resigned from Microsoft, talks about his former employer: "One-size-fits-all, one-app-is-all-you-need, one-api-and-damn-the-torpedoes has turned out to be an imperfect strategy for the long haul."
# Lions in up to their Armpits
Ohh are the Detroit Lions in a pickle. But Jesse Jackson can't decide which side he's on. He says black coaches should have been interviewed for the job but then says that he doesn't blame some black coaches for refusing to interview because they knew Mariucci was a shoe-in for the job.
I don't get it -- how is this race related? I'm sure other white coaches were thinking the same thing: "why interview for a job that is already Mariucci's?".
The real issue is that the Lions violated a new policy by the NFL encouraging the hiring of minority coaches. Did they do this on purpose? Who knows. Maybe they just wanted Mariucci because he's a great head coach (San Francisco was in the playoffs this year) and didn't want to consider anyone else.
Is there a problem with this? Is there collusion involved? I doubt it. In fact, Tampa Bay actually traded for John Gruden last season.
Whatever happened to "the best person for the job" regardless of race or sex? Mariucci has already proven himself on the sidelines and that's what counts -- not some bologna interview. The Lions were just trying to get him before some other team did ... and that's probably the first good idea coming out of the Lions camp in a long time.
# I Flashed It
I flashed my motherboard (a previously flakey ABIT KR7A-RAID) BIOS before the reformat and *knock on wood* it hasn't crashed yet! I'm very impressed.
The only strange thing that has happened so far was when I was running Mozilla and Eclipse at the same time. I got a low virtual memory warning (that I have never received before) and Mozilla started chewing up memory ... and it got to around 85MB before I could stop it in the task manager.
# In Rotation
# Top 25
I was listening to Audioslave so much it skewed my count and I waited until 20. It would be nice if iTunes had a nicer playlist export option .... I had to edit theirs quite a bit. Here's the list of stuff I've listened to since the last time...
Name Artist Play Count Like A Stone Audioslave 20 Shadow Of The Sun Audioslave 17 What You Are Audioslave 16 Exploder Audioslave 15 I Am The Highway Audioslave 14 Hypnotize Audioslave 13 Getaway Car Audioslave 13 The Last Remaining Light Audioslave 13 Bring Em Back Alive Audioslave 12 Get In or Get Out Hot Hot Heat 12 This Town Hot Hot Heat 12 Talk With Me, Dance With Me Hot Hot Heat 12 Gasoline Audioslave 11 Set It Off Audioslave 11 Light My Way Audioslave 11 El Sol Zwan 11 Show Me How To Live Audioslave 10 No, Not Now Hot Hot Heat 10 Back To You John Mayer 10 Oh, Goddamnit Hot Hot Heat 9 Naked In The City Again Hot Hot Heat 8 Save Us S.O.S. Hot Hot Heat 8 In Cairo Hot Hot Heat 8 Yeah! Zwan 8 Clocks Coldplay 7
I've noticed some interesting listening patterns with CDs because I'm keeping track of play counts. The start of a CD tends to get played more not only because it tends to have the "better" songs in it but also because you may be interrupted in the middle. What did I do to counter this? I'm listening to CDs in backward order sometimes. It's weird how the order of songs can make an album sound different as a whole ... maybe I'm just crazy.
Another thing I tend to do is skip radio singles when I'm listening albums so I don't get sick of them. That's why Audioslave - Cochise (2), Hot Hot Heat - Bandages (7) and Coldplay - In My Place (0) aren't in that list even though they are great songs.
# Fugly Blog
I'm tweaking the styles a bit, so they make look a bit fugly for a while. I started on the Blue one last night.
PS> I love dictionary.com ... priceless. heh
# Blogging Computer
I find it somewhat ironic that while smart people are incorporating all of these interesting technologies into blogging software we still have people that can't post because they won't have their blogging computer with them. Ick ... score one for MT.
# JUnit and non-XP Projects
I've had a casual academic interest in JUnit and played with it a bit when I was learning about Extreme Programming (XP), but now I'm in the position of having to actually use it. I'm the self-appointed quality representative of our project (not that anyone else wants to monitor it) and I like the premise of JUnit but its practicality leaves a bit to be desired when you aren't doing "always green" XP - and even, I think, when you are.
Let's say you always want your developers to write a lot of tests. If they see something broken they write a test to prove it. The problem is that your "always green, always 100%" test passing goes right out the window because you have all of these failing tests. Then how do you know when something you're working on goes red when you're already red? Ick, no good.
The result of that policy is that your developers don't put tests in the test suite that they can't fix right away. They don't want to be the reason the project isn't green, do they? Then quality suffers and so does your project. We want failing tests in the test suite!
What we really care about is two things:
1. I have a bunch of passing tests in the test suite that from this point forward should never fail. It would be nice to know when they do.
So we need a product that will give us this delta info, preferably in the form of an Eclipse plugin. Maybe one already exists and I haven't found it yet. Geez, I hope so ... or I might just be forced to write said plugin.
# Wipe it: The Aftermath
What did I learn from this reformatting? That I don't use much software at all. What did I install?
Microsoft Windows, a system restart
All default settings for the most part and instead of a few days to get my computer back in running order it took two hours.
Microsoft doesn't get Weblogs. Look at Weblogs. Microsoft doesn't get them. Oh, sure, there are now, what, 30 Weblogs kept by Microsoft folks? But, name one top executive who has a weblog. Name a Microsoft-product weblog where we get to see a real insight into a product. Not to mention there's 55,000 employees at Microsoft and so far only 30 people have gotten brave enough (stupid enough?) to do weblogs.
I don't see a problem with an employee having a blog, as long as they are smart about it. The fact people insist on describing the people who work at Microsoft as Microsoft itself is kinda spooky. There is sunlight outside people -- go play in the grass and mix with the locals.
Oh and the rest of that post is telling as well. It will be very interesting (and probably sadistically entertaining) to watch Microsoft try to adopt the community-oriented approach. Pass the popcorn.
I guess I should say something about Columbia. I feel bad for the astronauts and their families and I admire the sacrifice they made. It takes an extraordinary person to take a risk like that even if the reward is great.
... but the engineer in me looks at Columbia like one big complicated system. If the human race is ever going to get off this planet, we're going to need more complicated systems than a space shuttle. And you can bet these systems are going to have more and more software in them. This should worry the software profession -- a profession typically concerned with a quality level somewhere around "good enough as long as we can still get the product out the door without too many people noticing any problems we've missed."
I personally would like to create software I can be confident will work really well and reliably. Otherwise, value may be there in the short term but not the long term. There have to be better ways to create quality software without taking eons to test it. We should use a computer's power against itself, so to speak, to do this. People will demand this quality from software engineers just as from any other engineering profession, and not just in the space exploration industry.
Wow, the Audioslave album is the best rock album I've heard in about 3 years. Amazing from start to finish. I think the best part about it is how the Rage/Cornell balance is struck throughout the album and even within individual tracks.
Being a longtime Soundgarden and Rage fan, as well as a fan of Cornell's solo material, I can speak with some opinionated authority on the subject. Here's my take on the album, track by track:
The first single. Just to show people that Audioslave wouldn't wuss out, they put a very hard song as the first one and it makes sense. Commerford lays down a great baseline and lets Cornell take over. Wilk pounds on the drums and you don't need the video to tell that. Morello's understated guitar sweetens the mix.
2. Show Me How to Live
Bass-dominated Rage music with a hard Cornell voice. Put Soundgarden and Rage in a blender 50/50 and this is what you'd pour out.
It's probably the beat of this song and the hard bass-heavy chorus that makes it distinctly Rage-influenced. Cornell does his harder voice on this one, with a subtle echo effect. A short Rage solo at the end punctuates it.
4. What You Are
Another rock song. I love the "Rage solo" in the middle where Morello goes at it. - very sweet. Cornell switches between his soft verse and harder chorus personalities, which is why the Soundarden/Cornell factor is an even split. This is my guess for third single off this album.
5. Like a Stone
The second single. This one is distinctly more rock though. The only thing non-Soundgardenish about it is the tempo ... way too quick. As for Cornell, it sounds a lot like his solo stuff ... when he sings it almost feels like he's talking. Morello's solo is too sweet ... and distinctly not Rage. The acoustic guitar at the end is a nice touch.
6. Set It Off
A heavy Rage base line and Cornell's Soundgarden voice ring though. A pretty ordinary song, but it still manages to pump me up like old Rage used to.
7. Shadow of the Sun
Some Cornell screaming involved, but overall a pretty tame song. Really nice though. A decent Rage baseline in the chorus, but otherwise the Rage factor is low on this one, but increases at the end -- this one is more of a rock song.
8. I am the Highway
If this really is Rage, I can't tell. I love the distinctive lick in the verses .... it pretty much makes this song for me. Acoustic guitar sound dominates this song, with the occassional electric strum. Don't be suprised if this song goes single, maybe the 4th.
The guitar/bass combo at the start and during the verses is a distinct Rage sound as is the bass-heavy chorus. Commerford doesn't waste this opportunity to shine. Cornell voice-straining wailing is perfect for the chorus. The Da Da Do Da Da he does is very interesting, as I can't recall him ever doing this. He sounds like an old big band jazz singer ... but it fits really really well.
Wilk's beat makes this song, and because Cornell keeps his voice down it doesn't overshadow it. Morello whines his guitar in the background of the verses, assaulting your ears when played at high volume. His solo sounds like a DJ scratching ... too cool.
11. Bring Em Back Alive
Another example of almost perfect Rage/Soundgarden balance. Not a pump-me-up Rage song, but belted out nonetheless.
12. Light My Way
The Rage sound's last gasp on this CD, and a great "lick" in it. Cornell's old school yell persists in the chorus.
13. Getaway Car
Cornell's softer voice throughout. Killer chorus and distinctly Cornell-influenced.
14. The Last Remaining Light
If I didn't know any better I'd think this song should have been on Euphoria Morning. Definitely Cornell influenced and a great finish.
# XPlatform JFace/SWT
Was surfing around yesterday and found this nice introduction to JFace and SWT in Eclipse. Just what we were looking for. So I installed M4 on my lately wiped XP box and got the Hello World working. Also got the Hello World working on my iBook. Too sweet.
# NARAS vs. the RIAA
John Snyder, president of Artist House Records and a board member of the National Association of Recording Arts and Sciences (NARAS) wrote a very interesting an important letter which he submitted to NARAS. (Slashdot comments on the article)
Here are some interesting quotes from it:
"Record companies are not logical, righteous entities. They are ramshackle, profit-driven enterprises. They act in their perceived best interests, and they act ruthlessly and, in many cases, irrationally. The people who run them still have their e-mail printed out by their secretaries."
"The music business will be saved by someone from the software business who can impose a new business model on music assets."
"That industry is the bottled water industry. Bottled water is a growth market. But common sense would indicate that when water is virtually free (i.e., tap water) that people wouldn't want to pay $1 for 16 oz. of water. Yet, most of us frequently do just that. Why? Because it is convenient and because we have been persuaded that it is safer, more pure, that it is "better" water. Convenience becomes necessity, belief becomes profit. The bottled water industry is built on customer service."
It will be interesting to see how the NARAS v. RIAA "battle" turns out, if there is one. I wonder how much clout NARAS actually has ...
# MSN blacklist
Ahh yes. I noticed this a while back: MSN Messenger blocks some pretty strange words.
# Wipe it
Usually I only reformat my hard drive once a year, but it just felt like it was full of crap. I was right -- it had 3GB of stuff I apparently don't need ... and that's just applications installed over the last 5 months.
... and I lost all of my bookmarks ... again. Too bad, so sad.
# The Pompatus of Surfing
You know what happens when you surf aimlessly? ... you find stuff like this.
# Adventures Down Under
I finally got my buddy's site working properly. He'll be travelling around Australia for the next few months and he's going to post pictures and keep a journal. Moveable Type is great, but it's tedious to configure when you're meticulous. :)
He doesn't have any journal entries yet, but he should soon.
PS> The design is his, not mine. ;)