Heal Your Church WebSite

Teaching, rebuking, correcting & training in righteous web design.

March 23, 2011
by meandean
Comments Off

Strategy vs. Tactics and your Social Media Activities

“Strategy is immutable; it is a Big Picture look at a problem that focuses upon the entire forest and not individual trees.

Tactics vary with circumstances and, especially, technology … So, tactics present a Small Picture perspective where individual trees are in focus but the Big Picture of the forest is not.”

I’ve opted to quote Alan Emrich from his online course ‘Principles of Game Design‘ because I think it nicely sums up the distinctions between a strategy and the tactics that support it.

An important distinction to make as I see some confusion out there where individual social networking tactics and activities are being mistaken for a comprehensive ‘SMM‘ strategy.

That said, I also know many of your organizations are short-staffed and under-funded, so I thought today I might provide a very high-level and somewhat simplified (e.g. dumbed-down) outline which might benefit your church or charity’s foray into the ever changing world of social media.

Simple Outline for a Social Media Strategy

So baby step 1, here’s a simple example of a strategy you which you’re more than encouraged to expand and refine:

  1. Build online awareness of the organization by inviting visitors and members to converse openly in a 2-way dialog;
  2. Expand the reach of the organization online by engaging influential voices in your community;
  3. Perfect the online effectiveness of the organization’s strategy by measuring tactics and activities;
  4. Protect the organization online through effective and doable policies.

Some Suggested Tactics and Activities

1. Ways to invite visitors and members to talk among themselves:

As I said in my 1st point, keep in mind that we want to create a two-way dialog here that allows the individual to feel like they are important to you, and have a voice.

So the idea here is to gather some low-lying fruit to answer the question “what’s in it for them?” One fast way to inspire such interaction is to practice finely tuned, sharply focused micro-blogs versus one big, bloated, blob-blog.

  • Some examples that come to mind are those built around entities such as the youth group or choir. Other examples are those built around events, such as 40 days of Advent.
  • Along with the above examples, consider targeting a wider pool of individuals by tapping into those ‘Long-Tail‘ areas of interest where we drill in some specificity those members, non-members and plain-old Janes share in common. “Summer athletic youth programs” and “Lutheran Vacation Bible School in Raleigh for ages 4 through 8″ come to mind. A ‘Short-Tail‘ example being simply ‘summer programs’ or ‘vbs.’
  • In other words, start planning your Vacation Bible School microsite now (cult members: that’s not a request !-).

Note, This is all going to become MUCH easier with the release of WordPress 3.0, which will incorporate the multi-blogging capabilities of WordPress MU.

2. Some channels where your influential voices may be speaking:

That’s a lot of places at once, but most of the above services provide RSS feeds which can be used to track things in a single heads-up.

  • So for Twitter, create lists, then read those lists into your Google Reader. Yeah, you still have to read the stuff – but it saves a few steps.
  • For those of you coders in the HYCW cult … and you know who you are …  there is plenty of Application Programmer Interfaces (APIs) to shoot your foot clean off while using a caching/offline approach to gathering feeds I described back in 2003

    More recently, I’ve been blowing away toes with the huge number of API interfaces in the CPAN Perl library to code custom search bots and spiders. (Yeah, I know, I should be hip-n-cool using Python, but I can’t help myself.)

One word of caution I’ve dispensed here more than once: just because you can, doesn’t mean you should. Meaning, don’t feel you have to sign-up and link into every stinking social network in the Universe – just those where people talking with you and about you hang out.

Also, enough with the spambots … trust me, whether used for automated email, comments or Twitter campaigns, they’re a big fail my book that I’ve addressed on this blog more than once … but I digress …

Remember the point here is to create organizational awareness. This requires you to listen, respond and invite – not to beat down,  flame-up or suppress opinion – especially if the goal of your organization is to reach out and serve the surrounding community (if it helps, think Samaritan, sinners and tax collectors).

3. Continue nudging your efforts to perfection through metrics.

Albert Einstein once said “The definition of insanity is doing the same thing over and over again and expecting different results.

Put another way, if you’re doing the same thing over and over again and not getting the results you want, then make some changes. The problem is, what to change?

  • Tools such as Google Analtyics, Clicky, HootSuite and 5 Second Test can be priceless in helping you figure out what works, and what needs more refinement.
  • For you experts, programming platforms such as jQuery can extend your plain old hyperlinks and buttons into analytic smart bombs by simply intercepting the click and firing off a message to tools such as Google Analytics.

Here’s an example, let’s say you want people to sign up for a Wednesday night dinner online. You’ve got the page all hooked up to PayPal or Google Checkout but you’re not getting participation.

Knowing the goal, try and see the path to the goal from the perspective of a clueless visitor. Ask yourself:

  • do home pages and landing pages funnel and steer the individual towards said goal?
  • have I considered multiple paths to that same goal?
  • are there places where my user is getting stuck due to confusing design?
  • are there places where my user is getting stuck due to disruptive innovations (think iPhone)?
  • do I need to engage in a real-world or virtual campaign to create goal awareness?
  • am I measuring the progress of how people are getting to said goal?

Much of the above bullets on campaigns and conversion goals requires MUCH further and detailed explanation – but at least start thinking long those ways while you’re learning the more advanced features of your measuring tools.

Oh and for you hot shots out there, don’t be shy about digging into your Apache user and error logs. I’ve always found AWStats is fun little tool for that. Then again, I love regular expressions … but I digress …

4. Last but not least, doable policies and polity

I’ve talked about policy before. In fact my 2006 post on establishing policies to protect your user’s privacy is still an oft-visited article.

There are several reasons for this:

  • betray your user’s trust and you sink your organization’s name;
  • know how to deal with the “you suck” Tweets and posts;
  • figure out how to keep well meaning organization members from going ballistic on online nay-sayers;
  • understand that your tax-exempt status may depend on good policy.

Without good policy to guide your organization, you’re going to fall into the various pitfalls and traps that exist online.

A practical use case to consider is to think about this is how to respond when some ‘Bridezilla‘ flames-up your organization online about not being able to rent the main hall on June 12 because of established policy – and what the cost of making an exception might mean to your church or charity.

Remember, good policy can be timeless, even long after a given technology is long gone.


I know this is quite a bit to digest all at once – especially those of you who’ve been getting hammered by the newly minted, self-appointed social media guru in your organization who just discovered TweetDeck on his brand new iPhone.

Just keep in mind, one of the big reasons people get involved with your charity or visit your church to connect with other people – social media is just another way to accomplish this.

Hopefully as my current job situation spins down, I’m hoping to have more time to talk about many of the items I mentioned above individually.

Until then, keep in mind that the above this isn’t a comprehensive outline but rather a place to start conversations about social media and your church and/or charity.

That said, as much of the above is about listening and responding, it’s time to eat my on dog food and encourage you to go ahead and post your thoughts, comments, suggestions and experiences.

Especially as I know I’ve either missed or glossed over something important or conspicuous. Or put another way, “I haven’t failed, I’ve found 10,000 ways that don’t work” -Thomas Edison

February 26, 2011
by meandean
1 Comment

Using Perl’s Net::Twitter to Harvest Keyword Searches

So you’ve decided to dive into social media marketing on behalf of your church and/or charitable organization.

In fact, you’ve been wisely leveraging bit.ly with Twitter or ow.ly with HootSuite to track and measure your outbound links — but you find yourself in need a more ‘industrial strength‘ means of tracking who is saying what about your organization or an upcoming event.

You also want to speed up your WordPress blog as it’s been gagging when your Twitter RSS feed goes all 503 on you because Ashton Kutcher tweeted about his toenail clippings.

Recipe for Success

As I mentioned in my post last Tuesday entitled ‘Strategy vs. Tactics and your Social Media Activities ,’ I’ve been playing around with some of the cool social networking tools one can find in the CPAN library.

Today I want to provide a quick snippet on how to use the Net::Twitter to write a simple PERL program to harvest a search.

To do this, it mean installing the Net::Twitter library. You’ll likely need root or sudo privileges to make this happen. If you don’t know what root or sudo means, then you’ll want to contact your hosting provider.

That said, once you get it installed, the next step is to go to the Twitter Search page and create an advanced search. From the resulting query string should give you all the parameters you need, for example:

Based on the above example, I created the following script by using the nano editor for a file called ‘eastertweets.pl‘:

use Net::Twitter;
use Net::Twitter::Search;
use Scalar::Util 'blessed';
# Just the Search API; exceptions thrown on error
$nt = Net::Twitter->new(traits => [qw/API::Search/]);
eval {
   # Parameters: q, callback, lang, rpp, page, since_id, geocode, show_user
   my $r = $nt->search({
      q=>"\"easter service\" OR \"sunrise service\"",
   for my $status ( @{$r->{results}} ) {
      print "\@$status->{from_user}";
      print "\t$status->{created_at}\n";
      print "\t\t$status->{text}\n";
      print "-----------------------------------------------------\n";
if ( my $err = $@ ) {
   die $@ unless blessed $err && $err->isa('Net::Twitter::Error');
   warn "HTTP Response Code: ", $err->code, "\n",
   "HTTP Message......: ", $err->message, "\n",
   "Twitter error.....: ", $err->error, "\n";

Once I created the file, it was simply a matter of modifying it to execute, then calling it:

chmod a+x eastertweets.pl

So Why Bother?

Now this approach by itself is a lot of work for little return. However, here are some things you might want to do with the sample above that would provide some big return value:

  1. feed this into a SQL database history via Perl DBI;
  2. create comma separated values and pipe it into a running log file;
  3. aggregate the returns with other searches into a single RSS file on your server for both the sake of speed and feeding localized dashboards;
  4. grep the returns for other key words, sending email notifications on hot items, while deleting those spammy items that make your feed so noisy;
  5. create a RESTFul web service that dynamically feeds your WordPress blog of select queries using Ajax via jQuery.

The point is, once the data is captured, you can pretty much do anything you want with it programatically.

For me, I’m thinking it might be fun to grab user IDs and feed their demographic information into some sort of analytics engine; or at least have some fun with Google Maps.

Anyway, enjoy the example. If you expand on it, don’t forget to come back and provide a link. I’d be interested to see how this snippet evolves.

February 18, 2011
by meandean
Comments Off

Introducing Hymnopedia.com – a semi-definitive WIKI of Christian hymns.  Yes folks, I’ve been a way from this blog a bit so I could complete the launch of a site that I hope will become a community of collaborators on those classic hymns of the Christian faith that express our joy in the good time, sooth our sorrows in the bad times, and heal us when we’re hurting.

Hymnopedia - a semi-definitive Wiki of Christian blogs

There’s quite a bit of back-end work that went on to make this launch. I’ll write about it more a bit later.

Now it’s late and I need some sleep.


December 25, 2010
by meandean
1 Comment

Using MIDI to MP3/WAV Converter for Accompaniment Tracks

Nothing makes for a stellar Christmas performance of Oh Holy Night like having a MIDI track you can play and practice with on your computer … well except maybe for the same track on your favorite MP3 player or SmartPhone that you can tote around as your personal and portable accompanist. That’s what I did with a nifty little tool appropriately entitled “Direct MIDI to MP3/WAV Converter” by Piston Software.

Even better, I was also able to use Direct MIDI to MP3/WAV Converter to create WAV files I could then incorporate as sound tracks into the movie maker software that came packed with my laptop.

As I’m planning on another live performance of Dvorak’s 10 Biblical Songs that I wrote about on this blog back on 2002; only this time around I plan on follow-up with digital recordings. The  Direct MIDI to MP3/WAV conversion tool will come in handy for making accompaniment tracks for my iPod, as well as master destination tracks for my multi-track digital recording that I’ll mix down and post onto iTunes.

And if I find myself rehearsing for some Easter Cantata, you can be sure I’ll be creating MP3s of each SABT vocal track to distribute those about me so that the poor conductor or music minister doesn’t go batty from flat basses and sharp sopranos.

Below are some other features of Direct MIDI to MP3/WAV Converter you may find useful:

  • Quick and fast midi rendering engine – up to 10 times faster than the original midi file time;
  • Audio CD quality because of internal fast conversion without recording;
  • SF2 Soundfont support;Screenshot of Direct MIDI to MP3/Wave Converter
  • Adjustable reverb control;
  • Adjustable Midi tempo;
  • Fast batch conversion mode that saves your time;
  • Most popular MIDI formats are supported;
  • Adjustable qualities and bitrates;
  • High quality built-in MIDI player with trackbar;
  • Fully featured OGG/WMA/MP3 Tag editor;
  • Full support of ID3 MP3 tags;
  • Full support of WMA tags;
  • Full support of OGG tags;
  • Multilingual interface;
  • Hot keys for all operations;
  • An easy-to-use Drag and Drop interface;
  • Recording Level adjustment;
  • Ability to Minimize program during midi conversion;
  • Transpose MIDI feature;
  • All available directions: MIDI to MP3, MIDI to WAV, MIDI to WMA, MIDI to OGG, MIDI to WAVE, MID to MP3, MID to WAV, MID to WMA, MID to OGG, MID to WAVE, RMI to MP3, RMI to WAV, RMI to WMA, RMI to OGG, RMI to WAVE, KAR to MP3, KAR to WAV, KAR to WMA, KAR to OGG, KAR to WAVE;
  • Windows Vista compatible.

Now pardon me while I use Direct MIDI to MP3/WAV Converter one more time to make another background score to accompany some pictures of this morning’s Christmas cheer.

And even if you’re not into rolling your own music scores and accompaniments, I want to wish everyone a very blessed Christmas and a healthy and safe 2011.

October 3, 2010
by meandean

Setting up multiple test sites in XAMPP via virtual sites

It’s NEVER a good idea to test new designs, programs and/or learn new stuff on a production website. This article describes how to create multiple virtual servers on a Windows 7 platform using XAMPP to create a perfect Linux/Apache like test bed.XAMPP + Win7 = great platform to test WordPress, MovableType and   Drupal

Some Context

I’m in the process of re-factoring some websites I’ve let go fallow far too long. Part of this process includes setting up a Linux-like test site on my brand new Windows7-driven Lenovo U350 via XAMPP.

Yeah, I know, that was a lot all at once, so let’s break some of this down for those of you who don’t code for a living:

What’s XAMPP?

The WikiPedia defines XAMPPas follows:

(pronounced /ˈzæmp/ or /ˈɛks.æmp/[1]) is a free and open source cross-platform web server package, consisting mainly of the Apache HTTP Server, MySQL database, and interpreters for scripts written in the PHP and Perl programming languages …

… The program is released under the terms of the GNU General Public License and acts as a free web server capable of serving dynamic pages. XAMPP is available for Microsoft Windows, Linux, Solaris, and Mac OS X, and is mainly used for web development projects..

In short, XAMPP gives me a Linux/LAMP development platform on a Windows based machine.

My Situation

Whether it’s learning something for work, or working on a church website, often find myself jumping between languages such as Perl, PHP and Python … and content ‘manglement’ systems such as WordPress, Drupal and MovableType, I find it’s easier to keep things organized if I:

  1. keep each project in its own path
  2. establish a virtual server for each project
  3. enter the project name in the address bar of my browser

Getting it done

By default, “localhost” is the default domain name for your PC. It resolves to IP address

But just as a hosting provider can support several domain names on a single IP address, so too can your Windows system.

Below are the steps to get this done:

Step 1 – identify the new host

Unlike Windows XP or Vista,  for Windows 7 you’ll need to right click on the NotePad program and “Run as Administrator” as pictured below:

Notepad - Open as Admin

This is because the file we want to edit is now protected. That file is located at:


Once you’ve opened the file and on or about line 23, edit your file so it reads:       localhost       drupal

Save it, close your notepad editor, so you don’t shoot yourself in the foot in admin mode.

Step 2 – establish the virtual host

Keep in mind, the primary purpose of XAMPP is to give you an Apache server that runs on your local machine.

That in mind, you’ll need to edit one more file:

notepad C:\xampp\apache\conf\extra\httpd-vhosts.conf

Once in, you’ll want to modify it so it reads:

NameVirtualHost *:80
<VirtualHost *:80>
 ServerAdmin postmaster@dummy-host.localhost
 DocumentRoot "C:/xampp/htdocs"
 ServerName localhost:80
 ServerAlias localhost
 ErrorLog "logs/dummy-host.localhost-error.log"
 CustomLog "logs/dummy-host.localhost-access.log" combined
<VirtualHost *:80>
 ServerAdmin postmaster@drupal-host.localhost
 DocumentRoot "C:/xampp/htdocs/drupal"
 ServerName drupal:80
 ServerAlias drupal
 ErrorLog "logs/drupal-host.localhost-error.log"
 CustomLog "logs/drupal-host.localhost-access.log" combined

Note, in the default XAMPP install, the above is commented out, and the hosts are dummy and dummy2. I simply un-commented everything and renamed dummy2 to drupal.

Step 3

Restart your Apache server. The easiest way to do this is stop and start the server through the can be done through the console as pictured below:

XAMPP Console

Step 4 – Test It

Finally, you’ll want to test it by entering “drupal” in the address bar of the browser of your choice.

Before you do that, you may want to create the directory C:\xampp\htdocs\drupal …

… and then add an index.html, .php, .pl OR .py file to provide the ubiquitous “Hello World!” to demonstrate everything is running as planned.


Additional Resources

I’m not the first person to write on this topic, nor will I be the last. That said, here are some other sites that offer similar tutorials in case the one above is still as clear as mud.

Why Bother?

Some of you may be wondering why bother at all? Why not just work on your live site.

Personally, as an IT professional with a couple of decades experience, I can say with utter certainty – backed-up with copious examples – that this is a recipe for disaster.

Instead, why not simply take an old box and install a Linux distribution such as Ubuntu or Fedora … or do what I did, took a new box an added XAMPP.

Either way, you’ll be glad you did when one of your tests or learning experiences fries your non-production site.

May 23, 2010
by meandean

WordCamp Raleigh 2010, Liveblogging, Day 2

Once more, I’m live blogging from WordPress WordCamp Raleigh (#wcraleigh) here at the Sheraton in Downtown Raleigh. I’ll be posting notes from sessions on managing events in WordPress and how powerusers can get the most out of multimedia via WordPress. Stay-tuned, I’ll be posting often all morning.

8:42 AM Arrival

WordCamp Raleigh 2010I didn’t read the schedule close enough, today’s events start at 9:30 AM rather than 9:00 … so I’m here early.

Makes me all the gladder that I didn’t speed to get here as NC64/I40 East from exit 293 to 298 are crawling with Raleigh Police issuing speeding citations. Me, I had the cruise control set as I listened to some Pentecost chants and plainsongs being played on the local classical music station.

As I get here, no surprise, a 17 year old attendee is up bright and early, while some others are lightly snoring on the mezzanine couches & chairs outside the meeting rooms. From what I glean from last night’s #WCRaleigh Tweets – there were several folks up very late having a good time.

Anyway, I’ll be live blogging from two sessions today, one for programmers on organizing events … the other for power users on podcasting, streaming, multi-media and fun like that.

Stay tuned!
Continue Reading →

May 22, 2010
by meandean
Comments Off

WordCamp Raleigh 2010, Liveblogging, Day 1, Afternoon Session

As I anticipated, it’s been GREAT meeting all sorts of neat people here at WordCamp Raleigh (#wcraleigh).

1:00 PM Grant Swaim

WordCamp Raleigh 2010

How to biuld a membership-style website

The presentation is at Google Docs.

Basically the presenter is reciting the google doc … I’m going next door to the sitecast.

1:00 PM Ryan Duff
Saving Youself TIme WHen Setting UP a Dev Environment

Lots and lots of talk about SVN (subversion) Server and how to set it up on your development server.

Ugh .. this is good and important stuff for us developers, but its like watching grass grow and probably better provided in the form of 3 five-minute how-to videos.

Let me check out the SitePoint PodCast.
Continue Reading →