opinions and rants on software and...things
August 28, 2008
One of the many changes that Jessamyn suggested for MyKidsLibrary is that the URLs should be comprised of meaningful text rather than just numbers. In addition to being more human-friendly, it is, apparently, an important search engine optimization technique.
Ruby on Rails likes to construct URLs that end with a numeric identifier that is used to look up a specific record in the database. It is an efficient, effective solution, and the software engineer side of me never considered why you'd have it be otherwise. I have come to think of URLs as being things that are as effectively meaningless and worthless to my brain as printouts of UNIX coredumps. I click on links, I bookmark pages, I never pay the slightest attention to URLs. I use tools -- browsers, bookmarking services -- to work with URLs just as I use tools to write software.
Once I decided to go about making the change, I set out to find who else had already done this work. The Rails ecosystem is vast and densely populated; I knew that there was but a very tiny chance that I'd actually have to start from scratch. Sure enough, a little work on Google revealed that there were many candidate solutions. I picked one that looked solid and set about integrating it into my project.
I'm not new to this; I have been a working, salary-earning software engineer for nearly two decades, so I should have been prepared for the documentation to suck. The documentation always sucks. The last time that I read really good, comprehensive documentation was when I was writing code for a VMS system, and I sat right next to the big orange wall. At least, I remember it being good; it's all so long ago that I might be remembering it in a somewhat nostalgic light.
I had to figure out a lot of things that weren't mentioned in the documentation, and while that's not the worst thing, it is still frustrating to see a useful, well-put-together package that stops just short of being perfect. And, really, they all do.
Open Source is invaluable, but in many respects, it reminds me of a Roadside Picnic.
And just to prove that I'm not a hypocritical dick, my next post will include extensive, failproof instructions for configuring and using the wonderful Rails plugin acts_as_urlnameable.
May 02, 2008
I've been playing hard with AppEngine, Python and Django for a couple of weeks now, and I've managed to come out of it with a useful application: this blog. While I'd hardly say that it is finished, as there are still some features that I'd like to add, I have climbed the steep -- and thus challenging, interesting, addictive -- part of the learning curve. So, I can no longer justify continuing to blow off MyKidsLibrary.com.
MKL is my primary off-hours project, and it has been for almost a year now. It's been in public beta for a couple months now, and I am just beginning to implement the larger features that were suggested by the very helpful and considerate testers. Apparently, as it stands, it lacks the stickiness that is mandatory for a successful social/crowd-sourcing web site. Last night, I designed the data models for the new capabilities, and I started getting that buzzy feeling of excitement that I had lost during the last few months of coding that preceded the start of beta.
Getting back in to the Ruby on Rails groove was easy and enjoyable. As cool as AppEngine is right now, Rails beats it hands-down for a productive development experience. It was also nice to be back in NetBeans. Komodo and the other IDEs that I played around with for Python were decent enough, but they felt immature, especially as I never was able to do any kind of step-through-the-code debugging with AppEngine and the tools that I had. That seriously rubs me the wrong way; I've been coding far-too-long to be stuck with printf-style debugging. It's bad enough that working with dynamically-typed languages seriously limits the code completion that is available.