|« June 2003||August 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
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
# School Daze
It's hard to believe I'll be done 12 school semesters and 6 co-op placements at the end of December. It's been a long -- but fun -- ride and it's almost done. I only have four classes this fall (one of them is the project) so I might work during the semester.
What's coming after that? I can't really say for sure. My official position at the moment is that I'm "keeping my options open".
# XPCOM to Java Bridge
The BlackConnect project, started by Sun and Mozilla has finally been updated and moved to mozdev.org. BlackConnect is an XPCOM to Java bridge, allowing XPCOM components to be written in Java and called from Java.
# Disappearing List Feature
I just lost my MSN contact list of 100+ people. No backup.
# Show Me the Content
Tim Bray has a nice summary of where the "browser wars" stand these days.
Getting Mozilla into companies is going to be hard, damn hard. Managers tend to have a if-it-ain't-broke-don't-fix-it mentality because change costs money, even with a free browser. What Mozilla needs is some compelling content that needs standards compliance to work properly. Dangle a carrot in front of people's faces to get them to download a free browser and try it. Stuff like SVG might be the next step.
# Iterative Development and Users
Probably the hardest thing about iterative development is knowing when to make the first release. The software has to be functional enough so people can make constructive comments on it but a bad release can cause users to write off the product completely. On the other hand, you don't want to wait too long without feedback or you could be going in the wrong direction and wasting your time.
You want the iteration to be as painless as possible for the users so you can keep getting feedback on new iterations. Your users have to want to upgrade to the latest version often. A tool like Bugzilla lets your users make feature requests or submit bugs and track the progress of those fixes. When a feature that a user likes has been implemented and they are notified by email by Bugzilla, they'll want to download the latest version containing that fix.
If your users are technically inclined, distribution can be done with read-only CVS access. Otherwise, you can regularly post a ZIP file or executable installation file on a web page. Keeping the CVS repository free of incomplete code will let you make a release any time, even if you are developing with others. Make a new release on days you change the repository so that users can get updates ASAP.
While you are iterating like this make sure your users know that the software may be unstable and has bugs in it. Some people aren't used to using software developed this way and they need to know what you are up to so they don't have unreasonable expectations. Aim for a stable release at some point but it could take many iterations. Have the stable releases available for download as well so that users who are not on the bleeding edge can use something more stable.
# Dense Widgets Have their Place
Tim Bray is right about sharecropping but I don't like his solution. He likes the web browser as a platform and I don't ... well, sometimes.
The web browser is good for text and links. Pages. Stuff read top to bottom. Simplicity. The web is good because it follows the paper/page metaphor. People already know how to use a page -- they read it. The only thing they have to figure out is a link. Linking was the web's killer feature and it's been around so long that almost everyone knows how to use it. So the web is easy .... sorry, it was easy before the graphic designers came along. :)
Unlike popular opinion of late, dense widgets are good things. People can be trained to use tools with complicated user interface widgets. Just because you can't pick it up and have it be immediately intuitive does not mean that the software is a piece of crap. Sometimes training is appropriate and needed ... just ask users of tools like Photoshop and AutoCAD.
I think where people get mixed up is that everyone wants to have a fast adoption rate. Developers are hungry for users and to have a fast adoption rate, your software needs to be so easy to use anyone can learn it in a few hours. But with ease of use you sacrifice a lot.
1. Once your users become proficient and know the system, they cannot improve their workflow. Five clicks will always take five clicks, and the web's low-density widgets sometimes have more clicks than winform alternatives.
2. The web's simplicity and consistency is sometimes its downfall. People start to expect things to be simple because it's on the web. Links should be underlined. I should always be able to go "back". But sometimes the graphic artists win and links aren't underlined and the developers win and you can't go back because a form was submitted on the previous page and the results expired.
So the bottom line is you can't assume your users are ignorant newbies (thus, use a web browser) and then change the rules. You have to develop for the lowest common denominator when you use a browser (especially if you are a large site like Amazon or eBay, or you are trying to be *yikes* cross-browser compatible, which has nothing to do with so-called "standards") which seriously hinders your flexibility. Bray argues that can be a good thing and I agree completely with that ... but you have to realise what you are getting yourself into!
Winforms will stick around because there will always be a demand for dense widgets that have no place in a web browser. Choose your platform carefully.
# rLowe Unplugged
Back from the cottage. I read geek books, watched movies and sat in the sun. Yeah, pretty low key.
Now I have all of this catching up to do after being unplugged for two days. Bah, nevermind ... let me know if I missed anything important (heh, probably not).
# Good Thing I Played a Links Course
Went to Cloverdale Links on Tuesday and golfed a 52+43=95. Not bad, but the start killed me .... damn short game. I had one snowman and three hockey sticks ...
# beernut.ca is back
beernut.ca is back up, depending on your DNS service. If Travis can see it on the other side of the world, everyone else is probably OK.
Like I said earlier, reggie.ca definitely screwed up. I never heard from them personally about it. I'm thinking of switching domain registrars for ryanlowe.ca because it expires in about a month. $30 CAN a year is pretty steep. Leave a comment if you know a better .ca registrar.
# A Little Light Reading
I've picked up a few books recently:
Python seems to be a very interesting scripting language. I'm glad I got the nutshell book even though it has very few examples ... I know enough languages to be able to piece things together without a book telling me step-by-step how to write Hello World. There is literally tons of Python code out on the net too. I might try to do tetris (yes again - it's my favourite hello world game - I did it in Pascal and C#) with the pygame libraries.
The Linux Kernel book I got to try to stretch my technical limits and get into something different. I've done OS and file system classes and have been keeping up with the Linux kernel mailing list summaries. Don't get any crazy ideas though, I probably won't be hacking in C++ again any time soon.
The last book was recommended by Scoble and others recently. I thought I'd see what the fuss was about. That, and large software companies are interesting .... but it seems like Microsoft and IBM are the only ones that get written about well.
# beernut.ca in Limbo
I might lose my other domain (beernut.ca) for a bit. I just got a notice from CIRA saying that it has been suspended for the next 30 days even though I did renew it June 30th with reggie.ca. After that time the registration will be cancelled.
So who screwed up? I'm pretty sure reggie.ca is supposed to re-register my domain with CIRA on my behalf. I will contact reggie.ca tomorrow. Things shouldn't go bad on beernut.ca in the next 30 days but if they do I apologize.
Update: Tuesday 10:58am beernut.ca is not down. Its DNS entry, maintained by CIRA, is suspended. I'm pretty sure this is reggie.ca's fault -- and it is quite unprofessional. If I were eBay, I'd be losing millions of dollars right now.
Update: Wednesday 10:31am CIRA confirmed on the phone that it is reggie.ca's responsibility to contact CIRA about renewing the domain. I've contacted reggie.ca by email (email@example.com) and their contact web form and haven't heard anything back yet. beernut.ca is still unaccessible.
Update: Wednesday 2:01pm CIRA sent me a notice saying that beernut.ca has been renewed. I assume this means that some sort of action was taken by reggie.ca, though I have not heard from them. beernut.ca should be available again soon.
# Recent Comments Moved
I moved the Recent Comments section to the bottom of the left column so that they wouldn't unreasonably stretch the middle column. This happened when Ken put a URL in his comment. :)
You definitely can't think of all of the ways people can break your software ahead of time ... don't even try, just let them use it.
# JUnit and jcoverage Ant tasks and Eclipse
I was going to write a post about my experiences with Eclipse, Ant and JUnit as an introduction to how I set up jcoverage. I found that the Eclipse integration with these tools (especially Ant) was fairly immature, so I used Ant at the command line instead.
Rather than describe Ant at the command line, I'm going to try to get Ant's JUnit and jcoverage tasks working correctly in Eclipse, which in the long run I believe is what people would rather use than the command line. I will write about how it goes ... stay tuned. :)