12 days of Jesus Junk – The 2012 Edition – Day 3

12 days of Jesus Junk – The 2012 Edition – Day 3 - Life of Jesus Deck - Bible Playing Cards

12 days of Jesus Junk – The 2012 Edition – Day 3 – Life of Jesus Deck – Bible Playing Cards

On the 3rd day of Christmas my webmaster dealt to me, a set threes, with an ace-king kicker.

What better way to demonstrate grace than to take a bad beating on the river during a late night game of Texas hold ‘em during a youth lock-in?

Sure, you’ll have to let the kiddies shave your head, but at least you didn’t lose it when you realized you were drawing dead after going all in because you came equipped with your ‘Life of Jesus Deck – Bible Playing Cards that Celebrate the Life of Jesus, Including His Birth – Christmas.’

And speaking of betting the house, I should probably get on the topic of church website design, taking this opportunity to go all in and complain about church and charity websites who are clinging desperately to their Flash-based slide shows as some sort of magic that will bring new members and guests through their frond doors in droves.

Yeah, I know, all this ‘flashination’ looks cool the first time out, but is it what a new-to-town couple need to get the information they want about what happens to their children when they drop them off at Sunday School?

I’m betting it doesn’t.

Posted in Uncategorized

12 days of Jesus Junk – The 2012 Edition – Day 2

12 days of Jesus Junk – The 2012 Edition – Day 2 - Multi-Color Bethlehem Lighting Indoor/Outdoor Christmas Standard Star Sphere

12 days of Jesus Junk – The 2012 Edition – Day 2 – Multi-Color Bethlehem Lighting Indoor/Outdoor Christmas Standard Star Sphere

While others might paint the wise men were amateur astronomers following Halley’s Comet, color me skeptical.

Sure, a 49212 x 26246 foot (15×8 km) ball of ice hurtling past the Earth at 157,838 mph (254,016 km/h) is impressive.

However, I doubt that this small solar system body (SSB), a.k.a. The Star of Bethlehem (TSB) even when when close enough to the Sun, displays a visible coma (and sometimes also a tail) could outshine the disco-ball brilliance of a ‘Multi-Color Bethlehem Lighting Indoor/Outdoor Christmas Standard Star Sphere‘ depicted here.

Your mileage — and velocity — may vary.

Posted in Uncategorized

12 days of Jesus Junk – The 2012 Edition – Day 1

12 Days of Jesus Junk 2012 - Day 1 - Kurt Adler 9-Inch 10-Point Elvis Star Lighted Treetop

12 Days of Jesus Junk 2012 – Day 1 – Kurt Adler 9-Inch 10-Point Elvis Star Lighted Treetop

With it being 12-12-12 today, I thought I might try and get out a post at 12:12pm just to square things up while I get back into blogging with my almost annual Heal Your Church Website classic series ‘12 Days of Jesus Junk.

And what more appropriate way to celebrate our first century King of Kings than with the 20th century’s King of Rock-n-Roll in the form of a ‘Kurt Adler 9-Inch 10-Point Elvis Star Lighted Treetop?’

Yes folks, even when “… those blue snowflakes start falling” you don’t have to worry about those “… those blue memories start calling” as “You’ll be doin’ all right with your Christmas ” Tree top Light!

Yeah, I know, a pretty inauspicious way to kick-start content again here a Heal Your Church Website, but hey, ‘Kitschmas’ only comes around once a year, even less so when it’s they last time all three portions of the date will equal the same number.

Not that it matters as the World is going to end on the 23rd.

Posted in Uncategorized

Social Media is for engaging in dialogs, not a platform to pound the pulpit!

Dear social media friends & circles, if you use Facebook & Google+ as you would a blog, then don’t get upset if I ‘defriend’ & ‘uncircle’ you.

A Failed Social Media Strategy

Last night I ran out of patience with an individual on Google Plus (G+), who though they meant well, were entering a series of multi-paragraph posts on their stream, with quotes, photos and all.

  • Basically, they were treating G+ like a blog.

As Annoying as this was on my laptop, I ignored the situation. However, spending time on my new Samsung Droid Charge, I found right flicking finger blistered beyond belief as I had to page past several screens of this user’s tomes to see what anyone else was doing.

As soon as I ‘uncircled’ them, my GPlus mobile user experience went from ARGH to Aaaahhhh.

I’ve had similarly ‘defriend’ some on  Facebook as well, though for the most part, only in those cases, I’ve basically start out by ‘hiding’ all posts by an overzealous associate before going with the nuclear option.

And for what-its-worth, I make good use of gmail’s filtering capability for spammy newsletters that don’t respect the ‘unsubscribe’ option hey offer.

So what’s in it for me?

So what can we learn from the above kvetch-fest? Plenty, glad you asked.

Whether you engage in social media for personal fulfillment or as part of a larger digital marketing strategy, the point of social media is to ENGAGE others IN a DIALOG.

If you want to get all preachy and pound the pulpit and/or go all prose on your organizations next big shindig, then may I recommend some of the following tactical approachs?

  • create a killer blog post to present your idea or event;
  • give the blog post a ‘pheromone infused’ title;
  • make sure the 1st paragraph has ‘crack-like’ compelling content;
  • add #hashtags to your blog post’s tags;
  • using the above, create a magnetic 100-120 character meme/excerpt to post on Facebook, G+, Twitter, LinkedIn, etc …; and
  • now go take a look at your work on a variety of platforms (mobile, laptop, tablet, etc …), and tweak those that appear annoying, ill formatted and/or ineffective.

Finally, and more important than any of the above — make sure to follow-up with folks who post comments, re-tweet and/or reach-out to you based on your awe-inspiring words of wisdom.

Bottom Line

So here’s my call to action:

  • use blogs for providing compelling content;
  • use social media to engage others in dialog;
  • develop a tactical approach that uses the right tool for the job for your digital marketing strategy; and
  • have a digital marketing strategy.

Agree, disagree, have an opinion? Why not force me to practice what I preach and leave a comment?

Posted in Uncategorized

Digital Marketing is about Vision, Strategy, Tactics and Activity – in that order

Successfully marketing your church or charity in the digital domain is more than adding a “Like Button” to your blog.

Social media icons galore!I’ve become aware of this after the popularity of my “Facebook Like Button Plugin for WordPress.”

In the past year, I’ve received a number emails requesting features and implementation requests that seem to think that this Facebook service can solve all their social media marketing needs.

So it pains me when I have to reply with a ‘no’ to some very nicely worded requests.

I generally spare such a request of the technical limitations of Facebook’s API. I also spare them the bitter reality that there is no “magic bullet” when it comes to digital marketing.

So to make up for the latter omission, I’ve written below what I believe it takes for a church or charity to survive their drive along the information highway – specifically in terms of online outreach and ministry:

  1. Vision;
  2. Strategy;
  3. Tactics; and
  4. Activities

… in that order.

Problem is, most organizations I’ve seen fail on the web do so because they jump into activities without understanding that success needs to have:

  • measurable objectives;
  • focused, targeted audiences;
  • feasible short, medium and long term plans; and
  • return on investment.

I’ll blog later about these “haves” in a future post. For now, let’s define what I mean by Vision, Strategy, Tactics and Activities … in that order.


  1. Grow organization that …
  2. … serves their local community of Lutherans …
  3. … by feeding their faith; and…
  4. … equipping them to feed others.


  1. Bring in more visitors.
  2. Get visitors to become members.
  3. Get members to become active participants.
  4. Get active participants to become evangelists.


  1. Attracts more visitors through popular digital venues.
  2. Provide online content that allow visitors to comfortably explore your organization.
  3. Provide online tools that help members plug-in to programs and collaborate.
  4. Provide online training and services that help evangelists get the word out.


  1. Get the sermons, lessons online, videos and photos onine; and track it all with Google Analytics.
  2. Create a community presence via a Facebook and/or LinkedIn group, and don’t forget Disqus.
  3. Integrate tools such as BaseCamp for program management and Google Apps for document processing.
  4. Enlist tools such as SurveyMonkey and MailChimp to equip individuals in the field.

If you’re finding that your organization is not getting anything but a passing interest from your online activities, then why not take a step back and consider the above?

If you still feel that a rocking WordPress theme for your church website is the key to your organization’s digital marketing management, then I’d ask you to consider what measurable results you received from similar efforts in the past?

As always, comments, questions and criticisms are welcome, so long as their couched in love.

Posted in Uncategorized

What to do when your Twitter Account gets Compromised

Despite employing strong passwords that I change regularly, despite deleting unsolicited Direct Messages (DM) and mentions with links to unknown destinations, a simple “fat finger faux pas” event lead to me granting a 3rd party Twitter application permission to spam my followers. For that I apologize — and as part of my penance, have provided some useful advice, images and even a script to help you remedy that situation if you should ever similarly fall victim so such malware.What to do when your Twitter account gets hacked

I woke up a little after 1:30AM last night because I though I had heard some racoons helping themselves to my  trash can as if it were a salad bar. Once that venture into suburban sanitation security was resolved, I checked my Samsung Droid Charge for any incoming notifications.  One that caught my attention read:

Strange link via DM from you just now.

As I dug in, I realized that my Twitter Followers were being sent a DM with a link to a third party Twitter Application, which when clicked, would begin the process of similarly turning their Twitter account into a spam-sending zombie.

First thing first, I read the instructions on Twitter’s help page entitled “My Account Has Been Compromised, ” which advised me to:

  1. Change your password (go ahead, make it  a strong password)
  2. Revoke connections (to any 3rd party application you think suspicious &/or are no longer used)
  3. Update your new password in your trusted third-party applications

Which I did immediately. I then went into Twitter and began to manually delete the messages the pusilanimous 3rd party program had sent. It wasn’t long into this tedious process that I realized “… this is how I got hacked, the malware link is WAY too close to the delete link.”  I’ve attached a screenshot of a test DM to demonstrate the usability issue I’m trying to describe:

How the Twitter delete DM links can sometimes be too close to a malware link

A bit of context, earlier in the evening while watching the 1st quarter of the Packers/Falcon’s game, I received an obvious malware DM. I pulled up Twitter in my browser on my Droid rather than the mobile App because there’s less keystrokes to deleting such conversations. Unfortunately, I clicked the Malware link. I remember that happened because I quickly hit the back key and then deleted — not thinking anything would happen because of my miscue.

I was wrong. Later, sometime during the 4th quarter while searching stats on the Pack’s stunning 2nd half comeback, I saw on my little Droid browser a page that looked like Twitter, asking me to log back in. I was busy with the game, I’d seen Twitter do this before. What I didn’t see that the link was  actually pointing to a misspelled site: Twittler.com!

So despite all my talk about strong passwords, ignoring unsolicited candy from strangers, and other such stuff, I granted a 3rd party application permission to spam the h-e-double-toothpicks out of my followers. Worse, just about the time I was through deleting all the rogue messages, I received another communique that reminded me that followers who get email notifications of DMs were still going to see the link.

So at about 2:45AM, I set out to write a script that would send DM notifications to all my Twitter Friends — technically, those individuals of whom I follow, who also follow me. I won’t go into too much gory detail, other than the resulting replies indicated grateful followers, who while suspicious, were glad to get the personalized Direct Message warning from me.

I chose PERL, because while other languages may be better for long term projects, I knew I could field a solution within an hour and a half by taking advantage of the Net::Twitter module provided at the CPAN library; along with a fresh set of API consumer and access from the Twitter Developer’s page.

I call this script “DM_mea_culprit.pl,” and since it can be used to send a bulk messages to all your Twitter followers, please resist temptation and limit its use it for good:

# Summary:
# ——————————————–
# Sends a Direct Message to Friends – those people on Twitter
# whom I follow who also follow me
# Arguments:
# ——————————————–
# none yet, we’ll get that done on the next version
# Example Use:
# ———————————————
# perl DM_mea_culprit.pl > run01.log.txt

use Net::Twitter;
use Dumper;

# NOTE: you will need to get consumer keys and access tokens from the
# Twitter Development Center: https://dev.twitter.com/start
my $nt = Net::Twitter->new(
traits => [qw/API::REST OAuth/],
consumer_key => $YOUR_CONSUMER_KEY,
consumer_secret => $YOUR_CONSUMER_SECRET,
access_token => $YOUR_ACCESS_TOKEN,
access_token_secret => $YOUR_ACCESS_TOKEN_SECRET,

# this information is useful to log at the beinning of the script
# .. it includes how many more messages you can send w/in the hour
my $ratelimit = $nt->rate_limit_status();
print Dumper($ratelimit);

# construct the outgoing direct message
my $omsg = "please do NOT open any URL you may have received from me last night as a DM. It was malware.";

# get all the ID’s of people I follow
my @ids;
for ( my $cursor = -1, my $r; $cursor; $cursor = $r->{next_cursor} ) {
# for a larger net, consider followers_ids()
$r = $nt->friends_ids({ cursor => $cursor });
push @ids, @{ $r->{ids} };

# walk through all the IDs
foreach my $id (@ids) {
if($id) {

# get an array that describes the friendship
my $friend = $nt->lookup_friendships({ user_id => $id });

# get their screen name
my $screenname = $friend->[0]->{"screen_name"};

# see how you’re connected to this friend
my $connections = $friend->[0]->{"connections"};

# important — do they follow you?
my $isfollowedby = $connections->[1];

if($isfollowedby) {
my $dmsg = "\@$screenname, $omsg"; # personalize the DM
my $smsg = $nt->new_direct_message($id, $dmsg); # send the DM
if($smsg) {
print "message ‘$dmsg’ successfully sent to #ID".$id."\n";
} else {
print "WRN:".$id."\t@".$screenname."\texperienced a message fail\n";
sleep (2); # don’t overrun Twitter
sleep(3); # don’t get blacklisted

# Now send out a generalized message to the peeps;
my $res = $nt->update({ status => "TO MY FOLLOWERS: $omsg" });

# last bit of logging
print "This work is done\n";
exit 1;

All that said,  here are some things I’m doing to do moving forward to avoid such instances.

  1. continue to change my password periodically, using something very strong;
  2. periodically review my third-party application connections, removing anything that looks suspicious and/or is no longer in use;
  3. always use the Twitter Mobile App to delete DMs with bad looking URLs when on my Droid smartphone;
  4. take a harder look at the URL when asked to log back into Twitter (or Facebook for that matter);
  5. perfect the above script — adding logic to delete spammy DM’s while sending out the warning; and
  6. being the Social Media API junkie that I am, perhaps re-write this in Python.

Please feel free to add your recommendations to the list above — and again — apologies to my Twitter followers for the hassle.

Posted in Uncategorized

Bad idea design poster #11 – Canned Content

One of the things myths I’ve heard from attending my share of  Word Camp Raleigh events is that template systems are somehow a magic bullet to a successful online marketing campaign.

Canned Content, about 1/2 as interesting as lima beans with 1/3 the taste and 1/10 the nutrition.

Not that there’s anything wrong with terrific tools such as  Thesis, Headway, Genesis, and Builder; nor the premium themes one can purchase for them.

Rather I’m hoping that along with the discussion of getting a fast start with premium framework themes and plugins that we also remember what usability guru Jakob Nielsen said about ‘Information Foraging‘ back in 2003 when describing how to catch and keep visits from data hungry first time visitors:

The two main strategies are to make your content look like a nutritious meal and signal that it’s an easy catch. These strategies must be used in combination: users will leave if the content is good but hard to find, or if it’s easy to find but offers only empty calories.

Basically, Nielsen is detailing how to attaining user-activity goals through the careful crafting compelling content and the navigation to it – known in the web strategy/analytics world as a ‘conversion funnel.

So it is my hope that amid discussions on how to make our blogs look  ‘different like everyone else’ via various rendering engines, that we also take some time to talk about how-to develop a sensible information architecture that best suites the goals of your church and/or charity.

Put another way, we need to remember that if  “Web users behave like wild beasts in the jungle …,” then we probably want to avoid taunting such ‘Informavores‘  with ‘canned content’  when in fact only raw meat will satisfy their hunger.

In other words, just because a number of the speakers are justifiably and understandably using this conference as an opportunity to sell their template and plugin wares – it shouldn’t be to the exclusion of those in attendance whom are seeking help with all the other aspects that go along with establishing an effective web presence.

Meanwhile, if you’re headed into town, let me know. If you can’t make the event, keep in mind that there’s a “SitePoint Podcast coming to WordCamp Raleigh.”

Posted in Uncategorized

Fun with the Twitter Search API and jQuery

During my job search last year, I admitted that “yeah, I’m a bit of an API junkie.” Anyone whose followed this site since 2002 probably has gone blind once or twice reading posts about SOAP, XML-RPC, RSS feed and other such programmer protocols and interfaces.

So why should anyone be surprised that today I’m providing a quick how-to code snippet of some fun I’m having with the Twitter Search API, REST, jQuery and jSON?

YES, I know I need to get back into providing posts about content management,  effective social media strategies and web campaigns … but for today … please indulge me with one more trip into the land of code.

Some Context

In the process of writing some WordPress plugins leveraging the Facebook API, I thought “why not twitter?

However, there are already a multitude of plugins and widgets out there that’ll show my profile.  So I turned my eyes to Twitter Search.

My first thought was to simply write this all up using not much else but the jQuery.getJSON() method.  However, this approach doesn’t lend itself well to caching – which in turn would lead to some of you with busy sites getting your widgets blacklisted by Twitter as <a href=”http://apiwiki.twitter.com/Rate-limiting” title=”Twitter API Wiki – Rate Limiting”>their default rate limit</a> for calls to the REST API is 150 requests per hour.

So now I’m working on a PHP solution inspired in large part by Arron Jorbin’s post “More Twitter Shortcodes for WordPress.” Must read for anyone working with feeds or APIs in the WordPress arena.

Hey, so where’s the jQuery & jSON?

All that context aside, I did successfully write a short snippet that used jQuery to call the RESTFul Twitter Search API and then parses the jSON into a dynamic display.

I did this in part because while I will employ some form of PHP or  Perl to cache the Twitter Search, I still might employ jQuery as the rendering mechanism for said cache. Here’s my test code so far:

/* a counter outside the context of setCountdown() */
var seconds2go = 0;

* the method that sets the visual display of the countdown timer,
* and triggers getTweet after 2 minutes
var setCountdown = function() {
if(seconds2go > 0) {
$("#countdown").html("Seconds until the next refresh:’ +
‘ <span>" + seconds2go + "</span>");
} else {
$("#countdown").html("Seconds until the next refresh:’ +
‘ <span>0</span>");
seconds2go = 120;

* the method goes out to the Titter A.P.I,
* then parses the jSON block into the display
var getTweet = function() {

/* set everything up */
var url="http://search.twitter.com/search.json" +
var query = escape( query=$("#twittersearch").val() );
var display = ‘<div class="tweetDisplayContainer error">’ +
‘no records found</div>’;
var urirex = /(https?):\/\/+([\w\d:#@%\/;$()~_?\+-=\\\.&]*)/g;
var hashrex = /\#+([\w\d:#@%/;$()~_?\+-=\\\.&]*)/g;
var thashuri = "http://search.twitter.com/search?q=%23";

* A.J.A.X. happens here -> go get the data, then parse it
$("#twitterresults").html(‘<h4><a class="searchlink" href="’ +
url.replace(‘search\.json’,’search’)+query +
‘" title="see the search query via Twitter">Testing: ‘ +
url+query + ‘</a></h4>’);
if(json) {
display = ‘<div class="tweetsContainer">’ +
‘<dl class="tweets clearfix">’;
ttext = tweet.text.replace(urirex,
‘<a href="$1://$2" title="">$2</a>’);
ttext = ttext.replace(hashrex,
‘<a href="’ + thashuri + ‘$1" title="">#$1</a>’);
display += ‘<dt class="tweet’ + i + ‘">’ +
‘<img src="’ + tweet.profile_image_url + ‘" />’ +
‘</dt>’ +
‘<dd class="tweet’ + i + ‘">’ +
ttext + ‘ <strong>via:</strong>’ +
‘<a href="http://twitter.com/’ + tweet.from_user +
‘" title="tweets by ‘ + tweet.from_user +
‘">@’ + tweet.from_user + ‘</a>’
display += ‘</dl></div>’;


* this is where we kick-it all off,
* assumes seconds2go = 0 initially
setInterval(setCountdown, 1000);

As you can see, the most difficult part was getting it all to fit in a readable format on this blog! Well, that and some additional fun with regular expressions.

Well that and what you don’t see in the code are two html elements:

<h2 id="countdown">Seconds until the next refresh: <span>120</span></h2>

<input type="hidden" id="twittersearch" value="deanpeters #smm" />

<div id="twitterresults">no results yet</div>

Todo: I’m thinking the above script could use a bit of animation easing or some other effect so we don’t simply “flash” new results at the user. It also needs to be objectified and wrapped-up as a plugin. More on that as I work on the widget/plugin.

Demo Stuff

I did create a demo page – it’ s not pretty, but it effectively shows how to get it done. I’ll craft up some CSS for it later.

It’s basically built off a search of  deanpeters  #smm as pictured below:

twitter search criteria for jQuery test

I’ve also created a .txt version of the file if you’re interested.

Additional Reading

In the meantime, I though I’d list some of the sites I visited while approaching this exercise. Some good people providing some good examples:


Thanks for all the emails and retweets of late. Good stuff!

Posted in Uncategorized

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

Posted in Uncategorized

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 &amp;&amp; $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.

Posted in Uncategorized