Friday, October 30, 2009


Lately I've been thinking about all of the ways that Facebook fails to live up to its potential. It's an incredible concept and on that level it works well, but when it comes right down to it, Facebook fails as an example of a good application. How, you ask? Well, let me think:

  • Facebook is slow. I can't believe how often I sit there waiting on a page to load. There's a statistic for Web design: if it takes more than ten seconds for the page to load, people will give up and load a different page. I don't know if Facebook has hit that threshold yet, but they certainly do try my patience.
  • Facebook is accident-prone. I see error messages on Facebook almost every day. Ever see the cryptic and inexplicable "Profile Unavailable - Sorry, this profile is not available at the moment. Please try again shortly"? How about the even more cryptic "Database Write Failed - An error occurred while writing to our database. Please try again later or contact customer support"? And those are only two of what seems like a multitude of cryptic, unhelpful, and downright scary error messages that come up right in the users' faces. Users shouldn't see error messages consistently like we do on Facebook... the problems can, and should, be fixed. This is a BUSINESS site, for crying out loud. An error on my hobby site I do for free is one thing; somebody is presumably getting PAID to keep this stuff working. Even worse: sometimes users post something and it never shows up on the site at all. For no apparent reason. With no error message. They just never appear.
  • Facebook is hard to configure. There are some things about your profile that you can control, and other things that you can't. In the left-hand column, for example, there are certain things that you can add, using apps designed to do that. However, as far as I can tell, it's always GOT to be your profile picture on top, then "Information", then "Friends", and THEN whatever else you want on there. What if I want my Flickr pictures up under "Information"? Can't do it. And even things that you can configure sometimes have hidden gotchas. For example: ever notice that on your "Info" page you can list things like favorite TV shows, music, etc. and it will automatically create a link to other people with that same interest? Except if there happens to be a comma in whatever you put in there, in which case the links are all jacked up. Or if you put something like "The Beatles, Eric Clapton, & etc." in which case you will get a link to everyone else who also enjoys listening to "& etc."

    How about this: I've put in a bunch of email addresses that I use, so that if someone searches for my work email address they'll be able to find me, but really I only want people to contact me at my Gmail address. Can I "hide" the other addresses on my info page so people don't try to contact me at those? Apparently not. Same thing with my work history... I don't think anyone really wants to know everywhere I've worked since 1994, but I do want all of those people to be able to find me if they're looking.
  • Facebook is hard to use. There are still things that I know good and well I can do on Facebook but can't find them when I need them. Case in point: find someone on your "Home" page whose updates you can do without in your newsfeed. Hover your mouse cursor over one of their posts until you see the "Hide" link. Click "Hide" and all of their posts should disappear from your news feed.

    Now, un-hide them so they show up in your feed again. See if you can figure out how to do it without using Google. I couldn't!

    Here's another example: in the "Inbox" area where you can send private messages to people, you can actually send one "private" message with multiple recipients. Problem is, when any of those recipients replies "normally" to the message (the blue button at the bottom of the screen, which says "Reply All"), the reply goes to everyone on the original distribution list! It is possible to "branch" off the "original thread" and reply to only the sender. See if you can figure out how to do it. It's right there in front of you, if you're looking! But it's FAR from obvious.

    One more quick example: ever try to quit being a "fan" of something and remove it from your "Pages" list? Try it. I dare ya. It's easy to do... it's just impossible to figure out HOW to do it. An application has failed to be user-friendly if obvious tasks like this are hard to accomplish without a lot of concentration (and occasionally, a search engine).
  • Most apps are a menace. To use them you have to basically agree to let them read your mail, carry your checkbook in their purse when they go shopping, and take naked pictures of you as you sleep, but most of the apps have no need of the information they request. Even worse, some of the apps are what I would consider viral. I don't mind "verifying" that I was your classmate in school or that I'm your third cousin or whatever, but I don't want to give the "tru 2 ur skool" and "hiya, cuz!" apps permission to read all of my friends' names and check their medical records for evidence that they have embarrassing diseases. But apparently even to courteously say "yes, I went to school with Fred", I have to also become a user of whatever jacked-up Facebook app that Fred is trying out (and will ultimately decide that he doesn't even like). Plus, a good portion of the apps are just plain slow (which brings us full circle to my first point).
  • A new one since I posted this article on Facebook itself: major changes to the interface without any warning. Well, that's not entirely true; if you follow the Facebook blog you'll basically know what's going on. So, how about putting that blog on the login page, linking to it from the user's home page, SOMETHING like that? I didn't even think there was a Facebook blog until I Googled it. Did you? At any rate, major changes to the interface (like the one that happened last week) need to be announced in a way that users will know what's going on. The users don't like it... as evidenced groups called things like "bring back the old news feed" that pop up every time they roll out a new feed.
So why use Facebook at all? Because of the people. Since I've gotten on Facebook, I've reconnected with people I haven't seen since literally I was in my early teens. I've become re-acquainted with some of my dearest friends from other periods of my life, and in some cases, I've realized what it was that I liked so much about certain people in the first place. In some cases, I've found that I like people more now than I did when I knew them in a previous life! You guys who are reading this are the reason why I put up with all of Facebook's quirks. I'm having a great time (in between annoying error messages), and I hope you are too!

Tuesday, October 27, 2009

Friendster helped me spam my friends

So, I thought I would take a look at Friendster and see what it was all about. An account is free, right? I got logged in, but then realized that there's not too much you can do without... well, without friends who are also on Friendster. So I decided to load up my address book from Gmail and see who it found.

That was mistake #1.

Then since I don't like to give out my email password, I thought I'd export my contacts as a .csv file and import them into Friendster that way.

That was mistake #2.

Turns out that when you import a .csv file to Friendster, it apparently assumes that you want to send an invitation to everyone in that list. No veto. No "look them up and see if they're on Friendster and if not let them alone." No nothing. It just instantly emails everyone in the .csv file!

Now, I had cleaned it up a little before uploading, but there were still some people in there I would have rather left out... fortunately, for most of those people my contact information was old so those emails bounced anyway. For the others, I sent out an email explaining what had happened and telling them that I didn't mean to spam them with Friendster invites. "I don't even particularly intend to use it forever," I told them. "...Just wanted to get the flavor. The flavor of spamming my entire address book isn't particularly tasty!"

Lesson to learn: social networking sites don't always act like you think they will. Make sure you know what you're doing when you tell them who your friends are!

Friday, October 23, 2009

Moving Web Site = Not Fun

I've been having problems with 100 Megs Web Hosting for years. They've shut down housekeeping scripts that I set up on CRON jobs (and not told me they did it), they've shut down other scripts that they suspected of something, and finally last month they shut down my entire account. At that point I did two things: I pestered them until they turned the sites back on (which is basically the only way to get them to do anything), and then I did something I should have done years ago: opened a hosting account with

Quite some time ago I moved my domain purchasing to APlus from Go Daddy when Go Daddy started using sexually-charged advertising to grow its business. The reason I went with Go Daddy in the first place was because I knew the founder also created the Bible software I was using and loving at the time: QuickVerse. When the advertising started going the way it did, I realized that either the company had been sold, or the founder wasn't that big of a Christian in the first place. At any rate, I found APlus, and I was just about convinced to move my hosting there... and I would have, too, except for a few technical issues that were a problem. But, I figured, now was the time.

I hope I didn't jump too soon: APlus is spinning off their shared server hosting to a company called and forum posts seem to indicate that their customer service hasn't been the same quality as previously. My account wound up being one of the "not-upgraded-yet" accounts; I guess all of the hosting servers are being "upgraded" as part of the switchover, but I have yet to experience the new setup. I do know that the current setup is impressive, allowing the Webmaster to control a lot of things with the control panel that I had to do manually on my 100 Megs account. There are some things that are harder (such as accessing an external data source; because of their firewall setup you have to individually request them to open a port for each data source, by IP address!) but mostly things are easier, and there are multiple ways to get support (voice telephone, live chat, email).

I did want to document one thing. On my sites I like to let php parse my .html files; security by obscurity, although I don't particularly hide that I use php for my coding. php can be run either as a CGI or as an Apache module. On 100 Megs it was running as a module, btu on APlus they run it in CGI mode. It took me a day or two to get the syntax right in my .htaccess file. Here it is:
# CGI version
AddHandler x-httpd-php .html .htm .php
# Apache module version
#AddType application/x-httpd-php .html .htm .php

The hardest part, and something I ultimately had to find out from tech support because I didn't find it documented on the Web, was that the CGI syntax does not include "application/" on the name of the handler. Maybe this blog post will help somebody else out. Tech support recommended both the AddHandler and the AddType, but you should only need the one appropriate to the way php is running on your servers (although I don't imagine it would hurt to have both in place if you're nervous). I've commented out the AddType line with hash marks in my case.

Monday, October 19, 2009

Twitterfeed: The Sequel

Last week I posted a blog entry about Twitterfeed... but then just a few days later Twitterfeed itself got a makeover! The big change that immediately became obvious to me was that now Twitterfeed can post to Facebook in addition to Twitter. I've had my Twitter account and my Facebook account linked up so that my blog posts would show up on Facebook, but this allows me to decouple them and let the blog posts go separately to Facebook. I like the idea of the "description" going to Facebook and just the "title" going to the more character-restricted Twitter, but your tastes may vary.

Twitterfeed is also now reportedly supporting Pubsubhubbub, which is a technology which should allow feed posts to show up on Twitter/Facebook nearly instantaneously. When I tried it on the day that Twitterfeed posted the announcement about the new upgrades, it didn't seem to happen that way, but it should be come apparent over the next week or so whether that is working.

They have also added some Google Analytics integration; I don't actively monitor my Google Analytics, so I can't really comment too much on this.

Friday, October 16, 2009

Glo Bible - Cool Queries

A new piece of software launched this week, and I was so impressed with just what is shown in the demo videos that I blogged about it at one of my other blogs. I was especially blown away at the ease with which complex queries of the data can be constructed... take a look particularly at "Glo Demo Part 2 of 2", about 4 or 5 minutes in, where the answer to a complicated Bible question is figured out in mere minutes. Here's my blog post, which has the demo videos embedded in it.

Monday, October 12, 2009


If you follow my Twitter account, you'll notice that whenever I post to one of my blogs (there's a list of them on the right-hand side of this page) a tweet always shows up. I don't do this manually; I use a great service called Twitterfeed:

Twitterfeed is a simple service... you set it up with an RSS feed and with your Twitter account(s), and then when new information is added to the RSS feed, the link automatically gets posted to Twitter. I don't limit its use to my blogs, either... I use a service called to keep track of books I read and movies I watch, and it can output RSS feeds as well. So when I read a book, everyone following me on Twitter automatically knows it! That's just for fun... the best thing is that it helps me publicize my blogs without having to think too much about it.

Something else I like about Twitterfeed is that it allows you to create an account using OpenID. This is accomplished using a nice service called RPX which handles all of the confusing parts of implementing OpenID. If you click "Sign in with OpenID" you'll see this screen:

RPX-powered login screen
 Click the logo of one of the services on which you have an account, log into that service (if you are already logged in, as I usually am with my Gmail account, you're all done without having to log in again at all!), and your Twitterfeed account is ready to go! It couldn't be simpler. I'm planning on incorporating RPX into the redesign of my Guide to Petra Web site, coming up soon. As it is now, people have to go through a series of click-a-link-in-this-email steps to use the interactive portions of my site; this will work MUCH more smoothly!

You can set up multiple RSS feeds with one single Twitterfeed account, and you can actually post to multiple Twitter accounts as well. It also supports some services I hadn't heard of... laconica,, and HelloTxt are in the drop-down. I've tested it with more than one Twitter account, and it worked great. You "link" the account using OAuth (basically, you log into the Twitter account from Twitterfeed) and then you put in a "Feed Name" and the URL for the RSS feed. And then you're done! Of course, there are some great "Advanced Settings" you might want to look at:

Twitterfeed settings for this blog
My favorite things to change are the "Update Frequency" (I set it really long because my blogs seldom update more often then once a day) and the "Post Prefix" (which is added to the beginning of each tweet), but there are also some other settings you might want to look at... whether the tweet is the title from the feed, the description from the feed, or both, for example, or whether the "newness" of the posts is determined by pubDate or GUID (if you don't know what that is, try one and see if it works as you expect... if it does, you're good). You also have the option of using any one of a large batch of URL shorteners... I use (you can even give it your account information, if you like to use a account) but TinyURL is there, and SnipURL, and a couple dozen others.

Once you have some feeds set up, the feed dashboard (which shows a list of all of the feeds you are automatically sending to Twitter) provides some interesting information; link click-throughs are tracked and displayed as bar-graphs. If you use Feedburner, as I do, you can even set things up so that you know how many click-throughs came via the (or other service) link, and how many came directly through the Feedburner link. If you are thinking of using Twitterfeed for a business purpose, these kinds of metrics could be very informative.

The only time I've found the service to be anything but reliable was during a recent Twitter outage... but during the outage, Twitterfeed communicated status reports frequently through their own Twitter account. There was never a time during the outage that I felt like I didn't know what was going on with Twitterfeed. It truly is a set-it-and-forget-it situation; it just works, day-in, day-out. It's the glue that connects my social network friends with my blogs, and I've seen more comments than ever before on my blogs in the weeks since I started auto-tweeting my new posts. It's been a great help to me in getting my blog posts noticed!

Friday, October 2, 2009

Google Wave: What I'd Like To Use It For

This week there's been a lot of chatter about something called Google Wave. The reason the buzz ramped up this week is that Tuesday Google announced that they would be expanding their beta-testing to 100,000 more users (plus their friends and relatives, apparently, because each invite comes with more invites for buddies attached). Wave is not something that is easy to explain in a few words, although the concepts are not hard to understand. It's kind of like email, except with the immediacy of an instant message and the editability of an online document. I know, that doesn't seem to make sense, so you have a couple of options to get you up to speed for this post. You can go to and watch their eighty-minute video... but who in the heck in this Twitterized, cell-phone-infused world has eighty minutes to sit and watch a video online? Instead, I recommend that you take a look at this one. It's a lot of fun to watch, is quite a bit shorter than the ten minutes they mention at the beginning, and it'll help you wrap your head around the basics:

Back? OK, so that kind of explains it. If you're still having trouble or want some more detail, I thought this Lifehacker article was helpful. Go ahead, I'll wait for ya.


OK. So Google Wave is looking like the coolest thing to come down the pike in a long time. Basically, it's a platform that a bunch of other things can kind of piggyback on. Now, I've been reading some articles on how people envision that Wave might be helpful in what they do... businessmen, for example, or newspaper writers or even filmmakers. For myself, the first thing I thought of when I saw it was, "That looks MUCH nicer than Facebook!" Indeed, some have speculated as to whether Wave could eventually do in both Facebook and Twitter, and I agree that it may give them (or the bug-riddled Facebook, at least) a run for their money at some point (of course, if they're smart they may actually incorporate the Google Wave technology themselves and then it becomes a question of who has the cooler interface and the most users, but anyway). But the more I thought about the capabilities of this thing, the more my mind started going in another direction.

Where I work we've been on a quest to find an effective trouble-ticket system. Our business is almost completely centered around what we can do with our Web sites, and customized computer coding is what I do all day long. When something is wrong with one of our sites, we get an email or a phone call, or sometimes we get a "drive-by" request (those are pretty common when your office is on the way to the bathroom for a lot of people!). Once upon a time we hired a contractor to build a trouble-ticketing system for us. It worked OK, and it was integrated with our internal systems, but there were still some things about it that were inflexible and caused problems. To a computer programmer, writing a ticketing system (someone logs a problem into the system, it is classified and prioritized, someone works on it and solves the problem, the ticket is closed, end of story) seems like a deceptively simple task, but things get complicated VERY quickly. Who can see the ticket I'm working on? The person who submitted it? What if they called it in on the phone and someone else keyed it in? Can they see my comments? I need to add a comment that is critical for developers but which might be confusing for end-users. What do I do with the screen shot the user emailed to me? What about this pdf they sent in as an example? Trust me, it gets crazy quick. So we abandoned the home-grown system and began shopping.

First we tried out a system called Trac which our I.T. director had used at a previous job. Trac is a combination wiki/ticketing system, and there are some things it does incredibly well... automatically linking text in the format "#123" to trouble ticket #123, for example. We ran into problems, though, when we tried to figure out ways for our customers to see the status of their tickets. There's just no obvious way to show part of what's in the system; it's pretty much an all-or-nothing proposition. So the I.T. director went shopping elsewhere.

Enter Jira. Besides the fact that the name makes me want to say "Gojira! Gojira!", the software is able to do all of the things we need it to... there is a flexible permissions system that allows you to show things to only the people who need to see them, but there are other great bells and whistles (like pasting in a screen shot directly from your Windows clipboard... how cool is THAT?) that impressed us so much that we are likely going to adopt it as our new ticketing system very soon. (It is a commercial product, by the way, but I am receiving no compensation for mentioning them.)

But just for a second, let's think about how Google Wave could be used as a trouble ticketing system. The hypothetical Wave-based ticketing system need not reside on Google's servers; the platform will be open-sourced, so the ticketing service could be a private machine owned by the company using it, or it could even be on a third-party hosting provider. Each new ticket would be a wave (when "wave" is lower-case, it means a particular "message thread" or "document", as opposed to the upper-case "Wave" referring to Google's product as a whole). When a ticket is opened by internal personnel, all of the stakeholders could easily be added to the wave; if the ticket comes from an external source, when the staff became aware of it they could add stakeholders to the wave themselves. As progress is made on the ticket, technicians could update the wave, and even add questions for the client; the client could modify or add information as necessary. I was particularly intrigued when I visited the Wave extensions page and saw the Ribbit extension. Assuming enough storage space is available to store them, the wave could conceivably hold the entire contents of a conference call, recorded for reference back if needed! Tickets could also be submitted via telephone and immediately and automatically added to the appropriate waves. Those audio tickets would be exactly what the client requested, with no intentional or unintentional translating done during data entry. The phone call IS the request.

The possibility of adding robust phone call/teleconference recording capabilities to the wave would be what would make it a killer app for trouble ticketing. One of the most frustrating problems we have with some of the people that we do work for is that a request is placed via telephone and either misunderstood or forgotten, and then it winds up never getting taken care of properly (or messed up, which may or may not be worse!) To be able to go back and follow every part of the ticket wave through its complete development, to have that granularity on the project, would be invaluable. It would be like the difference of getting where you want to go via horse cart, automobile, or jet plane.

Why oh why couldn't I have been one of those first 100,000 to request access? :)