|« September 2002||November 2002 »|
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
# Much Ado About ...
A glossary produced by the Virginia Institute of Forensic Science and Medicine lists usable biological evidence as including "blood, urine, semen, feces, tissue, decomposition fluid, saliva, tears, mucus, perspiration, vomitus and pus." Wired News
Found a desktop toy, xplanet, that updates your desktop image with an image of earth (or another planet or moon) showing where it's daylight and where it's night.
# Mozilla Dev
So I bought the book, reasoning that if I never developed a single application for Mozilla I'd still learn a lot about how to set up a cross-platform internationalized GUI architecture. A little lightbulb went off in my head when I saw this figure.
Type chrome://navigator/content in the Mozilla address bar (to come back, press the back button). Mozilla's UI is rendered with Gecko, which is the same rendering engine that renders web pages in Mozilla. So you can load (and use!) another Mozilla IN Mozilla, infinitely. In effect, Mozilla is a platform for itself.
The only downer is that as far as I know, you can only write XPCOM components (ie. application code) in C++. I'd much rather take the performance hit and use Java so I don't have to worry about pointers, memory leaks, C++ and XPCOM. ACK, what a nightmare. But it would be good practise ... ha
# Keep It Simple, Designers
Being a student of software, I am often critical of the general design of everyday things. Not only in the negative sense, but also in the positive. However, the negative ones tend to be glaringly obvious.
Take a local mall parking lot for example. A parking lot should not depend solely on the good nature of Canadian motorists. If they only followed right-of-way rules, none of the cars off the main roads would be able to get around. When push comes to shove and people just want to get out of there, no one can move because people are just following "the rules of the road". And don't even get me started on the one-way streets.
Now, I can understand maybe the developers wanted to create more of a "community" look to this mini mall, but all they did was make it more cluttered and messy. I went there on a Sunday, the second-busiest day of the WEEK, nevermind the year. I'd hate to be there any day in December.
A lot can be said for a simple square parking lot with rows of cars. Sometimes it's best to just Keep It Simple, Smartguy and leave your artsy charcoal in your pocket.
XUL (pronounced "zool") is the Mozilla project's cross-platform UI language (or library depending on who you ask, it's not really a language). The team uses it to release Mozilla simultaneusly on at least 3 platforms (Win32, Linux and MacOS).
Even though you can use XUL *in* Mozilla (as in that sample chapter), you can also use XUL to create stand-alone applications *like* Mozilla.
Update 5:35PM: Mozilla's XUL documentation
Update Saturday 3:55PM: The O'Reilly book was released under the Open Publication License and is online.
# Open Source and Getting Paid
The lone developer can sometimes get lost in a sea of good feelings on open source. How does one person or a small company profit from open source if going open is the only way to compete? Understandably, some people are concerned.
I think Dave is missing the point of open source, and should read The Cathedral and the Bazaar again. Open source software *is* all about street cred. That is what the GPL is for. And don't give me any of this bologna about how the GPL has never been enforced. If it had any sort of hole, some smartass would have taken advantage of it long ago. No such smartass has materialized.
When I started playing Quake, oh ... maybe seven years ago now ... I started seeing people with weird names. I wanted to make a weird name for myself, so I looked into it. There were a few applications out there that cost maybe $5 or $10 bucks each that could do it, but I did a little research instead. When I found out how easy it was to make a weird name, I made a free tool and shared the love. People got a free tool and I got an ego boost. That is what open source is about.
So maybe open source people don't have much sympathy for people who can't make money charging for software that they can just download at no cost. It definitely brings a new meaning to the phrase "free market".
If people make something that someone else is willing to give away for free, that something isn't worth anything. You can't even blame the companies if something goes wrong because of their software, so that whole "more reliable/accountable" argument goes right out the window. At least developers have their individual reputations to uphold. Develpers at large companies are relatively anonymous now, even though they used to be able to at least put their name in the credits in Help-->About.
Commercial companies will continue to make software that is REALLY complicated and is quick to market or original and is worth something for a span of time, but eventually someone will give that away for free too. I guess my advice to the capitalists is to take advantage of that window and concede gracefully when it is up.
There are many other ways to make money from open source software, just look at what IBM and RedHat are doing. Creative people will find other ways to profit, just not from straight software development of basic tools. That direction is wide open source, given enough time. Hail the free market. ;)
I don't really need an excuse for a project now, I have to do one to graduate. It looks like we'll be three people. Having a group that small has its own set of problems - development software is usually designed for teams or projects that are bigger, and you don't want to bog down your project with process. Process is for teams that are so large its hard to watch people to make sure they don't get off track. With three people, you can see that easily.
I like the idea of an agile method, not XP or RUP per se, but somewhere in the neighborhood. Small iterations (one to two weeks), unit testing (maybe test-driven design), stories. Let the project grow into something it wants to be (or the customer wants it to be) instead of dictating that completely at the beginning. Not committing to too much UFD (up-front design).
These agile methods are all about managing risk. On a project like this the risk isn't lost money, it's lost time. Having short iterations means you only have to plan an iteration or two ahead. Hopefully we can find some good customers, but that will depend on the project we choose.
Tools I'd Be Interested in Using
Bugzilla on a limited basis. I don't want to get too bogged down with it, however. If it's too big, forget it. We need a simple feature request (story) and bug tracking system.
CVS or some other open/free CMS. We could run this on the same box as Bugzilla so it is available to us anywhere. Tack on a backup plan for good measure.
As for platform and language - well, that will have to be decided with the project itself. Factors might include:
- Familiarity with languages used
I'm leaning towards Java. We weren't trained well in C++ or the .NET platform languages (C#, VB.NET). Performance may take a hit, but not much. As a side bonus the application may actually compile and run on more than one operating system.
1. An instant messaging client that implements a published protocol (ie. MSN)
# See Deez?
I was thinking today -- what was the last CD I bought? I think it was Our Lady Peace - Happiness Is Not a Fish That You Can Catch. That was 3 years ago. Whether it was conscious or not, this is the last CD I thought was worth spending that much money on.
This rang home when I was listening to XFM tonight. They had some rock show on instead of regular programming, and the guy did a pretty good job summing up the problems with the music industry. Chief among them was the cost of CDs.
Sure CDs don't wear out the same way as tapes do, but they are still fragile. You can scratch them or snap them in half. You fumble with them trying to put them in any player - and don't even get me started on CD cases. Then to top it all off, the metal CDs are made with actually eats itself over time, leaving you with a useless piece of polyethylene. Records don't do that -- it seems like we're going backwards, doesn't it? But I digress ...
Until the industry makes a format I like, I'm not buying it. Pure and simple. I'll listen to the radio (air and Internet) if I have to. My money isn't going into yet another dead medium. So figure it out boys and girls, because it's the music lovers like me who sink their money into it ... and I've been saving a lot lately.
Did some PHP magic to get the index page to work. Now it will show the last day an entry was made. This is good from a maintainance POV because now I only need one template. It also makes things more consistent.
Now I just have to get the calendar to work for the archives ...
# Animal House Confirmed
A woman was arrested this past summer for keeping over 250 pets in her home, including over 50 birds. As I alluded to before, my bro may have moved into that townhouse.
A story in the newspaper gave the woman's name and my dad confirmed the address in the phone book matched my bro's. We're waiting for the new paint job to peel off the walls and the place to smell like dung any day now ...
Checked out TopCoder this week and tried a practise competition. Pretty cool stuff.
You chose one of three languages: C++, Java or C# and write methods to solve a problem. You get points for how well you write and apparently you can get points for tearing up other people's solutions (while in competition).
The next competition is next Monday.
# Blinded by the ...
...blog? For some reason I'm sensitive to all-white pages now. Black text on white is easier to read, but then after a while it feels like you're looking at the sun. I want to switch this page to something other than white (actually, right now it's #F2F2F2), but .... that just means more tweaking.
# In Rotation
# Moveable Templates
Yes, Movable Type is turning out well so far. I'm tweaking it a bit though so things are probably broken. The index page has the last 7 days on it but I really just want the last posted day on there (not just the last 24 hours). It may take some PHP magic.
# Collapse Update
This game is pretty addictive, folks. Use with caution. The update is that I have BEATEN the online game. Yes, you fall off the end of the earth after level 9. And my new high score is 1,831,361. If I get two million I just might fall off myself.
# Platform Wars
If you aren't convinced that Microsoft is running scared, their latest PR debacle may do it. It's bad enough that they are so successful that they have a bully image, but now they have two major operating systems on their tail and closing in - one in the consumer market and the other in the server market.
All of this makes it hard to plan on a good direction as a developer. Do I stretch myself thin and learn two or three application platforms or do I bet the farm and try to be an expert in one? Right now I have the luxury to plan this because I don't know much about any platform. I think it's safe to bet that open standards will be more common, but that's about it. You still need to be familiar with platform APIs to be useful to any company.
Mitsubishi is continuing its tradition of using good, relatively unknown music in their commercials. Next up is Telepopmusik's song Breathe, that I heard/saw on MusiquePlus a few months ago. Check it out.
# A Coke, Please
OK, so my caffeine ban isn't going too well. I was driving last night and instead of drinking more beer I had a coke. I think the caffeine ban is a little extreme -- maybe just a ban at work (where they are free) would be good enough.
So after beer last night I took Philly and Allie to Georgie's House of Pizza near Elgin. Pizza and gravy never tasted so good.
# Open Source and Government
Potvin compares open source products to bottled water: everyone knows what's in it, but they still buy it for the assurance of quality and convenient packaging.
For the love of Pete, don't play this game unless you have a free day or two.
Inspired by this, I've decided to do two things:
1. Quit biting my fingernails
The first I've been doing as long as I can remember (20 years or so). The second was introduced in university as a sleep control agent. I don't know if I'm really addicted to either, but they are undesired behaviour nonetheless.
I'm going to use the same background tick-marks, except I'm going to put them on this blog. They give you a reminder every morning of what you want to accomplish. Since mornings are one of the typical times of day I drink caffeine, this will be a handy reminder.
The first habit will be harder to quit. Sometimes I don't realise I'm doing it until I rip the top of my nail half off. It has become an entrenched habit. Only a counter-acting entrenched habit (and will power) can overcome it. I consider it to be a personal challenge.
# Mounting FAT Thirty-Two
The next little thing I wanted to figure out was how to access my Windows partitions from Linux. Here is my setup:
Hard Disk 1 (hda)
Hard Disk 2 (hdb)
I found a page on Red Hat's web site giving a simple mount for a primary partition. I mounted hda1 and hdb1 without much difficulty.
Then came the logical partitions. The problem with FAT is that after the primary (first) partition, the rest is put in an extended partition. The extended partition can then be divided into logical partitions. You would think that the second partition (logical) on disk 2 would be hdb2 -- but it's actually hdb5. I never found out why though.
So now I have all of my Windows data available on Red Hat. Pretty sweet, except that I have to re-mount my Windows partitions every time I restart. Is there an equivalent to autoexec.bat in Linux I could stick the mount commands in?
# Extreme Gaming
It was only a matter of time before this happened. It's amazing how much people will give up.
# On Learning
If we are not careful, the acquisition of knowledge will so occupy this life that we will need an additional life to put what we have acquired into practice - Francois Fenelon
# Take the Main Machine Plunge
I wasn't completely happy with the performance of Red Hat 8.0 on Ferris (my PII-266), so I installed it on Zelda (AMD Athlon XP 1700+ 1463Mhz) as a dual boot with Windows XP. Wow, is it impressive! The ADSL set up is easier than Windows XP, Mozilla is nice and smooth and Evolution is a great mail app so far. I'm also using GAIM for MSN Messenger and ICQ. It's still pretty immature but definitely usable. I haven't used Windows XP all night. I'm going to see how long I can stick with it.
I'm not sure I can afford to buy an iBook, though they are tempting. Just a little to early to adopt OS X as well, according to reviews. Probably by the time I graduate in 15 months, two more versions will have come out and people will be happy. Besides, I have a unix box to play with now that I have Red Hat 8 installed on my PII-266 (ferris).
As for software, I'm not so sure. I see the Internet being an integral part of all software, but I don't see current web development working out its problems for a long time. As a (new) developer, this doesn't make me want to spend my "spare" time on this platform. I think my time would be better spent doing more traditional application development, using well-known tools. The kind of stuff I can put on my resume as accomplishments. Developing for the web is complicated but employers don't put as much value on it as "real" application development.
As for languages, I am leaning towards Java and C# but I may end up doing some C++ as well. My problem with C++ is that it is not a very good language to use correctly (mostly because of pointers; leading to stupid typos and hard-to-find bugs - which is why Java was written) but I don't see companies abandoning it any time soon because of performance requirements. There's no harm in learning a Microsoft language given the company's popularity in the industry, but C# doesn't seem to be interesting people too much, so there may be no rush on that.
Unix development would be a hard road to climb, but an attractive one - doing something like that on your own time shows some real interest. Unfortunately, the learning curve is a bit crazy with all of the tools and it again is C++.
During all of this I will be watching how projects are managed and reading books about the subject. I think I'm far too inexperienced to argue the merits of processes. I've never even been with a project from start to finish! Being part of a project for a large part of its lifecycle is one thing I'm looking to do immediately. Something relatively small that I can contribute to and watch as it evolves.
# Animal House
My brother just moved into this townhouse. Surprisingly, everything was new ...
I recommend not eating this stuff.
# RH 8.0 and VNC Adventures
So I get home from work and RedHat 8.0 is waiting for me. I burn and install it (only needed the first two disks of FIVE) and play a bit. Then I install VNC and attempt to get it working.
I had the hardest time trying to get GNOME to load instead of twm and an xterm window. I didn't realise you couldn't have GNOME running already on the server, so I logged out and it works.
What's really great is that you can make VNC go fullscreen, so it looks like you're working on Red Hat when you're really in VNC on Windows XP.
# NY Skate
Hmmmm .... can you rent scarfs here or something?
The guy who had a hand in designing the new BlueCurve UI for Red Hat has his own art/photography website: LinuxArt. Check out the backgrounds.
# Hockey Night in Canada
For a Canadian, I would consider myself to be a moderate hockey fan. However, I still have an opinion on Ron MacLean's troubles with the CBC.
After reading the comments posted on the CBC web site itself, I found only one supporting letting Ron go. It reasoned that the money would be better spent somewhere else at the cash-strapped CBC. I disagree - if Ron MacLean left Hockey Night in Canada the CBC would probably lose more money in advertising and ratings than they would have ended up paying him as a raise. It doesn't have to become an emotional issue and we don't have to accuse Ron MacLean of being greedy. He just knows how much he's worth to the CBC. Thank you Ron MacLean for having the balls to stick up for yourself.
# Red Hat Rush
License plate seen on the highway: "WHY 42"
# I Am Too Net-Connected
# Million-Dollar Software Donations
How can software that would have never been stamped on CD and sold be worth any more than the cost to produce it? I cringe when I read "Company X donates milllions of dollars of product Y". Sure the donation is great, but it couldn't have cost them any more than a buck a disk to stamp, probably much less when they are stamping hundreds of thousands of discs. IANAA*, but I would guess the tax benefits probably pay for the cost of production/distribution. Maybe they even make a profit. Not a bad deal, eh?
*I am not an accountant
# Calendar Archive
I'm going to try to figure out how to get the calendar to archive. I like the idea of seeing the days that were posted on, but I need them for past months. Dave's site does this well.
Also, the comments aren't there on the day archives. *sigh* It's probably going to take a lot of tweaking to get this thing just the way I want it. :)
# XP quote
"We are going to be operating right on the edge so we can drive our competitors over the edge" - Jim Highsmith on using XP