Making a case for MixedCase URLs

O, be some other domain name! What’s in a domain name? that which we call a domain By any other ip address would resolve as sweet?

With apologies to Shakespeare, I’d like to talk very briefly about a very large and important topic: domain names. The other day, I received the following question from CK:

We’re planning a new website for our church, and since many of our ministries are all requesting lower case URL’s I thought I’d ask your opinion on it.

From a usability standpoint, what’s the right thing to do?


An excellent question, made even better when equipped with clarifying examples. But before I answer this question, let’s quickly first review what a domain name is and what it does … in a plain English way sure to ostracize me from those of you who read pure geek.

Basic Mechanics

A domain name is a human-readable way of remembering an In other words, when I type in the text “” into the address of my browser, a message is sent to a server that returns the numeric IP address … which then goes through a series of other network requests and resolutions until my glorious web site appears on your computer screen.


But CK’s question was, what is more usable:

Like any good church-goer, let’s first see what St. Nielsen has to say from the Book of

“do not use MiXeD case text in URLs since people can’t remember the difference between upper-case and lower-case characters: all-lowercase URLs are usually preferred (domain names are less of a problem since they are case-insensitive – usability would increase if webservers would ignore case in resolving URLs)”

I guess the above makes me a heretic, or more accurately, a half-heretic. Let me explain.

Unlike Dr. Nielsen, who has deep training and experience in all things usability, I come out of a computer programming background; a world in which case sensitivity and source code maintainability dominate naming conventions. For example, when creating an integer variable that represents the age of a dog, I might declare it as iAgeOfDog instead of iageofdog, the former being more readable than the latter, especially when awash in a sea of cryptic code.

But unlike like many computer languages, domain names are not case sensitive; good thing too. If you thought cybersquatting is a problem now, imagine the legal havoc reaped upon the Internet if resolved to a different IP address than

Heresy or Common Sense?

So which way is more usable? I say both. Why? Consider how Jesse James Garrett concludes his article entitled ‘User-Centered URL Design‘:

“Some might argue that, in a perfect world, URLs would be used only by machines, hidden entirely from users. But in our imperfect world, users have come to depend on URLs to communicate key information as they navigate through the Web. Systems that don’t take this user behavior into account pull the rug out from under users who have come to rely on readable URLs. Recognizing that people really do read URLs – and, in turn, making those URLs easy for people to read – is really just an extension of the user-centered philosophy of design. It’s all about creating systems that work the way people work, rather than the way technology works.”

Basically, what I interpret this to mean is that if at all possible, make domain names work for both parties … that is the computer and the human. For example, though short URLs are usually better, there are times when a long one works, e.g. Yet because of its length, and because of my experience as a computer programmer, I know that mixing the case makes the URL easier for the human to identify and read.

That said, I think it is a good practice to make sure the underlying HTML rendering remains lower case. Yes, it is code, but it is not a variable name but a constant … and since most browsers and servers are written in lower level languages such as C, it is better to not confuse them conventions employed to facilitate the frailties of the human. In other words, doing it this way may also save you some grief when dealing with older browser and domain name servers (DNS) that may still be mixed-case impaired (in other words, trust me on this one).

Mixed-case Compromise

So CK, to make a long answer short, here is how I would render a short URL:

<a href=”” title=”Jakob Nielsen”></a>

Here is how I would render a long URL:

<a href=” title=”Mean Dean”></a>

One other thing, I’ve used the term URL synonymously with domain name which is okay, but may cause you some confusion when you first come up against the term URI — which describes an Internet document such as this particular article. For more information on how to effectively use URI’s, especially where mixed case issues are involved, I suggest studying the articles “How to Succeed With URLs” and “Designing URLs for Usability” … yeah, see what I mean by human frailty?

Finally, since I’m bucking Nielsen on this one I suspect one or three of you might have an opinion one way or the other. Don’t be shy, leave a love note … just make sure you present your case in a way where we can all learn from it. Meanwhile, I’m going to see if I can purchase some indulgences from Father Flanders before it gets to hot here.

Posted in Uncategorized

Regluar Expressions Editors and Testing Apps.

McCulloch 1432 Gas Powered Chainsaw
Regular expressions are like a chain saw … a gas powered chain saw. At first, you’re deathly afraid of even touching it. When you do fire one up for the first time, it’s only after you’ve dressed yourself like a hockey goalie and have your spouse waiting just outside of your roped-off area with his or her their finger on the 911 speed dial button.

Once you realize that if you practice some common sense, that is you take time to think through what you’re trying to do first, regular expressions become your favorite power tool – just like your chain saw.

For example, now that I’m pondering a move to WordPress, I’ve got to port Scripturizer from Perl to PHP. Scott Yang has already done much of the work, but the regex needs to be expanded to include multiple references, e.g. Romans 10:9-10, 12:1-2 or Matthew 5:6-7, 9-12.

Debugging something like this can become incredibly frustrating using the code and test method. Not so much since I have both Perl and PHP installed on my local PC. Still, having tools to help construct, visualize and debug your regular expressions can help reveal hidden bugs, catch typos that snuck past your bleary gaze, and/or teach you how to use your chain saw – I mean regex – without cutting your foot clean off.

So here are some tools, tutorials and testers I found:

Desktop Tools:

  • Kiki – a free environment for regular expression testing (ferret). It allows you to write regexes and test them against a sample text, providing extensive output about the results.
  • For those of you who love Linux: the KDE Regular Expression Editor
  • Expresso – A tool chest for building and testing regular expressions for Microsoft Windows .NET.
  • Like PHP but hate regular expressions? Try the RegExpEditor module with PHPEdit.
  • RegEx Coach – don’t let the plain-jane website fool you out of using this Window-based tool.

Online Tutorials:

Online Testing Tools:

Leave a comment if you have a favorite not on the lists. Or if you have tried one of the above cool regex tools and tutorials, let us know what you think.

Posted in Uncategorized

Should I add newsfeeds to my church website?

Should I add a news feed to my church’s website? A couple of years ago, there was quite a bit of discussion about the “Yahoo!-ization” of the web. That is, everything was becoming a portal. This was done by large companies who were hoping to sell lots of stuff and/or online advertising by creating a large base of users who made the portal their homepage.

Which is why I was surprised that in two years of running this blog; I hadn’t received an email on this topic … until this morning:

Hey Dean, I’ve been reading your website for months now, and taking everything in as we begin to design our website for our church. I have a question. I’m thinking about adding rss news feeds for our church (i.e. ESPN scores, [local newspaper online] headlines, perhaps a weather channel update for our city). I’m planning on putting this “below the fold” on the first page. By doing this, I hope to have a place where everyone can get all the information they normally lookup on a daily basis from our site. It will encourage our members to set our website as their homepage. On the other hand, this information has little to do with our church, other than providing a tool for members.

I wanted to know what you thought. Is it worth it, or should I forego the newsfeed idea? Any help you can give would be great!

First off: great question! I’m glad to see someone thinking about how to make their church website more useful to their users. That said, I’m not so sure this is the best way to make people revisit your church’s website … often.

Purpose and Personality

From the get go I’ve preached that the primary purpose of any church website is to convey the purpose and personality of the wonderful people in the pews and up at the pulpit. This opinion is based in large part on classifying visitors into two broad categories, seekers and existing members.

Each group has their own unique and specific needs. It is up to the church webmaster to make the page all things to both parties concerned.

Content is King

I’ve also preached that compelling content is king – note the emphasis on compelling.

One of the major reasons in classifying church website visitors into seekers and members is because of various surveys that suggest the same. Someone is either “shopping” your church website, or they’re looking for specific answers to specific questions.

Now before I get the obligatory comment about the sins of shopping for churches, let’s keep the following scenario on mind:

A person re-locates, let’s say from Rockville, Maryland to Raleigh, North Carolina. For the sake of argument, the person has always attended Southern Baptist Convention affiliated churches.

Now if you go to Google, and enter a query for “southern Baptist church Raleigh” what you’ll get in return is almost 22,000 websites, twenty or thirty of which are links to SBC Churches in the Raleigh area.

Considering it takes a couple of weeks to get the feel of a church, this means I could find myself spending the next year and a half to two years trying to find the right church home. A search process which can be shortened if I can see online, what the church has to offer in the way their theology, their children’s programs, their adult programs, etc.

Along the same lines, if I’m a member of the church, then often I want to know when and where something is going to happen. For example, it’s 11 PM and you’re about to fall asleep when out of the blue, your wife asks: “btw, don’t you have a youth leader’s meeting tomorrow night? I need to know how to plan dinner.” You can’t call the church office, you can’t find the Sunday bulletin … but you can get that information online.

Do Portals Have More Fun?

So getting back to the question, should I “Yahooize” my church website? No … unless you engage in a survey of your church membership and find that their specific needs differ from the average congregation. Even then, I would keep close track of “page exits” via your news feed links to make sure you’re not just wasting valuable front page space and bandwidth proving ‘Metcalfe’s Law in Reverse.’

Personally, I use an aggregator to scan my news, as are a growing number of individuals. Similarly, I think it is going to be hard sell for any church website to compete with MSN, Yahoo Daily New,, Instapundit and the DrudgeReport.

Daniel Will-Harris reflects this sentiment in his article “Et tu, Yahoo? or Don’t let your site lose its identity or Less is Less.

Two Masters

My suggestion is to not serve two masters, but rather put more effort into providing the information that makes your church unique from the other churches in your demographic.

That said, if you really, really want to put a news feed on your website, why not experiment with a “portal page” that isn’t the front page … perhaps including an RSS feed of your own church’s content? Oh, and to avoid copious bandwidth and CPU bottlenecks, check you my article entitled “Using Cron with LWP::Simple and XML::RSS to retrieve news feeds .”

Hope that helps, and thanks for the great question. For the rest of you with an opinion on this topic, leave a comment.

Posted in Uncategorized

Overloaded: Priesthill (Zion) Methodist Church of Hillsborough, Northern Ireland

One of the most beneficial features of the computer is its ability to contain and present overwhelming amounts of data in sensible and organized amounts that don’t over run our ability to digest it. A point I’m afraid the “Centred in Christ, Caring for People” at the Priesthill (Zion) Methodist Church of Hillsborough, Northern Ireland didn’t quite master.

Information Overload

Put another way: when you’ve got a lot to say, don’t say it all at once.

One of the keys to a successful website is sitting down beforehand and enumerating what compelling content best conveys your church’s purpose and personality. While it is clear that the webmaster at Priesthill (Zion) Methodist did that, what wasn’t done was strking a balance between offering ‘just enough’ home page information to avoid overwhelming the reader with too much.

The most obvious example of this is a trinity of menus surrounding the page that instead of inviting the first-time visitor to explore the site, made me feel like I was in a room full of used car salesmen all vying for my attention all at once. My intial reaction was quite literally, what am I looking at … where do I begin?

House of Order

“But all things should be done decently and in order.” – 1 Corinthians 14:40

In 1 Corinthians 14, Paul instructs the church that the speaking of tongues should occur one or two at a time, with an interpreter. In this way the congregation is ‘built-up’ with a message while those peaking into the church for the first time don’t think of it full of drunken idiots.

In the same way, Priesthill (Zion) Methodist needs to rethink their navigation so first time visitors aren’t bull-rushed with the wealth of opportunities obviously embodied at this church.

Likewise, they also need to let the content for each page stand on its own merit, without the benefit of colored backgrounds that make it hard to read, and without the cheap clipart and animated gifs that plague a page here and there.

What is ironic is that while the home page screams about all the activities available, it fails to convey three essential pieces of information that would make it friendlier to both potential visitors and search engines:

  • Times of the service
  • Address
  • Phone Number

Healing it Quickly?

First thing I would do is purchase for the webmaster a copy of Steve Krug’s “Don’t Make Me Think.” I would especially emphasize reading Chapter 6 entitled “Street signs and Breadcrumbs: Designing Navigation.”

Next, I would see if the webmaster would be open to some form of content management. Not that CMS is the magic bullet that will fix all websites, but since the problem here isn’t so much the content, but how to present it … why not employ a system that generates the how on the fly?

The trick would be performing a thorough needs analysis not only of the user base, but also of the staff and laypersons that would manage the site.

Once a careful decision is made on a content solution that satisfies both consumer AND producer, it is just a matter of plugging in the existing data organization and plugging in the content, sans all the contrivances.

Finally, I would then revisit the content and work on making it just a ‘tad-bit‘ more compelling.

How about your church’s homepage? Does it say just too much, too little, or is it just right? I’d be interested in examples that would help the church mentioned above, and or could use some of the same advice discussed above.

Posted in Uncategorized

Using MySQL with the MT-Blacklist to Auto Ban IP addresses

One of the downsides of increased blog popularity is an increase in comment spam attempts. Fortunately, using a variety of tools already at hand, I’m able to identify and block these persistent buggers automagically while I sleep.

The Problem

Last week, this blog enjoyed some linkage from the technical ‘A-list’ regarding my analysis SixApart’s since modified licensing schedule for MovableType 3.0. With this recognition came a flood of comment spam attacks. Fortunately, most entries were thwarted using Jay Allen’s MT-Blacklist plug-in; however a few employing intentional typos got through.

I had pondered some sort of trap for the spammers … in fact I still am. Until then, I need a means of automatically denying them access regardless of typos without denying read access to legitimate visitors. So I began to pour through my various log files for a solution.

MT-Blacklist Logs to the Rescue

One of the options the MT-Blacklist offers is to log failed entry attempts. I have this turned on so I can quickly peruse my MovableType activity log. In fact, it was this very feature that brought to my attention the stepped-up attacks on my system. It also brought to my attention that the few successful entries shared IP addresses with many of the failed entries.

You see, along with being greedy and lazy, spammers, especially comment spammers, are persistent. I know because it took a set of 5 ips four days to finally sneak some comments onto my system … after 87 failed attempts. It was at this point I realized what I could do the temporarily thwart the spamscum:

Crontab as SQL statement that inserts records into the MovableType mt_ipbanlist table from entries in the mt_log where a denied IP address shows up more than once. I then encapsulated the SQL statement in a Perl program so I could add bells and whistles at a later date.

Yes, I realize the LEFT JOIN clause is less efficient than a NOT IN subquery, but unfortunately, I couldn’t get this more efficient syntax to work with the crufty version of MySQL on my server.

The Aforementioned Bells and Whistles

Next step is to expand this program to find the most egregious sinners determine which ones are not based in North America, and deny them using my .htaccess file. Here’s the MySQL statement I’d use to find these bums:

SELECT DISTINCT count( log_ip ), log_ip
FROM mt_log
WHERE mt_log.log_message
LIKE “MT-Blacklist comment denial%”
GROUP BY log_ip
HAVING count( log_ip ) >4

Perhaps Jay Allen could be so kind as to add an option to the MT-Blacklist to automatically add IP addresses to the banned IP table? Or along the same lines, perhaps there could even create some sort of banned-IP list so I could share it with those using other blogging applications such as WordPress and pMachine?

That said, if you can juice it up the above code, leave a comment. I’d be interested in how you deal with it.

Posted in Uncategorized

Clintondale Friends Christian Church, , New York

As much as I’d love to live and work in Raleigh, N.C., I wouldn’t mind a business trip to New York right about now. I’m thinking some place, perhaps 100 miles or so north of the City where though past its peak, some of the pastel colors of Spring flowers may still be visible against trees just now beginning to spread their leaves.

Too bad such bucolic images aren’t reflected by the website of a church located in such a place, the Clintondale Friends Christian Church of Clintondale, NY.

Quick Analysis

Both the the underlying source and at the picture of the congregation on the church’s front page paint an image of a friendly church that may not be populated with pews full of usability minded geeks.

The site is generated using WordPerfect 9 and is hosted on the personal webspace of the pastor. The current layout and design is reminiscent of something we might see from the early days of the web where it wasn’t important how you said it, just so long as you had a web presence.

Even Quicker Healing

I heard on the news the other day where no one has yet claimed a 213 million dollar lottery prize. My wife and I fantasized what we would do with an obscenely large amount money. One of my first dreams would be to set up scholarships for some of my more deserving Sunday school students. Another would be to set up an organization that goes about helping churches and charities improve their online image.

The Clintondale Friends Christian Church (CFCC) could benefit from such benevolence. However, until such time that God blesses me with a billion bucks, I’m constrained to only offer advice … and/or suggest that perhaps one of you help these good folks along in the following way:

  1. Purchase a domain name, something like;
  2. sit down and enumerate (on paper) all the ways CFCC is unique;
  3. build/map an information architecture (on paper) that expresses the unique purpose and personality of the CFCC
  4. subscribe the CFCC to any one of the many turnkey hosted content management solutions offered to churches these days. Some that come to mind are:
  5. purchase the webmaster a hard-copy version of the Web Style Guide by Patrick J. Lynch and Sarah Horton.

Why the turnkey, hosted solution? Because at least to me, it appears that this already busy pastor is also burdened with the task of being the webmaster. So rather than saddle him with a technology he has to master, spend the same amount of money you would with MovableType or ExpressionEngine

make him master of a technology that is set-up to serve him … or as Vincent Flanders aptly put it yesterday:

“I like the article ‘Why Content Management Fails‘ because we get so wrapped up in the tools that we forget it’s really about people. On the other hand, if you’re a one-person shop (like me), you have to be wrapped up in the tools because you’re the one who has to write the content and run the software.” – Vincent Flanders, 17 May 04

Have another like-minded turnkey CMS solution that doesn’t doom pastors to the seventh level of programming purgatory? Well don’t be stingy, share your wealth of knowledge with the rest of us in the form of a comment.

Posted in Uncategorized

Installing phpESP for simple surveys

From time to time, your church or charity may need to run a survey (not a poll, but a survey). When that happens, do you have what it takes to run it online? Here’s my blow-by-blow account of how and why I installed phpESP on one of my systems last night.

Deep Kimchi *

So yesterday, I’m at a picnic put on by the good folks at the Korean Baptist church that leases space from Redland Baptist. Anyone who can BBQ chicken and ribs that good, can have my parking spot anytime!

As is often the course when the entire RBC body gets together, I get at least one or two individuals telling me tales of woe about their computer and how it really needs to get fixed. I got a really dirty look yesterday when I suggested to an individual (yet again) that they buy the Symantec Anti Virus software and run the repair on their infected machine.

Not long after that, the committee chair for the Christian Education committee asks me if I can put ‘the survey’ online. I mention to him that this is the first I heard of ‘the survey,’ but would be glad to see if there wasn’t some software I could install to forward answers to him and/or the church administration via email and/or a database friendly file. He was amazed that such a thing could be done … he was thinking a PDF file that people print and turn in …

… I was thinking phpESP. A nice, stable, medium weight survey application provided your survey doesn’t get fancy with dependencies or a five choices of checkboxes in which the last one is “other” allowing for open text.

A Nice Mid-Weight Survey App.

In other words, if your survey questions aren’t overly complex (note I said survey, not poll), then phpESP may be the application for you. Here are some of my notes on how I went about installing it via my trusty Putty terminal emulator:

  1. via my control panel (cPanel), I created a MySQL user and database
  2. wget
  3. cd $HOME/www
  4. tar -zxvf $HOME/phpESP-1.6.1.tar.gz
  5. mv phpESP-1.6.1 phpESP
  6. cd $HOME/www/phpESP/admin
  7. pico $HOME/
    Enter the following lines of code to this NEW file:
    • <?
    • $ESPCONFIG[‘db_host’] = ‘localhost’;
    • $ESPCONFIG[‘db_user’] = ‘myusername’;
    • $ESPCONFIG[‘db_pass’] = ‘mydbpassword’;
    • $ESPCONFIG[‘db_name’] ‘mydatabasename’;
    • ?>
  8. pico $HOME/www/phpESP/admin/phpESP.ini.php
    replace the lines in phpESP.ini.php above (that now exist in $HOME/ with:
    • include(“/home/myaccount/”);
  9. cd $HOME/www/phpESP/scripts/db
  10. sed -e “s/(‘root’,/(‘myname’,/” mysql_populate.sql > my_mysql_populate.sql
  11. perl -pi -e “s/’esp’/’mypassword’/” my_mysql_populate.sql
  12. mysql -uSER -pASSWORD databasename < my_mysql_populate.sql
  13. rm my_mysql_populate.sql

At this point I’m ready to begin managing surveys by directing my browser to

Security Hacks

One of the things I did outside of the phpESP documentation (lines #7 & 8) is create a new file in the root of my directory tree entitled $HOME/ Then I moved the database connection information out of $HOME/www/phpESP/admin/phpESP.ini.php, replacing the latter with an include directive. This way, if anyone manages to get around the basic authentication protecting the phpESP/admin directory, they’re still going to have to work for the username and password.

I generally apply this security modification to all of my PHP applications.

Likewise, I use SED and PERL from the command line to modify the default username and password in the mysql script to populate the database. Yes, this can be changed within the software, but I prefer to do it here … so long as I don’t forget to delete the temporary/edited copy of the script. This insures the system isn’t running with the default username and password, compels a ‘seeker’ to guess both the password AND username … while leaving no traces for a would be nere-do-well.

Close, but no Cigar

As it turns out, our survey was indeed a bit too complex, which is too bad because I really like phpESP. None-the-less tomorrow night I’m going to experiment with some of the other fun survey tools listed at Stay tuned to see what happens.

You may now wish me a Happy 45th!

Posted in Uncategorized

What we can learn from MovableType’s new pricing schedule …

… or the importance of understanding your user base.

What happened yesterday, that turned a community of high-tech bloggers from their Snoopy-like loyalty into a pack of ravenous pit bulls when SixApart announced their pricing architecture for their MovableType product? Moreover, what can we learn from this?


First, let me say off the bat, MovableType is worth paying for; the question is, how much for which features?

Second, much of what I’m about to write is based upon personal opinions or speculations. My purpose here is NOT to convince SixApart nor the user base that they’re wrong, but rather to learn from a situation where a loyal and friendly association of users turned hostile overnight.

Third, to those who feel MT should be free: get a life. The good people at SixApart are not Satan, nor are they a charity. Any sense of entitlement you have is your fault. It is SixApart’s software they licensed to you after you agreed to their terms. Moreover, it has been known for some time that they would charge for a professional version.

Fouth, SixApart is a business. They have lives to live, rent to pay and mouths to feed. The fact that they’ve let us use their intellectual property for free this long is a testament to their dedication to the product. Especially when you consider the confiscatory regulations and taxes they have to endure as residents of California.

In other words, the issue here isn’t that they’re charging; I’ve got no beef with that. The issue here is how their current pricing structure may have done them as much harm as good. The numbers of sales aren’t in, so again, this is opinion, conjecture and speculation on my part.


I am of the personal belief that the current pricing structure for MovableType is based upon SixApart’s success with TypePad. That is, either the price per feature was derived from TypePad, and/or was created so as not to erode sales of TypePad.

If this is the case, or even partially the case, then I have to assume that there wasn’t much done in the way of determining why an individual might use MovableType over TypePad. While I know of users who’ve employed both, I believe there is a big difference between each core community.

Regardless of the above assumptions, I also have an inkling that SixApart may not have engaged in a thorough enough survey to see what the reaction would be to their current pricing architecture.

One of the primary reasons for MovableType’s success is its extensibility through an open architecture. This in turn has created a large community of technically capable users who have donated quite a bit of time creating plug-ins, patches, tutorials, templates and fixes; myself included.

I also wonder if SixApart surveyed their competitors in great detail.


Based upon the above assumptions, the problem isn’t that MovableType is now a pay to play product, but rather that SixApart priced their product past the point of customer loyalty.

Ignoring the screeds of the “everything should be free” crowd, there are many of us who are more than willing to pay for MovableType. I’ve been more than ready to plunk down my hard-earned dollars, and over the past few months warned the folks at Mission4Me and Redland Baptist to be prepared to do the same.

However, $69 for a three author, five blog per seat has me saying “I love you guys, but I hope you don’t mind if I shop around first.” Why? Below I’ve enumerated the features that make MovableType more desirable to me than competitive products:

  • create a new blog at will
  • add users at will
  • create plug-ins with relative ease
  • relatively simple template engine
  • huge and highly technical third party user base
  • Perl
  • plug-ins (again!-)

I suspect that the above shopping list may also apply to several others who’ve opted to use MovableType over the likes of TextPattern, WordPress, pMachine, Drupal, Blosxom, Internet > On the Web > Weblogs > Tools > Publishers”>etc …


SixApart has expressed in writing, more than once, that they’re grateful for the input from their user base. Now they need to say this in their pricing architecture.

A portion of their success comes from creative and talented individuals outside of SixApart who have created in the past syndication templates, macros, plug-ins and tutorials. Note: the operative phrase here is creative and talented.

Unfortunately, and again I’m speculating, I think the current pricing structure is too restrictive for those of us who might want to spawn off a new weblog to cover a particular topic for a short period of time, such as a photoblog entitled ‘40 Days of Porpoise.’

They also need to realize that these creative individuals are for the most part, aren’t like their TypePad user base and therefore shouldn’t be charged like them. Instead, they need to visit their competitors and price their product … competitively.

Here are some suggestions based on absolutely no metrics at all other than my past experience, reading many of yesterday’s postings about MT’s annoucement and the prices and/or features offered by competitors:

  • $29.95 for a 3 account + 3 blog ( = ‘seat’) license in which seats can be added at $5.95 a piece, or can be upgraded to unlimited seats for an additional $49.95. This is priced low enough to keep single-blog users from migrating over to WordPress and competes nicely with pMachine.
  • $29.95 for an installation on a typical Linux, Apache, MysSQL platform that already has the required Perl Modules and database installed; $79.95 if not.
  • $159.95 for a 5 seat professional version in which seats can be added for $29.95 a piece, or $359.95 for an unlimited version.
  • The purchase of seats can be credited towards unlimited licenses.
  • Create a reseller price so developers can profit modestly from selling, installing, and developing the professional version for their clients.
  • Extend the unlimited seats personal edition to bona fide educational AND 501(c)(3) charities.
  • Offer seats as rewards to third-party developers who make useful contributions.


So how does this relate to the creation of your church or charity’s website? Generally, both organizations have two types of users. Seekers and loyal fans. Make sure you don’t treat them as one in the same.

Don’t put the latter in a situation where you’ve ‘priced yourself’ past their ‘loyalty point’ into shopping around. This means creating user profiles, taking surveys and checking out the competition … thoroughly. Who knows, you may have more than two major classes of users.

If you don’t know how or don’t want to collect such data, then hire (and pay) a professional who does.


I’m not entirely alone in thes assumptions and/or opinions. Here are some other intelligent posts on the topic worth your while:
Continue reading

Posted in Uncategorized

cPanel backup using an MS-DOS batch file and wget

Unless you want to end up like Blanche DuBois, never, ever depend on the kindness of strangers to safeguard your backups. This means keeping a set of backups that are far removed from where your site is hosted. This way if and when your webserver gets slammed by a streetcar named disaster, you’re in a position to quickly hop onto a new platform and get your church or charity’s site back online.

One of the biggest problems with offline backups is when to run them and where to store them. For many of you, you’ve signed up with an inexpensive webhost that offers the cPanel control panel which in turn requires that you login with your browser to get at your backups via port 2082 (as opposed to the default, 80). This is great for security reasons, not so great if you’d like to automate backups so they run at 3:00 AM.

So for the sake of a good night’s sleep and to get your backups offsite, I’ve written a simple MS-DOS Batch file that you can schedule to run as a “Scheduled Task” via your local PC’s control panel (not to be confused with your webserver’s cPanel). It requires six simple things:

  • That you have wget installed on your machine, which you can get for free at GnuWin32.
  • Be sure your DATE/T command delimits dates using a backslash ‘/’ … otherwise edit bach file to taste.
  • Either create a a directory named c:\backups\foo or modify the batch file to suit your needs.
  • Edit te batch file, replacing ‘USR’ with your website account username.
  • Schedule a task with a parameter, in this case, the parameter is your website’s password.
  • That your clock and your website’s clock will be on the same date at the time the script is executed.
@echo off
rem – – – – – – – – – – – – – – – – – – – – – –
rem – got this script via
rem – syntax: c:\sitebackup.bat PASSWORD
rem – – – – – – – – – – – – – – – – – – – – – –
cd c:\backups\foo

for /f “tokens=2-4 delims=/ ” %%a in (‘DATE/T’) do set mdate=%%c%%a%%b
for /f “tokens=2-4 delims=/ ” %%a in (‘DATE/T’) do set MM=%%a
for /f “tokens=2-4 delims=/ ” %%a in (‘DATE/T’) do set DD=%%b
for /f “tokens=2-4 delims=/ ” %%a in (‘DATE/T’) do set YY=%%c
IF %MM:~0,1%==0 SET MM=%MM:~1%
IF %DD:~0,1%==0 SET DD=%DD:~1%
set cdate=%MM%-%DD%-%YY%

@echo on
mkdir %mdate%
cd %mdate%

wget -c
wget -c
wget -c
wget -c
wget -c

dir /od

Now I realize some of you Linux loving uber-geeks are ready to leave a snarky remark about MS-DOS, batch files, Bill Gates and the like. Soas not to lose your undying love and respect, here is the bash shell version … provided you know how to schedule a cron job and chmod as needed:

# – – – – – – – – – – – – – – – – – – – – – –
# got this script via
# syntax: sh PASSWORD
# – – – – – – – – – – – – – – – – – – – – – –

mdate=`date +%Y%m%d`
MM=`date -u ‘+%m’`
DD=`date -u ‘+%d’`
cdate=`date +%Y-${MM#0}-${DD#0}`
echo ${cdate}

mkdir ${HOME}/backups/${mdate}
cd ${HOME}/backups/${mdate}

wget -c http://USR:${1}${cdate}.tar.gz
wget -c http://USR:${1}
wget -c http://USR:${1}
wget -c http://USR:${1}
wget -c http://USR:${1}

ls -la ${HOME}/backups/${mdate}
exit 0

Got some other cool backup scripts you want to share? Wanna offer a tweak to the above? Don’t be shy, leave a comment.

Oh, and regardless of your operating system preferences, and let’s be doers of and not just readers … and make some backups before you install the brand-spanking new Movable Type 3.0 Developer Edition.

Posted in Uncategorized

The Seven Deadly Sins of Flash Banner Menus

Disco Sucks!Even disco balls have their time and place, just so long as the time isn’t during my pastor’s sermon taking place in the church sanctuary. This sums up how I feel about Flash banner menus atop church websites. Aside from being distracting to the point of irritation, they’re often as practical as a spinning disco ball in my 11th grade Sunday school class … though I suspect some of my students might disagree.

This is why I haven’t and won’t install Flash on my primary browser, Mozilla/FireFox. I do this so I can read articles on e-zines and online newspapers without getting a headache. It also helps me sniff out church websites that employ Flash without the benefit of ‘auto-detection.’

Case in point: the Mandarin Christian Church of Jacksonville, FL.

Here we have a church website bulging with well-organized, well-written content … for those of you with a high-speed Internet connection the latest and greatest Flash plug-in installed in your browser.

There are seven things I hate about this:

  1. no Flash Player detection employed
  2. no alternative menu offered
  3. navigation not immediately obvious
  4. unnecessarily long load times
  5. menus ‘bounce’
  6. cannot right click menu choices
  7. maintenance issues

What I suspect has happened here is some very technically competent people who are obviously Flash gurus, bit the apple of ‘gee-wizardy‘ and have shoehorned in an opportunity to strut their stuff at the expense of usability, accessibility and maintainability.

There are six reasons why this is a bad idea:

  • users don’t want to wait 60 seconds for their navigation;
  • users don’t want to see the pre-menu ‘introduction’ every time they load the home page;
  • older users and users with disabilities may not have the hand-eye coordination to follow the bouncing menu;
  • some users, such as seniors, are afraid their computer may blow-up if they load anything their son-in-law didn’t install last Christmas;
  • users without Flash get nothing but a huge block of white space above the fold with little or not clue as to what went wrong;
  • unless the Flash menu is data-driven (and Mandarin Christian’s might be), then you have to figure out a process on how to synchronize new pages with both the re-rendering of the Flash menu and the text menu along the bottom of the page.

How I would heal this site in 30 minutes:

Lose the (bad) Flash banner menus in favor of some faster loading, easier to manage and read HTML (possibly DHTML) menus. If I couldn’t remove the current menu system without invoking a church crippling schism, then I would at least employ some Flash Player detection so users without Flash … and search engines (ahem) … aren’t confused with a big white nothingness. That said, if this is a political issue, then perhaps a good compromise might be to render the menus as HTML (possibly DHTML), while continuing to render the banner using Flash.

One other thing, I’d lose the evil scrolling Marquee.

Aside from that, the page layout and information hierarchy all works for me.

Posted in Uncategorized