DailyManna 1.0 using XML::Simple

Tired of screen-scraping your Daily Verse? Can’t wait to use XML instead? Well wait no longer as the good folks over at the International Bible Society recently began rendering their Daily Manna in a yummy variety of XML formats.

Unfortunately, they tried fitting a square peg into a round whole by delivering the goods using dated RSS 0.91 specification. I say unfortunately, because they were compelled to shove the link for the audio version of the daily verse into the /Channel/Description element, which in effect is adding an inner node. This means you get some unexpected results when using RSS parsing tools such as XML::RSS, as this inner node displays as Hash(0x12356) after the verse. In short, they’re offering an XML feed that doesn’t validate..

To get around this problem, I employed XML::Simple”>XML::Simple instead. Then I created the class ‘DailyManna‘ which parses the incoming rss stream into an easy to access and use object. Along the way, I customized some of the titles and the passage to fit my situation. Meaning, even though the IBS is now using RSS, they’re really not using it in a way that’s entirely friendly to those of us who want to control how the data looks and feels. Likewise, they fail to take advantage of the ability to list not only the current day’s verse, but those from the past week.

Over the weekend, I’m going to toy with creating an example of what I would prefer the IBS use, either via the RSS 2.0 and/or Atom. Please no RSS religious wars, though I would be interested in what you guys have to offer (i.e. examples) either way.

Until then, here is code to slice-n-dice the XML feed to your needs:

usage notes:

  1. Using your favorite editor, copy and paste the above code.
  2. Make sure you have installed LWP::Simple, XML::Simple and HTTP::Date
  3. chmod 755 DailyManna.pl (set permission)
  4. create an empty output file such as ‘DailyManna.pl’
  5. set the permissions of the target output file to 766 or 777
  6. run the script once from the shell – test for errors
  7. crontab to taste e.g.: crontab -e 0 2 * * * perl /path/DailyManna.pl>dailyManna.inc.php
  8. include the verse file in your documents
  9. edit your .css documents to accomodate the <div> containing the reference

Two requests.

  1. Leave comments if you’ve got improvements, and;
  2. please, give me time to make this a MovableType plug-in. I have plans of doing this, but I want to test the application, and get your opinions before I create the plug-in.
Posted in Uncategorized

Dedicated Server Security Tips for Newbies

This post is dedicated to all of you running your church’s website in the choir robe closet, or who have been graced with a generous and geeky member who has taken advantage of one of those cheap, unmanaged dedicated server deals advertised at places like WebHostingTalk:

Richy’s Random Ramblings: Techy: Handy Security Tips.

As the author plainly states, “This list is not comprehensive, nor does [he] take any responsibility for any harm that may come to your server if you use any of these commands.” That said, I found this a very good “quick reference” for those of you thinking about running or leasing your own Linux/Apache server.

Along with the tips found on Richy’s site, here are some other things to worry about, each with a link to some other helpful “Security for Newbies” type page:

Now if this hasn’t scared you out of running your own server in the basement of your church or charity (and I’m hoping it does), then may suggest, no … I COMMAND YOU to go buy and then read “Hacking Linux Exposed” before you take the dive.

How ’bout some of you other pros out there. I’m sure I’ve missed something. Leave a comment, add to the list.

Posted in Uncategorized

Mount Vernon Methodist Church, Danville, Virginia

I thought I’d share the following email with you:

Hey, I know I’ve got a nerve asking, but nothing ventured . . . Would you take a look at the Web site I created for my church and tell me what you think of it (e.g., not too bad; dreadful)? It’s my first Web site! I’m not a developer or even a techie . . .


. . . I just looked at yours, for Redland Baptist, and was encouraged: it seems to do what I’m trying to do, which is to get info quickly and clearly and concisely and appealingly to people who are seeking a church, along with some useful stuff for members, too — without a lot of bells and whistles (which I wouldn’t know how to do anyway).

Wow, all I can say is that I wish my first attempt at a church website looked so good. Obviously, the webmaster here obviously “gets it;” deliver compelling content that’s easy to find and easy to read. Bravo!

That said, there are of course some things I would do to improve the search engine friendliness, marketability, usability and download speeds. The last being first, lets start with the bandwidth issues.

Strip away the images, and this site is lightening fast. So the trick here is to put the images on a diet. My suggestion would be to use an image optimization application such as IrfanView. Using the aforementioned freeware application on the image of the church on the frontpage, I was able to get the size down from 62kb to 10kb, and “saved [it] as” a progressive .jpg. What this means is an image loads A LOT faster and friendlier, especially for dial-up users.

This needs to be done for ALL the images on the website. For more information on what and why, please read my article “What does it mean to Color Reduce.

Next, while the fonts of the banner along the top make the name look nice, they don’t make it easy for a search engine to find. Plus, that’s another 20kb you can eliminate. Just keep in mind, don’t attempt to use such a stylized font for the text version. I would however keep the Methodist Flame logo to the upper left corner. Oh, and nice job making it clickable to the home page. That’s one even I miss sometimes.

If you opt to keep the banner, please, please, please, make sure you use the TITLE argument for the <a> and the ALTernate text for the <img> tags. In fact, this needs to be done for all the images and hyperlinks on the page. Search engines and people who don’t use image capable browsers, or have images turned-off cannot see what these blocks represent.

Another thing I would do to help the navigation and searchability, add a simple text menu to the bottom. I like how each of the sub-pages has a link back “home” at the bottom, but not everyone wants to go back to the beginning to go somewhere else on the site. I’d use the same font and style as the “home” link at the bottom of the page. I’d also add a copyright statement and contact information. These are very important when someone prints out stuff like your Directions Page.

Speaking of the Directions Page, I’d also make sure there was text on the page that contained the address, some general directions, the hours of operation, and the phone number. This would be a big help with people driving to your church using a hard-copy of the page. I might also add a link to Yahoo Maps or MapQuest on the directions page so people could find their own point-to-point driving directions. You might also want to go into more detail about local parking regulations if parking is a problem. Nothing spoils a great first-time church experience like walking out to a $25 fine.

Speaking of sub-pages, change the <title> tags on each of the sub-pages to reflect the menu choice used to get there.

Speaking of menu choices, they’re driving me a bit batty. For example, when I click on the “Contacts Information,” the link for Contact Information goes away. I can understand why, but this makes the left menu bar “jump” and “change” and can confuse users, especially older ones. Instead, leave the menu choices up, just don’t hyperlink the menu choice for it’s associated subpage.

Speaking of contacts, please, please, please obfuscate all of the email addresses on your contacts page or expect serious spammage. Feel free to use the Mean Dean Anti-Spam Email Obfuscator to generate them. I won’t mind.

Speaking of hyperlinks, I strongly suggest using standard conventions. Visit the “Missions Page” for an example:

For more information about Danville-Pittsylvania Habitat for Humanity, visit the Web site, at:
http://www.habitat.org/script/link.asp?url=www%2Edanville habitat%2Ehomestead %2Ecom.

Should become:

For more information about Danville-Pittsylvania Habitat for Humanity, visit their Web site or call them at (434) 793-3630.

In other words, use meaningful hyperlink anchor text. Most users get it, it improves the flow, improves the searchability and reduces eyestrain and confusion. I’d also check the Habitat for Humanity hyperlink … the site appears dead.

All this said, this is a very good start. Notice most of my pointers fall under the category of “tweaking.” What would I fix first? The images.

As for what I would do after the ‘tweaking,’ develop a long term plan for maintenance, for adding a calendar, for adding a search engine and adding sermons and or Bible studies to the site. These can be a pain to deploy, but they’re also what people seek when they’re shopping about for a church.

How about the rest of you old pros? Not bad for a first site. Any other quick tips and tweaks you can see and offer?

Posted in Uncategorized

The Advantage of Logging Search Queries

Back in June, when I laid healing hands on the Redland Baptist web site, I used MovableType because it could be easily customized to work like a Content Management System, yet still retain its blogging capabilities. I did this because I wanted a system where I didn’t have to go through a bunch of flaming hoops whenever someone in the church office needed to post something. What I didn’t realize until this past weekend was that this also gave me the ability to track internal search queries.

What I mean by internal search queries are those keywords and phrased individuals input using the search form that is plastered onto the left menu column of the RBC website. MovableType logs each search in a MySQL table, which means I can use a simple SQL query to find out what people are looking for once they get to our website.

For those of you not afraid of shooting your foot clean off, here it is:

SELECT count(*), log_message FROM `mt_log`
WHERE log_message regexp ‘^Search’ group by log_message
ORDER by 1 DESC LIMIT 0, 200

Why is this important? Well, if you’re interested in attracting “seekers” and serving “members” then it might be helpful to give them what they’re looking for. Remember, as Vincent Flanders puts it, “Don’t confuse web design with sex.” In other words, take a cue from Jakob Neilsen and the good folks at Pew Research, users are purpose driven. Solve their problems, meet their needs, or in this particular case, answer their questions.

So if you see several queries for “Vacation Bible School” then make sure you site has something they’ll find.

What about you? Is your site equipped to track internal searches? Does your church website site even have an internal search engine? If not, why not? … More on that topic next week.

Posted in Uncategorized

Windows Server 2003 tutorial website

Don’t run a web server out of your church basement. At least that’s the advice I offer to most individuals because there’s already enough to do with defining, presenting and managing content for your church and/or charity website. The last thing you need is the headache of understanding, securing and maintaining a server and operating system; trust me.

That said, I’m running Red Hat Linux at home on one PC, and Sokkit on another Windows-based machine because I like the convenience of programming locally and because experience as taught me to protect (at all costs) my production system from untested code; whether its something I’ve written, or downloaded from some place like SourceForge.net.

For example, the majority my site redesign was performed off-line on my Windows-based machine using a combination of Sokkit and TopStyle. This way I could toy with and recompile MovableType templates without causing you the reader and interruption in service. Similarly, I used Sokkit to locally convert a large phpBB database to vBulletin because it required half-a-gig in temporary files along with every byte of RAM on my machine to port the database in about four hours.

But you may not be in a situation where you have the luxury of a second machine to run a Linux-based server and/or purchase software to run Apache on your Win32 o/s. All you have is a Windows XP Professional and the Windows 2003 Server with no money left over to port your precious ASP over to ASP.Net.

Not a problem.

Believe it or not, you too can install enough Perl, PHP and/or legacy ASP on your Windows 2003 Server. How, you ask? By first paying a visit to the Windows Server 2003 Tutorials, Visual and Step-by-Step website.

Included on this site are a variety of helpful step-by-step guides, screen-shots included, so you can do things like install Perl, enable ASP support and/or set-up SSL. This way you can test everything thoroughly at home or in the back-office of your church. Then you can deploy your changes to either your Windows or Apache based production server.

Once again, a hat tip to Deane over at Gadgetopia for the link.

Posted in Uncategorized

What is the airspeed of an unladen swallow?

Okay, I’ll admit it, I’ve always loved Monty Python. I recall back in the early 70’s my brothers and I sitting in the basement snickering as the local PBS station would air the hilarious ‘Flying Circus.’ What was equally amusing was the time my father came down stairs to see what all the laughter was about, watched a show with us for about five minutes, then left shaking his head and wondering what all the cackling was about.

Then came the movie, Monty Python and the Holy Grail. Oh my stinking goodness. There are of course several scenes I can quote from memory. One being that hilarious scene at the troll bridge where King Arthur turns the tables on the evil bridge keeper when the King of the Brits responds to the question “What … is the airspeed of an unladen swallow?” with “African or European?” The demise of the old troll is made all the more hilarious as just prior to this, Galahad is tossed into the abyss under the expanse when he’s unable to correctly answer the keeper’s question “What is your favorite color?

We all think this is funny because it’s so absurdly silly. I mean, this could never happen in real life, or could it? Imagine a situation where instead of having cheerful greeters meet you on Sunday morning, the doors of the church are guarded by deacons who will not let you pass until you answer four obvious questions. Pretty absurd and silly isn’t it?

Yet that is exactly what we have happening at the website for Joyce Meyer Ministries. Here the user is confronted splash page that contains 31kb of images, 24kb of HTML and 21kb of JavaScript that requires you enter your settings/preferences before moving on to the rest of the site.

Aside from abusing the bandwidth of dial-up users, this page will not index well with search engines because the indescript text is rendered as graphic … and a background graphic at that. Yes, it has meta-tags, but just as faith without works is dead, so too are meta-tags without related text in the body of the page.

So how would I heal this para-church website? First, I’d consider whether or not using Flash buys me anything. For example, if I’ve got a clip of an interview, an interactive tutorial, or something else that can’t be simply rendered as easy to read and search text, then I would use Flash’s Auto Detection features to determine whether or not the user’s browser is equipped with the Macromedia plug-in.

And while there are tools to determine the country of origin of the user, it may not necessary in this case. Instead, because the Spanish and English versions are different, why not buy a couple of international domains, such as joycemeyer.es and perhaps joycemayer.mx? This way, those visiting .org go to the English page, those using .es and .mx go to the page en Español. Both pages offer a way of getting to the other.

With these technical issues aside, I would then kill-off the splash page. Offering user settings is not a bad thing, but its not compelling homepage content. Instead, just go to the page default ministries page that includes lots of text about offers, upcoming events and such so first time visitors know what the site offers, and search engines can better index the content.

That and I’d fix some of the broken image problems by using mod_rewrite to automagically redirect references from litw.org to joycemeyer.org. Well, that and the entire ‘kitschy‘ TBN look-n-feel issue, but then again, I’m an Os Guinness type-o-guy.

Posted in Uncategorized

The Perfect 404

Fatigue, typing too fast, dyslexia, crumbs in the keyboard and bad handwriting are just some of the causes that come to mind that might put your users on the wrong end of a 404 page. I’ve even known a case or two where a typo or programming error on my part has caused a user to bump up against the often ubiquitous “This page cannot be found” error.

In other words, mistakes happen, so anticipate them and give your users a graceful way of recovering from them.

At least that’s what I’m preaching … and will practice once I get back in town on my beefy DSL line at home. Until then, I’d like to direct your attention to a thorough article on the topic by the good people at A List Apart entitled “The Perfect 404” (hat tip to Gadetopia)

There they explain how and why it is important to not make your users feel like idiots. They also go onto explain some things you can do to help keep your users from wandering in the wilderness. Some of these points include:

  • A link to the site map (if you have one) and the home page.
  • A search box
  • A distinctly minimalist look

Along with these excellent suggestions, I’d suggest showing the users what page they actually typed in. If it’s a typo, they’ll see it and correct it. If it isn’t, then provide them a means of forwarding that information to your church or charity’s webmaster.

Why bother? Because users can get frustrated and leave when they don’t find what they want when they want it. Offering them some grace, along with a graceful recovery will go a long way to inviting and encouraging them to stay.

Posted in Uncategorized

Content is King

“Content is King.” I remember the first time I read those words. They were boldly eblazed across from a picture of Vincent Flanders and Mike Willis doing their best Elvis impersonations.

Between the sequins and silliness was a serious message: the majority of the people who use the Internet are purpose driven. That is, they aren’t generally looking to be entertained or wowed. Instead, study after study shows they have problems, questions, needs and/or desires that hopefully your site … or at least the persons and institution represented by the site … meet.

Of course, to you regular readers, this is nothing new. So I as a bit taken-aback when I received the following comment:

FWIW, I think that the reader is king, not the content. Jesus adjusted what he said and how he said it based on the reader and so should the web writer.

How do I put this in a manner that is “teaches” and “encourages? Perhaps the “pulling the bandaid off fast” approach would be the best in this case … so here goes:

While Jesus demonstrated an amazing ability to alter HOW He delivered His message … Jesus NEVER changed WHAT He was saying … ever.

17 “Do not think that I have come to abolish the Law or the Prophets; I have not come to abolish them but to fulfill them. 18 For truly, I say to you, until heaven and earth pass away, not an iota, not a dot, will pass from the Law until all is accomplished. 19 Therefore whoever relaxes one of the least of these commandments and teaches others to do the same will be called least in the kingdom of heaven, but whoever does them and teaches them will be called great in the kingdom of heaven. – Matthew 5:17-19

Theology aside, I wrote back the person who left this comment that I believe we are actually in ‘violent agreement.’ That is, the reader is indeed king, and as I stated above, our content should always seek to serve them, a point I’ve made several times in several articles that I thought might be fun to revisit:

Posted in Uncategorized

Seven deadly sins of web writing

Not that we don’t have enough on our plate with planning, developing, implementing and maintaining our church websites, but we also need to take care that our content doesn’t make us sound like a bunch of know-nothing hicks. Think about it, if an individual is using the Internet to check out your church before they visit, then there’s a good bet they’re probably looking for something a bit more substantive than rambling pages of all bold, all red, all centered, flashing text screaming at you that the end is near.

Which is why I’d like to bring to your attention a useful little article entitled the ‘Seven deadly sins of web writing‘ by Gerry McGovern; who writes:

What’s the single most important thing that could improve the Web? It’s not broadband. It’s better writing. The general quality of writing on the Web is poor. The way you write has a major impact on what people think of you. Avoid these common mistakes and you will achieve more with your website.

Can I hear an amen?

As I’ve done with other such lists, here are some of the bullet points from the article, followed with my own explanation of how to avoid this on your church or charity website:

  1. I think I’m God. All too often I see church websites where the content is either all about the pastor or worse, is polluted with useless ‘geekery‘ that is between the lines, showing-off. The solution to this is to make sure you stay servant hearted. That is, all content is to convey the purpose and personality of your organization in a way that builds-up, provides solutions and/or solves problems for visitors.
  2. I go on and on and on …Say it don’t spray it.‘ Keep your home pages brief. Put your best content above the fold. If your page requires more than one or two taps on the Page-Down key, then you need to divide and conquer your content. If your tome covers several topics, then you need to create sub-categories with each topic getting it’s own page. If you have a long article or sermon, then it should also get it’s own page. If you want to include some content from a recent sermon on another page, offer an abstract with a [read more] link to the whole shebang.
  3. I can’t spell and I’ve awful grammar. We’ve all sin links to web pages that display embrarassing ‘signs and blunders‘ found in various church newsletters and bulletins. I’ve found the best trick here is to find someone in the chruch who does have good spelling and grammar, then set up a system with them by which they can proof read pending posts and/or report ugly errors.
  4. I’m locked in a print view of the world. Remember, people don’t read web pages, they scan them. Likewise, not everyone uses the same browser and/or screen resolution. Neither do they have all the same fonts nor may they perceive color as you do. The best solution I’ve found is making sure the page layout is liquid, and the color/font scheme basic.
  5. I’m not very good at writing headings. If you want people to visit your site via a search engine, then make sure that what you have between the <title> tags, along with the first twenty words of your text is compelling, gripping, riveting. If you can’t make that happen, find someone who can.
  6. Actually, I don’t think content is very important. Father Flanders is continually preaching that ‘Content is King.’ Jakob Nielsen offers boatloads of data crying out the case for content. And from what I gather from the over 20,000 unique page reads over at the sermon’s sub-site at RBC, and the outcries from visitors when the sermons aren’t updated, content is everything.
  7. Don’t have seven points if there are only six … Hah, hah, very funny.

How about you? Do you find the writing at most church websites compelling or crappy? Leave a comment and let me know.

Posted in Uncategorized

StudyShare.net’s proposed Daily Verse XML specification

Let’s face it, my VerseScrape application sucks. Not because it’s bad code but because it’s still screen scraping in a day an age of XML and content syndication.

I know what you’re thinking: “Huh, what? Uh, Dean, you wanna come back with that in English?

For those of you who don’t speak ancient geek, what this means is that putting a daily verse on your website is a real pain because too many providers of this content are still using technologies that date back to 1999, which is a long time in both computer and dog years.

This is why I wrote “An Open Letter to Christian Media Outlets” almost 1 and one half years ago. And this is why I’ve been so pleased with the response from some of the responses, like that of the publishers of the ESV Bible.

Still, we have a long way to go. Not all publishers have seen the light. In part there is a fear that they’ll lose business or that they’re not going to be able to “brand” as effectively. Hey, I got news for you hold-outs, “those who wish to save their lives are going to lose them,.” In other words, this is going to happen to you anyway as more and more content providers beat your organization to the syndication punch.

The other reason for not getting with the program is not knowing just how to provide daily, syndicated Scripture. For that, may I suggest StudyShare.net’s Dailyverse XML specification, a proposed standard which describes itself in the following way:

Many Christians run websites for their church or personal interests. In our quest for _good_ content, we have turned to the source of the best content, the Bible. Now, it’s a great thing to put up a daily bible verse and be updating your content daily – it takes work. However, there is an easier way to get compelling content: syndication. Many organizations and individuals provide a verse (or verses) each day. Until now, there has not been (to my knowledge), a standard format for distributing this wonderful information. Some have used javascript via http, others smtp (email), and yet others use plain text via http or even ftp. The dailyverse standard is an xml-based standard for the syndication of periodical bible verses.

Okay, now a call to my brothers and sisters who do speak pure geek. Give this standard the once-over. Offer suggestions. Point out examples to similar standards if they exist. Basically, share your wealth of knowledge.

In the meantime, I’m going to see what I can do to write a bit of Perl to parse this standard.

Posted in Uncategorized