kdmurray.blog

The crossroads of life and tech

Scope Creep – A Real World Example

Here’s a real-life example of how scope creep can absolutely kill a project you’re working on. I tend to find that this particular phenomenon tends to take hold of my projects on a regular basis, and I’ve been actively trying to combat it for quite a while now.

The project in question was a very simple installation of TwitterFeed on my blog. In my recent rediscovery of Twitter, I’ve noticed lots of folks seem to be auto-creating tweets when new posts go up… and quite frankly, I wanted in on that action. ;)

First, a description of the problem. The scope creep I talk about tends to come up when a simple project begins to show you options that you just have to could implement. Each option can really be a project in and of itself, and as a result the original project (which should have taken 10 minutes) has taken you the whole night and you’re up until one in the morning working on it and then blogging about the problem! :mrgreen:

Here are the basic instructions for setting up TwitterFeed:

  1. Step One: Decide you want TwitterFeed
  2. Step Two: Provide OpenID credentials
  3. Step Three: Start using TwitterFeed
  4. DONE!

Here is the example of what happens when you let your curiosity about the extendability of the same plugin get the better of you. Instead of getting this all to work as expected, it causes an evening of frustration.

  1. Step One: Decide you want TwitterFeed
  2. Step Two: Discover that TwitterFeed uses OpenID
  3. Step Three: Read the OpenID tutorial and discover that you can host your own OpenID server
  4. Step Four: Download the OpenID code
  5. Step Five: Read the roll-your-own-OpenID tutorial and discover that you should use OpenSSL
  6. Step Six: Do trial and error until you find a way to actually get the OpenSSL working
  7. Step Seven: After 2 hours of searching, submit a support ticket and give up on the SSL for now
  8. Step Eight: Go get something to drink. Something strong
  9. Step Nine: Configure phpmyid
  10. Step Ten: Add code to your site.
  11. Step Eleven: Realize that it doesn’t work and use a regular OpenID account until you get more time…
  12. DONE!

I rest my case. So let this be a lesson to you:

  1. Figure out what you need to get done
  2. Get it done
  3. Make notes of the other options along the way
  4. DONE!

Ultimate Google Analytics Plugin for WordPress

I’ve always been a bit of a stats monkey when it comes to… well pretty much everything.  I like to know how many there are, how long it takes, how much it costs.  I want the numbers.  But more than that, I want accurate numbers and often times in the past trying to get accurate numbers for website traffic has been a real challenge.  Google Analytics does a great job of  tracking every hit to my blog, but unfortunately it tracks mine too.  This conundrum led me to the Ultimate Google Analytics Plugin.

This plugin does a great number of things and has an options screen as long as my arm.  Aside from having the ability to ignore administrators, it also has the ability to add in tracking to all of your outgoing links and downloads.

If you use WordPress and you use Google Analytics you need this plugin.

MacUpdate Bundle Promo – 90% Discount!

The folks over at MacUpdate are doing it again.  They’ve bundled together a ton of apps and are selling them off for one low packaged price.  The deal is set to expire this Tuesday, December 12th at about 20:00 PST.

The software included in the bundle is:

Full retail cost for the bundle is nearly $600.00, and the bundle will be going for about $50.00 USD until Tuesday.

Project “Gutsy Gibbon” — Adventures with Ubuntu

I’ve been running a Linux machine at the house for some time now, experimenting with trying to use it for a central file server where I can get at things like music and pictures from any of the computers in the house, and in some cases from over the Internet.

I’ve tried using various incarnations of Red Hat including the Fedora Core (5 & 6) series, but eventually I hit some kind of a wall and give up. After all the technology is supposed to be there to serve me, not the other way around.

'A Grid'
Photo Credit: IO_Burn on Flickr

Last week I listened to the second episode of the Knightcast. This was the continuation of the series “the Grid”. The main focus of the episode was getting started using Ubuntu as a “power-station” in a home or (very small) business network.

I listen to most of my podcasts in the car, so the first time I listened to this episode, I was driving around the city on my daily commute and it gave me lots of time to think about just how useful this type of “home server” might be. When I got home, I pulled the podcast up and went through the first part of it again, the bit that explains some of how the server could be put to good use. Most of it is pretty common sense stuff. The “power-station” server machine allows for a central place in your home where documents, media and other files can be stored and it provides a mechanism for making that data remotely accessible.

Knightwise also discussed a couple of options for remote administration, which is always a good thing. I’d much rather be able to addess and deal with my server by way of my MacBook from the deck (or the bedroom) instead of tromping all the way downstairs where the (very noisy) desktop machines have been relegated.

Almost immediately a few new possibilities began rolling to mind…

For some of the software development that I do, it would be very handy to have access to a SubVersion repository that I could use to manage the code from anywhere on the Internet. Oh sure, there are other services like SourceForge and GoogleCode which offer similar services, but it never hurts to be able to have full control over your machine, and your information.

With a built-in server, adding FTP (or better yet SFTP) capability makes it that much easier to share specific files or data with friends and colleagues. Again you could sign up for a service like X-Drive or Box.net for this, but why not take advantage of owning all your own data. If done correctly, the self-hosted model can be much more secure.

Add to this the fact that my router, by way of it’s spanky new DD-WRT firmware, supports several free DDNS services, and I have a new server set up to serve my content on the web or anywhere else. And I don’t even have to remember my IP address (which admittedly hasn’t changed in the over 2 years I’ve had my service… thank you Mr. ISP!)

It sounds like there are going to be some more great tips coming up in future Knightcast episodes featuring “the Grid”. I wonder what else my 6-year old P4 desktop will be able to do for me!

Website Redirect with mod_rewrite

Warning: This post is going to get a bit technical…

This afternoon, I was checking out my Google Analytics statistics and realized that I was still getting quite a bit of traffic to the old blog at krell.cellsandbytes.net. I was wishing that these people would be kind enough to click on my new links on the new blog… but alas this was not the case.

So I set about trying to figure out how to make all of my old blog pages redirect to the ones on the new site. For your convenience, I’ve documented the steps involved in case you need to do this too!

  1. Make sure that the permalink structure on the two blogs matches (otherwise things get messy)
  2. Make sure you have access to edit the .htaccess file in your website’s directory
  3. Add the following code to the .htaccess file (most likely at the top):

    RewriteCond %{query_string} ^(.*)$
    RewriteRule ^(.*)$ http://kdmurray.net/$1?%1 [R=301,L]
    My .htaccess file in my WordPress installation now looks like this:

    # BEGIN WordPress
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    #RewriteRule . /index.php [L]RewriteCond %{query_string} ^(.*)$
    RewriteRule ^(.*)$ http://kdmurray.net/$1?%1 [R=301,L]
    </IfModule>
    # END WordPress

    I had to comment out the line #RewriteRule . /index.php [L] to make the vanity URLs function correctly.

  4. Test your website

I was able to make this work for static pages (/index.php) as well as the vanity URLs (/2007/06/15/flickr-vs-photoblog/) and everything seems to be working swimmingly. This will successfully re-route all the traffic from links, or bookmarks to my old site, and ensure people land on the right page on the new site.

Credit: Thanks to jdMorgan a moderator at webmasterworld.com for the original rules & regex.

MacPorts: Subversion setup

In trying to upload my first WordPress plugin to the subversion servers at wp-plugins.org, I found that I didn’t have Subversion installed on the Macbook yet. So I turned to my first source for all Mac tools which originated in the Linux/Unix realm and that’s MacPorts.

MacPorts (formerly DarwinPorts) is a package manager for Mac OS X which can handle the installation, removal and updating of many tools. The vast majority of these are command-line programs. They run the spectrum from development tool like Subversion or Ruby on Rails, to network tools like bind or arpwatch.

Typical syntax for installing a MacPort is:

sudo port install some-application

A quick note about the Subversion install: you may need to ensure that your MacPorts install is up-to-date. I needed to run a “self update” of MacPorts before my subversion install would complete. See the transcript below to see what I mean…


titanium:~/Projects/WP-Plugins kdmurray$ su root

titanium:/Users/kdmurray/Projects/WP-Plugins root# port install subversion +tools
Error: Unable to execute port: wrong # args: should be "proc name args body"

titanium:/Users/kdmurray/Projects/WP-Plugins root# port selfupdate
DarwinPorts base version 1.400 installed
Downloaded MacPorts base version 1.5
Configuring, Building and Installing new MacPorts base
selfupdate done!

titanium:/Users/kdmurray/Projects/WP-Plugins root# port install subversion +tools

If you’re working with command-line tools on your Mac, and trying to compile linux tools from scratch, give MacPorts a shot. It will quite literally save you hours of time and frustration.

Nifty Plugin Manager for WordPress – Pluginstaller

In developing the new site (more info soon I promise!) I’ve been scouring the ‘net for the best and brightest of plugins for WordPress to not only improve the site and content, but to make my life easier.

Wordpress Plugin Management using PluginstallerEnter Pluginstaller.

This WordPress plugin created by Henning Shaefer revamps the Plugin screen in the admin panel and provides a method for downloading, updating and activating plugins.

In my opinion, the two features which make Pluginstaller so effective are:

  1. It’s ability to download and install a plugin from it’s original source
  2. The re-organization of the plugin screen, separating the activated, and inactive plugins.

This was one of the first plugins I added to the new site. Definitely going into the WordPress arsenal for the other projects coming up this summer.

Dubious Milestone: Spam 10K

Just the other day, I noticed that my Akismet Spam filter for the blog had blocked it’s 10,000th Spam comment. That’s a lotta spam.

Akismet Spam Zeitgeist Stats from July 10, 2007It’s amazing to me how much Internet bandwidth must be consumed by spam-bots posting to blogs and forums. The official Akismet website hosts a segment they call the Spam Zeitgeist. I’ve included a screenshot of the stats as they are at the time of this post. Currently 94% of all comments processed by Akismet-enabled blogs are spam. That’s just wrong.

Since the folks from Akismet started measuring the number of Spam their nifty little tool has caught back in March of 2006, it has eliminated over 2.03 Billion (yes, with a “B”) blog spam messages. That’s an average of over 135 Million every month!

Thank You Akismet for keeping us all safe!

MyOpenID and WordPress

I just found by chance today a new service, and a wordpress plugin for that service!

The service is MyOpenID.com, which provides a persistent login mechanism across websites which support the technology.  This allows you to provide only your MyOpenID.com user account name to sign up for certain sites/services.  This “single-sign-on” technology can greatly reduce the number of times you have to enter a password while surfing the net.

Add to that the fact that Dr. Nic Williams has recently blogged on his site about a plugin for WordPress which will allow you to accept sign-ups from MyOpenID.com users without them having to go through all the steps to create an account for your site.  Great Find!

The MyOpenID.com service will allow you to have more than one “persona“.  This means that if you have a separate set of websites you visit (say the Online Play-by-Post Star Trek role playing sites) you can easily keep those worlds separate while using the same ID.

This is definitely making the list of plugins for the new site!  :)