Monthly Archives: April 2008

Free XML-RPC blog ping site submitter: “Blog Ping”

Here’s a free, as in beer, Blog Directory and Search Engine Site Submitter I wrote which works by sending out an XML-RPC Blog Ping.

“In blogging, ping is an XML-RPC-based push mechanism by which a weblog notifies a server that its content has been updated. An XML-RPC signal is sent to one or more “ping servers,” which can then generate a list of blogs that have new material. Many blog authoring tools automatically ping one or more servers each time the blogger creates a new post or updates an old one.”

– according to the Wikipedia article: ‘Ping (blogging)‘.

One of the things I have noticed most across the blogosphere and the wider ‘net during my time blogging, and it’s been just less than a year, is the obsession people have with “SEO”, or ‘Search Engine Optimization‘. There are a huge number of blogs dedicated to the subject and who simply go on about the whole SEO thing alone.

Frankly I feel that if I’m going to be putting effort into blogging then I might as well make it easy for people to find me and I’m sure plenty of other people feel the same way. If using technologies like blog pinging and other techniques like SEO is the norm, then it’s almost as though you are forced into doing the same to compete for readership; a technical ‘arms race’ in the competition for the attention of your readers.

So I wrote a program to help me notify the largest number of directories and search engines possible, in a simple and convenient way, and you’re welcome to use it as well.

You can download the Blog Ping application here: Blog Ping v1.0 (BlogPing.Jar)

You may find that if you click on the link to the file above, and you have Java installed, that it will attempt to run the application from where it is, so it’s probably best to do a ‘Save as…’ and save a local copy.

Please don’t deep link directly to the file above, instead link to the page you are currently on at:

Here’s what the application looks like in action:

Blog Ping Application FAQ

Basically what does this software do ?

It notifies a variety of Blog Directories and Search Engines that your blog has been updated recently, which is often followed by those Blog Directories and Search Engines checking your site for new content, using a technique called ‘Spidering‘. Once verified by these ‘Web Crawlers’ they list your new content, postings, etc., in their directories and search results.

The list of Blogs is configurable, as is the the list of Blog Directories and Search Engines Servers (with a maximum of one thousand), and the application has a default list of those Servers, which includes some of the most popular that I have tested the application with successfully.

Will it improve the quality of my site ?

C’mon, now you’re just being silly, of course it won’t.

Will it improve the quality of conversation about my site ?

Again ‘No’, only you can do that by engaging your audience.

Will it get you listed on a large number of Search Engines and Blog Directories ?


Will it generate page hits from people potentially coming to read your site ?

Yes, but very much dependent on the volume, quality, and cadence, of your blog posts. I’ve tested it against sites with small volumes of blog posts and poor cadence, and I have found that despite being listed in those blog directories, etc., it does not generate page hits.

Fundamentally you need three things, but you need these anyway to create a blog which gets regular readership, and that is:

  • A good volume of posts
  • Good quality of posts with interesting and engaging content
  • Regular postings, ‘Cadence’

Will it connect you with people who are genuinely interested in your topic matter ?

Maybe, maybe not, you’ll just have to see. It’s very dependent on the answer to the question above…

When should I use this software and how often should I use it ?

I recommend that you use it when you’ve initially set up a site to make as many Blog Directories and Search Engines aware of your new site as possible. You should probably be aware that a number of them require you to create an account with them, however the default list included in the application aren’t any of these.

After that I recommend that you only use it after posting a new blog entry and definitely not more than once a day (even with new posts and content).

What will this software do on my system ?

It will load up, along with the libraries it is bundled with. It uses the vanilla java swing libraries, as well as the apache xml-rpc project libraries.

Once loaded up it’ll do nothing until you either:

  • add, modify or delete a blog which you want to notify blog directories about (it’ll save your blogs in a file called “blog.txt” in the same directory as the application is run out of)
  • add, modify, or delete a blog directory / search engine to notify via an xml-rpc pingback (it’ll save your blogs in a file called “ping.txt” in the same directory as the application is run out of)
  • start a blog ping session, where it will cycle through all the blogs you’ve added, and through all the blog directories you’ve added, and send each one an xml-rpc pingback call (it’ll connect to the Internet via the Apache xml-rpc libraries, so you may need to let Java or BlogPing.jar have access through any locally configured firewalls)
  • have a look at the about page, which will load info from a special page from this blog, where I’ll post help and any news or updates about the application

What do I need to get it to work ?

An installed copy of the the Sun Java Runtime Environment (JRE). I set the software to be compatible with JRE version 1.5 and above, although I’ve only tested it from JRE 1.6 onwards.

Whilst writing it I used the Java Development Kit (JDK) version 1.6.0_0.5 (or 1.6.0 update 5, as it’s also known, the latest current version) so the JRE which matches this will definitely work.

You can get the Sun JRE here:

Will it work on my system ? I use Windows, Linux, Solaris, etc.

Yes, it very much should, and because of Java’s platform independence, meaning programs written in the Java language have to run similarly on any supported hardware / operating-system platform via the Java Virtual Machine (Java VM or JVM). It should work on any system for which there is an available JRE.

For a full list of Operating Systems, System Configurations, and platforms, supported with a JRE (version 1.6) from Sun Microsystems, please see this page:

How do I run this software ?

Easy peasy, once the JRE is installed, two choices, command line or desktop environment.

If you are using the command line the following command should run it:

java -jar BlogPing.jar

Otherwise you should be able to simply ‘click’ on it from your desktop environment for it to start up.

For this to work files of the type “jar” (a ‘Java ARchive’) need to be registered as being associated with Java (notably the Java executable). You may find that the application doesn’t start in this instance and a common cause is that another application, most frequently compression and de-compression software like Rar or Zip (or there windowed versions, like WinRAR or WinZip), have already made this association and thus will be started up instead of Java.

How do I use this software ?

I’ve used screen grabs to show how to use the program, you can resize these images using the “Body Image Size” function over in the top of the right hand side bar (options are “Small”, “Medium”, and “Large”, and they should be set on “Medium” when you first come to the page).

When the program loads this is the first screen, and as it is such a simple program there is not much to it.

There are four menu items of note: “Exit” (under “File”), “About” (under “Help”), “Add Blogs” and “Add Pings” (both under “Menu”).

This screen shows the two menu item which you need to use to get the software to ping the servers you want to notify. You need to let the program know which blogs to tell people about and which directories and search engines to notify.

If you don’t have any blogs configured it will ask you to add one.

You need four pieces of information for this:

  • The title of your blog.
  • The URL of your blog.
  • The main URL for blog posts, most frequently the same as the URL of your blog.
  • The URL for syndication services on your blogs, either RSS or Atom. If you don’t know it simply add the URL from above.

If you choose ‘OK’ above it will have saved your blog, and you are free to add more, edit whats already there, or delete some.

Afterward add, editing and deleting blogs choose ‘OK’ to save them or ‘Cancel’ to ignore all the recently made changes.

If you don’t have any servers to send blog pings configured it will ask you to add some.

You can choose to add them individually, or to load the default list.

Having choosen to load in the default list of servers to ping, you are free to add more, edit whats already there, or delete some.

Afterward add, editing and deleting servers to ping choose ‘OK’ to save them or ‘Cancel’ to ignore all the recently made changes.

All servers to be sent blog pings are saved in a text file called “ping.txt” which should be in the same directory, or folder, as the one the ‘BlogPing.jar’ program was started in.

When adding a blog directory or search engine ping service you need just one piece of information: the URL for XML-RPC blog pings for that site.

Here the program is working through a processing cycle of blogs and servers to ping. The results are posted in the main notification output area. Once it’s finished going through all of the blogs you call grab the output and copy it into a text file.

Here’s the about box, it loads a page from this blog, which means I can update the page and make sure news and information about the program is kept up to date.

Why did I write it ?

Because I could and because I wanted more flexibility in using blog pinging over and above the default blog ping functionality in my blogs platform (Roller Weblogger, created by Dave Johnson, is used exclusively to host

You may find that you have a similar requirement, even if your using another blogging platform such as WordPress, Movable Type, LiveJournal, or the like.

Plus I really dislike elitism, especially ‘technology’ elitism based on arbitrary things like what or how much you know, for me experience of having ‘done’ something matters more. Giving this software away and distributing it in the way that I am is an attempt to bring this capability to the non-programming, non-scripting, and much wider, blogging community.

Shouldn’t you have just contributed to Roller ?

Probably, in the longterm yes, as this is partially a tactical ‘fix’, done primarily to see if I could do it reasonably easily, of which the answer was definitely ‘yes’.

I also wanted more control and granularity when notifying Search Engines and Blog Directories of updates to my site, in fact I initially used it to make sure my blog was listed on as many global sites as possible.

What went into writing it ?

The Java Development Kit (JDK) 1.6.0 update 0.5 (and of course, as stated above you’ll need a compatible JRE to run it).

NetBeans version 6.0.1, which you definitely don’t need to run this program, available here:

Please note that the latest version of NetBeans (6.1) is currently in RC, or ‘release candidate’, form and that I’ll likely update Blog Ping to have been written in that in the very near future.

Download Java

Download Netbeans

The Apache XML-RPC libraries, version 3.1, also which you don’t need to run this software, available here:

The ProGuard libraries, version 4.2, also which you don’t need to run this software, available here:

Anything else interesting about this software ?

Yes, my default set of blog ping services, which I’ll post later, and that I obfusticated the code using the latest version of ProGuard after being inspired by this article written by Geertjan on how to obfusticate java code written using NetBeans.

Possibly that I wrote it whilst listening to Flanders and Swann, notably “Madeira M’Dear”, famous for its syllepsis.

And maybe that I wrote this blog post listening to New Order, specifically Blue Monday (’95 tweleve inch version), and thanks to Walter Milner I think the Pink Fairies got in there somewhere too.

What do you want for this software ? Similar Blog Ping clients are on sale around the ‘net from anything between $30 and $100 ?

Nowt, yadda, zip, nothing, I just wanted to see if I could do it, and found that I could. If you use it, and you like it, please tell people about it, blog about it, add links to this page and this blog (but not the download itself), and leave a comment if you have time.

I’m especially interested in hearing from anyone who downloads and installs Java and the JRE as a result of wanting to use this software, so please let me know if you have.

Link to my blog here:

Link to the Blog Ping application page here:

And comments here please:

There are also online services like ‘Pingoat’ and ‘King Ping’ which act as ‘Blog Ping aggregators’ for you, you can find them at and respectively. Whats nice about the software here is that you can configure it to use these ‘Blog Ping aggregators’, if they have an XML-RPC interface, which in the case of ‘Pingoat’ and ‘King Ping’ they both do.

By the way, there are other free Blog Ping software out there, notably Blog Pinger (a Linux command line utility, which as it’s written in Python should run on any OS where you have a compatible Python instance installed) and Submit’em now (a Firefox Add on).

Go check them out, they might be more to your liking, and diversity is good.

Will you be maintaining or updating this software ?

Maybe, it depends on three things: demand (from you guys), use (for me), and time (i.e. what gets priority over this).

What changes would you make ?

Probably spend some time learning more about the XML-RPC blog ping call protocol, I’m sure I could generate much higher volumes of Blog Ping successes if I did.

What license does this software use ?

This instance uses the Creative Commons License. Copyright 2008, Wayne T. Horkan.

Why isn’t this software ‘Open Source’ ?

If there is enough demand for the software, and more importantly changes to the software, then I’ll consider putting the effort into setting it up as Open Source. However, frankly, it’s a very minimal and trifling set of code at the moment.

Is this software anything to do with Sun Microsystems at all ?

This is my personal weblog and on it I do not speak for my employer. However the program was written using Sun technologies and I do work at Sun (although I put this software together as a home project and my current role at Sun rarely involves writing code).

Does that mean that Sun are they responsible for it ?

No, definitely not, nag me about it, not Sun, and do that in the comments section of this page please.

Is this a ‘White Hat‘ or ‘Black Hat‘ SEO tool or technique ?

The tool is implicitly amoral, it’s the user that constructs a moral or immoral pattern of usage.

Using this software aggressively to send falsified blog postings will likely, and deservedly, get search engines and blog directories to block your site, potentially even de-listing it, so please don’t be irresponsible in using it.

Have a look at the following Wikipedia article for more information on White Hat versus Black Hat SEO techniques.

Presenting at the Open Groups “Enterprise Architecture Practitioners Conference 2008” tomorrow in Glasgow

I’ll be presenting tomorrow at the “Enterprise Architecture Practitioners Conference 2008”.

As usual this Enterprise Architecture (EA) Practitioners Conference is being hosted by the Open Group, the custodians of the extremely popular TOGAF EA Framework (it stand for “The Open Group Architecture Framework”). TOGAF is currently used by 80% of the Forbes Global Top 50 companies, and has emerged as a leading framework amongst Enterprise Architects for developing information systems architectures.

The strap line of the conference is “Successful Enterprise Architecture” and through the use of working application case studies and peer-group discussion, the event will demonstrate how the framework used is central to the development of an effective Enterprise Architecture.

I’ll be presenting “Case Studies of Enterprise Architecture“: exploring a number of major customer engagements, including an Enterprise Architecture team which led its company into a 70+ million pound ‘pitfall’, the use of Enterprise Architecture to define a Service Oriented Architecture (SOA), and an example of how successful Enterprise Architecture is dependent on achieving the proper Governance model.

This is the 18th EA Practitioners Conference, and is being held in Glasgow, Scotland, at the Radisson SAS Hotel. It will be the third one that I’ll have presented at now, having done the previous two “European” versions of the conferences: Paris in 2007 and London in 2006. There are a variety of posts about these conferences on this blog and the best way to find them, and the content I presented, is via the tag for enterprise-architecture-practitioners-conference or for more general posts with EA content at the tag on enterprise-architecture.

I’m not the only Sun guy presenting at the conference, Dan Berg (CTO Global Sales & Services and Vice President EMEA Systems Engineering) presented “Architecting the Sun” on Monday, and Rakesh Radhakrishnan (Chief Identity & SOA Architect, Sun Microsystems, US) is presenting “Aligning ADM and SOA for Successful EA” today.

Sun were originally founding members of the Open Group and thanks to Scott Radeztsky championing EA in Field / Customer Engineering in the US we have recently rejoined the Open Group as Platinum members. This has also led to a TOGAF certification programme being rolled out in the US, and I very much hope that we can see a similar programme in Europe and the UK.

Here’s the main link to the event:

Here’s the link to the program for the event:

Here’s the link to the Open Group synopsis of my presentation:

WebMission08: Twenty UK web2.0 Startups “face-to-face” networking across Silicon Valley

Just been listening to BlogTalk Radio, who’ve kindly been hosting a number of slots for us on our Sun Startup Essentials programme in conjunction with WebMission08.

Web Mission 2008 sees twenty UK web2.0 startups traveling to San Francisco and exploring new opportunities for growth with key people across Silicon Valley.

Sun are a key Technology partner for the event and it is being covered by Sun’s local expert on Startups (based in the UK and beyond), Stewart Townsend.

More on the UK Startups page, hosted by Stewart, here:

Internationalizing a Roller Weblogger based Blog

So I’ve been spending time lately providing better international support to the blog.

In fact check out the variants I’ve put together:

For the translator I used the Yahoo Babelfish translation service, rather than Google Translate (which I use to produce on demand translations of the site, at the time of posting this it should be at the top of the right hand sidebar), because I didn’t want to become tied in to a single Translation Service Supplier.

During translation I switched to using “blog” rather than “weblog” for the title, as many of the languages would translate blog but not weblog (possibly a weakness of the translation service).

I was alluding to the new multi-language pages and the new multi-lingual nature of the blog in the post on St. Patrick’s Day, however I’d only translated some of the posts, not internationalised the site itself, and so it wasn’t really time to go live, but I did want the posts to start being spidered (and the post “Weblog language translator – blog translation on the fly with Roller specific functionality” explains why).

iron l10n zion – or how I did it…

There are a number of ways to internationalize a blog running over Roller Weblogger, for instance at the Aquarium, another Sun Blog, they use multiple blogs instances, like the Japanese Aquarium, I didn’t go for this approach as I wanted to keep to a single blog instance (due to maintainability basically).

I approached the problem by having a language resource file which loads as the session begins based upon the locale determined in the URL.

At run time this is done dynamically like this:

  1. Decide which locale the user is loading the page from
  2. Load the language specific resource file / pack (from a repository of language resource files, of which there is one resource file / pack per language)
  3. Variables are already allocated and populated with language specific data
  4. Use the above variables throughout the Roller Weblogger template code (HTML mainly) to create the page
  5. Present the page to the user requesting it

A number of language resource files were needed, all of which I populated with text based named variables (obviously the name of the variable stays the same, just the content per language resource file is different).

Then I replaced all the specific uses of text across my roller templates with calls to those variables.

This is a code snippet example of the code which decides which language resource file to load, and yes, before you say it, it’s not aesthetically pleasing, but I’m the only person who’ll be debugging it, so I’ll let myself off on that one. As you can see it checks which locale the page is being called from (based on the URL, but you can’t see that bit), once it finds a positive it loads the language specific resource file (notice I also ensure to load a default at the end if a match can’t be found).

  #if ($model.locale == "en")

      #includeTemplate($model.weblog "_lang_en")

  #elseif ($model.locale == "zh")

      #includeTemplate($model.weblog "_lang_zh")


      #includeTemplate($model.weblog "_lang_en")


And here’s an example of a specific language resource file, in this case this is the start of “_lang_de”, one of the files that would have been loaded based on the logic in the above piece. As you can see it has my (string) variables allocated and populated.

  #set ($gtTitle = "Blog Wayne-Horkans: eklektisch")

  #set ($gtMostPopTags = "Die meisten populären Umbauten")

  #set ($gtSitePrefs = "Aufstellungsort-Präferenzen")

Here’s an example use of the $gtTitle (string) variable from above within the Roller Weblogger template, which Roller builds dynamically at run time, obviously if the page was being


Probably the worst part of this was being adversely effected by Roller timezone and localization sensitivity issues as documented in ROL-1337 “all components involved in weblog rendering need to be locale & timezone sensitive”.

For instance when generating blog specific URLs in my templates, not all of the Roller Weblogger functions, macros and variables are timezone / localisation safe, and so for a number of them I’ve had to step though the templates modding the code to be timezone and localization safe as I go.

This meant that I had to bodge parts of the code with temporary ‘fixes’ to make up for the incomplete coverage, but it will do for now.

A couple of the most obvious issues was one with dates, as “$utils.formatDate” only produces day and month names in English, and another with “$entry.permalink” as it produces a non-locale specific URL

  ## Replaced instances of $entry.permalink with $entryLSP (Locale Specific Permalink)

  #set ($entryLSP = 


I may also have to write alternate macros which are locale specific, including the one that generates a list of recent entries:

  #set ($rEntries = $model.weblog.getRecentWeblogEntries($chosenCat, $rEntriesTotal)) 

  ## Have to use this as locale settings don't yet effect "getRecentWeblogEntries"


I don’t want to give the impression that non of the Roller Weblogger timezone / locale specfic functionality works. In fact a lot more than I assumed would, did. Including the menu (content) functions and Tag URL functions, and I was very pleased that there was the level of support in Roller that there is for internationalization.

I’ll be providing more multi-lingual content, specifically the content rich, article like posts I’ve been doing, so far I’ve translated three posts of this ilk:

Scott McNealy BCS Distinguished Fellow

Last night I was at a BCS ELITE networking event, very kindly organised by Yva Thakurdas, with help from Mandy Bauer, and co-hosted by the indomitable Roger Ellis (in the Chairman, David Tidey’s absence).

BCS ELITE are one of the BCS’s Specialty Groups, a forum for IT Directors and CxOs.

Obviously the event was a good one, I had an enjoyable time, and in the words of Mr. Rodríguez: “Make new friends and keep the old. One is silver and the other’s gold.”

It reminded me that I hadn’t posted the photo that Yva had sent me from the BCS ELITE Winter Gala, where Scott McNealy was presented with his Distinguished Fellowship of the BCS at the stunningly magnificent Goldsmiths Hall (on his Birthday I might add).

So here it is:

From left to right are: Rebecca Smith, Simon Culmer, Scott McNealy, Kim Jones, and Enzo Tolino.

Many thanks for the photo Yva, and again for setting up the event last night.