Blogging and RSS


3/20/2011: 3:06 pm: Google App Engine, PhoneBlogger, Python, VoiceXML

In late 2002, I thought it would be cool to build an application that allowed you to blog by phone. Tools, libraries and hosted services were a bit more limited back then, but after a few months of learning, coding and debugging, I managed to release the first version of PhoneBlogger in January 2003. Along the way, I learned a lot about Python, VoiceXML, JavaScript, XML-RPC, audio encoding, shared web hosting and command line tools for Linux.

Fast forward nearly ten years and not only have the tools and libraries come a long way, but there are many more free or inexpensive hosted services that simplify building a tool/service like PhoneBlogger. Instead of hosting the application code on a shared hosting site, I can now build and deploy on Google App Engine. Though scalability is not an issue for my personal use of PhoneBlogger, if it were turned into a public service, App Engine would make scaling much simpler and more economical. App Engine also makes deployment a snap, though with a small amount of work, so would Fabric. For my PhoneBlogger rewrite, I decided to use App Engine.

In the original version of PhoneBlogger, I coded a bunch of static VoiceXML and JavaScript for managing the telephone interaction with a caller. At the time, three of the most prominent services for VoiceXML developers were Tellme (now owned by Microsoft), BeVocal (now owned by Nuance) and Voxeo (still independent). I had to write slightly different code for Tellme and BeVocal, but the differences weren’t that significant. I think it would have been pretty simple to port to Voxeo, as well. Improved support of VoiceXML 2 would now likely allow me to use the same code on each platform.

While VoiceXML is still a great option for building speech apps, a couple of new services bring you simple APIs for building speech or DTMF (touchtone) applications, at the cost of portability. This time around I’ve started with Twilio. I very quickly turned a Python/GAE example from the Twilio website into a DTMF app for tweeting by phone. Although speech recognition allows you to build much more complex and natural applications, many simple applications can be built quickly and easily with just support for pressing keys to provide input. PhoneBlogger falls into that category, for now.

One very convenient thing about Twilio is that I can use their platform to capture and host recordings in a format that is simple to play back in a web browser. If I were really concerned about longevity of the recordings I could easily retrieve them and store them elsewhere, but I’m okay with keeping them on Twilio servers for now. That’s an easy enhancement to add later. The biggest downside for tweeting the Twilio links is that the Twilio recording URLs are ginormous. Fortunately, the goo.gl URL shortener made quick work of that problem.

I’m also going to take a look at porting my code to Tropo, which is a service offered by Voxeo. Tropo is built on Voxeo’s Prophecy platform and offers speech recognition as an option.

I decided to begin the rewrite by first supporting tweeting by phone. Twitter offers a great API, which is made even simpler by libraries like Tweepy. I highly recommend first checking out the OAuth support in any library for Twitter you might consider using. OAuth can be a complex beast, but libraries like Tweepy make it almost trivial.

The original PhoneBlogger source code and a couple iterations of it are available on SourceForge. I wasn’t particularly interested in learning about CVS at the time, so I just uploaded tarballs of all the code. While SourceForge has improved a lot, I’ve become more of a fan of GitHub. Google Code, LaunchPad and BitBucket are also great options. I started using LaunchPad when working on a Java library for Gearman, but then set up a couple of repos on GitHub when I started working on Log4mongo-Java. I’m much happier with Git, Bazaar and Mercurial than Subversion and CVS (Caveman Versioning System). I’ve already started posting code for the new phoneblogger project on GitHub.

As of now, the new version of PhoneBlogger supports tweeting by phone. All the code is on GitHub, along with a README file with the basic steps to set it up for yourself. In an upcoming blog post I’ll walk through those steps in a little more detail.

8/31/2008: 7:53 pm: Blogging and RSS

Yesterday afternoon I went to check my RSS and Atom feeds at Bloglines, but it was no feeds for me. Just checked again and my list of feeds was still empty. But, that was in Firefox 3. All the feeds are showing in Safari. I disabled almost all my add-ons, but still no feed love.

Switching from the classic Bloglines UI to the beta of the new UI fixed the problem in Firefox. I should have switched over sooner. The new look is really nice.

I hadn’t exported my feed listing in ages. I just took care of that. Cloud computing is great, but OS X’s Time Machine won’t back up that stuff for me automatically. I need to create some cron jobs to connect to my various hosted services and export data like this. Hopefully, most of them have APIs to get at this stuff so I can more easily automate the logins.

3/26/2008: 11:31 am: Blogging and RSS, PhoneBlogger, Speech

I just read about a new site called Utterz that goes far beyond what I did with PhoneBlogger a little over four years ago. A couple of other voice blogging by phone sites have cropped up in the intervening years, but their feature sets were generally the same or only slightly better than what I had built into PhoneBlogger. Their main advantage was hosting the service for you, albeit at a cost to you. I wasn’t surprised when I read about most of them closing up shop.

At Utterz, however, voice blogging by phone is just one of the services they offer. They even offer dial-in numbers outside the US. And even better, it’s free.

One thing I’m concerned about from reading the FAQ is that it looks like they just use caller ID to determine who you are when you call in. Caller ID is easy to spoof, so it would be simple for me to post a voice recording to someone else’s Utter page. If they had configured connections to their blog, my post would even show up there.

Another downside is that it appears that the voice app is just a DTMF app. That really limits what they can do. For example, one of the features I keep planning to add to PhoneBlogger is to let you tag or categorize the voice post. With a speech app that would be very easy to do. Some of the blogging APIs let you retrieve a list of all the existing categories. It’s trivial to those into a grammar and prompt the caller to say one of them. Good luck specifying a category with a DTMF app (press 1 for LOLcats, press 2 for flying spaghetti monster, …, press 19 for fishsticks are go, …). Actually, you could do better by having the caller enter the first two digits from the phone keypad that map to the first two letters of the desired category. Unless the caller has a lot of popular categories starting with the same letter, the app would then have to present at worst a short disambiguation list. Still, a speech app would be much better, especially if you want to support adding multiple tags to a post.

1/27/2008: 4:35 pm: Blogging and RSS

broadcast user that they automatically friended to all existing user accounts. The broadcast user currently has “154830 fans”. Of course, some people may have already unfriended this account and, like with any free service, many users may have abandoned their accounts. Still, it is at least a pretty good estimate of total user accounts.

As of January 10, Twitter Facts estimated 750,000 public users, 850,000 total users, and 300,000 active users. I couldn’t find similar estimates for Jaiku. At least none with any data to back them up. I did keep finding links to a post on Ars Technica suggesting that many Jaiku users are moving to Twitter due to Google’s neglect of the service after buying it.

I’m puzzled by why Google keeps buying companies like Dodgeball and Jaiku, only to quickly neglect upkeep and enhancements on the services and watch users leave in droves. Maybe they just wanted the engineers for other projects and found buying the company to be the easiest way to get an entire engineering team? Even if that were true, they apparently aren’t doing well enough on retention, as I’ve read about many of the lead engineers at the acquired companies leaving soon after the acquisition. I’m sure they don’t enjoy seeing something they worked on long hours every day for many months dumped on the side of the road.

11/6/2005: 8:51 pm: Blogging and RSS, PhoneBlogger, Software, Speech, VoiceXML

I haven’t posted about PhoneBlogger in quite a while, but I’m thinking about updating and enhancing some of the code. A lot has happened in the audio/phone blogging world since I announced PhoneBlogger January 9, 2003, and posted the PhoneBlogger source code on SourceForge.

One new buzzword is mobcasting. The Wikipedia page on mobcasting quotes Andy Carvin as writing:

A quick example: imagine a large protest at a political convention. During the protest, police overstep their authority and begin abusing protesters, sometimes brutally. A few journalists are covering the event, but not live. For the protestors and civil rights activists caught in the mêlée, the police abuses clearly need to be documented and publicized as quickly as possible.

This is quite similar to the scenario I was thinking of nearly three years ago when I announced PhoneBlogger:

A journalist could use it from a payphone (good luck finding one, though) or with a basic cellphone to immediately publish to the web from the scene of an unexpected event in progress. It’s moblogging for the people, man.

Note the quaint reference to a payphone. My point was that you wouldn’t need a fancy phone. Of course, mobile phones have come a long way since I wrote that. Carvin’s example also includes the use of camera/videophones, rather then just audio.

My favorite part of the Wikipedia article, though, is near the end where it says:

Carvin is now exploring the creation of an open-source mobcasting tool that could be installed on a server to allow for community mobcasts via a local telephone call.

I’ve been thinking about the same thing, too. While it makes life simpler for me to host the application with a VoiceXML hosting provider like BeVocal, I do like the idea of having a more self-contained app. It’s going to be pretty complicated, though, to sort out everything I need with a free PBX like Asterisk or sipX, a free VoiceXML browser like OpenVXI, a free ASR engine like Sphinx, and a free TTS engine like Festival. Dealing with PSTN calls will also be a hassle. If I implemented this, I would probably just deal with SIP. That led me down the path of looking into building or finding a SIP softphone that could run on a mobile phone. There is a Java API, JAIN-SIP, for building a Java SIP user agent. The phone would ned only a J2ME runtime. What with all these acronyms and integration efforts, I think you can guess why I haven’t taken all of this on by myself, yet.

I’m glad to see that people like Andy are doing really interesting things with audio blogging. I built PhoneBlogger solely because I thought it would be fun to build. I never really ended up using it.

5/23/2005: 11:50 pm: Blogging and RSS

Sorry if anyone reading my blog through an RSS or Atom feed had problems with it during the last few weeks. I upgraded to WordPress 1.5.1 a couple of weeks ago. Everything seemed fine, but then I noticed about a week ago that I was no longer seeing my own syndication feeds in Bloglines. The sole reason I susbscribe to my feeds in Bloglines was to detect exactly this kind of problem, so I guess I should at least be happy about that. I guess.

So I upgraded to WordPress 1.5.1.1 a few days ago and that seemed to solve the problem. One of the bugs that was allegedly fixed involved syndication feeds. Who know if that was the problem, but I’m just glad everything seems back to normal, even though it isn’t.

4/17/2005: 1:38 am: Blogging and RSS

I just finished the basic part of the upgrade from WordPress 1.2.2 to 1.5. One new feature is themes. I may go through a couple different themes before I settle one, though I may also hack on Neuron, the theme I’m currently using, a bit. Overall, I like it, but there are a couple things missing from the old template I used to use. If I end up doing that, I’ll release all my code changes in accordance with the GPL, of course. Unfortunately, the old theme I was using, Silver is the New Black, doesn’t appear to have been ported from a template to a them, yet.

In the meantime, I need to port over all my anti-spam comment hacks, since they have worked so well for me. I’ve had no spam comments in the six months or so since I enabled them. Before that, I was getting about 100 spam comments a day.

As for WordPress 1.5, there’s a lot to like besides the new themes feature. The Dashboard tab is interesting, and the rest of the tabs are better organized. It looks like there is also a new feature for publishing standalone pages to your website, in addition to blog posts. That will make it easier for me to use WordPress to manage my entire site. More later when it’s not nearly 2 a.m.

2/9/2005: 12:53 am: Blogging and RSS

Trustic, the maker of the fantastic Bloglines service, has been acquired by AskJeeves. [Official press release] After trying out several different syndication feed readers, I settled on Bloglines many months (a year or more, even?) ago. While Bloglines offers much more than just a feed reader, I highly recommend Bloglines even if just for that.

The Bloglines news reader is great for me, since I read my news feeds from several different computers. By keeping tracking of everything through an online service, I don’t have to manually synchronize what I have or haven’t read. They also offer a lot of great tools for developers and blog owners, such as a button generator to make it easy for people to subscribe to your blog feed. While there’s no magic here, it saved me a couple of minutes, and every minute counts. The button below will subscribe you to the Atom feed for my blog:

Subscribe with Bloglines

And the next button subscribes you to the RSS2 version of my blog feed. Pick your poison, or neither.

Subscribe with Bloglines

1/20/2005: 1:03 am: Blogging and RSS, Software

Sam Ruby has already posted a simple patch to MoinMoin that implements Google’s proposal for a new link type for the rel attribute for the HTML anchor tag. The HTML specification supports the definition of new link types, as long as the author implements a profile. Google has proposed a “nofollow” link type, which will instruct the googlebot website crawler not to follow links with that link type.

The reason for the new link type is that spammers are taking wanton advantage of weblogs, wikis, and other types of websites that allow anyone to post text that either includes embedded HTML or is converted to HTML. While there is obviously some value to the spammers in spreading their message via simple text form (otherwise, why would they send out all those emails), the primary value is in creating inbound links to their porn, pharmacy, whatever sites. Search engines crawl the links on the blogs and wikis back to the spammers’s sites. Since many search engines, and especially Google’s, use the number of inbound links to assign a rank to a web page in relation to certain keywords, the spammers views weblogs and wikis as fertile ground for boosting their search engine rankings. Most people don’t go past the first couple of pages of search results, so it can make a huge difference for a spammer if they can make it to near the top of the search results for commonly searched on keywords.

I’ve held off on linking from this blog to information on my Wiki out of fear that spammers will find my wiki and attack it. Though applying Sam’s patch to my wiki certainly won’t dissuade a spammer’s robot from attacking it, at least they will get less value out of it. And that has to count for something.

Sam Ruby: Adding rel=”nofollow” to MoinMoin

1/7/2005: 12:06 am: Blogging and RSS

If it’s not one kind of spam, it’s another. A mouth breather recently figured out to spam WordPress-powered blogs via the trackback mechanism. The first spam trackback I got was a bunch of pseudo-random letters. The next ten or so were nasty porn spam. I had to temporarily rename the trackback script to stop the vermin.

If you don’t care about trackback, the easiest way to stop the spam is to delete wp-trackback.php or to rename it. Alternatively, you can moderate trackbacks using a hack posted at WordPress.org.

If I start getting a lot of moderation emails, though, I’m going to hack the scripts using the same technique that allows comments to work with a script file with a non-default name. So far, that technique has worked perfectly for me with respect to preventing spam comments.

Update: Perhaps I did something wrong, because trackbacks aren’t being moderated. So, I’ve reverted to disabling trackbacks all together. Of course, since I got 115 spam trackbacks in less than 24 hours, moderation wouldn’t have been a great solution, either.

Next Page »


Fork me on GitHub