Mr Blog... Mr Blog... Log on to Mr Blog... Blogging website.

"The blog is named in honor of a TV ad jingle for a certain Chinese fast-food chain here in the San Francisco Bay area, particularly well-known in the Silicon Valley. It was also originally meant as a good-natured jab at the blog craze at the turn of the 21st century and an ironic exaggeration of the ego-centric blog names common at the time."
RSS Subscribe to RSS

Google App Engine teases, but ultimately doesn’t deliver

This blog should perhaps have been named “My Rants” – but I guess that could be said of most blogs.

In case it’s not obvious yet, this is officially a rant.  But I will try to keep it short, an “Executive Summary” rant, if you will. In fact, that’s all I have energy for anyway.

Sling a stale slice of pizza, and you’re sure to hit a slew of twenty-somethings that will tell you what a “super cool” language Python is and what an “awesome” platform Google App Engine is. Perhaps they’re right.

I won’t go into the Python language here. I will, however, simply quote from the unpublished rants of a well-known and well-respected author I was recently re-reading:

I think they should have just named the language “Underscore”.. and the source files could have a “._” extension.

However, Python is not the worst of GAE’s problems, not by a long shot. In the name of executive summary brevity, I’ll jump right in.

  1. “GQL” and the Datastore – I don’t know who Google is trying to kid here by hinting that the “datastore” is somehow like “SQL”. God help you, if you fall into that trap. It must drive any real RDBMS expert mad.
  2. urlfetch – only works on port 80 or 443 and times out after a few seconds.
  3. mail.send() – can’t send to more than a few addresses at a time, whether invoked once for all recipients, or using multiple invokations.

All the above should be prefaced in the GAE documentation, in huge red letters: DO NOT EXPECT THIS TO WORK because they don’t, at least not in practice to do anything real.

In theory, Google says a request can run for up to 10 seconds. In practice, it never will because it will hit quotas before that, or it will fail because of urlfetch timing out if it makes calls to web services (like Twitter API, Facebook API, or whatever) on the back end.

Without this basic functionality, there isn’t much a GAE app can actually do, especially if it gets popular.  Without these functions, your app can’t connect to anything. It’s like a computer without the Internet – not very useful. And the worst of it is, you don’t find out they don’t work, until you get to the point of trying to actually use them, which means you’ve already put in all the effort to learn the platform and write code for it.  I say, for now at least, don’t waste you’re time, unless you are really bored and like punishment.

If your app is small enough, and doesn’t do much more than generate slightly dynamic content using templates, it might work on GAE.  Otherwise, stick to a real platform. Paraphrasing the words of a co-developer:

I think we’re at an inflection point:  forge ahead with GAE culture, or spend that time scaling and fortifying the app somewhere else.  I mean, if our app really takes off, we are unequivocally screwed on GAE; run over by a truck.

Google App Engine has promise, if they can resolve these issues (and a number of others I’m leaving out). It comes down to whether Google will get serious or not and that’s not their style or history, so we’ll see. This cannot be just another “G” self-service, zero-support platform, if they ever want to support real companies deploying real applications and services.

At the end of the day, Google teases, one might even go so far as to say tricks us, into believing they are providing a platform of substance and merit, only to disappoint those of us who took them at their word.

See Also: Aral Balkan – Why Google App Engine is broken and what Google must do to fix it.


Posted on : Jan 30 2009
Tags: , ,
Posted under software development |

Taglets Feeder WP plugin now available on WordPress.org

Download and installation of the Taglets Feeder WordPress plugin should now be automatic via WordPress.org: http://wordpress.org/extend/plugins/taglets-feeder/

Within your blog, go to url: /wp-admin/plugin-install.php?tab=plugin-information&plugin=taglets-feeder

The plugin automatically promotes your blog via Taglets.org every time you publish a new blog entry.


Posted on : Jan 26 2009
Tags: ,
Posted under taglets |

Taglets.org API examples and sample code

Taglets.org is founded on the idea that no matter how brilliant you and your coworkers are (or think you are), there are always going to be smarter people outside of your company. That’s why it’s an API and platform first, so that people smarter than we are can exploit the platform in ways we would never think of. Originally, we weren’t even going to build a user-interface at all, but then we decided we needed something to demonstrate the platform and as a quick-start for non-developer end-users, and thus, we built the www.taglets.org website.

However, the platform and API are still the focus. Twitter, Friendfeed, Facebook, and even the iPhone, have all demonstrated that an API is a powerful way to facilitate prototyping and innovation.  The openness of the Internet itself is perhaps the world’s most successful example.

It is with that in mind, that we have been working to provide some tools to jump-start development with the Taglets API.

Taglets API for Java Developers

Mark has released an open-source package that makes it easy for Java developers to use the Taglets API. It works with the Groovy scripting language. Download it here: http://code.google.com/p/tagletsapi/

PHP POST Outlet Example

Mark also built a very simple PHP script that demonstrates how to write an HTTP POST Taglets outlet script. In the settings for a tag, there is an option called HTTP:

taglets_tagset

In the data entry field, you put the url of a script on your web site, such as http://myserver.com/myscript.php. When a comment is posted to that tag, the Taglets.org platform will invoke that script using HTTP POST with the tag name and comment as parameters (as though a user had typed them into a form and clicked ‘Submit’). The example shows how a script can capture the tag comments to store them, and later display them to users. Most importantly, it shows how to write a script that interfaces to the Taglets platform as a HTTP POST outlet. Get the PHP code here.

Taglets.org WordPress Plugin

We’ve also put together a simple WordPress plugin called Taglets Feeder that will send comments to tags when you publish a blog post.  As every WP user knows, when creating a blog post, you can specify tags associated with the post, as shown below:

wp_addtags

For each tag specified (“taglets” and “wordpress” in the above screenshot), when you publish the post, the Taglets Feeder plugin will send a comment on that tag to Taglets.org that looks like: “[post title] [short url]”

Everyone (and every “thing”) following those tags at Taglets.org will receive the comment via the “outlets” they have specified, email, twitter, or HTTP POST.

In addition, the plugin has a setting for a “fixed tag” as shown below:

taglets-feeder-settings

This “fixed tag” setting causes the plugin to send a comment to that specified tag, in addition to the tags specified with the blog post. This can be used, for instance, to always send a comment to a tag named for your blog (e.g. “mrblog”), whenever you publish a new blog post.

Of course the plugin includes the PHP source code and is released under the GPL to use as a base for anyone wishing to expand on it.

Get the plugin from WordPress.org:  http://wordpress.org/extend/plugins/taglets-feeder/ or type following directly on your WP blog: /wp-admin/plugin-install.php?tab=plugin-information&plugin=taglets-feeder


Posted on : Jan 22 2009
Tags: ,
Posted under software development, taglets, twitter |

Looks like Scoble is winning the Tagets game so far

Stuart suggested a little game of “tag” using Taglets.org

So let’s start this game. I’ve created a couple of tags. I’ve kept them simple. “Winer” and “Scoble”

Scoble appears to be winning, so far:

scoblewinning

Come on folks, give Dave some love! :)


Comments Off
Posted on : Jan 16 2009
Tags: ,
Posted under taglets |

Introducing taglets.org

A little over a month ago, my good friend and colleague, Mark Petrovic, had an idea for a project/service. That idea evolved into taglets.org, which we introduced today.

At first, to be honest, it was not obvious to me how it would be used or by whom. But Mark is smart and I trust him. So that was enough for me. It was also a perfect opportunity to get some hands-on experience with the Google App Engine platform.

Now that the idea is actually operational and I’ve had some time to play with it, I’m very intrigued by the potential for Taglets. It’s got some of the traits of the biggest ideas, being simple, general, and flexible.  As Mark says:

The service is first a platform, with a reference implementation layered over it via the www.taglets.org web site, with the platform defined by a public API that developers can use to create and manage users, tags, and comments.

taglets_home

While it may look at first glance that this is a twitter clone of some kind, the fact is, Taglets is not intended to replace anything else.  It’s fundamentally different.  For marketing people, that spells disaster; but in this case, that’s fine, because many of the best ideas never had a business plan, target market, or clear demand.  If you ask “what problem does this solve” the answer will be, “you tell us.”  It’s open and flexible, and like many things before it, we have no idea how Taglets.org might get used, ultimately.

Here are some examples of how Taglets.org is different:

  • The followers of a tag are anonymous. A tag is the target (to-address) of a message (comment) but unlike Twitter et al, that tag is not necessarily associated with a particular recipient/person/entity. Think of this like the street number on a house. Anybody outside that house can learn that location’s address (tag) “123 cherry lane” by simply observing it and anyone can send a message to that “tag” by postal service. But that doesn’t mean they actually know who lives there or, in other words, who they are sending to.  One can learn the address of the house, it’s “tag”, simply by driving by. They can’t learn who lives in the house by name, yet they can still send a message to that “tag” – the people inside the house determine who actually receives that message, without the sender being aware of how their message was ultimately distributed.
  • The sender of a message (comment) is anonymous. The sender may elect to include a “return address” or sender identification of some kind within the content of the message, but there is no “from-address” associated with a comment.
  • Comments are transitory. There is no history (timeline). Comments posted to a tag are distributed to the followers of that tag (via email, Twitter DM, or HTTP POST) and discarded by Taglets. Tags can be searched. Comments cannot be. Obviously, if you receive Taglets.org notifications via Twitter DM, they are archived at Twitter, but they are not archived at Taglets.org itself.
  • Tags are public. Anyone can search a tag, by name or description (keywords). Anyone can create a tag. Anyone can follow any tag. No follower knows who else follows the same tag.
  • Tag names and descriptions are self-describing and have no formal meaning to Taglets.org. The creator of a tag describes what that tag refers to with a description field, but this is opaque to the taglets.org service itself (simple free-form text). Users will decide on the conventions they want to use in tag names and tag descriptions, similar to the way that twitter status messages can be overloaded with links, photos, hashtags, and @user constructs.

Taglets.org allows a person to send a message to “something” even if that “something” is not yet tagged and has no recipients. They can simply create a tag for it and send a comment, even if it goes to nobody.

A “tag” can be something as finite as, say, a device’s MAC ethernet address, or as abstract as an idea. It can be a person, a category, a blog name, a company, or a product.

taglets_tagset

When you follow a tag, you can have updates delivered via email or Twitter account (Security note: Taglets.org never requires or stores your Twitter password). You can can also tell Taglets.org to POST to a specific web page when a comment arrives for the tag. This might be used for a WordPress hook, for instance, or to trigger some other action via PHP script, or similar.

You can learn more at the Overview page on the Taglets.org site. There’s also a Google Group at: http://groups.google.com/group/taglets


Posted on : Jan 14 2009
Tags: , ,
Posted under taglets, twitter |
PhoneGnome
FREE calling
VoIP for the rest of us!