Category Archives: blog

What do Facebook, del.icio.us, and last.fm, all have in common this month?

Yes, that’s right; they are all suffering from functionality issues due to design flaws introduced in their last look and feel upgrades.

Looks like this is the month for it, because in rapid succession we’ve seen changes at all three of these web2.0 stalwarts.

So how have these changes effected functionality, and what’s the real problem at hand ?

  1. Facebook
    If your a Facebook user then you will have noticed the option to use ‘new’ facebook, which, although keeps the quite fixed layout (and color theme), moves applications onto a seperate ‘page’ (or tab rather, although it behaves as a page).
    The major problem with this is settings between the new and old Facebook layouts don’t appear to be compatible, which points to access control being about the UI and not about the data itself.
  2. del.icio.us
    So del.icio.us have introduced a ‘richer’ look and feel, but appear to have lost some of their elegant simplicity. A shame, because for a service like del.icio.us I’d rather have function over form.
  3. last.fm
    Similar to the issue with del.icio.us, but in this case their is a huge user community hankering for backwards compatibility with the old look and feel, who want a similar ability to the recent Facebook refresh in being able to ‘swap’ between the two UI designs.
    Perhaps this isn’t such a good idea, because like the current Facebook issues, who’s to know what settings and access controls are locked into the UI and not the user data.

Along with the recent problems at Twitter around “outbound SMS messages” it’s turning out to be quite the month…

Microsoft’s very public “Blue Screen of Death” crash out at the Beijing Olympics

First reported by RiverCoolCool on his blog: http://rivercoolcool.spaces.live.com/blog/cns!D6F05428A2B8CB48!1570.entry

Then by Gizmondo: http://gizmodo.com/5035456/blue-screen-of-death-strikes-birds-nest-during-opening-ceremonies-torch-lighting

Now it’s at the Register: http://www.theregister.co.uk/2008/08/13/olympics_blue_screen_death/

But what’s genuinely amusing about this is the comments that are coming up, they range from the obvious to the really quite odd.

There are the standard comments lambasting Microsoft, but I think these should be disregarded; basically because they are boring in the extreme and especially given how interesting some of the other comments are.

Comments at the Register can be found here: http://www.theregister.co.uk/2008/08/13/olympics_blue_screen_death/comments/

The comments seem to be breaking down into a number of camps:

  1. The “Are they genuine?” camp
    There’s the camp that are questioning if the images themselves are real, or if they’ve been “photoshop”ed.
  2. The “Is it a hooky copy of MS Windows?” camp
    Plenty of people seem to be questioning if these are valid versions of Windows. Now this is just disingenuous; by implication (and directly, sadly, such as “it is in China after all”) it is being insinuated that this is what should be expected of China. I think this is pretty base, and hope it receives the contempt it deserves.
  3. The “Is it a Hardware error?” camp
    This group state that it’s a hard ware error that no OS could have responded to. Many add that at least you get this specific H/W error message with Windows.
  4. The “Have Microsoft done this on purpose ?” camp
    Now really this is like coming home to find that the life has turned into Bizarro World. Some of these conspiracy theorists note that one of the blogs in question is “supported” by Microsoft, others suggest that it is a ploy to get people to upgrade and move from XP to Vista.

Frankly what’s so very wrong with the idea that the pictures are genuine, that it is a valid copy of Windows, that there hasn’t been a hardware error, and that, just perhaps, software goes wrong occasionally?

It just takes a little application of Ockham’s Razor to see the truth here.

Follow me on Twitter, you know you want to…

Seeing as I’ve been blogging about Twitter and it’s new lack of support for outbound SMS for Europe, the UK and the rest of the World (well, apart from the US, Canada and India, that is)…

And seeing as it’s generated a ton of page hits…

I thought I’d take this opportunity to invite you all to follow me.

Twitterfollow Wayne on twitter

You never know I might even follow you back.

Here’s what I’ve been Twittering (or is that Twitting, lol) about.

    No outbound Twitter SMS for Europe, the UK and, frankly, most of the World

    I received the following email this morning, apparently they’ll be no more outbound Twitter SMS for Europe, the UK and most of the rest of the World. The only countries to be keeping the outbound SMS service are Canada, India, and the US. Apparently it’s all down to the charges that our mobile network operators charge us for SMS delivery, which initially Twitter had been subsidising, however they can’t afford to do that any more and have begun to “rein in the cost” by disabling the service. I can’t blame them, however I think it’s a shame that they set a precedent by enabling this functionality, only to take it away.

    Oh, and good luck to them as they “negotiate with mobile operators in Europe, Asia, China, and The Americas” but I can’t see this service coming back any time soon. And I wonder how long it will be before people are trying to find a way round this decision, potentially by spoofing a US, Indian or Canadian address, given that each of the solutions they have suggested have a cost to the user (either to deliver the SMS itself or to contribute to the datalink to the WAP service).

    Changes To Twitter SMS

    Hi,

    I’m sending you this note because you registered a mobile device

    to work with Twitter over our UK number. I wanted to let you

    know that we are making some changes to the way SMS works on

    Twitter. There is some good news and some bad news.

    I’ll start with the bad news. Beginning today, Twitter is no

    longer delivering outbound SMS over our UK number. If you enjoy

    receiving updates from Twitter via +44 762 480 1423, we are

    recommending that you explore some suggested alternatives.

    Note: You will still be able to UPDATE over our UK number.

    Before I go into more detail, here’s a bit of good news: Twitter

    will be introducing several new, local SMS numbers in countries

    throughout Europe in the coming weeks and months. These new

    numbers will make Twittering more accessible for you if you’ve

    been using SMS to send long-distance updates from outside the UK.

    Why are we making these changes?

    Mobile operators in most of the world charge users to send

    updates. When you send one message to Twitter and we send it to

    ten followers, you aren’t charged ten times–that’s because we’ve

    been footing the bill. When we launched our free SMS service to

    the world, we set the clock ticking. As the service grew in

    popularity, so too would the price.

    Our challenge during this window of time was to establish

    relationships with mobile operators around the world such that

    our SMS services could become sustainable from a cost perspective.

    We achieved this goal in Canada, India, and the United States.

    We can provide full incoming and outgoing SMS service without

    passing along operator fees in these countries.

    We took a risk hoping to bring more nations onboard and more

    mobile operators around to our way of thinking but we’ve arrived

    at a point where the responsible thing to do is slow our costs

    and take a different approach. Since you probably don’t live in

    Canada, India, or the US, we recommend receiving your Twitter

    updates via one of the following methods.

    m.twitter.com works on browser-enabled phones

    m.slandr.net works on browser-enabled phones

    TwitterMail.com works on email-enabled phones

    Cellity [http://bit.ly/12bw4R] works on java-enabled phones

    TwitterBerry [http://bit.ly/MFAfJ] works on BlackBerry phones

    Twitterific [http://bit.ly/1WxjwQ] works on iPhones

    Twitter SMS by The Numbers

    It pains us to take this measure. However, we need to avoid

    placing undue burden on our company and our service. Even with a

    limit of 250 messages received per week, it could cost Twitter

    about $1,000 per user, per year to send SMS outside of Canada,

    India, or the US. It makes more sense for us to establish fair

    billing arrangements with mobile operators than it does to pass

    these high fees on to our users.

    Twitter will continue to negotiate with mobile operators in

    Europe, Asia, China, and The Americas to forge relationships

    that benefit all our users. Our goal is to provide full, two-way

    service with Twitter via SMS to every nation in a way that is

    sustainable from a cost perspective. Talks with mobile companies

    around the world continue. In the meantime, more local numbers

    for updating via SMS are on the way. We’ll keep you posted.

    Thank you for your attention,

    Biz Stone, Co-founder

    Twitter, Inc.

    http://twitter.com/biz

    Roller Weblogger blog post tag link code for blogs.sun.com, technorati and del.icio.us

    Here’s some code that produces tag links to four popular tag destinations, your blog, blogs.sun.com, technorati and del.icio.us (for your Roller Weblogger based blog, as the code is velocity).

    It also ensures that the links are marked as tags, so that crawlers that look for and index tags and tag data will pick them up (microformat and semantic web focused applications, like the ‘Operator’ plug in for Firefox also pick them up of course).

    I only add it to individual entries, rather than collections, which is what “#if ($model.permalink)” checks for.

    Best to add just before or just after the Comments section in your main Roller template.

    The code also includes some functionality to replace ‘-‘ and ‘+’ with ‘ ‘, so as to make the text fit in the table (this does not affect the tag).

    You can see this functionality here, on my blog, and on Bill Vass’ blog, however you will need to look at an individual blog post to see it.

    If your on bsc you’ll need to replace ‘eclectic’ with your bsc blog name, or if your not on bsc you’ll need to replace “http://blogs.sun.com/eclectic/” with your entire blog URL.

    Here’s the code:

    
    #if ($model.permalink) <!-- BEGIN TAGS: $entry.title -->
    
    <div class="comments-head">Tags</div>
    
    
    
    

    This blog

    Sun Blogs

    Technorati

    Del.icio.us

    #end

    Roller Weblogger language translation with Google using JavaScript and Velocity

    So here’s the latest version of my Google Translation code for Roller Weblogger, as used to host blogs.sun.com (or ‘bsc’ as we in Sun call it).

    It’s much improved over the original and Google versions.

    First off it checks for JavaScript, if there then it uses it to make sure the page hasn’t been translated before as well as get the current URL to translate (Google generates translation glitches if it tries to translate pre-translated pages).

    If not it still generates the language translation by using Velocity / Roller JSP code.

    If your on bsc then $baseURL needs the ‘eclectic’ text replaced with whatever your bsc site is called, otherwise $baseURL needs to be your blog URL.

    If your not on bsc you’ll also need to change $iconURL to where you are hosting the flag images (which I got from FamFamFam), unless of course you leech off mine.

    So far this code is being used on Bill Vass’ blog and Glenn Brunette’s Security Weblog (as well as this one of course).

    Here’s the code for you to have a look at and cut and paste if you’d like to use it. It needs to be embedded in your Roller template code, probably best to put it in the sidebar. You can also use it to translate from other source languages other than English, more on this at the bottom of the page.

    
    
    <div style="margin:0px; padding:1px;"> <!-- BEGIN _MOD_TRANSLATE --> ## Current Language
    #set ($langCur="en") ## Lang Text
    #set ($langText_ar="Arabic")
    #set ($langText_bg="Bulgarian")
    #set ($langText_zh-CN="Chinese (Simplified)")
    #set ($langText_zh-TW="Chinese (Traditional)")
    #set ($langText_hr="Croatian")
    #set ($langText_cs="Czech")
    #set ($langText_da="Danish")
    #set ($langText_nl="Dutch")
    #set ($langText_en="English")
    #set ($langText_fi="Finnish")
    #set ($langText_fr="French")
    #set ($langText_de="German")
    #set ($langText_el="Greek")
    #set ($langText_hi="Hindi")
    #set ($langText_it="Italian")
    #set ($langText_ja="Japanese")
    #set ($langText_ko="Korean")
    #set ($langText_no="Norwegian")
    #set ($langText_pl="Polish")
    #set ($langText_pt="Portuguese")
    #set ($langText_ro="Romanian")
    #set ($langText_ru="Russian")
    #set ($langText_es="Spanish")
    #set ($langText_sv="Swedish") ## Lang Code
    #set ($langCode_ar="ar")
    #set ($langCode_bg="bg")
    #set ($langCode_zh-CN="zh-CN")
    #set ($langCode_zh-TW="zh-TW")
    #set ($langCode_hr="hr")
    #set ($langCode_cs="cs")
    #set ($langCode_da="da")
    #set ($langCode_nl="nl")
    #set ($langCode_en="en")
    #set ($langCode_fi="fi")
    #set ($langCode_fr="fr")
    #set ($langCode_de="de")
    #set ($langCode_el="el")
    #set ($langCode_hi="hi")
    #set ($langCode_it="it")
    #set ($langCode_ja="ja")
    #set ($langCode_ko="ko")
    #set ($langCode_no="no")
    #set ($langCode_pl="pl")
    #set ($langCode_pt="pt")
    #set ($langCode_ro="ro")
    #set ($langCode_ru="ru")
    #set ($langCode_es="es")
    #set ($langCode_sv="sv") ## Other variables
    #set ($tranText01="<a style="padding:0px" title='") #set ($tranText02="' href="%22)%20%20%20%0A#set%20(%24tranServer=%22http://66.102.9.104%22)%20%20%20%0A#set%20(%24tranCommand=%22/translate_c?hl=%22)%20%20%20%0A#set%20(%24tranText03=%22&#038;langpair=%22)%20%20%20%0A#set%20(%24tranText04=%22%7C%22)%20%20%20%0A#set%20(%24tranText05=%22&#038;u=%22)%20%20%20%0A#set%20(%24tranText06=%22"><img decoding="async" alt='") #set ($tranText07="' style="border:0px; padding:0px 8px 8px 0px;" src="/web/20090226230923im_/http://blogs.sun.com/eclectic/entry/%22)%20%20%20#set%20(%24iconURL=%22http://blogs.sun.com/eclectic/resource/%22)%20%20%20#set%20(%24iconTLA=%22.png"></a>" ) ## specific blog entry ? #if ($model.permalink) #set ($baseurl="http://blogs.sun.com/BVass/entry/$utilities.encode($model.weblogEntry.anchor)" ) #else #set ($baseurl="http://blogs.sun.com/BVass/" ) #end <script language="JavaScript"><br/><!--<br/>{ /* Allocate memory */<br/>strLangPage = new String (location.href); /* Catch pages translated externally and re-assign */<br/>if ((strLangPage.indexOf("/translate_c?")!=-1)) { /* Catch pages with the new google tracking code and strip */ if ((strLangPage.indexOf("&usg=")!=-1)) { strLangPage = strLangPage.slice((strLangPage.lastIndexOf("u=") + 2),(strLangPage.lastIndexOf("&usg=") )); } else { strLangPage = strLangPage.slice((strLangPage.lastIndexOf("u=") + 2)); } } document.write("<div style='margin:0px; padding:0px;'>");<br/>document.write("$tranText01$langText_ar$tranText02$tranServer$tranCommand$langCur$tranText03$langCur$tranText04$langCode_ar$tranText05",strLangPage,"$tranText06$langCode_ar$tranText07$iconURL$langCode_ar$iconTLA$tranText08");<br/>document.write("$tranText01$langText_bg$tranText02$tranServer$tranCommand$langCur$tranText03$langCur$tranText04$langCode_bg$tranText05",strLangPage,"$tranText06$langCode_bg$tranText07$iconURL$langCode_bg$iconTLA$tranText08");<br/>document.write("$tranText01$langText_zh-CN$tranText02$tranServer$tranCommand$langCur$tranText03$langCur$tranText04$langCode_zh-CN$tranText05",<br/>strLangPage,<br/>"$tranText06$langCode_zh-CN$tranText07$iconURL$langCode_zh-CN$iconTLA$tranText08");<br/>document.write("$tranText01$langText_zh-TW$tranText02$tranServer$tranCommand$langCur$tranText03$langCur$tranText04$langCode_zh-TW$tranText05",<br/>strLangPage,<br/>"$tranText06$langCode_zh-TW$tranText07$iconURL$langCode_zh-TW$iconTLA$tranText08");<br/>document.write("$tranText01$langText_hr$tranText02$tranServer$tranCommand$langCur$tranText03$langCur$tranText04$langCode_hr$tranText05",strLangPage,"$tranText06$langCode_hr$tranText07$iconURL$langCode_hr$iconTLA$tranText08");<br/>document.write("$tranText01$langText_cs$tranText02$tranServer$tranCommand$langCur$tranText03$langCur$tranText04$langCode_cs$tranText05",strLangPage,"$tranText06$langCode_cs$tranText07$iconURL$langCode_cs$iconTLA$tranText08");<br/>document.write("$tranText01$langText_da$tranText02$tranServer$tranCommand$langCur$tranText03$langCur$tranText04$langCode_da$tranText05",strLangPage,"$tranText06$langCode_da$tranText07$iconURL$langCode_da$iconTLA$tranText08");<br/>document.write("$tranText01$langText_nl$tranText02$tranServer$tranCommand$langCur$tranText03$langCur$tranText04$langCode_nl$tranText05",strLangPage,"$tranText06$langCode_nl$tranText07$iconURL$langCode_nl$iconTLA$tranText08");<br/>document.write("$tranText01$langText_en$tranText02",strLangPage,"$tranText06$langCode_en$tranText07$iconURL$langCode_en$iconTLA$tranText08");<br/>document.write("$tranText01$langText_fi$tranText02$tranServer$tranCommand$langCur$tranText03$langCur$tranText04$langCode_fi$tranText05",strLangPage,"$tranText06$langCode_fi$tranText07$iconURL$langCode_fi$iconTLA$tranText08");<br/>document.write("$tranText01$langText_fr$tranText02$tranServer$tranCommand$langCur$tranText03$langCur$tranText04$langCode_fr$tranText05",strLangPage,"$tranText06$langCode_fr$tranText07$iconURL$langCode_fr$iconTLA$tranText08");<br/>document.write("$tranText01$langText_de$tranText02$tranServer$tranCommand$langCur$tranText03$langCur$tranText04$langCode_de$tranText05",strLangPage,"$tranText06$langCode_de$tranText07$iconURL$langCode_de$iconTLA$tranText08");<br/>document.write("$tranText01$langText_el$tranText02$tranServer$tranCommand$langCur$tranText03$langCur$tranText04$langCode_el$tranText05",strLangPage,"$tranText06$langCode_el$tranText07$iconURL$langCode_el$iconTLA$tranText08");<br/>document.write("$tranText01$langText_hi$tranText02$tranServer$tranCommand$langCur$tranText03$langCur$tranText04$langCode_hi$tranText05",strLangPage,"$tranText06$langCode_hi$tranText07$iconURL$langCode_hi$iconTLA$tranText08");<br/>document.write("$tranText01$langText_it$tranText02$tranServer$tranCommand$langCur$tranText03$langCur$tranText04$langCode_it$tranText05",strLangPage,"$tranText06$langCode_it$tranText07$iconURL$langCode_it$iconTLA$tranText08");<br/>document.write("$tranText01$langText_ja$tranText02$tranServer$tranCommand$langCur$tranText03$langCur$tranText04$langCode_ja$tranText05",strLangPage,"$tranText06$langCode_ja$tranText07$iconURL$langCode_ja$iconTLA$tranText08");<br/>document.write("$tranText01$langText_ko$tranText02$tranServer$tranCommand$langCur$tranText03$langCur$tranText04$langCode_ko$tranText05",strLangPage,"$tranText06$langCode_ko$tranText07$iconURL$langCode_ko$iconTLA$tranText08");<br/>document.write("$tranText01$langText_no$tranText02$tranServer$tranCommand$langCur$tranText03$langCur$tranText04$langCode_no$tranText05",strLangPage,"$tranText06$langCode_no$tranText07$iconURL$langCode_no$iconTLA$tranText08");<br/>document.write("$tranText01$langText_pl$tranText02$tranServer$tranCommand$langCur$tranText03$langCur$tranText04$langCode_pl$tranText05",strLangPage,"$tranText06$langCode_pl$tranText07$iconURL$langCode_pl$iconTLA$tranText08");<br/>document.write("$tranText01$langText_pt$tranText02$tranServer$tranCommand$langCur$tranText03$langCur$tranText04$langCode_pt$tranText05",strLangPage,"$tranText06$langCode_pt$tranText07$iconURL$langCode_pt$iconTLA$tranText08");<br/>document.write("$tranText01$langText_ro$tranText02$tranServer$tranCommand$langCur$tranText03$langCur$tranText04$langCode_ro$tranText05",strLangPage,"$tranText06$langCode_ro$tranText07$iconURL$langCode_ro$iconTLA$tranText08");<br/>document.write("$tranText01$langText_ru$tranText02$tranServer$tranCommand$langCur$tranText03$langCur$tranText04$langCode_ru$tranText05",strLangPage,"$tranText06$langCode_ru$tranText07$iconURL$langCode_ru$iconTLA$tranText08");<br/>document.write("$tranText01$langText_es$tranText02$tranServer$tranCommand$langCur$tranText03$langCur$tranText04$langCode_es$tranText05",strLangPage,"$tranText06$langCode_es$tranText07$iconURL$langCode_es$iconTLA$tranText08");<br/>document.write("$tranText01$langText_sv$tranText02$tranServer$tranCommand$langCur$tranText03$langCur$tranText04$langCode_sv$tranText05",strLangPage,"$tranText06$langCode_sv$tranText07$iconURL$langCode_sv$iconTLA$tranText08");<br/>document.write("</div>"); }<br/>// --><br/></script> <noscript>
    
    <div style="margin:0px; padding:0px;">
    $tranText01$langText_ar$tranText02$tranServer$tranCommand$langCur$tranText03$langCur$tranText04$langCode_ar$tranText05$baseURL$tranText06$langCode_ar$tranText07$iconURL$langCode_ar$iconTLA$tranText08
    $tranText01$langText_bg$tranText02$tranServer$tranCommand$langCur$tranText03$langCur$tranText04$langCode_bg$tranText05$baseURL$tranText06$langCode_bg$tranText07$iconURL$langCode_bg$iconTLA$tranText08
    $tranText01$langText_zh-CN$tranText02$tranServer$tranCommand$langCur$tranText03$langCur$tranText04$langCode_zh-CN$tranText05$baseURL$langCode$tranText06$langCode_zh-CN$tranText07$iconURL$langCode_zh-CN$iconTLA$tranText08
    $tranText01$langText_zh-TW$tranText02$tranServer$tranCommand$langCur$tranText03$langCur$tranText04$langCode_zh-TW$tranText05$baseURL$langCode$tranText06$langCode_zh-TW$tranText07$iconURL$langCode_zh-TW$iconTLA$tranText08
    $tranText01$langText_hr$tranText02$tranServer$tranCommand$langCur$tranText03$langCur$tranText04$langCode_hr$tranText05$baseURL$tranText06$langCode_hr$tranText07$iconURL$langCode_hr$iconTLA$tranText08
    $tranText01$langText_cs$tranText02$tranServer$tranCommand$langCur$tranText03$langCur$tranText04$langCode_cs$tranText05$baseURL$tranText06$langCode_cs$tranText07$iconURL$langCode_cs$iconTLA$tranText08
    $tranText01$langText_da$tranText02$tranServer$tranCommand$langCur$tranText03$langCur$tranText04$langCode_da$tranText05$baseURL$tranText06$langCode_da$tranText07$iconURL$langCode_da$iconTLA$tranText08
    $tranText01$langText_nl$tranText02$tranServer$tranCommand$langCur$tranText03$langCur$tranText04$langCode_nl$tranText05$baseURL$tranText06$langCode_nl$tranText07$iconURL$langCode_nl$iconTLA$tranText08
    $tranText01$langText_en$tranText02$baseURL$langCode$tranText06$langCode_en$tranText07$iconURL$langCode_en$iconTLA$tranText08
    $tranText01$langText_fi$tranText02$tranServer$tranCommand$langCur$tranText03$langCur$tranText04$langCode_fi$tranText05$baseURL$tranText06$langCode_fi$tranText07$iconURL$langCode_fi$iconTLA$tranText08
    $tranText01$langText_fr$tranText02$tranServer$tranCommand$langCur$tranText03$langCur$tranText04$langCode_fr$tranText05$baseURL$tranText06$langCode_fr$tranText07$iconURL$langCode_fr$iconTLA$tranText08
    $tranText01$langText_de$tranText02$tranServer$tranCommand$langCur$tranText03$langCur$tranText04$langCode_de$tranText05$baseURL$tranText06$langCode_de$tranText07$iconURL$langCode_de$iconTLA$tranText08
    $tranText01$langText_el$tranText02$tranServer$tranCommand$langCur$tranText03$langCur$tranText04$langCode_el$tranText05$baseURL$tranText06$langCode_el$tranText07$iconURL$langCode_el$iconTLA$tranText08
    $tranText01$langText_hi$tranText02$tranServer$tranCommand$langCur$tranText03$langCur$tranText04$langCode_hi$tranText05$baseURL$tranText06$langCode_hi$tranText07$iconURL$langCode_hi$iconTLA$tranText08
    $tranText01$langText_it$tranText02$tranServer$tranCommand$langCur$tranText03$langCur$tranText04$langCode_it$tranText05$baseURL$tranText06$langCode_it$tranText07$iconURL$langCode_it$iconTLA$tranText08
    $tranText01$langText_ja$tranText02$tranServer$tranCommand$langCur$tranText03$langCur$tranText04$langCode_ja$tranText05$baseURL$tranText06$langCode_ja$tranText07$iconURL$langCode_ja$iconTLA$tranText08
    $tranText01$langText_ko$tranText02$tranServer$tranCommand$langCur$tranText03$langCur$tranText04$langCode_ko$tranText05$baseURL$tranText06$langCode_ko$tranText07$iconURL$langCode_ko$iconTLA$tranText08
    $tranText01$langText_no$tranText02$tranServer$tranCommand$langCur$tranText03$langCur$tranText04$langCode_no$tranText05$baseURL$tranText06$langCode_no$tranText07$iconURL$langCode_no$iconTLA$tranText08
    $tranText01$langText_pl$tranText02$tranServer$tranCommand$langCur$tranText03$langCur$tranText04$langCode_pl$tranText05$baseURL$tranText06$langCode_pl$tranText07$iconURL$langCode_pl$iconTLA$tranText08
    $tranText01$langText_pt$tranText02$tranServer$tranCommand$langCur$tranText03$langCur$tranText04$langCode_pt$tranText05$baseURL$tranText06$langCode_pt$tranText07$iconURL$langCode_pt$iconTLA$tranText08
    $tranText01$langText_ro$tranText02$tranServer$tranCommand$langCur$tranText03$langCur$tranText04$langCode_ro$tranText05$baseURL$tranText06$langCode_ro$tranText07$iconURL$langCode_ro$iconTLA$tranText08
    $tranText01$langText_ru$tranText02$tranServer$tranCommand$langCur$tranText03$langCur$tranText04$langCode_ru$tranText05$baseURL$tranText06$langCode_ru$tranText07$iconURL$langCode_ru$iconTLA$tranText08
    $tranText01$langText_es$tranText02$tranServer$tranCommand$langCur$tranText03$langCur$tranText04$langCode_es$tranText05$baseURL$tranText06$langCode_es$tranText07$iconURL$langCode_es$iconTLA$tranText08
    $tranText01$langText_sv$tranText02$tranServer$tranCommand$langCur$tranText03$langCur$tranText04$langCode_sv$tranText05$baseURL$tranText06$langCode_sv$tranText07$iconURL$langCode_sv$iconTLA$tranText08
    </div>
    
    </noscript> <!-- END _MOD_TRANSLATE --></div>
    
    

    As I mentioned above it can also be used to translate from other source languages other than English.

    By changing #set ($langCur=”en”) it’ll translate from other source languages. For instance set $langCur to ‘fr’ to use French as a the source language. You’ll also need to transpose the ‘en’ output strings with that of the source language you want to use, because Google doesn’t like trying to translate a page to and from the same language! For instance, still using French as an example:

    
    $tranText01$langText_en$tranText02$baseURL$langCode$tranText06$langCode_en$tranText07$iconURL$langCode_en$iconTLA$tranText08
    needs to become
    $tranText01$langText_fr$tranText02$baseURL$langCode$tranText06$langCode_fr$tranText07$iconURL$langCode_fr$iconTLA$tranText08
    and reciprocally
    $tranText01$langText_fr$tranText02$tranServer$tranCommand$langCur$tranText03$langCur$tranText04$langCode_fr$tranText05$baseURL$tranText06$langCode_fr$tranText07$iconURL$langCode_fr$iconTLA$tranText08
    needs to become
    $tranText01$langText_en$tranText02$tranServer$tranCommand$langCur$tranText03$langCur$tranText04$langCode_en$tranText05$baseURL$tranText06$langCode_en$tranText07$iconURL$langCode_en$iconTLA$tranText08
    

    Remember that there are two versions of this string though, one encapsulated in JavaScript (using ‘document.write’) and the other free standing in the ‘NOSCRIPT’ element, just in case JavaScript isn’t used.

    Roller Weblogger improved blogroll display code for use with icons and images

    Here’s some code that improves on the default Roller Weblogger blogroll code to ensure that if you include an image / icon for your blogroll entries it displays the image and the blogroll entry name (good if your using icons).

    Using the default roller macro for displaying your blogroll means that no text is displayed if an image / icon URL is given. The default behaviour leaves rather empty lists of course, so I see this as an improvement.

    So this code is effectively a replacement for “#showBookmarkLinksList($rootFolder false false)”, although it still uses the same CSS notation for lists, so as not to disturb your design.

    It works with specific blogroll folders, so you do need to dictate which one your going to display (in the example below it’s “/My Blog Roll”). However this could be improved further to pick up the current folder name if you were to cycle through the sub folders (but I didn’t need it to do that, so I haven’t).

    
    #set($rootFolder = $model.weblog.getBookmarkFolder("/My Blog Roll"))
    #if ($rootFolder.bookmarks.size() > 0)
    
    <h2>My Blog Roll</h2>
    
    
    
    
      #foreach ($bookmark in $rootFolder.bookmarks)
    • $bookmark.name  $bookmark.name
    • #end
    #end

    Congratulations to Plaxo for sending me the most condescending email advert I’ve ever received

    Check this:

    Now supporting the Pound!

    You can now subscribe to Plaxo Premium using your hard earned Great British Pounds. Start your free 30-day trial

    You can now pay for your Plaxo Premium subscription using Her Majesty’s currency.

    Plaxo Premium includes a full set of tools that help you keep your calendar and contacts accessible, organised and safe.

    * Remove duplicates from your calendar and address book* *

    * Sync with your Windows Mobile phone* *

    * Automated backup and recovery of contacts* *

    * Send unlimited Premium eCards* *

    * 24/7 VIP phone and e-mail support

    Once you sign up, your credit card will not be charged for 30 days. You can cancel online at any time during the trial period.

    Plaxo Premium now payable by the perennial Pound! Go on give it a try!

    You know what ? They won’t be getting one of my hard earned ‘Great British Pounds’.

    Imagine an advert saying paying with your ‘Yankee Dollars’ or some such; next it’ll be attempting to remind me that I’m a Subject and not a Citizen, which I don’t need. Or that our unwritten constitution sits in our Law Lords heads.

    If that advert hasn’t been written by a naive ‘Yankee’ marketing noob, then I’d be well shocked.

    Toodle-Pip old bean, etc., anyway else you’d like to stereotype me while your at it ?

    Oh, and Plaxo, get a grip, just ’cause your buy out went through this month doesn’t mean you need to spam the world for cash. Or does it ?

    Although it does seem it appear that you’ve started to share *OUR* address book data that you hold online with your new masters at ComCast. Nice one. Whatever happened to probity ?

    See http://blog.plaxo.com/archives/2008/07/post_1.html#comments for more info.

    Not sure how I feel about Plaxo now, I mean I really enjoy social networking technology, and have used Plaxo for yonks (mainly ’cause of Sean Parker and Doug Clinton).

    But now I’m worried that they are going to exploit my online contact list, and that is just not acceptable.

    I’m going to watch what happens and migrate or shut down my account if I think they are being irresponsible with my contacts.

    And perhaps, in retrospect, you should think about investigating how they are sharing your contact lists as well.

    Oh no, not another redesign…

    A number of reasons drove me to redesign the site, in part due to frustration with the existing one and inspiration to try something different.

    My main frustrations were due to the fact I was posting a wide range of material whose messages I felt were getting mixed up.

    One of the criticism’s people had of my blog was that it jumped around between high (detailed overviews of UK Gov. G2G sysetms) and low brow (going for a walk) too quickly. It had been my original intent to go with this, and that’s why the blog was originally called ‘eclectic’, but I’ve found it’s a little too jarring for people to handle, and I suspect was turning them off. By getting them to choose between different categories I’m hoping that they’ll pick up on that ‘channel’ and become familiar with it before trying the others. I think of this issue as one of signal to noise, however I suppose different readers signal is another’s readers noise.

    Most people who have been through this learning curve move to multiple blogs, but I wanted an aggregated page, plus I had fun overloading some of the Roller macros to allow category specific functionality.

    My frustration is that I’m sick to the gills of Facebook and the ilk, they are all just so much lock in to closed systems. Frankly I want all of these social applications to integrate. Now. For instance rather than have LinkedIn, Namyz, Xing, etc. keeping records of my professional contacts I just want a blended service where all my professional contacts are visible to me in a single data set, even if they are actually separate and multiple data sources (and wherever the data might actually be).

    And I don’t want this applications to be shunting my data around in a haphazard manner, I’d rather just be able to view the information as a unified stream.

    Just because the big three of MySpace, Facebook and Google have said that they will ‘play nice’ they are all, to a man, going to be ring fencing their user populations. They will attempt this with guile initially, then with ‘attractive’ *new* features, and finally with strong arm tactics. Eventually they will lose out, because if it’s not open, how ‘social’ is it really.

    I’d started to feel that what was needed was a non-Facebook Facebook profile page, and once I’d seen Cal Henderson’s ‘iamcal‘ it all started to fall into place. Cal’s page was a real source of inspiration, and I hope that if he sees my current design that he likes it.

    What I’m effectively going for is ‘Radical Transparency‘, mainly as put forward by Clive Thompson’s Wired article “The see through CEO“, and by Chris Anderson’s blog ‘The Long Tail‘ (in fact check out this recent article “You may be on Facebook, but the money’s in the Long Tail“).

    Last week I was coming back from London on the late train from Euston and bumped into Chris Loughran from Deloitte, who was also doing the London to Birmingham trek. I was really pleased when, after showing him the new design, he immediately said ‘Radical Transparency’, because I knew I had ‘hit the nail on the head’ as it was obvious to him what I was trying to achieve.

    You can see what I mean if you have a look at my new front page over at: http://blogs.sun.com/eclectic/

    You should be able to see that I’ve collated recent blog entries, by ‘Category’, over on the left hand side (each of the Categories loads a different look and feel, which I’m hoping won’t be too disturbing for the readers, but will keep the separate nature of the contents in mind).

    The centre is taken over by a tag graph combo, along with stuff I’m doing (including books I’m reading, music, films, all via All Consuming, sms via Twitter, online ‘radio’ via Last.fm, and a photo stream from Flickr).

    Over on the right are some contact details, about the site, upcoming talks and presentations, and other pages accessable via the site.

    The last section is a rss feed of the last blog post of my four favorite blogs, those of Alan Mather, Bill Vass, Mick Farren, and Tim Caynes.

    I hope you like the new design, it appears to be popular, in that I’m converting more hits to page reads and multiple pages too.

    There are a couple of things to complete, such as tidying up some of the code, finish re-implementing the multi-locale aspects of the site (although I doubt I’ll post machine translated blog posts again anytime soon), and finishing off a sitemap.

    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: https://horkan.com/2008/04/22/blog-ping-search-submitter-seo

    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 ?

    Yes.

    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: http://java.com/en/download/index.jsp

    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: http://java.sun.com/javase/6/webnotes/install/system-configurations.html

    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 http://blogs.sun.com).

    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: http://download.netbeans.org/netbeans/6.0/final/

    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: http://ws.apache.org/xmlrpc/

    The ProGuard libraries, version 4.2, also which you don’t need to run this software, available here: http://proguard.sourceforge.net/

    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: http://blogs.sun.com/eclectic/

    Link to the Blog Ping application page here: https://horkan.com/2008/04/22/blog-ping-search-submitter-seo

    And comments here please: https://horkan.com/2008/04/22/blog-ping-search-submitter-seo#comments

    There are also online services like ‘Pingoat’ and ‘King Ping’ which act as ‘Blog Ping aggregators’ for you, you can find them at http://www.pingoat.com and http://www.kping.com 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.