<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:planet="http://planet.intertwingly.net/" xmlns:indexing="urn:atom-extension:indexing" indexing:index="no"><access:restriction xmlns:access="http://www.bloglines.com/about/specs/fac-1.0" relationship="deny"/>
  <title>Planet Javasummit</title>
  <updated>2012-05-17T03:00:47Z</updated>
  <generator uri="http://intertwingly.net/code/venus/">Venus</generator>
  <author>
    <name>Russell Coker</name>
    <email>russell@coker.com.au</email>
  </author>
  <id>http://planet.coker.com.au/java/atom.xml</id>
  <link href="http://planet.coker.com.au/java/atom.xml" rel="self" type="application/atom+xml"/>
  <link href="http://planet.coker.com.au/java/" rel="alternate"/>

  <entry xml:lang="en">
    <id>http://xkcd.com/1056/</id>
    <link href="http://xkcd.com/1056/" rel="alternate" type="text/html"/>
    <title>Felidae</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><img alt="'Smilodon fatalis' narrowly edged out 'Tyrannosaurus rex' to win this year's Most Badass Latin Names competition, after edging out 'Dracorex hogwartsia' and 'Stygimoloch spinifer' (meaning 'horned dragon from the river of death') in the semifinals." src="http://imgs.xkcd.com/comics/felidae.png" title="'Smilodon fatalis' narrowly edged out 'Tyrannosaurus rex' to win this year's Most Badass Latin Names competition, after edging out 'Dracorex hogwartsia' and 'Stygimoloch spinifer' (meaning 'horned dragon from the river of death') in the semifinals."/></div>
    </summary>
    <updated>2012-05-16T04:00:00Z</updated>
    <source>
      <id>http://xkcd.com/</id>
      <author>
        <name>XKCD</name>
      </author>
      <link href="http://xkcd.com/" rel="alternate" type="text/html"/>
      <link href="http://www.xkcd.com/rss.xml" rel="self" type="application/rss+xml"/>
      <subtitle>xkcd.com: A webcomic of romance and math humor.</subtitle>
      <title>xkcd.com</title>
      <updated>2012-05-16T04:00:44Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://syndication.thedailywtf.com/7316</id>
    <link href="http://thedailywtf.com/Articles/Long-Distance.aspx" rel="alternate" type="text/html"/>
    <title>Long Distance</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p><b>Lawrence</b>'s employer had heard that this newfangled "Desktop PC" could reduce their IT costs, and they wanted in on it. It was the mid 80s, and at the time, their plants scattered all over Alabama connected to a central mainframe via dumb terminals connected over very expensive leased lines. It was time to upgrade, and Lawrence wasn't in charge of it. He didn't get called in until things went wrong.
</p><p>
"This new PC system is <i>really slow</i>," he was told while on a plant tour. That didn't sound likely- the PCs were running blisteringly fast 4.77MHz, 8088 CPUs with 16Kb of RAM, and since someone had connected "arithmetic-heavy accounting usage" to "floating point processing", they all had 8087 co-processors. There was no way they were slow, especially since half the time they were just running a 3270 terminal emulator.
</p><p>
But sure enough, when they fired up the terminal emulator, it was slower than anything. Going from the login screen to the menu, and then from the menu to the order fulfillment screen took multiple minutes. Was the 300-baud smartmodem that slow? Lawrence fiddled connections, tested the line, and then eventually got around to cranking the volume on the modem's speaker. No, the modem wasn't that slow. 
</p><p>
Whoever had configured the deployment had tried to mirror their old system as closely as possible. In the old system, the terminal started a new connection every time the user pressed enter, and then disconnected from the mainframe until the user triggered the next command. So in the new system, they did the same thing- which meant each time the client finished loading a screen, the modem would hang up.
</p><p>
That particular problem was easy <span title="click me!">to fix</span>&lt;script src="http://www.cornify.com/js/cornify.js" type="text/javascript"&gt;&lt;/script&gt;, and simply involved making sure each PC had its own phone line, and that the terminal emulator made sure to keep the connection open. But one of their remote offices, someplace deep in the Alabama backwoods, proved intractable- they couldn't connect at all.
</p><p>
Lawrence tried diagnosing their problem remotely at first. The phone line seemed good- he could dial it; the plant users could dial out. He shipped them a fresh modem, and eventually a fresh PC, but nothing seemed to make a difference. They couldn't dial the mainframe. So he had to go out to the plant.
</p><p>
Having learned his lesson, the first thing Lawrence did was crank the volume on the modem speaker. When the computer attempted to dial out, he heard the sound of touchtone bleeps followed by a crackly voice saying, "Number please."
</p><p>
That particular plant was so back in the backwoods of Alabama that it didn't have direct-dial long distance. The users were so used to it that they didn't even think it could be the problem. The small town phone company had no firm plan when they would start doing it. Lawrence helped pack up the PCs and reinstall the dumb terminals. By the time he left that company, they were still using them. They might still be using them today.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/grzFKMyX3hUy_kzbf9x44LvnCbI/0/da"><img border="0" ismap="true" src="http://feedads.g.doubleclick.net/~a/grzFKMyX3hUy_kzbf9x44LvnCbI/0/di"/></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/grzFKMyX3hUy_kzbf9x44LvnCbI/1/da"><img border="0" ismap="true" src="http://feedads.g.doubleclick.net/~a/grzFKMyX3hUy_kzbf9x44LvnCbI/1/di"/></a></p><img height="1" src="http://feeds.feedburner.com/~r/TheDailyWtf/~4/fudv1RqQ4iY" width="1"/></div>
    </summary>
    <updated>2012-05-15T13:00:00Z</updated>
    <category term="Feature Articles"/>
    <author>
      <name>Remy Porter</name>
    </author>
    <source>
      <id>http://thedailywtf.com/</id>
      <link href="http://thedailywtf.com/" rel="alternate" type="text/html"/>
      <link href="http://syndication.thedailywtf.com/TheDailyWtf" rel="self" type="application/rss+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <subtitle>Curious Perversions in Information Technology</subtitle>
      <title>The Daily WTF</title>
      <updated>2012-05-17T01:00:49Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-us">
    <id>http://www.tbray.org/ongoing/When/201x/2012/05/02/Web-Futurez</id>
    <link href="http://www.tbray.org/ongoing/When/201x/2012/05/02/Web-Futurez" rel="alternate" type="text/html"/>
    <link href="http://www.tbray.org/ongoing/When/201x/2012/05/02/Web-Futurez#comments" rel="replies" type="application/xhtml+xml"/>
    <title xml:lang="en-us">Browsers and Apps in 2012</title>
    <summary type="xhtml" xml:lang="en-us"><div xmlns="http://www.w3.org/1999/xhtml">It’s like this: The browser’s doomed, because apps are the future. Wait! Apps are doomed because HTML5 is the future.  I see something almost every day saying one or the other.  Only it’s mostly wrong.</div>
    </summary>
    <content type="xhtml" xml:lang="en-us"><div xmlns="http://www.w3.org/1999/xhtml"><p>It’s like this: The browser’s doomed, because apps are the future. Wait!
Apps are doomed because HTML5 is the future.  I see something almost every day
saying one or the other.  Only it’s mostly wrong.</p>
<p><i>[If you don’t want to read my opinions, 
<a href="http://www.tbray.org/ongoing/When/201x/2012/05/02/#p-4">hop to the end of this post</a> for
months &amp; months worth of links to things I thought worth reading on the
subject.]</i></p>
<h2 id="p-1">Apps Win</h2>
<p>If you want immersive/interactive polish, with ultra-fine control over
your gradients and textures and how the things on the screen react to being
touched, <em>you need an app</em>.</p>
<p>If you want to capture what the phone can see,
permute that image’s colors based on how hard you shake it, and vibrate
in the user’s hand to say it’s time to stop shaking, <em>you need an app</em>.</p>
<p>If you want to make an urgent phone call based on detecting that you’re within
five minutes’ drive of your destination, <em>you need an app</em>.</p>
<p>If you want to be featured in a phone’s electronic storefront, and then be
purchased effortlessly with a couple of taps, and have the charge end up on
the monthly phone bill,  <em>you need an app</em>.</p>
<p>If you want to port your existing C++ shooter which is based on one of the big gaming engines to a
new mobile platform, <em>you need an app</em>.</p>
<h2 id="p-2">Browsers Win</h2>
<p>If your app is mostly about delivering highly-readable text that flows around
pictures and contains navigational links, <em>be in the browser</em>.</p>
<p>If you don’t
want to be in anyone else’s storefront and pay them a piece of the
action for access to the customers, <em>be in the browser</em>.</p>
<p>If you don’t have the budget to write an Android
app and an iOS app and (soon, maybe) a Windows Phone app, <em>be in the
browser</em>.</p>
<p>If you want to be sure you can reach everybody everywhere, even the ones
who aren’t rich enough or hip enough to have the latest pocket jewel, <em>be
in the browser</em>.</p>
<p>If you need to be sure you can update your app, not in iOS’ weeks or
Android’s however-long-until-the-user-updates, but <em>right now</em>, then
<em>be in the brower</em>.</p>
<h2 id="p-5">Tiny Case Study</h2>
<p>The apps-are-the-future absolutists like to point to Instagram and yep,
it’s interesting, all right.  Consider
<a href="http://instagr.am/p/J0zCKDj2ZR/">this dreamy photo</a> by
<a href="http://www.hanselman.com/blog/">Scott
Hanselman</a>. Is it part of the Web? Well, it must be, because I just linked to
it. But can you
<a href="https://www.google.com/search?sourceid=chrome&amp;ie=UTF-8&amp;q=%22babies+on+bikes+by+a+big+sky%22">find
it in Google</a>? Not directly, because Instagram explicitly tells the search
engines to
<a href="http://instagr.am/robots.txt">go away</a>.  But, well, you sort of
can anyhow. Does the example really prove anything? You decide.</p>
<h2 id="p-3">Developers! Developers! Developers!</h2>
<p>Pardon me while I get a little geeky and address the Morlocks
in the mobile sausage factories:</p>
<ul>
<li><p>HTML5/Browser technology is moving forward fast; which will be changing
some of the trade-offs above. But then, so is mobile-app technology. It’s
complicated.</p></li>
<li><p>The mobile-app programming models are better than the
rococo pandemonium of DOM and JS and CSS and friends. Otherwise,
why do things like CoffeeScript and Dart and WebSockets need to exist?
It’s complicated.</p></li>
<li><p>There are very few pure things in this world; lots and lots of apps
have WebViews inside, doing the heavy content-display lifting.  Did I say it’s
complicated?</p></li>
</ul>
<p>It seems very likely to me that there’s something simple and beautiful
lurking inside the browser platform that will hit the greatest 80/20 point in
software history.  But I’ve been thinking that for a decade or more, now.</p>
<h2 id="p-4">Further Reading</h2>
<p>Of course, this will be out-of-date the morning after I hit “publish”. But
still.</p> 
<ul>
<li><p><a href="http://techcrunch.com/2011/12/17/this-is-not-the-net-you-thought-you-knew/">This Is Not The Net You Thought You Knew</a>
by Jon Evans, 2011/12. Tl;dr: There are lots of new technologies behind the
scenes.</p></li>
<li><p><a href="http://infrequently.org/2012/04/bedrock/">Bedrock</a> by Alex
Russell, 2012/4. TL;dr: Lengthy but dense ramblings on the nature of the
browser platform; contains the phrase “Turing tar pit”.</p></li>
<li><p><a href="http://www.codinghorror.com/blog/2012/04/will-apps-kill-websites.html">Will
Apps Kill Websites?</a> by Jeff Atwood, 2012/4. Tl;dr: No.</p></li>
<li><p><a href="http://www.hanselman.com/blog/AppsAreTooMuchLike1990sCDROMsAndNotEnoughLikeTheWeb.aspx">Apps are too much like 1990's CD-ROMs and not enough like the Web</a>
by Scott Hanselman, 2011/12. Tl;dr: “The real win is linking”.</p></li>
<li><p><a href="http://www.wired.com/epicenter/2012/04/ff_andreessen/all/1">The Man Who Makes the Future: <cite>Wired</cite> Icon Marc Andreessen</a>
by Chris Anderson, 2012/04. Tl;dr: Those who are ignorant of history are
doomed to repeat it. But Marca gives money to Republicans these days thus his
current opinions can safely be ignored.</p></li>
<li><p>
<a href="http://www.readwriteweb.com/mobile/2012/04/defining-the-post-app-economy.php">Defining the Post-App Economy</a>
by Dan Rowinsky, 2012/4, and
<a href="http://mashable.com/2012/05/06/apple-bet-against-web/">Why Apple Won by Betting Against the Web</a>
by Sarah Kessler, 2012/5. Tl;dr: HTML5 is groovy, but not just yet.</p></li>
<li><p><a href="http://www.guardian.co.uk/media/appsblog/2012/apr/24/financial-times-web-app-2m">Financial Times passes 2m users for its HTML5 web app</a>
by Stuart Dredge, 2012/04, and 
<a href="http://boingboing.net/2012/05/08/why-tech-review-is-di.html">Why <cite>Tech Review</cite> is ditching its iPad edition</a>
by Cory Doctorow, 2012/5.
Tl;dr: The browser is for <em>publishing</em>, amirite?</p></li>
<li><p><a href="http://blog.pamelafox.org/2012/05/triggering-numeric-keyboards-with-html5.html">Triggering Numeric Keyboards with HTML5</a>
by Pamela Fox, 2012/5, and
<a href="http://sandofsky.com/blog/shell-apps.html">Shell Apps and
Silver Bullets</a> by Benjamin Sandofsky, 2012. 
Tl;dr: The mobile Web is hard.</p></li>
<li><p><a href="http://www.readwriteweb.com/archives/apps-arent-dead-neither-is-the-web-the-parrot-is-though.php">Apps Aren't Dead. Neither is The Web. The Parrot Is, Though...</a>
by  Richard MacManus, 2012/5. Tl;dr: “This isn't an ‘X is dead’ kind of
article”.</p></li>
</ul></div>
    </content>
    <updated>2012-05-15T07:54:17Z</updated>
    <published>2012-05-02T19:00:00Z</published>
    <category scheme="http://www.tbray.org/ongoing/What/" term="Technology/Web"/>
    <category scheme="http://www.tbray.org/ongoing/What/" term="Technology"/>
    <category scheme="http://www.tbray.org/ongoing/What/" term="Web"/>
    <source>
      <id>http://www.tbray.org/ongoing/</id>
      <icon>http://www.tbray.org/favicon.ico</icon>
      <logo>http://www.tbray.org/ongoing/rsslogo.jpg</logo>
      <author>
        <name>Tim Bray</name>
      </author>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.tbray.org/ongoing/" rel="alternate" type="text/html"/>
      <link href="http://www.tbray.org/ongoing/ongoing.atom" rel="self" type="application/atom+xml"/>
      <link href="http://www.tbray.org/home/tbray.org/www/html/ongoing/comments.atom" rel="replies" type="text/html"/>
      <rights xml:lang="en-us">All content written by Tim Bray and photos by Tim Bray Copyright Tim Bray, some rights reserved, see /ongoing/misc/Copyright</rights>
      <subtitle xml:lang="en-us">ongoing fragmented essay by Tim Bray</subtitle>
      <title xml:lang="en-us">ongoing by Tim Bray</title>
      <updated>2012-05-16T17:44:02Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://syndication.thedailywtf.com/7318</id>
    <link href="http://thedailywtf.com/Articles/FAIL-FAIL,FAIL-FAIL,FAIL-FAIL-and-More.aspx" rel="alternate" type="text/html"/>
    <title>Coded Smorgasbord: FAIL FAIL,FAIL FAIL,FAIL FAIL and More</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>"We're had been using a manufacturer's web service, but started getting errors all of a sudden," wrote <b>Peter Lindgren</b>. "Something has really, really failed."</p>
<blockquote>
<pre>&lt;StatusCode&gt;InternalServerError&lt;/StatusCode&gt;
&lt;StatusDescription&gt;Internal Server Error&lt;/StatusDescription&gt;
&lt;WebHeaders&gt;
  &lt;X-Backside-Transport&gt;FAIL FAIL,FAIL FAIL,FAIL FAIL&lt;/X-Backside-Transport&gt;
&lt;/WebHeaders&gt;</pre>
</blockquote>
<p>"Fortunately, a short time later, it started working again with this message."</p>
<blockquote>
<pre>&lt;StatusCode&gt;OK&lt;/StatusCode&gt;
&lt;StatusDescription&gt;OK&lt;/StatusDescription&gt;
&lt;WebHeaders&gt;
  &lt;X-Backside-Transport&gt;OK OK,OK OK,OK OK&lt;/X-Backside-Transport&gt;
&lt;/WebHeaders&gt;</pre>
<blockquote>
<p>"I'm not sure of the purpose of this," <b>Jasmine</b> wrote via the <a href="http://inedo.com/downloads/submit-to-wtf">Submit to The Daily WTF visual studio extension</a>, "maybe the stack was just too small or something?"</p>
<blockquote>
<pre>Public Function Save() As Boolean
    Try
        SaveMeeting()
    Catch ex As Exception
        Throw ex
    End Try
End Function</pre>
</blockquote>
<p> </p>
<p>"I was asked to modify some simple web page used to generate an online store," <b>Mihai Todor</b> wrote, "here's a Javascript function that I found in it, which is used to validate the required fields."</p>
<blockquote>
<pre>function checkdata() {
    dataok = true;
    t1 = document.forms.signup.firstName.value;
    t2 = document.forms.signup.lastName.value;
    t3 = document.forms.signup.userName.value;
    t4 = document.forms.signup.password.value;
    t5 = document.forms.signup.passwordConfirm.value;
    t6 = document.forms.signup.email.value;
    t7 = document.forms.signup.url.value;
    t8 = document.forms.signup.adminFrontname.value;
    t9 = document.forms.signup.locale.options.selectedIndex;
    t10 = document.forms.signup.currency.options.selectedIndex;
    t11 = document.forms.signup.timezone.options.selectedIndex;
    t12 = document.forms.signup.packetType.options.selectedIndex;
    t13 = document.forms.signup.captcha_code.value;
    if(t1 == '' || t2 == '' || t3 == '' || t4 == '' || t5 == '' || t6 == '' || t7 == '' || t8 == ''){
        alert("Please fill-up all the fields");
        dataok = false; return(dataok);}
    if(t4 != t5){
        alert("Please enter the password again");
        dataok = false; return(dataok);}
    if(t9 == 0){
        alert("Please select a locale");
        dataok = false; return(dataok);}
    if(t10 == 0){
        alert("Please select a currency");
        dataok = false; return(dataok);}
    if(t11 == 0){
        alert("Please select a time zone");
        dataok = false; return(dataok);}
    if(t12 == 0){
        alert("Please select a packet type");
        dataok = false; return(dataok);}
    if(t13 == ''){
        alert("Please fill-up the code field");
        dataok = false; return(dataok);}
    return(dataok);
}</pre>
</blockquote>
<p> </p>
<p>"I've seen these types of constants on <em>The Daily WTF</em> before and always questioned if they were real," wrote <b>Sterge</b>, "and then I saw these."</p>
<blockquote>
<pre>public static final String SLASH = "/";
public static final String PERCENT = "%";</pre>
</blockquote>
<p> </p>
<p>"I'm on a team that maintains a pretty 'serious' banking application," <b>Giga B</b> wrote, "it's pretty serious about the number of parameters in functions."</p>
<blockquote>
<pre>public void WriteStep1Data(int LoanRequestID,
                           string InsertDate,
                           string OperatorID,
                           string FirstName,
                           string LastName,
                           string BirthDay,
                           int DocuemntTypeID,
                           int MaritialStatusID,
                           string DocumentIssueDate,
                           string DocumentExpireDate,
                           string DocumentIssuer,
                           string DocumentNo,
                           string PersonalNo,
                           int UniversityDegreeID,
                           string Address,
                           string Address2,
                           int RealAddressLivingPeriod,
                           int ChildrenCount,
                           int FamilyMembersCount,
                           decimal MonthlyIncome,
                           decimal MonthlyFamilyExpanses,
                           string HomePhoneNumber,
                           string MobilePhoneNumber,
                           string WorkPhoneNumber,
                           string EmailAddress,
                           string JobOrganizationName,
                           string JobOrganizationAddress,
                           string JobOrganizationActivity,
                           string JobOrganizationPhoneNumber,
                           string JobPosition,
                           string JobWorkingYears,
                           string JobBossName,
                           string JobBossPhoneNumber,
                           byte ClientSex,
                           decimal FinTotalProductsAmount,
                           decimal FinCommissionAmount,
                           int FinLoanPeriod,
                           decimal FinFirstPaymentAmount,
                           decimal FinLoanAmount,
                           decimal FinMonthlyPaymentAmount,
                           string GuarantorName,
                           string GuarantorLastName,
                           string GuarantorBirthDate,
                           string GuarantorPersonalNo,
                           int? GuarantorDocType,
                           string GuarantorDocumentNo,
                           string GuarantorDocIssuer,
                           string GuarantorDocIssueDate,
                           string GuarantorDocExpireDate,
                           string GuarantorTelHome,
                           string GuarantorTelMobile,
                           string GuarantorAddress,
                           string GuarantorAddressReal,
                           string GuarantorJobName,
                           decimal GuarantorIncome,
                           byte? GuarantorSex,
                           decimal HistoryPlaticAnnualTurnOver,
                           string HistoryDescription,
                           string MarketingQ1,
                           string MarketingQ2,
                           int StatusID,
                           string DateViewed,
                           string DateAnswered,
                           string BackOfficeUserID,
                           string RepaymentDate,
                           string ShopID,
                           string CalculationGroupID,
                           decimal RegFeeAmount,
                           int clientDeptNo,
                           int guarantorDeptNo,
                           int guarantorMaritialStatusID,
                           string AccountCodeWord,
                           string ClientFatherName,
                           string ClientBirthPlace,
                           string ClientCityAttendingToReg,
                           string GuarantorFatherName,
                           string GuarantorBirthPlace,
                           string GuarantorCityAttendingToReg,
                           string GuarantorJobActivity,
                           string GuarantorJobPosition,
                           string GuarantorJobContactPhone,
                           string GuarantorJobCodeWord,
                           string GuarantorEmailAddress
    )
{
   ... snip a few hundred lines ...
}
</pre>
</blockquote>
<p> </p>
<p>"I learned a neat trick from our enterprise framework," <b>Eli</b> noted, "if you want to convert an int to a double, just do this!"</p>
<blockquote>
<pre>double d = Double.valueOf(new Integer(i).toString()).doubleValue();</pre>
</blockquote>
<p> </p>
<p>"I had to look over some C# code written by a colleague of mine," notes <b>John D</b>, "the following lines represent just the tip of the iceberg of the pain that I had to go through while understanding the code."</p>
<blockquote>
<pre>bool true1 =true;
bool true12 = true;
.... snip ....
true1 = false;
true1 = false;</pre>
</blockquote>
<p> </p>
<p>"I found this pattern in source code I have been working on," wrote <b>Nas Nubian</b>, "this is how some developer decided to open a new window for when users click on a links."</p>
<blockquote>
<pre>&lt;a href="/the/path/to/the/url" 
  onclick="window.open(this.getAttribute('href'),'_blank');return false;"&gt;
  link text
&lt;/a&gt;</pre>
</blockquote>
<p> </p>
<p>"So," wonders <b>Johnny B</b>, "I guess GUID from our production db servers are better than local GUID?"</p>
<blockquote>
<pre>Function GetNewGuid()
    Dim cnGuid, rsGuid
    
    Set cnGuid = CreateObject("ADODB.Connection")
    Set rsGuid = CreateObject("ADODB.Recordset")

    cnGuid.Open = _
        "Provider=SQLOLEDB.1;" + 
        "Data Source=&lt;production server&gt;; " + 
        "Initial Catalog=&lt;production DB&gt; " +
        "user id = '********';" + 
        "password='*********'""

    rsGuid.Open "SELECT newid() as Guid", cnGuid

    If Not rsGuid.EOF Then
        GetNewGuid = rsGuid("Guid").Value
    End If
End Function</pre>
</blockquote>
<p> </p>
<p>"The comment says it all," wrote <b>Michael</b>.</p>
<blockquote>
<pre>/**
 * Defines the value for none. Default is "none".
 */
public static String NONE = "none";</pre>
</blockquote>
<p> </p>
<p>"This is snippet of code I found in a large program I maintain," wrote <b>Brian</b>. "The original developers have long since moved on. Funnily enough, this particular code was properly mutexed, but I guess the paranoid programmer doesn't trust mutexes. I only wish the original developers were so 'paranoid' when it came to avoiding things like buffer overflows, memory leaks, and sql injection."</p>
<blockquote>
<pre>if ( resData.state() == RESOURCE_STATE_ACTIVE )
{
    elapsedTime.setBase( resData.startTime() );
    if ( elapsedTime.diff() &gt;= maxDuration )
    {
        // Do one more validity check, the paranoid programmer knows
        // the state may have changed since the last check.
        if ( resData.state() == RESOURCE_STATE_ACTIVE )
        {
            resourceActiveTooLong( resData );
        }
    }
}</pre>
</blockquote>
<p> </p>
</blockquote></blockquote>
<p><a href="http://feedads.g.doubleclick.net/~a/HBZc6_Cj5XIqGL2A-v9v8vRi0FU/0/da"><img border="0" ismap="true" src="http://feedads.g.doubleclick.net/~a/HBZc6_Cj5XIqGL2A-v9v8vRi0FU/0/di"/></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/HBZc6_Cj5XIqGL2A-v9v8vRi0FU/1/da"><img border="0" ismap="true" src="http://feedads.g.doubleclick.net/~a/HBZc6_Cj5XIqGL2A-v9v8vRi0FU/1/di"/></a></p><img height="1" src="http://feeds.feedburner.com/~r/TheDailyWtf/~4/_jSBPsPVWHM" width="1"/></div>
    </summary>
    <updated>2012-05-14T13:00:00Z</updated>
    <category term="Coded Smorgasbord"/>
    <author>
      <name>Alex Papadimoulis</name>
    </author>
    <source>
      <id>http://thedailywtf.com/</id>
      <link href="http://thedailywtf.com/" rel="alternate" type="text/html"/>
      <link href="http://syndication.thedailywtf.com/TheDailyWtf" rel="self" type="application/rss+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <subtitle>Curious Perversions in Information Technology</subtitle>
      <title>The Daily WTF</title>
      <updated>2012-05-17T01:00:50Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-us">
    <id>http://www.tbray.org/ongoing/When/201x/2012/05/13/Red</id>
    <link href="http://www.tbray.org/ongoing/When/201x/2012/05/13/Red" rel="alternate" type="text/html"/>
    <link href="http://www.tbray.org/ongoing/When/201x/2012/05/13/Red#comments" rel="replies" type="application/xhtml+xml"/>
    <title xml:lang="en-us">Red</title>
    <summary type="xhtml" xml:lang="en-us"><div xmlns="http://www.w3.org/1999/xhtml">Particularly intense botanical red; it remains the Achilles’ heel of the sensor in many (all?) digicams.  I often see things in my garden that I just can’t get close to with the combination of camera and screen; hm, perhaps the problem is computer screens not camera sensors? Here we have some Japanese maple leaves against blue sky.</div>
    </summary>
    <content type="xhtml" xml:lang="en-us"><div xmlns="http://www.w3.org/1999/xhtml"><p>Particularly intense botanical red; it remains the Achilles’ heel of the
sensor in many (all?) digicams.  I often see things in my garden that I
just can’t get close to with the combination of camera and screen; hm, perhaps
the problem is computer screens not camera sensors?
Here we have some Japanese maple leaves against blue sky.</p>
<img alt="Red Japanese maple leaves against blue sky" src="http://www.tbray.org/ongoing/When/201x/2012/05/13/RUNE5040.png"/>
<p>The leaves were actually redder than this, but at least the sensor, while
losing some of the intensity, managed to get close to the tint.</p></div>
    </content>
    <updated>2012-05-14T04:12:08Z</updated>
    <published>2012-05-13T19:00:00Z</published>
    <category scheme="http://www.tbray.org/ongoing/What/" term="Arts/Photos"/>
    <category scheme="http://www.tbray.org/ongoing/What/" term="Arts"/>
    <category scheme="http://www.tbray.org/ongoing/What/" term="Photos"/>
    <source>
      <id>http://www.tbray.org/ongoing/</id>
      <icon>http://www.tbray.org/favicon.ico</icon>
      <logo>http://www.tbray.org/ongoing/rsslogo.jpg</logo>
      <author>
        <name>Tim Bray</name>
      </author>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.tbray.org/ongoing/" rel="alternate" type="text/html"/>
      <link href="http://www.tbray.org/ongoing/ongoing.atom" rel="self" type="application/atom+xml"/>
      <link href="http://www.tbray.org/home/tbray.org/www/html/ongoing/comments.atom" rel="replies" type="text/html"/>
      <rights xml:lang="en-us">All content written by Tim Bray and photos by Tim Bray Copyright Tim Bray, some rights reserved, see /ongoing/misc/Copyright</rights>
      <subtitle xml:lang="en-us">ongoing fragmented essay by Tim Bray</subtitle>
      <title xml:lang="en-us">ongoing by Tim Bray</title>
      <updated>2012-05-16T17:44:02Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://xkcd.com/1055/</id>
    <link href="http://xkcd.com/1055/" rel="alternate" type="text/html"/>
    <title>Kickstarter</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><img alt="If you pledge more than $50 you'll get on the VIP list and have first dibs on a slot on ANY of the pledge levels in the actual campaign." src="http://imgs.xkcd.com/comics/kickstarter.png" title="If you pledge more than $50 you'll get on the VIP list and have first dibs on a slot on ANY of the pledge levels in the actual campaign."/></div>
    </summary>
    <updated>2012-05-14T04:00:00Z</updated>
    <source>
      <id>http://xkcd.com/</id>
      <author>
        <name>XKCD</name>
      </author>
      <link href="http://xkcd.com/" rel="alternate" type="text/html"/>
      <link href="http://www.xkcd.com/rss.xml" rel="self" type="application/rss+xml"/>
      <subtitle>xkcd.com: A webcomic of romance and math humor.</subtitle>
      <title>xkcd.com</title>
      <updated>2012-05-16T04:00:44Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://etbe.coker.com.au/?p=3304</id>
    <link href="http://etbe.coker.com.au/2012/05/13/really-want-from-nbn/" rel="alternate" type="text/html"/>
    <title>What I REALLY Want from the NBN</title>
    <summary>Generally I haven’t had a positive attitude towards the NBN. It doesn’t seem likely to fulfill the claims of commercial success and would be a really bad thing to privatise anyway. Also it hasn’t seemed to offer any great benefits either. The claim that it will enable lots of new technical developments which we can’t [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Generally I haven’t had a positive attitude towards the NBN. It doesn’t seem likely to fulfill the claims of commercial success and would be a really bad thing to privatise anyway. Also it hasn’t seemed to offer any great benefits either. The claim that it will enable lots of new technical developments which we can’t even imagine yet that aren’t possible with 25Mb/s ADSL but which also don’t require more than the 100Mb/s speed of the NBN never convinced me.</p>
<p>But one thing it could really do well is to give better Internet access in remote areas. Ideally with static or near-static IPv6 addresses (because we have already run out of IPv4 addresses). Currently 3G networks do all sorts of nasty NAT things to deal with the lack of IPv4 addresses which causes a lot of needless pain if you have a server connected via 3G. One of the NBN plans is for wireless net access to remote homes, with some sanity among the people designing the network such NBN connections would all have static IPv6 subnets as long as they don’t move.</p>
<p>I’m currently working on a project that involves servers on 3G links. I don’t have a lot of options on implementation due to hardware and software constraints. So if the ISPs using the NBN and the NBN itself (for the wireless part) could just give us all IPv6 static ranges then lots of problems would be solved.</p>
<p>Of course I don’t have high hopes for this. One of the many ways that the NBN has been messed up is in allowing the provision of lower speed connections. As having an ADSL2+ speed NBN connection is the cheapest option a lot of people will choose it. Therefore the organisations providing services will have to do so with the expectation that most NBN customers have ADSL2+ speed and thus they won’t provide services to take advantage of higher speeds.</p>
<p>Related posts:</p><ol>
<li><a href="http://etbe.coker.com.au/2008/10/07/rpc-and-se-linux/" rel="bookmark" title="RPC and SE Linux">RPC and SE Linux</a> <small>One ongoing problem with TCP networking is the combination of...</small></li>
<li><a href="http://etbe.coker.com.au/2008/08/05/new-strategy-xen-mac-allocation/" rel="bookmark" title="A New Strategy for Xen MAC Allocation">A New Strategy for Xen MAC Allocation</a> <small>When installing Xen servers one issue that arises is how...</small></li>
<li><a href="http://etbe.coker.com.au/2008/07/28/new-net-connections/" rel="bookmark" title="New Net Connections">New Net Connections</a> <small>On Thursday my new InterNode ADSL2+ service was connected [1]....</small></li>
</ol></div>
    </content>
    <updated>2012-05-13T08:13:22Z</updated>
    <category term="Networking"/>
    <author>
      <name>etbe</name>
    </author>
    <source>
      <id>http://etbe.coker.com.au</id>
      <link href="http://etbe.coker.com.au/feed/" rel="self" type="application/atom+xml"/>
      <link href="http://etbe.coker.com.au" rel="alternate" type="text/html"/>
      <subtitle>Linux, politics, and other interesting things</subtitle>
      <title>etbe - Russell Cokeretbe - Russell Coker</title>
      <updated>2012-05-13T09:00:46Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://syndication.thedailywtf.com/7317</id>
    <link href="http://thedailywtf.com/Articles/Squared-Interior-Design.aspx" rel="alternate" type="text/html"/>
    <title>Error'd: Squared Interior Design</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p><a name="Pic4"/>"I found this ad for an interior design company," wrote <b>Wouter</b>, "they probably do a lot of rectangular designs."</p>
<blockquote>
<p><a href="http://syndication.thedailywtf.com/TheDailyWtf#Pic4"><img alt="" border="0" src="http://img.thedailywtf.com/images/12/q3/e12/IMAG0158.jpg"/></a></p>
<p> </p>
</blockquote>
<p><a name="Pic1"/>"How am I supposed to troubleshoot this?" wonders <b>Jeff Mitchell</b>.</p>
<blockquote>
<p><a href="http://syndication.thedailywtf.com/TheDailyWtf#Pic1"><img alt="" border="0" src="http://img.thedailywtf.com/images/12/q3/e12/backupexec.png"/></a></p>
<p> </p>
</blockquote>
<p><a name="Pic2"/> "I'm not really sure what happened here, but I had to use Chrome's developer tools to hack my birthdate into the form so I could submit it," writes <b>Dave</b>.</p>
<blockquote>
<p><a href="http://syndication.thedailywtf.com/TheDailyWtf#Pic2"><img alt="" border="0" src="http://img.thedailywtf.com/images/12/q3/e12/birthdate2.png"/></a></p>
<p> </p>
</blockquote>
<p><a name="Pic3"/>"I need this form to renew my immigration documents," writes <b>Jack Nathan</b>, "what do i do now?!?"</p>
<blockquote>
<p><a href="http://syndication.thedailywtf.com/TheDailyWtf#Pic3"><img alt="" border="0" src="http://img.thedailywtf.com/images/12/q3/e12/Canada%20Government%20Forms%20Online.JPG"/></a></p>
<p> </p>
</blockquote>
<p><a name="Pic4"/>"I found this ad for an interior design company," wrote <b>Wouter</b>, "they probably do a lot of rectangular designs."</p>
<blockquote>
<p><a href="http://syndication.thedailywtf.com/TheDailyWtf#Pic4"><img alt="" border="0" src="http://img.thedailywtf.com/images/12/q3/e12/IMAG0158.jpg"/></a></p>
<p> </p>
</blockquote>
<p><a name="Pic5"/> "My mother's middle name has 3 characters." wrote <b>Julie Crowner</b>. "I only have a middle initial. Fortunately, we're the only ones impacted by this. Well, except Ada. And Aja. And Ala, Ali, Ama, Ami, Amy, Ana, Ann, Ara, Ava, Bea, Bee, Bev, Deb, Dee, Dot, Eda, Ela, Ema, Ena, Era, Eva, Eve, Exa, Fae, Fay, Flo, Gay, Gia, Ica, Icy, Ida, Ila, Ilo, Ima, Imo, Ina, Ira, Isa, Iva, Ivy, Iza, Jan, Joe, Joi, Joy, Kai, Kay, Kia, Kim, Kya, Lea, Lee, Leo, Lia, Liz, Lou, Lue, Luz, Lyn, Mae, Mai, May, Meg, Mia, Mya, Nan, Nia, Nya, Oda, Ola, Oma, Ona, Ora, Osa, Ota, Ova, Pam, Pat, Rae, Ray, Roy, Sky, Sue, Tai, Tea, Tia, Tom, Ula, Una, Ura, Val, Zoa, Zoe, Abb, Abe, Ace, Acy, Ada, Add, Alf, Ali, Amy, Ann, Ari, Art, Asa, Bee, Ben, Bob, Bud, Cal, Cam, Cap, Cas, Che, Con, Coy, Dan, Dax, Dee, Del, Doc, Don, Dow, Ean, Ebb, Edd, Edw, Eli, Ell, Ely, Eva, Fay, Fed, Foy, Gay, Gee, Geo, Gil, Gus, Guy, Hal, Ham, Hoy, Huy, Ian, Ida, Ike, Ira, Irl, Iva, Ivy, Jan, Jax, Jay, Jeb, Jed, Jep, Jim, Job, Joe, Jon, Joy, Kai, Kay, Kem, Ken, Kim, Kip, Kit, Lea, Lee, Lem, Len, Leo, Les, Lew, Lex, Lim, Lon, Lou, Loy, Luc, Lue, Lum, Lyn, Mac, Mae, Mal, Mat, Max, May, Mel, Moe, Nat, Ned, Nim, Noe, Obe, Oda, Ola, Ole, Ora, Ott, Ova, Pat, Rae, Ras, Ray, Red, Rex, Rey, Rob, Rod, Roe, Ron, Roy, Sal, Sam, Sid, Sie, Sim, Sol, Son, Tab, Tad, Taj, Tal, Ted, Tex, Tim, Tod, Tom, Toy, Tre, Tye, Val, Van, Vic, Von, Wes, Yee, Zeb, and Zed."  What will people with all these middle names do?</p>
<blockquote>
<p><a href="http://syndication.thedailywtf.com/TheDailyWtf#Pic5"><img alt="" border="0" src="http://img.thedailywtf.com/images/12/q3/e12/Middle_name.png"/></a></p>
<p> </p>
</blockquote>
<p><a name="PPic1"/>"My company recently partnered with a developer who had a custom applicatio written in Microsoft Access that we are now forced to train/support/install," writes <b>Ben Reisner</b>. "The following error message is just one of many that has an interesting definition of Equal."</p>
<blockquote>
<p><a href="http://syndication.thedailywtf.com/TheDailyWtf#PPic1"><img alt="" border="0" src="http://img.thedailywtf.com/images/12/q3/e12/notequal.PNG"/></a></p>
<p> </p>
</blockquote>
<p><a name="PPic2"/><b>Kira Russell</b> snapped this when it was a bit cold in North Wales.</p>
<blockquote>
<p><a href="http://syndication.thedailywtf.com/TheDailyWtf#PPic2"><img alt="" border="0" src="http://img.thedailywtf.com/images/12/q3/e12/verycold.jpg"/></a></p>
<p> </p>
</blockquote>
<p><a name="PPic3"/> "I'm still getting used to my new keyboard, and occasionally hit the '\' and ENTER keys at the same time," writes <b>Michael Dowden</b>.  "I was pretty sure I had done this one morning when I logged in to Windows for the first time, however I got in okay and figured all was well...until I got back from a morning meeting, having locked my workstation.  I was greeted with the usual login prompt (screenshot attached), but with '\' appended to my username.  I was forced to hard boot my machine since Windows doesn't allow you to edit your username on the locked-login screen."</p>
<blockquote>
<p><a href="http://syndication.thedailywtf.com/TheDailyWtf#PPic3"><img alt="" border="0" src="http://img.thedailywtf.com/images/12/q3/e12/win-login-wtf.jpg"/></a></p>
<p> </p>
</blockquote>
<p><a href="http://feedads.g.doubleclick.net/~a/RWWbqIlIxScUHbIDyWekzplfJPU/0/da"><img border="0" ismap="true" src="http://feedads.g.doubleclick.net/~a/RWWbqIlIxScUHbIDyWekzplfJPU/0/di"/></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/RWWbqIlIxScUHbIDyWekzplfJPU/1/da"><img border="0" ismap="true" src="http://feedads.g.doubleclick.net/~a/RWWbqIlIxScUHbIDyWekzplfJPU/1/di"/></a></p><img height="1" src="http://feeds.feedburner.com/~r/TheDailyWtf/~4/zgw3b-OLa1Q" width="1"/></div>
    </summary>
    <updated>2012-05-11T13:00:00Z</updated>
    <category term="Error'd"/>
    <author>
      <name>Alex Papadimoulis</name>
    </author>
    <source>
      <id>http://thedailywtf.com/</id>
      <link href="http://thedailywtf.com/" rel="alternate" type="text/html"/>
      <link href="http://syndication.thedailywtf.com/TheDailyWtf" rel="self" type="application/rss+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <subtitle>Curious Perversions in Information Technology</subtitle>
      <title>The Daily WTF</title>
      <updated>2012-05-17T01:00:49Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://xkcd.com/1054/</id>
    <link href="http://xkcd.com/1054/" rel="alternate" type="text/html"/>
    <title>The bacon</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><img alt="Normally pronounced 'THEH-buh-kon', I assume." src="http://imgs.xkcd.com/comics/thebacon.png" title="Normally pronounced 'THEH-buh-kon', I assume."/></div>
    </summary>
    <updated>2012-05-11T04:00:00Z</updated>
    <source>
      <id>http://xkcd.com/</id>
      <author>
        <name>XKCD</name>
      </author>
      <link href="http://xkcd.com/" rel="alternate" type="text/html"/>
      <link href="http://www.xkcd.com/rss.xml" rel="self" type="application/rss+xml"/>
      <subtitle>xkcd.com: A webcomic of romance and math humor.</subtitle>
      <title>xkcd.com</title>
      <updated>2012-05-16T04:00:44Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://syndication.thedailywtf.com/7314</id>
    <link href="http://thedailywtf.com/Articles/Epoch-Billing-System.aspx" rel="alternate" type="text/html"/>
    <title>CodeSOD: Epoch Billing System</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Everybody in the IT department was quite happy -- even a little surprised -- with how well the outsourced project to replace the legacy billing system was progressing.</p>
<p>Well, actually, the project managers weren't all that surprised. Over the past four months, they'd pumped out reams of specs and design documents, often boasting that their level of planning hadn't been seen since the Apollo missions. So, for them, the fact that everything was turning out as designed spoke volumes about the success of their planning and processes.</p>
<h3 style="margin-bottom: 0px;">New Billing Code</h3>
<p style="margin-top: 0px;">Jeff and the other developers who were stuck supporting the existing billing system until the big cutover (still a few months away) wanted to see what this super system looked like under the hood. After all, because they were expected to support the new system once it came online, shouldn't they at least have an understanding of how the underlying code worked?</p>
<p>The developers made their case for months before the project managers gave up on their "it's not done yet" rhetoric and reluctantly handed over a few modules that they'd deemed bug-free.</p>
<p>When Jeff got his hands on the code, one line in particular caught his eye:</p>
<blockquote>
<pre>int strElapsedDays = ( 
 convertDate(intDay1, intMonth1, intYr1) - 
 convertDate(intDay2, intMonth2, intYr2)) / DAY;</pre>
</blockquote>
<h3 style="margin-bottom: 0px;">Unusual Process</h3>
<p style="margin-top: 0px;">Knowing that C# had built-in functions to easily determine the span of days between two dates, Jeff thought the approach was a little strange. Once he tracked down convertDate, things got even weirder:</p>
<blockquote>
<pre>public const int DAY = 86400;
public const int WEEK = 604800;
public const int YEAR = 31449600;
        
private static int convertDate(int day, int month, int year)
{
 
  int[] months = new int[] 
     { 0,31,59,90,120,151, 
       181,212,243,273,304,334 };

  return ( ((year - 1970) * DAY * 365) + 
           (((year - 1970)/4) * DAY) + 
           (months[month - 1] * DAY) + ((day-1) * DAY) );
}</pre>
</blockquote>
<p>Caught off guard, Jeff just stared at the function for a good 10 minutes, trying to figure it out. When he did, it hit him like a ton of bricks. Rather than using the built-in C# date functions, the developer had opted to convert a date into its Unix Epoch -- the number of seconds elapsed since Jan. 1, 1970 -- and work from there.</p>
<p>Jeff had to admit, the solution was a little bit genius. Unfortunately, it wasn't a fit because the new system was running on a Windows server. So Jeff did his duty and raised the matter with the project management team so it could be added to the bug-fix queue for the offshore team.</p>
<p>Weeks later, Jeff followed up with one of the members of the project management team, just out of curiosity, to see if the fix had been made. To his surprise, it hadn't been addressed -- nor would it be any time soon. Apparently the "bug" was downgraded to a feature request because -- in the eyes of the project managers -- if an application functioned as it was designed, there wasn't a need to go back in and change it. &lt;fck:hr&gt; &lt;/fck:hr&gt;</p>
<p><em>Epoch Billing System was <a href="http://visualstudiomagazine.com/articles/2011/03/01/epoch-billing-system.aspx">originally published</a> in the March 2011 edition of <a href="http://visualstudiomagazine.com/">Visual Studio Magazine</a>. VSM is the leading site for enterprise .NET developers, and offers a <a href="http://1105-sub.halldata.com/site/ONE001215VOnew/init.do?&amp;PK=WSPVSM">free magazine subscription</a> for influential readers.</em></p>
<p><a href="http://feedads.g.doubleclick.net/~a/B9DulcotIfqczz2OPZSG3cfP0gQ/0/da"><img border="0" ismap="true" src="http://feedads.g.doubleclick.net/~a/B9DulcotIfqczz2OPZSG3cfP0gQ/0/di"/></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/B9DulcotIfqczz2OPZSG3cfP0gQ/1/da"><img border="0" ismap="true" src="http://feedads.g.doubleclick.net/~a/B9DulcotIfqczz2OPZSG3cfP0gQ/1/di"/></a></p><img height="1" src="http://feeds.feedburner.com/~r/TheDailyWtf/~4/gWqm51pWzEE" width="1"/></div>
    </summary>
    <updated>2012-05-10T13:00:00Z</updated>
    <category term="CodeSOD"/>
    <author>
      <name>Mark Bowytz</name>
    </author>
    <source>
      <id>http://thedailywtf.com/</id>
      <link href="http://thedailywtf.com/" rel="alternate" type="text/html"/>
      <link href="http://syndication.thedailywtf.com/TheDailyWtf" rel="self" type="application/rss+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <subtitle>Curious Perversions in Information Technology</subtitle>
      <title>The Daily WTF</title>
      <updated>2012-05-17T01:00:49Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-us">
    <id>http://www.tbray.org/ongoing/When/201x/2012/05/09/Faraways</id>
    <link href="http://www.tbray.org/ongoing/When/201x/2012/05/09/Faraways" rel="alternate" type="text/html"/>
    <link href="http://www.tbray.org/ongoing/When/201x/2012/05/09/Faraways#comments" rel="replies" type="application/xhtml+xml"/>
    <title xml:lang="en-us">CL XVII: Faraways</title>
    <summary type="xhtml" xml:lang="en-us"><div xmlns="http://www.w3.org/1999/xhtml">It’s May so <a href="http://www.tbray.org/ongoing/What/The%20World/Cottage%20Life/">Cottage Life</a> is recurring. On <a href="http://en.wikipedia.org/wiki/Keats_Island_(British_Columbia)">the island</a>, many of the things one sees and wishes to photograph are far away thus must be captured through fairly specialized lenses which tend to impose their perceptions, particularly when the lenses are elderly and actually not that elite.  Here are three of those.</div>
    </summary>
    <content type="xhtml" xml:lang="en-us"><div xmlns="http://www.w3.org/1999/xhtml"><p>It’s May so
<a href="http://www.tbray.org/ongoing/What/The%20World/Cottage%20Life/">Cottage Life</a> is
recurring. On
<a href="http://en.wikipedia.org/wiki/Keats_Island_(British_Columbia)">the island</a>, many of the things one sees and wishes to photograph
are far away thus must be captured through fairly specialized lenses which
tend to impose their perceptions, particularly when the lenses are elderly
and actually not that elite.  Here are three of those.</p>
<img alt="Faraway mountains" src="http://www.tbray.org/ongoing/When/201x/2012/05/09/RUNE5002.png"/>
<img alt="Faraway mountains" src="http://www.tbray.org/ongoing/When/201x/2012/05/09/RUNE5005.png"/>
<img alt="Faraway mountains" src="http://www.tbray.org/ongoing/When/201x/2012/05/09/RUNE5007.png"/>
<p>The lens in question is my Tokina <i>f</i>5.6 400mm, which has 
<a href="http://www.tbray.org/ongoing/When/200x/2009/06/21/Tokina-SL-400-f5.6">a story
attached</a>.</p>
<p>I processed these in Lightroom. It has a superb noise-reduction module, which
on this occasion I wished had negative settings to crank up the
vintage-telephoto grainy dreaminess. Which would probably betray
truth-before-beauty.  But anyhow, Lightroom doesn’t.</p>
<p><i>[Update: Actually (see the comments), it turns out that Lightroom does.]</i></p></div>
    </content>
    <updated>2012-05-09T15:41:58Z</updated>
    <published>2012-05-09T19:00:00Z</published>
    <category scheme="http://www.tbray.org/ongoing/What/" term="Arts/Photos"/>
    <category scheme="http://www.tbray.org/ongoing/What/" term="Arts"/>
    <category scheme="http://www.tbray.org/ongoing/What/" term="Photos"/>
    <category scheme="http://www.tbray.org/ongoing/What/" term="The World/Cottage Life"/>
    <category scheme="http://www.tbray.org/ongoing/What/" term="The World"/>
    <category scheme="http://www.tbray.org/ongoing/What/" term="Cottage Life"/>
    <source>
      <id>http://www.tbray.org/ongoing/</id>
      <icon>http://www.tbray.org/favicon.ico</icon>
      <logo>http://www.tbray.org/ongoing/rsslogo.jpg</logo>
      <author>
        <name>Tim Bray</name>
      </author>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.tbray.org/ongoing/" rel="alternate" type="text/html"/>
      <link href="http://www.tbray.org/ongoing/ongoing.atom" rel="self" type="application/atom+xml"/>
      <link href="http://www.tbray.org/home/tbray.org/www/html/ongoing/comments.atom" rel="replies" type="text/html"/>
      <rights xml:lang="en-us">All content written by Tim Bray and photos by Tim Bray Copyright Tim Bray, some rights reserved, see /ongoing/misc/Copyright</rights>
      <subtitle xml:lang="en-us">ongoing fragmented essay by Tim Bray</subtitle>
      <title xml:lang="en-us">ongoing by Tim Bray</title>
      <updated>2012-05-16T17:44:02Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://xkcd.com/1053/</id>
    <link href="http://xkcd.com/1053/" rel="alternate" type="text/html"/>
    <title>Ten Thousand</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><img alt="Saying 'what kind of an idiot doesn't know about the Yellowstone supervolcano' is so much more boring than telling someone about the Yellowstone supervolcano for the first time." src="http://imgs.xkcd.com/comics/ten_thousand.png" title="Saying 'what kind of an idiot doesn't know about the Yellowstone supervolcano' is so much more boring than telling someone about the Yellowstone supervolcano for the first time."/></div>
    </summary>
    <updated>2012-05-09T04:00:00Z</updated>
    <source>
      <id>http://xkcd.com/</id>
      <author>
        <name>XKCD</name>
      </author>
      <link href="http://xkcd.com/" rel="alternate" type="text/html"/>
      <link href="http://www.xkcd.com/rss.xml" rel="self" type="application/rss+xml"/>
      <subtitle>xkcd.com: A webcomic of romance and math humor.</subtitle>
      <title>xkcd.com</title>
      <updated>2012-05-16T04:00:44Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-us">
    <id>http://www.tbray.org/ongoing/When/201x/2012/05/08/Sensplore</id>
    <link href="http://www.tbray.org/ongoing/When/201x/2012/05/08/Sensplore" rel="alternate" type="text/html"/>
    <link href="http://www.tbray.org/ongoing/When/201x/2012/05/08/Sensplore#comments" rel="replies" type="application/xhtml+xml"/>
    <title xml:lang="en-us">Sensplore</title>
    <summary type="xhtml" xml:lang="en-us"><div xmlns="http://www.w3.org/1999/xhtml">I’ve been working on some ideas for clean-screen apps; instead of controlling them with the touch screen, you wave your device around or tap it or shake it.  To do this, I’ve been learning about the output of the sensors you find on Android devices.  I’ve found that the documentation, while complete, contains some scary-looking math and assumes you know more about quaternions and rotation vectors than the average developer. Well, more than I do.</div>
    </summary>
    <content type="xhtml" xml:lang="en-us"><div xmlns="http://www.w3.org/1999/xhtml"><p>I’ve been working on some ideas for clean-screen apps;
instead of controlling them with the touch screen, you wave your device
around or tap it or shake it.  To do this, I’ve been learning about the output
of the sensors you find on Android devices.  I’ve found that the
documentation, while complete, contains some scary-looking math and assumes
you know more about quaternions and rotation vectors than the average
developer. Well, more than I do.</p>
<p>So I created a little app called “Sensplore” which captures sensor data,
dresses it up in
<a href="http://en.wikipedia.org/wiki/Comma-separated_values">CSV (spreadsheet)</a> format, and emails it to you.  It’s
Apache2-licensed
<a href="http://code.google.com/p/sensplore/">on Google code</a>; for those who
just want to run it, go hit
<a href="https://play.google.com/store/apps/details?id=com.textuality.sensplore">Google Play Apps</a>. </p>
<p>It took me a couple
of tries, a few visits to StackOverflow.com, and input from Android
engineering, to get this right; for example, the graphs I
recently published in
<a href="http://www.tbray.org/ongoing/When/201x/2012/04/20/Android-Sensor-Kinetics-Pictures">Sensor
Kinetics Pictures</a> were, well, wrong.
 I’ve found it really quite
helpful in figuring out what the sensors do.  It’s only available on
Gingerbread-or-higher devices.</p>
<h2 id="p-2">What it does</h2> 
<p>When you run the app, it fills the screen with a button saying “Go!” Once
you press that, you can shake or tap or wave the device as much as you want,
then hit the button again, which will have changed to read “Done!”  </p>
<p>When you’re done, Sensplore writes out the CSV and fires an intent with
ACTION_SEND, which shows you a big list of candidates to do the sending; if
you pick Gmail, it shows up as an email from you to you with the subject
filled in and the CSV data as an attachment, so you can download it, fire up
your favorite spreadsheet program, and get it to draw graphs of what the
sensor data is showing you.</p> 
<p><i>[Digression: This made me feel a little bit silly; I’d been toying with
all sorts of 
ideas for getting the data off the device, including RESTful back-ends and the
like.   The idea of just emailing seemed impossibly klunky at first
blush, but in practice it works pretty well; it brings up the Gmail app and I
found myself tapping in a few reminder notes to myself before hitting
“Send”.]</i></p>
<p>I suspect that someone who really understands app scripting could set up
their favorite spreadsheet to draw the graphs automatically; I end up
selecting ranges and asking for graphs, which feels a bit laborious.</p>
<h2 id="p-1">What it captures</h2>
<p>Sensplore generates CSV containing two output sets, each with four columns of numbers.  Each set has a time (msec) column and three floating-point x, y, and z values.</p>
<img alt="Android device coordinate axes" class="inline" src="http://www.tbray.org/ongoing/When/201x/2012/05/08/axis_device.png"/>
<p>The first group is the raw data you get from a Sensor.TYPE_ACCELEROMETER
sensor, which to say acceleration along the x, y, and z axes in the device
space; the axes are illustrated in this image from the
<a href="http://developer.android.com/reference/android/hardware/SensorEvent.html">SensorEvent</a>
docs.</p>
<p>You have to be careful with this data; “acceleration” may not mean what you
think it does. I’ll probably have more to say later about best practices for
using this stuff, but a look at the data is instructive.</p>
<p>The second group represents successive changes in rotation angle around the
x, y, and z axes.  It’s not measured directly; we take the samples from the
Sensor.TYPE_ROTATION_VECTOR sensor, turn them into rotation matrices using
<a href="http://developer.android.com/reference/android/hardware/SensorManager.html#getRotationMatrixFromVector(float[], float[])">SensorManager.getRotationMatrixFromVector()</a>, then extract changes from
successive pairs of matrices using
<a href="http://developer.android.com/reference/android/hardware/SensorManager.html#getAngleChange(float[], float[], float[])">SensorManager.getAngleChange()</a>.  Once
again, these are in device not world co-ordinates.</p>
<p>The code for doing this is easy to get wrong, so if you’re going to want
data like this, stealing a few lines from Sensplore might be a good idea.</p>
<h2 id="p-3">What you see is what you get</h2>
<p>Here are two graphs, produced by Sensplore and iWork’s “Numbers”
spreadsheet, showing what happens when I hold my Galaxy Nexus upright facing
me and make chopping motions to the left, back, right, and forward, returning
to vertical after each chop. The first graph is the accelerometer data, the
second the angle changes.</p>
<img alt="sensor output graph produced by Sensplore" src="http://www.tbray.org/ongoing/When/201x/2012/05/08/graph.png"/>
<h2 id="p-4">Caveats</h2>
<p>I’m not claiming that these are the only interesting sensors. I’m not
claiming that the data they produce, or the way that Sensplore processes it,
will meet your needs.  This isn’t an official Google tool, and may not get any
more attention from me; on the other hand, I may use it as a workbench to to
explore other sensors and how to analyze their data.</p>
<p>Having said all that, programming up against the analog-to-digital coalface is a new experience for many of us, and anything that helps understand the raw data might prove useful to a few.  After all, this is one area in which mobile-device software is profoundly different; waving ordinary computers around in the air is rarely useful.</p></div>
    </content>
    <updated>2012-05-08T20:51:44Z</updated>
    <published>2012-05-08T19:00:00Z</published>
    <category scheme="http://www.tbray.org/ongoing/What/" term="Technology/Android"/>
    <category scheme="http://www.tbray.org/ongoing/What/" term="Technology"/>
    <category scheme="http://www.tbray.org/ongoing/What/" term="Android"/>
    <source>
      <id>http://www.tbray.org/ongoing/</id>
      <icon>http://www.tbray.org/favicon.ico</icon>
      <logo>http://www.tbray.org/ongoing/rsslogo.jpg</logo>
      <author>
        <name>Tim Bray</name>
      </author>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.tbray.org/ongoing/" rel="alternate" type="text/html"/>
      <link href="http://www.tbray.org/ongoing/ongoing.atom" rel="self" type="application/atom+xml"/>
      <link href="http://www.tbray.org/home/tbray.org/www/html/ongoing/comments.atom" rel="replies" type="text/html"/>
      <rights xml:lang="en-us">All content written by Tim Bray and photos by Tim Bray Copyright Tim Bray, some rights reserved, see /ongoing/misc/Copyright</rights>
      <subtitle xml:lang="en-us">ongoing fragmented essay by Tim Bray</subtitle>
      <title xml:lang="en-us">ongoing by Tim Bray</title>
      <updated>2012-05-16T17:44:02Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://etbe.coker.com.au/?p=3268</id>
    <link href="http://etbe.coker.com.au/2012/05/07/mac-mini-osx-lion/" rel="alternate" type="text/html"/>
    <title>A Quick Review of the Mac Mini with OS/X Lion compared to Linux</title>
    <summary>A client just lent me a new Mac Mini with OS/X Lion to play with. I think it’s interesting to compare it with regular PCs running Linux. Hardware The Mac Mini is tiny. It’s volume can be compared to that of a laptop. The entire outside apart from the base is made from aluminium which [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>A client just lent me a new Mac Mini with OS/X Lion to play with. I think it’s interesting to compare it with regular PCs running Linux.</p>
<h3>Hardware</h3>
<p>The Mac Mini is tiny. It’s volume can be compared to that of a laptop. The entire outside apart from the base is made from aluminium which helps dissipate heat, it’s not as effective as copper but a lot better than plastic. The ports on the system are sound input/output, 4*USB, Ethernet, Firewire, <a href="http://en.wikipedia.org/wiki/Thunderbolt_(interface)">Thunderbolt (replacement for Firewire)</a>, <a href="http://en.wikipedia.org/wiki/SDXC">SDXC</a>, and HDMI. It ships with a HDMI to DVI-D adapter which is convenient if you have an older monitor (or if you have a recent monitor but no HDMI cable as I do).</p>
<p>To open the case you unscrew the bottom, this is much like opening a watch. Also like opening a watch it’s not particularly easy to screw it back on tightly, I will probably return the Mac Mini without managing to completely screw the base in.</p>
<p>The hardware is very stylish and intricately designed, what we expect from Apple. It’s also quiet. In every way it’s a much better system than the workstation I’m using to write this blog post. The difference of course is that this workstation was free and the Mac Mini cost just over $1000 including the RAM upgrade. A Mac Mini could be a decent Linux workstation and if I see one about to be recycled I’ll be sure to grab it!</p>
<h3>Installation</h3>
<p>The Mac OS comes pre-installed so I didn’t get to do a full installation. When I first booted it up it asked me if I wanted to migrate the configuration from an existing server, I don’t know how well this works as I don’t have a second Mac system but the concept is a good one. Maybe having full support for such a migration process would be a good release goal for a Linux distribution.</p>
<p>After determining that the installation is a fresh one I was asked for a mac.com email address or other form of registration. I skipped this step as I don’t have such an email address, but it could be useful. Red Hat has “Kickstart” to allow configuration of an OS install based on a file from a server (via NFS or HTTP). <a href="http://wiki.debian.org/DebianInstaller/Preseed">Debian supports “preseeding” to take OS configuration options from a file at install time [1]</a> and the same option can be used for later stages of OS autoconfiguration.</p>
<p>One thing that would be really useful is to allow the user to enter a URL for configuration data for an individual account or for all accounts, so someone with an account on one workstation could upload the configuration (which would be either encrypted or sanitised to not have secret data) and then download it when first logging in to a new system. I can easily take a tar archive of my home directory to a new system, but people like my parents don’t have the skill to do that.</p>
<p>One of the final stages of system configuration was to identify the keyboard. The system asked me to press the key to the right of the left shift key and then the key to the left of the right shift key and then offered me three choices of keyboard. That was an interesting way of reducing the list of possible keyboards offered to the user and thus preventing the user from selecting one that is grossly incorrect.</p>
<h3>Cloud Storage</h3>
<p>When first logging in I was asked for an <a href="http://en.wikipedia.org/wiki/Icloud">iCloud [2]</a> login. iCloud doesn’t seem like a service that should be trusted, it’s based in the US and has been designed to facilitate access by government agencies. <a href="http://en.wikipedia.org/wiki/Ubuntu_One">Ubuntu One [3]</a> is a similar service that is run by a more reputable organisation, but the data is still stored by Amazon (a US corporation) which seems like a security risk. Ubuntu One isn’t in Debian (which is strange as Ubuntu is based on Debian) so it was too much effort for me to determine whether it encrypts data in a way that protects the users against US surveillance.</p>
<p>The cost of Ubuntu One storage is $4 per month with music streaming. A better option is to use <a href="https://owncloud.com/">a self-hosted OwnCloud installation for a private or semi-private cloud [4]</a>. A cheap server from someone like <a href="http://www.hetzner.de/en/hosting/produktmatrix/rootserver-produktmatrix-ex">Hetzner (E49 per month for 3TB of RAID-1 storage) [5]</a> is a good option for OwnCloud hosting. A cheap Hetzner server is about $US64 per month (at current conversion rates) which is equivalent to about 16 users of Ubuntu One for music streaming. So if 20 people shared a Hetzner server they could save money when compared to Ubuntu One while also getting a lot more storage. I’ve got about 300G of unused disk space on the Hetzner server that hosts my blog and when the system is migrated to a newer Hetzner server with 3TB disks it will have 2.5TB of unused space, I could store a lot of cloud data in that!</p>
<p>The main features of iCloud and Ubuntu One seem to be distribution of random data files (anything you wish), streaming music to various playing systems, and copying pictures from phones as soon as they are taken. These are all great features but it’s a pity that they don’t appear to support distributed document storage. Apple Pages apparently allows documents to be immediately saved to the cloud. I’d like to be able to save a file with Libre Office at home and then access it from my netbook using the cloud, of course that would require encryption for secret files but that’s not so hard to do. One advantage with such distributed storage is that when combined with offline-IMAP for email it would almost entirely remove the need for backups of the desktop systems I maintain for my relatives. I could have all their pictures and documents go to the cloud and all their email stay on the server so if their desktop PC dies I could just give them a new PC and get it all back from the cloud! OwnCloud supports replication, so if I got two servers I would be covered against a server failure. But I think that for a small server with less than a dozen users it’s probably better to just take some down-time when things go wrong and do regular backups to an array of cheap SATA disks.</p>
<h3>App Store</h3>
<p>Apple has an “App Store” in the OS. The use of such a store on a desktop OS is a new thing for me. It’s basically the same as the Android Market (Google Play) but on the desktop. I think that there is a real scope for an organisation such as Canonical to provide such a market service for Linux. I think that there is a lot of potential for apps to be sold for less than $10 to a reasonable number of Linux users. A small payment would be inconvenient for the seller if they have to interact with the customer in any way and also inconvenient for the buyer if they are entering all their credit card details into a web site for the sale. But for repeat sales with one company being an intermediary it would be convenient for everyone. A market program for a desktop Linux system could provide a friendly interface to selecting free apps from repositories (for Debian, Ubuntu, Fedora, or other distributions) and also have the same interface used for selecting paid applications.</p>
<h3>Conclusion</h3>
<p>This isn’t much of a review of Apple OS/X or the Mac Mini. Thinking about ways of implementing the best features of Lion on Linux is a lot more interesting. I admire Apple in the same way that I admire sharks, they are really good at what they do but they don’t care about my best interests any more than a hungry shark cares about me.</p>
<h3>Update</h3>
<p>I got the currency conversion wrong in the first version of this article. It seems that to save money via a shared Hetzner server instead of Ubuntu One about 20 users would be needed instead of 10. But that’s still not too many and would still give a lot more storage. It would be a little more difficult to arrange though, probably anyone who is seriously into computers knows 10 people who would want to share such a service (including people like their parents who want things to just work and don’t understand what’s happening). But getting 20 people would be more difficult.</p>
<ul>
<li>[1]<a href="http://wiki.debian.org/DebianInstaller/Preseed"> http://wiki.debian.org/DebianInstaller/Preseed</a></li>
<li>[2]<a href="http://en.wikipedia.org/wiki/Icloud"> http://en.wikipedia.org/wiki/Icloud</a></li>
<li>[3]<a href="http://en.wikipedia.org/wiki/Ubuntu_One"> http://en.wikipedia.org/wiki/Ubuntu_One</a></li>
<li>[4]<a href="https://owncloud.com/"> https://owncloud.com/</a></li>
<li>[5]<a href="http://www.hetzner.de/en/hosting/produktmatrix/rootserver-produktmatrix-ex"> http://www.hetzner.de/en/hosting/produktmatrix/rootserver-produktmatrix-ex</a></li>
</ul>
<p>Related posts:</p><ol>
<li><a href="http://etbe.coker.com.au/2007/04/11/xen-and-se-linux-eweek-review-of-rhel5/" rel="bookmark" title="Xen and SE Linux &#x2013; EWeek review of RHEL5">Xen and SE Linux – EWeek review of RHEL5</a> <small>The online magazine EWeek has done a review of RHEL5....</small></li>
<li><a href="http://etbe.coker.com.au/2011/10/18/servers-vs-phones/" rel="bookmark" title="Servers vs Phones">Servers vs Phones</a> <small>Hetzner have recently updated their offerings to include servers with...</small></li>
<li><a href="http://etbe.coker.com.au/2011/09/09/modern-laptops-suck/" rel="bookmark" title="Modern Laptops Suck">Modern Laptops Suck</a> <small>One of the reasons why I’m moving from a laptop...</small></li>
</ol></div>
    </content>
    <updated>2012-05-06T15:50:50Z</updated>
    <category term="Review"/>
    <author>
      <name>etbe</name>
    </author>
    <source>
      <id>http://etbe.coker.com.au</id>
      <link href="http://etbe.coker.com.au/feed/" rel="self" type="application/atom+xml"/>
      <link href="http://etbe.coker.com.au" rel="alternate" type="text/html"/>
      <subtitle>Linux, politics, and other interesting things</subtitle>
      <title>etbe - Russell Cokeretbe - Russell Coker</title>
      <updated>2012-05-13T09:00:46Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://etbe.coker.com.au/?p=3291</id>
    <link href="http://etbe.coker.com.au/2012/05/06/liberty-mobile-phones/" rel="alternate" type="text/html"/>
    <title>Liberty and Mobile Phones</title>
    <summary>I own two mobile phones at the moment, I use a Samsung Galaxy S running Cyanogenmod [1] (Android 2.3.7) for most things, and I have a Sony Ericsson Xperia X10 running Android 2.1 that I use for taking photos, some occasional Wifi web browsing, and using some applications. Comparing Android Hardware The hardware for the [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>I own two mobile phones at the moment, I use a <a href="http://en.wikipedia.org/wiki/Galaxy_S">Samsung Galaxy S</a> running <a href="http://www.cyanogenmod.com/">Cyanogenmod [1]</a> (Android 2.3.7) for most things, and I have a <a href="http://en.wikipedia.org/wiki/Xperia_X10">Sony Ericsson Xperia X10</a> running Android 2.1 that I use for taking photos, some occasional Wifi web browsing, and using some applications.</p>
<h3>Comparing Android Hardware</h3>
<p>The hardware for the Xperia X10 is better than that of the Galaxy S in many ways. It has a slightly higher resolution (480*854 vs 480*800), a significantly better camera (8.1MP with a “flash” vs 5MP without), and a status LED which I find really handy (although some people don’t care about it).</p>
<p>The only benefit of the Galaxy S hardware is that it has 16G of internal storage (of which about 2G can be used for applications) and 512M of RAM while the Xperia X10 has 1G of internal storage and 384M of RAM. These are significant issues, I have had applications run out of RAM on the Xperia X10 and I have been forced to uninstall applications to make space.</p>
<p>Overall I consider the Xperia X10 to be a significantly better piece of hardware as I am willing to trade off some RAM and internal storage to get a better resolution screen and a better camera. The problem is that Sony Ericsson have locked down their phones as much as possible and they don’t even give users the option of making a useful backup – they inspired <a href="http://etbe.coker.com.au/2012/02/07/5-principles-backup/">my post about 5 principles of backups [2]</a>.</p>
<p>The fact that the Galaxy S allows installing CyanogenMod which then gives me the liberty to do whatever I want with my phone is a massive feature. It outweighs the hardware benefits of the Sony Ericsson phones over Samsung phones prior to the Galaxy Nexus and Galaxy Note.</p>
<p>For an individual user the ability to control their own hardware is a feature. Such an ability wouldn’t be much use if there wasn’t a community of software developers, so if you buy an Android phone that isn’t supported by CyanogenMod or another free Android distribution then whether it is locked probably won’t matter to you. But for any popular Android phone that’s sold on the mass market it seems that if it’s not locked then it will get a binary distribution of Android in a reasonable amount of time.</p>
<h3>Comparing with Apple</h3>
<p>It seems that Apple is the benchmark for non-free computing at the moment. The iPhone is locked down and Apple takes steps to re-lock phones that can be rooted – as opposed to the Android vendors who ship phones and then don’t bother to update the firmware for any reason. The Apple app market is more expensive and difficult to enter and if an app isn’t in the market then you have to pay if you want to install it on a small number of development/test phones. This compares to Android where the Google market is cheaper and easier to enter and anyone can distribute an app outside the market and have people use it.</p>
<p>But for an individual this doesn’t necessarily cause any problems. I have friends and clients who use iPhones and are very happy with them. In terms of software development it’s a real benefit to have a large number of systems running the same software. As Apple seems to have higher margins and larger volume than any other phone vendor as well as shipping only one phone at any time (compared to every other phone vendor which seems to ship at least 3 different products for different use cases) they are in a much better economic position to get the software development right. As far as I can tell the hardware and software of the iPhone is of very high quality. The iPad (which has a similar market position) is also a quality product. The fact that the Apple app market is more difficult to enter (both in terms of Apple liking the application and the cost of entry) also has it’s advantages, I get the impression that the general quality of iPhone apps is quite high as opposed to Android where there are a lot of low quality apps and many more fraudulent apps than there should be.</p>
<p>The lack of choice in Apple hardware (one phone and one tablet) is a disadvantage for the user. There is no option for a phone with a slide-out keyboard, a large screen (for the elderly and people with fat fingers), or any of the other features that some Android phones have. The lack of a range of sizes for the iPad is also a disadvantage. But it seems that Apple has produced hardware that is good enough for most users so there aren’t many complaints about a lack of choice.</p>
<p>It seems to me that the biggest disadvantage of the closed Apple ecosystem is for society in general. Anyone who wants to write a mobile app to do something which might be considered controversial would probably think twice about whether to develop for the iPhone/iPad as Apple could remove the app at a whim which would waste all the software development work that was invested in writing the app. Google seem to have much less interest in removing apps from their store and if they do remove an app then with some inconvenience it can be distributed on the web without involving them – so the work won’t be wasted.</p>
<h3>How Much Freedom Should a Vendor Provide?</h3>
<p>The Apple approach of locking everything down is clearly working for them at the moment. The Samsung approach of taking the Google prescribed code and allowing users to replace it is good for the users and works well. The Sony Ericsson approach of taking the Google code, adding some proprietary code, and then locking the phone down is bad for the users and I think it will be bad for Sony Ericsson. People are more likely to tell others about negative experiences and negative reviews are more likely to be noticed than positive reviews. So while many people are reasonably happy with Sony Ericsson products (until they find themselves unable to restore from a backup) it’s still not a good situation for Sony Ericsson marketing.</p>
<p>It seems that there are benefits to hardware vendors for being really open and for locking their users in properly. But being somewhat open isn’t a good choice, particularly for a vendor that ships poor quality proprietary apps such as the Sony Ericsson ones.</p>
<p>In terms of application distribution Google isn’t as nice as they appear. <a href="http://www.theverge.com/2011/05/12/google-android-skyhook-lawsuit-motorola-samsung/">The Skyhook case revealed that Google will do whatever it takes to prevent apps that compete with Google apps from being installed by default [3]</a>. <a href="http://arstechnica.com/gadgets/news/2011/05/google-blocks-android-movie-rentals-from-rooted-devices.ars">Google is also trying to make money from DRM sales via Youtube which it denies to rooted phones [4]</a>. Again it seems to me that the best options here are being more open than Google is and being as closed as Apple. Google might gain some useful benefits from applying DRM (even though everyone with technical knowledge knows that it doesn’t work) but the Skyhook shenanigans have got to be costing Google more than it’s worth.</p>
<h3>How to make Android devices more Free</h3>
<p><a href="http://f-droid.org/">The F-droid market is an alternative to the Google App market which only has free software [5]</a>. On it’s web site there are links to download the source for the applications, including the source and binaries for old versions. In the Google App market if an upgrade breaks your system then you just lose, with F-droid you can revert to the old version.</p>
<p><a href="https://owncloud.com/">A self-hosted OwnCloud installation for a private or semi-private cloud [6]</a> can be used as an alternative to the Google Music store as well as for hosting any other data that you want to store online.</p>
<p><a href="http://osmand.net/">The Open Street Map for Android (Osmand) project provides an alternative to the Google Map service [7]</a>. Osmand allows you to download all the vector data for the regions you will ever visit so it can run without Internet access. But it doesn’t have the ability to search for businesses and the search for an address functionality is clunky and doesn’t accept plain text, which among other things precludes pasting data that’s copied from email or SMS. While Osmand provides some important features that Google Maps will probably never provide, it doesn’t provide some of the most used features of Google Maps so uninstalling Google Maps isn’t a good option at the moment.</p>
<p><a href="http://code.google.com/p/k9mail/">The K9mail project provides a nice IMAP client for Android [8]</a>. Use K9 with a mail server that you run and you won’t need to use Gmail.</p>
<p>There are alternatives to all the Google applications. It seems that apart from the lack of commercial data and search ability in Osmand an Android device that is used for many serious purposes wouldn’t lack much if it had no Google apps.</p>
<p>Google seems to be going too far in controlling Android. Escaping from their control and helping others to do the same seems to be good for society and good for the users who don’t need apps which are only available in proprietary form.</p>
<ul>
<li>[1]<a href="http://www.cyanogenmod.com/"> http://www.cyanogenmod.com/</a></li>
<li>[2]<a href="http://etbe.coker.com.au/2012/02/07/5-principles-backup/"> http://etbe.coker.com.au/2012/02/07/5-principles-backup/</a></li>
<li>[3]<a href="http://www.theverge.com/2011/05/12/google-android-skyhook-lawsuit-motorola-samsung/"> http://www.theverge.com/2011/05/12/google-android-skyhook-lawsuit-motorola-samsung/</a></li>
<li>[4]<a href="http://arstechnica.com/gadgets/news/2011/05/google-blocks-android-movie-rentals-from-rooted-devices.ars"> http://arstechnica.com/gadgets/news/2011/05/google-blocks-android-movie-rentals-from-rooted-devices.ars</a></li>
<li>[5]<a href="http://f-droid.org/"> http://f-droid.org/</a></li>
<li>[6]<a href="https://owncloud.com/"> https://owncloud.com/</a></li>
<li>[7]<a href="http://osmand.net/"> http://osmand.net/</a></li>
<li>[8]<a href="http://code.google.com/p/k9mail/"> http://code.google.com/p/k9mail/</a></li>
</ul>
<p>Related posts:</p><ol>
<li><a href="http://etbe.coker.com.au/2011/10/27/dual-sim-amaysim-contract/" rel="bookmark" title="Dual SIM Phones vs Amaysim vs Contract for Mobile Phones">Dual SIM Phones vs Amaysim vs Contract for Mobile Phones</a> <small>Currently Dick Smith is offering two dual-SIM mobile phones for...</small></li>
<li><a href="http://etbe.coker.com.au/2010/01/31/my-ideal-mobile-phone/" rel="bookmark" title="My Ideal Mobile Phone">My Ideal Mobile Phone</a> <small>Based on my experience testing the IBM Seer software on...</small></li>
<li><a href="http://etbe.coker.com.au/2010/01/25/mobile-phones-toys/" rel="bookmark" title="Old Mobile Phones as Toys">Old Mobile Phones as Toys</a> <small>In the past I have had parents ask for advice...</small></li>
</ol></div>
    </content>
    <updated>2012-05-05T14:31:09Z</updated>
    <category term="Politics"/>
    <category term="android"/>
    <author>
      <name>etbe</name>
    </author>
    <source>
      <id>http://etbe.coker.com.au</id>
      <link href="http://etbe.coker.com.au/feed/" rel="self" type="application/atom+xml"/>
      <link href="http://etbe.coker.com.au" rel="alternate" type="text/html"/>
      <subtitle>Linux, politics, and other interesting things</subtitle>
      <title>etbe - Russell Cokeretbe - Russell Coker</title>
      <updated>2012-05-13T09:00:46Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://etbe.coker.com.au/?p=3289</id>
    <link href="http://etbe.coker.com.au/2012/05/03/acoustiblok-thermablok/" rel="alternate" type="text/html"/>
    <title>Acoustiblok/Thermablok</title>
    <summary>Acoustiblok is an interesting product for blocking sound, it works by dissipating sound energy through friction within the sound barrier materiel [1]. They sell it in varieties that are designed for use within walls and for use as fences. As it isn’t solid it won’t reflect sound so it can be used to line the [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p><a href="http://www.acoustiblok.com/">Acoustiblok is an interesting product for blocking sound, it works by dissipating sound energy through friction within the sound barrier materiel [1]</a>. They sell it in varieties that are designed for use within walls and for use as fences. As it isn’t solid it won’t reflect sound so it can be used to line the walls to stop sound being reflected back at you. It’s design is based on NASA research.</p>
<p>The web site claims that a 3mm sheet of Acoustiblok gives a greater noise reduction than 12 inches (30.7cm) of poured concrete. I am a little dubious about that claim as I’ve read a report of someone using three layers of Acoustiblok to make a quiet room for recording music (and to be used as a play-room for an Autistic child). I find it difficult to imagine someone needing a meter of concrete to stop any sort of noise that they might encounter in a residential area so the fact that someone needed three layers of Acoustiblok is an indication that it might not be quite as good as they claim (although there is the possibility that Acoustiblok was badly installed). I wonder whether the claims about concrete concern particular frequencies. The <a href="http://www.acoustiblok.com/products.php">technical specifications and product comparisons page [2]</a> shows that Acoustiblok is least effective at 130Hz where it only reduces noise by 12dB and that it’s effectiveness increases to 38dB at 5KHz. So perhaps a concrete wall to stop low frequencies and Acoustiblok to stop high frequencies would be the best solution.</p>
<p><a href="http://acoustiblokau.com.au/">The Australian distributor for Acoustiblok is based in Brisbane [3]</a>.</p>
<p>The same company also sells <a href="http://www.thermablok.com/">Thermablok [4]</a> which is the first <a href="http://en.wikipedia.org/wiki/Aerogel">aerogel</a> based insulation that I’ve seen being advertised for commercial sale. I guess that it must be rather expensive as they are mostly advertising it for use as thin strips to cover stud faces (steel studs conduct heat well and can cause a lot of heat loss). A note in their FAQ says that it’s available in rolls for insulating entire walls or floors. The FAQ also indicates that they sell samples suitable for science classes. They are also apparently looking for retailers, it would be nice if someone wanted to sell this in Australia.</p>
<ul>
<li>[1]<a href="http://www.acoustiblok.com/"> http://www.acoustiblok.com/</a></li>
<li>[2]<a href="http://www.acoustiblok.com/products.php"> http://www.acoustiblok.com/products.php</a></li>
<li>[3]<a href="http://acoustiblokau.com.au/"> http://acoustiblokau.com.au/</a></li>
<li>[4]<a href="http://www.thermablok.com/"> http://www.thermablok.com/</a></li>
</ul>
<p>Related posts:</p><ol>
<li><a href="http://etbe.coker.com.au/2009/12/03/noise-canceling-headphones/" rel="bookmark" title="Noise Canceling Headphones">Noise Canceling Headphones</a> <small>My patience with the noise of airlines has run out,...</small></li>
<li><a href="http://etbe.coker.com.au/2009/12/04/testing-noise-canceling-headphones/" rel="bookmark" title="Testing Noise Canceling Headphones">Testing Noise Canceling Headphones</a> <small>This evening I tested some Noise Canceling Headphones (as described...</small></li>
<li><a href="http://etbe.coker.com.au/2009/12/20/bought-the-qc-15/" rel="bookmark" title="I Bought the Bose QC-15">I Bought the Bose QC-15</a> <small>I bought the Bose QC15 noise canceling headphones for my...</small></li>
</ol></div>
    </content>
    <updated>2012-05-03T05:44:23Z</updated>
    <category term="Review"/>
    <author>
      <name>etbe</name>
    </author>
    <source>
      <id>http://etbe.coker.com.au</id>
      <link href="http://etbe.coker.com.au/feed/" rel="self" type="application/atom+xml"/>
      <link href="http://etbe.coker.com.au" rel="alternate" type="text/html"/>
      <subtitle>Linux, politics, and other interesting things</subtitle>
      <title>etbe - Russell Cokeretbe - Russell Coker</title>
      <updated>2012-05-13T09:00:46Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-us">
    <id>http://www.kelvinlawrence.net/main.html/00000133</id>
    <link href="http://www.kelvinlawrence.net/main.html#2012-Mar-03-a" rel="alternate" type="text/html"/>
    <title>Spring is in the air</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>My how time flies! We are already into March and 2011 is well and
truly disappearing in the rear view mirror. I cannot say I am sorry to
see 2011 go. It was not a year that I shall remember with a lot of
fondness.  I need to get back into making more regular posts here.
I have been good about posting to Facebook but that has made me
incredibly lazy about updating this journal. I have, however, kept the
various sections (such as my reading log) up to date.<br/>
</p>

<p>I hope that everyone reading this is so far having a safe and happy
year.  I have several friends and colleagues that have already
been touched by cancer this year. My thoughts and prayers go out to
them and indeed, to anyone dealing with the effects of this awful
disease.<br/>
</p>
<p>By the way, March is <span style="font-style: italic;">Colo Rectal Cancer Awareness</span>
month. If you have been putting off getting "scoped" now would be a
good time. Also, remember I was only 42 when I was diagnosed so don't
put it off because you don't think you are old enough to have to worry.
It could save your life.<br/>
</p></div>
    </summary>
    <updated>2012-03-03T16:28:38Z</updated>
    <category scheme="http://www.kelvinlawrence.net/index.html" term="miscellaneous"/>
    <source>
      <id>http://www.kelvinlawrence.net/index.html</id>
      <logo>http://www.kelvinlawrence.net/images/KRL-HeadShot-Mini-Dec-25-2007.jpg</logo>
      <author>
        <name>Kelvin Lawrence - personal</name>
      </author>
      <link href="http://www.kelvinlawrence.net/index.html" rel="alternate" type="text/html"/>
      <link href="http://www.kelvinlawrence.net/kw.rss" rel="self" type="application/atom+xml"/>
      <subtitle>RSS Feed from Kelvin Lawrence's Web Page</subtitle>
      <title>Kelvin's Web - RSS Feed (XML)</title>
      <updated>2012-03-03T16:28:38Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6003063374827736283.post-1091344869097701886</id>
    <link href="http://pzf.fremantle.org/feeds/1091344869097701886/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://www.blogger.com/comment.g?blogID=6003063374827736283&amp;postID=1091344869097701886" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6003063374827736283/posts/default/1091344869097701886" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6003063374827736283/posts/default/1091344869097701886" rel="self" type="application/atom+xml"/>
    <link href="http://pzf.fremantle.org/2012/02/carbons-3rd-birthday.html" rel="alternate" type="text/html"/>
    <title>Carbon's 3rd Birthday</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><div dir="ltr" style="text-align: left;">Three years ago <a href="http://pzf.fremantle.org/2009/02/wso2-carbon-part-1.html">I blogged about WSO2 Carbon</a> for the first time. I enthused about a composable server architecture and why it was important for a SOA platform.<br/><br/>At that point there were just 4 Carbon products. Today there are 13 products, the core framework, Stratos, and Carbon Studio all based around the Carbon Architecture.<br/><br/>There are two really important things I think have worked really well:<br/><br/><ul style="text-align: left;"><li>The <i>composability</i> is obviously important and we now have a set of customers doing exactly that - using p2 to combine the correct components and effectively "build your own server" with the right function for their specific needs and requirements.<br/><br/>But even more interesting for those customers has been the <i>consistency</i> and <i>completeness</i> of the platform that has arisen out of Carbon. The fact that there is a "menu" or palette of low-level components (features) and high level components (products) that all interoperate, behave the same, use the same identity, clustering, registry, key management, etc has really offered customers the opportunity to build out compelling architectures.<br/></li><li>The <i>kernelization </i>is almost just a corollary of componentization: as you build the components and identify which ones to re-use, we found a common core across those 13 products. The result is that when we came to address cloud - starting later in 2009 - we very quickly realized that there were just a few core places in which to address multi-tenancy, elasticity and metering. I have to admit this was something I for one hadn't thought of, but has been probably the most powerful driver behind the success of <a href="http://stratoslive.wso2.com/">StratosLive</a> and Stratos. </li></ul><div>There were certainly people then who doubted that OSGi was a stable basis for an ESB or Server and I hope that the 1bn+ transactions a day that eBay are doing through WSO2 ESB are enough to disprove that.</div><div><br/></div><div>All in all, it is amazing to see how far Carbon has come and what it has enabled in 3 years.</div><div><br/></div><div><br/></div></div><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6003063374827736283-1091344869097701886?l=pzf.fremantle.org" width="1"/></div></div>
    </content>
    <updated>2012-02-08T13:25:47Z</updated>
    <published>2012-02-08T13:25:00Z</published>
    <author>
      <name>Paul Fremantle</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/15326219720808613358</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6003063374827736283</id>
      <category term="apache"/>
      <category term="hampton"/>
      <category term="design patterns"/>
      <category term="stratos"/>
      <category term="tunes"/>
      <category term="birthday"/>
      <category term="PaaS"/>
      <category term="tin whistle"/>
      <category term="tomb"/>
      <category term="cloud wso2 announcement"/>
      <category term="soa"/>
      <category term="synapse"/>
      <category term="arranged marriages"/>
      <category term="business models"/>
      <category term="music"/>
      <category term="mobile phones"/>
      <category term="the 99 flake"/>
      <category term="cloud"/>
      <category term="tune"/>
      <category term="hornpipe"/>
      <category term="open source esb"/>
      <category term="carbon"/>
      <category term="ireland"/>
      <category term="soa governance wso2 registry repository wsdl validation open source governance"/>
      <category term="apache apachecon synapse rest ws-* webservices"/>
      <category term="twitter blog mashup"/>
      <category term="REST Registry UDDI Mule WSO2 SOA"/>
      <category term="the gorse bush"/>
      <category term="wso2"/>
      <author>
        <name>Paul Fremantle</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/15326219720808613358</uri>
      </author>
      <link href="http://pzf.fremantle.org/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/6003063374827736283/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://pzf.fremantle.org/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6003063374827736283/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>SOA, Cloud, Web Services, Synapse, Tin Whistles, Blacksmithing and me</subtitle>
      <title>Paul Fremantle's Blog</title>
      <updated>2012-04-25T10:19:26Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-us">
    <id>http://www.kelvinlawrence.net/main.html/00000132</id>
    <link href="http://www.kelvinlawrence.net/main.html#2011-Oct-25-a" rel="alternate" type="text/html"/>
    <title>Four years post surgery, four years in remission!</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Today is the fourth anniversary of my colon cancer surgery. As my

oncologist once explained to me, the remission clock starts ticking

from the date of the "curative procedure" (surgery). Therefore as of

today I have now been in remission for a full four years. Much of

the time since the surgery and the subsequent months of chemotherapy

remains a bit of a blur and loking back, the time seems to have

flown by.. I am so thankful to all of the wonderful doctors and

nurses that have cared for me so well and that I am still here to

enjoy life and watch my kids grow up.<br/>

<br/>

As always I am incredibly grateful to all of my family and friends

around the World who have been there for me the past four years. I

could not have made it this far without you. The recent sad news

about the death of Steve Jobs reminds us that no one, no matter how

rich or poor is immune from cancer's evil reach. I encourage all of

you to support cancer research in any way that you can. Likewise, to

anyone reading this who has also been touched by cancer, I would

just like to say keep up the fight and that you are in my thoughts

and prayers.<br/>

<br/>

PS - If you have been putting off getting a colonoscopy, get one. It could save your life!</div>
    </summary>
    <updated>2011-10-25T15:50:58Z</updated>
    <category scheme="http://www.kelvinlawrence.net/index.html" term="medical"/>
    <source>
      <id>http://www.kelvinlawrence.net/index.html</id>
      <logo>http://www.kelvinlawrence.net/images/KRL-HeadShot-Mini-Dec-25-2007.jpg</logo>
      <author>
        <name>Kelvin Lawrence - personal</name>
      </author>
      <link href="http://www.kelvinlawrence.net/index.html" rel="alternate" type="text/html"/>
      <link href="http://www.kelvinlawrence.net/kw.rss" rel="self" type="application/atom+xml"/>
      <subtitle>RSS Feed from Kelvin Lawrence's Web Page</subtitle>
      <title>Kelvin's Web - RSS Feed (XML)</title>
      <updated>2012-03-03T16:28:38Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-us">
    <id>http://www.kelvinlawrence.net/main.html/00000131</id>
    <link href="http://www.kelvinlawrence.net/main.html#2011-Aug-23-a" rel="alternate" type="text/html"/>
    <title>The last (official) day of Summer</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>By the school calendar, which around here is the one most people

live by, as of today, Summer is officially over. This is despite the

fact that this week we will most likely break the old record of 69 one

hundred degree days in a calendar year. The high yesterday was around

105F and it is forecast to be about the same again today. I forget when

we last had serious rain but it has been months. Unless we get a

tropical storm come ashore soon it may be many more weeks until we do

get some rain. I love the hot weather but in my fifteen years here I

have never seen a drought like this one. We usually get some good

storms, especially during the Spring to top up the lakes. This year

that did not happen.<br/>

</p>

<p><br/>

</p>

<div style="text-align: center;"><img alt="Robyn and Jack leaving for school" src="http://kelvinlawrence.net/images/RobynJack-BackToSchool.jpg" style="width: 640px; height: 480px;" title="Robyn and Jack leaving for school"/><br style="font-weight: bold; font-style: italic;"/>

<span style="font-weight: bold; font-style: italic;">Robyn and Jack

about to leave for school</span><br/>

</div>

<p>Anyway, my kids happily (yes happily) went back to school today.

They even got up at 6:20am and woke me up! Robyn is going into eighth

grade and Jack fourth. They have grown so quickly. Robyn is thirteen

now and Jack will be ten in December. Where does the time go? Anyway,

above is a photo, which has become a bit of a tradition now, of the

kids going out the front door on the first day of a new school year.<br/>

</p></div>
    </summary>
    <updated>2011-08-23T16:18:02Z</updated>
    <category scheme="http://www.kelvinlawrence.net/index.html" term="miscellaneous"/>
    <source>
      <id>http://www.kelvinlawrence.net/index.html</id>
      <logo>http://www.kelvinlawrence.net/images/KRL-HeadShot-Mini-Dec-25-2007.jpg</logo>
      <author>
        <name>Kelvin Lawrence - personal</name>
      </author>
      <link href="http://www.kelvinlawrence.net/index.html" rel="alternate" type="text/html"/>
      <link href="http://www.kelvinlawrence.net/kw.rss" rel="self" type="application/atom+xml"/>
      <subtitle>RSS Feed from Kelvin Lawrence's Web Page</subtitle>
      <title>Kelvin's Web - RSS Feed (XML)</title>
      <updated>2012-03-03T16:28:38Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-us">
    <id>http://www.kelvinlawrence.net/main.html/00000130</id>
    <link href="http://www.kelvinlawrence.net/main.html#2011-Aug-04-a" rel="alternate" type="text/html"/>
    <title>25 Years at IBM</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>In 1986, August the 4th was a Monday and it was my first day as an
IBM employee (at Hursley Park in the UK). Twenty five years later, I'm
still working at IBM (these days in Austin, Texas).  It's been an
incredible journey both emotionally , technologically and
geographically (from Hursley to Austin with seven years in Boca Raton,
Florida in between). I have worked with some fantastic people on some
very cool projects and been lucky enough to make great friends all over
the World. <br/>
</p>
<p>The 25 years have flown by!<br/>
</p></div>
    </summary>
    <updated>2011-08-05T00:39:39Z</updated>
    <category scheme="http://www.kelvinlawrence.net/index.html" term="work"/>
    <source>
      <id>http://www.kelvinlawrence.net/index.html</id>
      <logo>http://www.kelvinlawrence.net/images/KRL-HeadShot-Mini-Dec-25-2007.jpg</logo>
      <author>
        <name>Kelvin Lawrence - personal</name>
      </author>
      <link href="http://www.kelvinlawrence.net/index.html" rel="alternate" type="text/html"/>
      <link href="http://www.kelvinlawrence.net/kw.rss" rel="self" type="application/atom+xml"/>
      <subtitle>RSS Feed from Kelvin Lawrence's Web Page</subtitle>
      <title>Kelvin's Web - RSS Feed (XML)</title>
      <updated>2012-03-03T16:28:38Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6003063374827736283.post-7420287071078401428</id>
    <link href="http://pzf.fremantle.org/feeds/7420287071078401428/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://www.blogger.com/comment.g?blogID=6003063374827736283&amp;postID=7420287071078401428" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6003063374827736283/posts/default/7420287071078401428" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6003063374827736283/posts/default/7420287071078401428" rel="self" type="application/atom+xml"/>
    <link href="http://pzf.fremantle.org/2011/04/wso2-workshops-in-europe.html" rel="alternate" type="text/html"/>
    <title>WSO2 Workshops in Europe</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><div dir="ltr" style="text-align: left;">If any of you are interested in Identity, Security and Entitlement and how these fit into a SOA, Cloud and Enterprise Architectures, then I'd recommend you taking a look at our <a href="http://freo.me/fXZcPu">workshop that we are running in London, Paris, Zurich and Frankfurt</a>.<br/><br/>PS I think I'm meant to be the one on the left with St. George's flag!<br/><div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-N2xguepfDYs/TbaAcJYNSwI/AAAAAAAACSM/OEYB8CUh_QU/s1600/euro+tour.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="218" src="http://1.bp.blogspot.com/-N2xguepfDYs/TbaAcJYNSwI/AAAAAAAACSM/OEYB8CUh_QU/s640/euro+tour.png" width="640"/></a></div><br/><br/><br/></div><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6003063374827736283-7420287071078401428?l=pzf.fremantle.org" width="1"/></div></div>
    </content>
    <updated>2011-04-26T08:21:26Z</updated>
    <published>2011-04-26T08:21:00Z</published>
    <author>
      <name>Paul Fremantle</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/15326219720808613358</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6003063374827736283</id>
      <category term="apache"/>
      <category term="hampton"/>
      <category term="design patterns"/>
      <category term="stratos"/>
      <category term="tunes"/>
      <category term="birthday"/>
      <category term="PaaS"/>
      <category term="tin whistle"/>
      <category term="tomb"/>
      <category term="cloud wso2 announcement"/>
      <category term="soa"/>
      <category term="synapse"/>
      <category term="arranged marriages"/>
      <category term="business models"/>
      <category term="music"/>
      <category term="mobile phones"/>
      <category term="the 99 flake"/>
      <category term="cloud"/>
      <category term="tune"/>
      <category term="hornpipe"/>
      <category term="open source esb"/>
      <category term="carbon"/>
      <category term="ireland"/>
      <category term="soa governance wso2 registry repository wsdl validation open source governance"/>
      <category term="apache apachecon synapse rest ws-* webservices"/>
      <category term="twitter blog mashup"/>
      <category term="REST Registry UDDI Mule WSO2 SOA"/>
      <category term="the gorse bush"/>
      <category term="wso2"/>
      <author>
        <name>Paul Fremantle</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/15326219720808613358</uri>
      </author>
      <link href="http://pzf.fremantle.org/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/6003063374827736283/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://pzf.fremantle.org/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6003063374827736283/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>SOA, Cloud, Web Services, Synapse, Tin Whistles, Blacksmithing and me</subtitle>
      <title>Paul Fremantle's Blog</title>
      <updated>2012-04-25T10:19:26Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6003063374827736283.post-2158230501677245635</id>
    <link href="http://pzf.fremantle.org/feeds/2158230501677245635/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://www.blogger.com/comment.g?blogID=6003063374827736283&amp;postID=2158230501677245635" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6003063374827736283/posts/default/2158230501677245635" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6003063374827736283/posts/default/2158230501677245635" rel="self" type="application/atom+xml"/>
    <link href="http://pzf.fremantle.org/2011/04/paul.html" rel="alternate" type="text/html"/>
    <title>Paul</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><div dir="ltr" style="text-align: left;"><div style="margin: 0px auto 10px; text-align: center;"><a href="http://4.bp.blogspot.com/--dnAAjrcqsA/Ta_9N11XeUI/AAAAAAAACSE/MNO2GDYRn6Q/s1600/DSCF2526.JPG"><img alt="" border="0" height="480" src="http://4.bp.blogspot.com/--dnAAjrcqsA/Ta_9N11XeUI/AAAAAAAACSE/MNO2GDYRn6Q/s640/DSCF2526.JPG" width="640"/></a> </div><div style="clear: both; text-align: CENTER;"><a href="http://picasa.google.com/blogger/" target="ext"><img align="middle" alt="Posted by Picasa" border="0" src="http://photos1.blogger.com/pbp.gif" style=""/></a></div></div><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6003063374827736283-2158230501677245635?l=pzf.fremantle.org" width="1"/></div></div>
    </content>
    <updated>2011-04-21T09:48:27Z</updated>
    <published>2011-04-21T09:48:00Z</published>
    <author>
      <name>Paul Fremantle</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/15326219720808613358</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6003063374827736283</id>
      <category term="apache"/>
      <category term="hampton"/>
      <category term="design patterns"/>
      <category term="stratos"/>
      <category term="tunes"/>
      <category term="birthday"/>
      <category term="PaaS"/>
      <category term="tin whistle"/>
      <category term="tomb"/>
      <category term="cloud wso2 announcement"/>
      <category term="soa"/>
      <category term="synapse"/>
      <category term="arranged marriages"/>
      <category term="business models"/>
      <category term="music"/>
      <category term="mobile phones"/>
      <category term="the 99 flake"/>
      <category term="cloud"/>
      <category term="tune"/>
      <category term="hornpipe"/>
      <category term="open source esb"/>
      <category term="carbon"/>
      <category term="ireland"/>
      <category term="soa governance wso2 registry repository wsdl validation open source governance"/>
      <category term="apache apachecon synapse rest ws-* webservices"/>
      <category term="twitter blog mashup"/>
      <category term="REST Registry UDDI Mule WSO2 SOA"/>
      <category term="the gorse bush"/>
      <category term="wso2"/>
      <author>
        <name>Paul Fremantle</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/15326219720808613358</uri>
      </author>
      <link href="http://pzf.fremantle.org/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/6003063374827736283/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://pzf.fremantle.org/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6003063374827736283/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>SOA, Cloud, Web Services, Synapse, Tin Whistles, Blacksmithing and me</subtitle>
      <title>Paul Fremantle's Blog</title>
      <updated>2012-04-25T10:19:26Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6003063374827736283.post-9150345820973576887</id>
    <link href="http://pzf.fremantle.org/feeds/9150345820973576887/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://www.blogger.com/comment.g?blogID=6003063374827736283&amp;postID=9150345820973576887" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6003063374827736283/posts/default/9150345820973576887" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6003063374827736283/posts/default/9150345820973576887" rel="self" type="application/atom+xml"/>
    <link href="http://pzf.fremantle.org/2011/04/introduction-to-wso2-message-broker_05.html" rel="alternate" type="text/html"/>
    <title>Introduction to WSO2 Message Broker</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">&lt;style&gt;&lt;/style&gt;       <br/><div class="WordSection1"><div class="MsoNormal"><b style=""><span style="font-size: 18pt;">Introduction to WSO2 Message Broker&lt;o:p&gt;&lt;/o:p&gt;</span></b></div><div class="MsoNormal"><br/></div><div class="MsoNormal"><b style="">Introduction&lt;o:p&gt;&lt;/o:p&gt;</b></div><div class="MsoNormal">WSO2 Message Broker (MB) is a new Open Source project and product from WSO2 that provides messaging functionality within the WSO2 Carbon platform and to other clients in various languages. It works either standalone or in conjunction with products and components such as the WSO2 ESB and WSO2 Complex Event Processing Server. &lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal"><br/></div><div class="MsoNormal">MB is based on the Apache Qpid/Java project (<a href="http://qpid.apache.org/">http://qpid.apache.org</a>). From Apache Qpid, MB gets core support for the AMQP protocol and JMS API. On top of that WSO2 has added support for Amazon SQS APIs and WS-Eventing support.&lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal"><br/></div><div class="MsoNormal"><b style="">Understanding how the MB broker fits into Enterprise Architecture&lt;o:p&gt;&lt;/o:p&gt;</b></div><div class="MsoNormal">The Message Broker provides three main capabilities into an overall Enterprise Architecture:&lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoListParagraphCxSpFirst" style=""><span style="font-family: Symbol;">·<span style="">               </span></span>A queueing/persistent message facility&lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoListParagraphCxSpMiddle" style=""><span style="font-family: Symbol;">·<span style="">               </span></span>An event distribution (pub/sub) model&lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoListParagraphCxSpLast" style=""><span style="font-family: Symbol;">·<span style="">               </span></span>An intermediary where multiple systems can connect irrespective of the direction of messages.&lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal"><br/></div><div class="MsoNormal">To give some concrete examples of these benefits, here are some scenarios:&lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoListParagraphCxSpFirst" style="">1)<span style="">   </span>In the WSO2 ESB, a common pattern is to persist the message from an incoming HTTP request into a persistent message queue, and then process onbound from there. MB can provide the persistent queue.&lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoListParagraphCxSpMiddle" style="">2)<span style="">   </span>The WSO2 ESB already has an event distribution model and eventing support, but the QPid-based broker provides higher performance as well as supporting the JMS API.&lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoListParagraphCxSpLast" style="">3)<span style="">   </span>For example, you may wish to send messages from outside a firewall to a server inside. You could connect an ESB or Service Host within the firewall to a Message Broker running outside the firewall (for example on Amazon EC2). This model is used by the WSO2 Cloud Services Gateway.&lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal"><br/></div><div class="MsoNormal"><b style="">Where does AMQP fit?&lt;o:p&gt;&lt;/o:p&gt;</b></div><div class="MsoNormal"><br/></div><div class="MsoNormal">AMQP (<a href="http://www.amqp.org/">www.amqp.org</a>) is an open protocol for messaging. Whilst the AMQP protocol is still under development, it has released three stable releases (0-8, 0-9-1, and 0-10), with a 1.0 due during 2011. There are a number of implementations of the AMQP standard in production, including Apache Qpid (both Java and C++ versions), RabbitMQ, OpenAMQ and others.&lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal"><br/></div><div class="MsoNormal">WSO2 has been a member of the AMQP working group for several years, and we strongly support AMQP as the way to introduce interoperability and greater openness into the messaging space.&lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal"><br/></div><div class="MsoNormal">The Qpid broker supports a variety of clients on top of the AMQP protocol. The most useful of these for Carbon is the Java JMS 1.1 API, which provides a portable API as well as the main interface with the WSO2 ESB. In addition there are C# and other APIs. WSO2 MB also extends these with WS-Eventing and Amazon SQS APIs for interoperability using HTTP, REST and SOAP.&lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal"><br/></div><div class="MsoNormal"><b style="">Installing the WSO2 MB&lt;o:p&gt;&lt;/o:p&gt;</b></div><div class="MsoNormal"><br/></div><div class="MsoNormal">You can download the WSO2 MB Beta from:&lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal"><a href="http://people.wso2.com/~manjular/wso2mb-1.0.0-beta.zip">http://people.wso2.com/~manjular/wso2mb-1.0.0-beta.zip</a>&lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal"><br/></div><div class="MsoNormal">Once you have downloaded and unzipped, simply switch to the install directory&lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal"><br/></div><div class="MsoNormal">            cd wso2mb-1.0.0-SNAPSHOT&lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal">            bin\wso2server.bat  [ON WINDOWS]&lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal">            bin/wso2server.sh [ON LINUX/MACOSX]&lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal"><br/></div><div class="MsoNormal">Let’s refer to the install directory as &lt;wso2mb&gt; from now on.&lt;o:p&gt;&lt;/o:p&gt;&lt;/wso2mb&gt;</div><div class="MsoNormal"><br/></div><div class="MsoNormal">You should see the server startup:&lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal"><span style="font-family: 'Lucida Console'; font-size: 8pt;">[2011-03-16 14:00:12,471]  INFO {org.wso2.carbon.server.Main} -  Initializing system...&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal"><span style="font-family: 'Lucida Console'; font-size: 8pt;">[2011-03-16 14:00:12,840]  INFO {org.wso2.carbon.server.TomcatCarbonWebappDeployer} -  Deployed Carbon webapp: StandardEngine[Tomcat].StandardHost[defaulthost].StandardContext[/]&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal"><span style="font-family: 'Lucida Console'; font-size: 8pt;">[2011-03-16 14:00:14,147]  INFO {org.wso2.carbon.atomikos.TransactionFactory} -  Starting Atomikos Transaction Manager 3.7.0&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal"><span style="font-family: 'Lucida Console'; font-size: 8pt;">[2011-03-16 14:00:19,952]  INFO {org.wso2.carbon.core.internal.CarbonCoreActivator} -  Starting WSO2 Carbon...&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal"><span style="font-family: 'Lucida Console'; font-size: 8pt;">[2011-03-16 14:00:19,983]  INFO {org.wso2.carbon.core.internal.CarbonCoreActivator} -  Operating System : Mac OS X 10.6.6, x86_64&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal"><span style="font-family: 'Lucida Console'; font-size: 8pt;">[2011-03-16 14:00:19,984]  INFO {org.wso2.carbon.core.internal.CarbonCoreActivator} -  Java Home        : /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal"><span style="font-family: 'Lucida Console'; font-size: 8pt;">[2011-03-16 14:00:19,984]  INFO {org.wso2.carbon.core.internal.CarbonCoreActivator} -  Java Version     : 1.6.0_24&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal"><span style="font-family: 'Lucida Console'; font-size: 8pt;">[2011-03-16 14:00:19,985]  INFO {org.wso2.carbon.core.internal.CarbonCoreActivator} -  Java VM          : Java HotSpot(TM) 64-Bit Server VM 19.1-b02-334,Apple Inc.&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal"><span style="font-family: 'Lucida Console'; font-size: 8pt;">[2011-03-16 14:00:19,985]  INFO {org.wso2.carbon.core.internal.CarbonCoreActivator} -  Carbon Home      : /Users/paul/wso2/wso2mb-1.0.0-SNAPSHOT&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal"><span style="font-family: 'Lucida Console'; font-size: 8pt;">[2011-03-16 14:00:19,985]  INFO {org.wso2.carbon.core.internal.CarbonCoreActivator} -  Java Temp Dir    : /Users/paul/wso2/wso2mb-1.0.0-SNAPSHOT/tmp&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal"><span style="font-family: 'Lucida Console'; font-size: 8pt;">[2011-03-16 14:00:19,986]  INFO {org.wso2.carbon.core.internal.CarbonCoreActivator} -  User             : paul, en-US, Europe/London&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal"><span style="font-family: 'Lucida Console'; font-size: 8pt;">2011-03-16 14:00:12,471]  INFO {org.wso2.carbon.server.Main} -  Initializing system...&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal"><br/></div><div class="MsoNormal"><i style="">some logs deleted&lt;o:p&gt;&lt;/o:p&gt;</i></div><div class="MsoNormal"><br/></div><div class="MsoNormal"><span style="font-family: 'Lucida Console'; font-size: 8pt;">[2011-03-16 14:00:41,691]  INFO {org.wso2.carbon.core.transports.http.HttpsTransportListener} -  HTTPS port       : 9443&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal"><span style="font-family: 'Lucida Console'; font-size: 8pt;">[2011-03-16 14:00:41,691]  INFO {org.wso2.carbon.core.transports.http.HttpTransportListener} -  HTTP port        : 9763&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal"><span style="font-family: 'Lucida Console'; font-size: 8pt;">[2011-03-16 14:00:42,422]  INFO {org.wso2.carbon.ui.internal.CarbonUIServiceComponent} -  Mgt Console URL  : https://192.168.1.100:9443/carbon/&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal"><span style="font-family: 'Lucida Console'; font-size: 8pt;">[2011-03-16 14:00:42,499]  INFO {org.wso2.carbon.core.internal.StartupFinalizerServiceComponent} -  Started Transport Listener Manager&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal"><span style="font-family: 'Lucida Console'; font-size: 8pt;">[2011-03-16 14:00:42,500]  INFO {org.wso2.carbon.core.internal.StartupFinalizerServiceComponent} -  Server           :  WSO2 MB -1.0.0-SNAPSHOT&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal"><span style="font-family: 'Lucida Console'; font-size: 8pt;">[2011-03-16 14:00:42,506]  INFO {org.wso2.carbon.core.internal.StartupFinalizerServiceComponent} -  WSO2 Carbon started in 27 sec&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal"><span style="font-family: 'Lucida Console'; font-size: 8pt;">2011-03-16 14:00:12,471]  INFO {org.wso2.carbon.server.Main} -  Initializing system...&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal"><br/></div><div class="MsoNormal">WSO2 Message Broker is installable in more ways for production systems. Typically it is either registered as a Linux Daemon or as a Windows Service – but for now we will stick with the command-line version for simplicity.&lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal"><br/></div><div class="MsoNormal">Once the server is running you can access the management console. Point your browser at:&lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal">            <a href="https://localhost:9443/">https://localhost:9443</a> &lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal"><br/></div><div class="MsoNormal">Initially you will see a browser screen warning you about the certificates. Please tell your browser to continue (For a production server you would normally install a proper SSL/TLS certificate, but for initial install we generate a self-signed certificate that you need to agree to use).&lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal"><br/></div><div class="MsoNormal">Once you have accepted the certificate, you should see a screen like:&lt;o:p&gt;&lt;/o:p&gt;<br/><br/><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-K15BRL5C_1Q/TZtjPIGHQpI/AAAAAAAACRg/j9KA5vAp_HY/s1600/first.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="390" src="http://4.bp.blogspot.com/-K15BRL5C_1Q/TZtjPIGHQpI/AAAAAAAACRg/j9KA5vAp_HY/s640/first.png" width="640"/></a></div><br/></div><div class="MsoNormal">&lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal">You can login using the default user/password which is <i style="">admin/admin.&lt;o:p&gt;&lt;/o:p&gt;</i></div><div class="MsoNormal"><br/></div><div class="MsoNormal">Once you login you should see the following screen:&lt;o:p&gt;&lt;/o:p&gt;<br/><br/><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-Ed26ittMe_Y/TZtjN-8_eQI/AAAAAAAACRc/kToJcYcEm3Y/s1600/second.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="440" src="http://4.bp.blogspot.com/-Ed26ittMe_Y/TZtjN-8_eQI/AAAAAAAACRc/kToJcYcEm3Y/s640/second.png" width="640"/></a></div><br/></div><div class="MsoNormal">&lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal">Before we examine the admin console, lets first create a simple JMS client that will communicate with the server via AMQP on TCP/IP. &lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal"><br/></div><div class="MsoNormal"><b style="">Getting Started with JMS&lt;o:p&gt;&lt;/o:p&gt;</b></div><div class="MsoNormal">The Java Message Service (JMS) specification - <a href="http://www.oracle.com/technetwork/java/index-jsp-142945.html">http://www.oracle.com/technetwork/java/index-jsp-142945.html</a> - is a specification for talking to message brokers. It is unfortunately poorly named: the word “service” implies this is an implementation, but JMS does not define an actual messaging service, instead just the API which is used to access JMS providers. “Java Messaging API” would more accurately express what JMS is. The result is that there are a variety of JMS providers, and they often have quite different approaches to their core model. &lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal"><br/></div><div class="MsoNormal">The WSO2 Message Broker is based on the Apache Qpid project (<a href="http://qpid.apache.org/">http://qpid.apache.org</a>) and is a compliant implementation of the JMS specification, as well as various levels of the AMQP specification (0-8, 0-9-1, 0-10).  &lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal"><br/></div><div class="MsoNormal">To write completely standard portable JMS code, you need to use a JNDI provider to gain access to the JMS connection, queues, etc. In this example we will use a Qpid JNDI provider backed by a simple set of properties. This makes the overall system simple and highly portable. &lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal"><br/></div><div class="MsoNormal">Here is a sample JMS application that can be used to test access to the Message Broker.  You can find this code here: &lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal"><a href="http://people.apache.org/~pzf/MB/JMSExample.java">http://people.apache.org/~pzf/MB/JMSExample.java</a> &lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal"><br/></div><div class="MsoNormal"><br/></div><div class="MsoNormal"><br/></div><div class="MsoNormal">First are some required imports. &lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal"><br/></div><div class="code">import javax.jms.*;&lt;o:p&gt;&lt;/o:p&gt;</div><div class="code">import javax.naming.Context;&lt;o:p&gt;&lt;/o:p&gt;</div><div class="code">import javax.naming.InitialContext;&lt;o:p&gt;&lt;/o:p&gt;</div><div class="code">import java.util.Properties;&lt;o:p&gt;&lt;/o:p&gt;</div><div class="code"><br/></div><div class="MsoNormal">Next is a simple “main” class definition:&lt;o:p&gt;&lt;/o:p&gt;</div><div class="code"><br/></div><div class="code">public class JMSExample {&lt;o:p&gt;&lt;/o:p&gt;</div><div class="code"><br/></div><div class="code">public static void main(String[] args) {&lt;o:p&gt;&lt;/o:p&gt;</div><div class="code">       JMSExample producer = new JMSExample();&lt;o:p&gt;&lt;/o:p&gt;</div><div class="code">       producer.runTest();&lt;o:p&gt;&lt;/o:p&gt;</div><div class="code">}&lt;o:p&gt;&lt;/o:p&gt;</div><div class="code"><br/></div><div class="code">       &lt;o:p&gt;&lt;/o:p&gt;</div><div class="code">private void runTest() {&lt;o:p&gt;&lt;/o:p&gt;</div><div class="code"><br/></div><div class="MsoNormal">Since this is just an example, we will place the complete logic in a try/catch block.&lt;o:p&gt;&lt;/o:p&gt;</div><div class="code"><br/></div><div class="code">try {&lt;o:p&gt;&lt;/o:p&gt;</div><div class="code"><br/></div><div class="MsoNormal">Normally the JNDI is configured by a properties file, but you can also do it from an in-memory set of properties. To see a similar setup with a properties file, take a look at the ESB example below.  Here is a properties object to store the properties:&lt;o:p&gt;&lt;/o:p&gt;</div><div class="code"><br/></div><div class="code">Properties properties = new Properties();&lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal"><br/></div><div class="MsoNormal">In order to bootstrap the JNDI entries for the connection factory and queue, we set name/value pairs into the simple properties object:                    &lt;o:p&gt;&lt;/o:p&gt;</div><div class="code"><br/></div><div class="code">properties.put(<span style="color: #2a00ff;">"connectionfactory.cf"</span>, &lt;o:p&gt;&lt;/o:p&gt;</div><div class="code">       <span style="color: #2a00ff;">"amqp://admin:admin@carbon/carbon?brokerlist='tcp://localhost:5672'"</span>);&lt;o:p&gt;&lt;/o:p&gt;</div><div class="code"><br/></div><div class="MsoNormal">The property name “connectionfactory.cf” denotes that we are creating an object of type ConnectionFactory with name “cf”. The value is a URL that is used to bootstrap the ConnectionFactory: this URL points to the AMQP broker. The syntax is broken up as follows:&lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal"><span style="font-family: 'Lucida Console'; font-size: 8pt;">       amqp://               Indicates this is an AMQP URL&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal"><span style="font-family: 'Lucida Console'; font-size: 8pt;">       admin:admin@  This is the username/password &lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal"><span style="font-family: 'Lucida Console'; font-size: 8pt;">       carbon/carbon The client ID and virtual host&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal"><span style="font-family: 'Lucida Console'; font-size: 8pt;">       ?                     separator for options&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal"><span style="font-family: 'Lucida Console'; font-size: 8pt;">       brokerlist=’tcp://localhost:5672’          A list of broker URLs to use&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal"><br/></div><div class="MsoNormal">For more information on this URL syntax please see:&lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal"><a href="https://cwiki.apache.org/qpid/connection-url-format.html">https://cwiki.apache.org/qpid/connection-url-format.html</a>  &lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal"><br/></div><div class="MsoNormal">The virtual host name is part of the definition in:&lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal">&lt;wso2mb&gt;/repository/conf/qpid/etc/virtualhosts.xml &lt;o:p&gt;&lt;/o:p&gt;&lt;/wso2mb&gt;</div><div class="MsoNormal"><br/></div><div class="MsoNormal">This file also defines aspects such as the maximum number of messages in a queue and the queue depth (maximum size in bytes of the queue).&lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal"><br/></div><div class="MsoNormal">Now we need to create a JNDI entry for the queue we are going to talk to:&lt;o:p&gt;&lt;/o:p&gt;</div><div class="code"><br/></div><div class="code">properties.put(<span style="color: #2a00ff;">"destination.samplequeue"</span>, <span style="color: #2a00ff;">"samplequeue; {create:always}"</span>);&lt;o:p&gt;&lt;/o:p&gt;</div><div class="code"><br/></div><div class="MsoNormal">The property name “destination.samplequeue” indicates creating a destination with a JNDI name of “samplequeue”. The property value “samplequeue; {create:always}” indicates a queue named “samplequeue” with an attribute which tells the broker to create the queue if it doesn’t exist.&lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal"><br/>These properties are specific to the particular JNDI implementation we are using, which is the Qpid “PropertiesFileInitialContextFactory”. So now we need to configure JNDI to use this implementation:&lt;o:p&gt;&lt;/o:p&gt;</div><div class="code">                      &lt;o:p&gt;&lt;/o:p&gt;</div><div class="code">                      &lt;o:p&gt;&lt;/o:p&gt;</div><div class="code">properties.put(<span style="color: #2a00ff;">"java.naming.factory.initial"</span>, <span style="color: #2a00ff;">"org.apache.qpid.jndi.PropertiesFileInitialContextFactory"</span>);&lt;o:p&gt;&lt;/o:p&gt;</div><div class="code"><br/></div><div class="MsoNormal">Now we can do our JNDI lookups:&lt;o:p&gt;&lt;/o:p&gt;</div><div class="code"><br/></div><div class="code">Context context = new InitialContext(properties);&lt;o:p&gt;&lt;/o:p&gt;</div><div class="code"><br/></div><div class="code">ConnectionFactory connectionFactory = &lt;o:p&gt;&lt;/o:p&gt;</div><div class="code" style="text-indent: 36.0pt;">(ConnectionFactory) context.lookup(<span style="color: #2a00ff;">"cf"</span>);&lt;o:p&gt;&lt;/o:p&gt;</div><div class="code" style="text-indent: 36.0pt;"><br/></div><div class="MsoNormal">Having “found” a JMS Connection Factory in the JNDI, we can now create a connection to the broker:&lt;o:p&gt;&lt;/o:p&gt;</div><div class="code" style="text-indent: 36.0pt;"><br/></div><div class="code">Connection connection = connectionFactory.createConnection();&lt;o:p&gt;&lt;/o:p&gt;</div><div class="code">connection.start();&lt;o:p&gt;&lt;/o:p&gt;</div><div class="code"><br/></div><div class="MsoNormal">And now we can create a JMS Session:&lt;o:p&gt;&lt;/o:p&gt;</div><div class="code"><br/></div><div class="code">Session session = connection.createSession(false,&lt;o:p&gt;&lt;/o:p&gt;</div><div class="code">                                    Session.<i><span style="color: #0000c0;">AUTO_ACKNOWLEDGE</span></i>);&lt;o:p&gt;&lt;/o:p&gt;</div><div class="code"><br/></div><div class="MsoNormal">One more lookup from JNDI will lookup our queue:&lt;o:p&gt;&lt;/o:p&gt;</div><div class="code"><br/></div><div class="code">Destination destination = (Destination) context&lt;o:p&gt;&lt;/o:p&gt;</div><div class="code">                                    .lookup(<span style="color: #2a00ff;">"samplequeue"</span>);&lt;o:p&gt;&lt;/o:p&gt;</div><div class="code"><br/></div><div class="code"><br/></div><div class="MsoNormal">Now we can create a Producer, and send a message:&lt;o:p&gt;&lt;/o:p&gt;</div><div class="code">                      &lt;o:p&gt;&lt;/o:p&gt;</div><div class="code">MessageProducer producer = session.createProducer(destination);&lt;o:p&gt;&lt;/o:p&gt;</div><div class="code">TextMessage outMessage = session.createTextMessage();&lt;o:p&gt;&lt;/o:p&gt;</div><div class="code">outMessage.setText(<span style="color: #2a00ff;">"Hello World!"</span>);&lt;o:p&gt;&lt;/o:p&gt;</div><div class="code">producer.send(outMessage);&lt;o:p&gt;&lt;/o:p&gt;</div><div class="code"><br/></div><div class="MsoNormal">Of course, in real life you would most likely NOT now retrieve that same message from the same application, but for this example we will now retrieve the message:                       &lt;o:p&gt;&lt;/o:p&gt;</div><div class="code">MessageConsumer consumer = session.createConsumer(destination);&lt;o:p&gt;&lt;/o:p&gt;</div><div class="code">Message inMessage = consumer.receive();&lt;o:p&gt;&lt;/o:p&gt;</div><div class="code">System.<i><span style="color: #0000c0;">out</span></i>.println(((TextMessage)inMessage).getText());&lt;o:p&gt;&lt;/o:p&gt;</div><div class="code"><br/></div><div class="MsoNormal">And close up the connection and the initial context:&lt;o:p&gt;&lt;/o:p&gt;</div><div class="code">                      &lt;o:p&gt;&lt;/o:p&gt;</div><div class="code">connection.close();&lt;o:p&gt;&lt;/o:p&gt;</div><div class="code">context.close();&lt;o:p&gt;&lt;/o:p&gt;</div><div class="code">} catch (Exception exp) {&lt;o:p&gt;&lt;/o:p&gt;</div><div class="code">       exp.printStackTrace();&lt;o:p&gt;&lt;/o:p&gt;</div><div class="code">}&lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal"><br/></div><div class="MsoNormal">To try out this client you need the correct client JARs. &lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal"><br/></div><div class="MsoNormal">In the beta release you will find:&lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal" style="text-indent: 36.0pt;"><span style="font-family: 'Lucida Console'; font-size: 9pt;">&lt;wso2mb&gt;/jms-client-lib/geronimo-jms_1.1_spec-1.1.0.wso2v1.jar&lt;o:p&gt;&lt;/o:p&gt;&lt;/wso2mb&gt;</span></div><div class="MsoNormal" style="text-indent: 36.0pt;"><span style="font-family: 'Lucida Console'; font-size: 9pt;">&lt;wso2mb&gt;/jms-client-lib/qpid-client-0.9.wso2v2.jar&lt;o:p&gt;&lt;/o:p&gt;&lt;/wso2mb&gt;</span></div><div class="MsoNormal"><br/></div><div class="MsoNormal">You also need to reference&lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal" style="text-indent: 36.0pt;"><span style="font-family: 'Lucida Console'; font-size: 9pt;">&lt;wso2mb&gt;/lib/log4j-1.2.13.jar&lt;o:p&gt;&lt;/o:p&gt;&lt;/wso2mb&gt;</span></div><div class="MsoNormal"><br/></div><div class="MsoNormal"><br/></div><div class="MsoNormal"><br/></div><div class="MsoNormal"><br/></div><div class="MsoNormal"><br/></div><div class="MsoNormal">Once you have those in your classpath you can run the program. You should see some simple output:&lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal"><br/></div><div class="MsoNormal" style=""><span style="color: red; font-family: Monaco; font-size: 7pt;">log4j:WARN No appenders could be found for logger (org.apache.qpid.jndi.PropertiesFileInitialContextFactory).</span><span style="font-family: Monaco; font-size: 7pt;">&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal" style=""><span style="color: red; font-family: Monaco; font-size: 7pt;">log4j:WARN Please initialize the log4j system properly.</span><span style="font-family: Monaco; font-size: 7pt;">&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal" style=""><span style="color: black; font-family: Monaco; font-size: 7pt;">Hello World!</span><span style="font-family: Monaco; font-size: 7pt;">&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal"><br/></div><div class="MsoNormal">If you got that far, congratulations!&lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal"><br/></div><div class="MsoNormal">In the next section we are going to look at using the ESB with the Message Broker.&lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal"><br/></div><div class="MsoNormal">There are two approaches for this:&lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal">1) If you are using the existing WSO2 ESB 3.0.1 or similar, you can deploy the MB client libraries and communicate using the network.&lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal"><br/></div><div class="MsoNormal">2) As of the next WSO2 ESB release (3.1.0) it will include the Qpid/MB features as part of the release and you can utilize the Message Broker/JMS runtime locally in the same JVM.&lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal"><br/></div><div class="MsoNormal"><b style="">WSO2 MB and WSO2 ESB together&lt;o:p&gt;&lt;/o:p&gt;</b></div><div class="MsoNormal">In this first instance we are going to get the WSO2 ESB and MB to work together. &lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal">Assuming that you already have the MB installed and running, you will first need to install the ESB and change the ports of the admin console so that they don’t clash. You can download WSO2 ESB 3.0.1 from:&lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal">            <a href="http://wso2.org/downloads/esb">http://wso2.org/downloads/esb</a> &lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal"><br/></div><div class="MsoNormal">The install procedure is similar: unzip the ESB, but don’t start it up yet. Let’s name (for this guide) the directory where you installed the ESB as &lt;wso2esb&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/wso2esb&gt;</div><div class="MsoNormal"><br/></div><div class="MsoNormal">First let’s edit the ports on which the ESB listens. (Alternatively you could do the same to the MB instead).&lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal"><br/></div><div class="MsoNormal">Edit the &lt;wso2esb&gt;\repository\conf\mgt-transports.xml&lt;o:p&gt;&lt;/o:p&gt;&lt;/wso2esb&gt;</div><div class="MsoNormal"><br/></div><div class="MsoNormal">This file defines which ports the management console runs (HTTP and HTTPS). &lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal"><br/></div><div class="MsoNormal">Please change:&lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal">&lt;transport class="org.wso2.carbon.server.transports.http.HttpTransport" name="http"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/transport&gt;</div><div class="MsoNormal"><br/>&lt;transport name="http" class="org.wso2.carbon.server.transports.http.HttpTransport"&gt;<br/>        &lt;parameter name="port"&gt;9763&lt;/parameter&gt;<br/><br/>to read:<br/>&lt;transport name="http" class="org.wso2.carbon.server.transports.http.HttpTransport"&gt;<br/>        &lt;parameter name="port"&gt;9764&lt;/parameter&gt;</div><div class="MsoNormal"><br/>Similarly change the HTTPS port to be 9444.</div><div class="MsoNormal"><br/></div><div class="MsoNormal">Now the next step is to ensure that the ESB has the right drivers to talk to the MB. Copy the following JARs into the &lt;wso2esb&gt;\repository\components\lib directory:&lt;o:p&gt;&lt;/o:p&gt;&lt;/wso2esb&gt;</div><div class="MsoNormal" style="text-indent: 36.0pt;"><span style="font-family: 'Lucida Console'; font-size: 9pt;">&lt;wso2mb&gt;/jms-client-lib/geronimo-jms_1.1_spec-1.1.0.wso2v1.jar&lt;o:p&gt;&lt;/o:p&gt;&lt;/wso2mb&gt;</span></div><div class="MsoNormal" style="text-indent: 36.0pt;"><span style="font-family: 'Lucida Console'; font-size: 9pt;">&lt;wso2mb&gt;/jms-client-lib/qpid-client-0.9.wso2v2.jar&lt;o:p&gt;&lt;/o:p&gt;&lt;/wso2mb&gt;</span></div><div class="MsoNormal"><br/></div><div class="MsoNormal"><br/></div><div class="MsoNormal">We also need to configure the JMS transport correctly. To do this we edit the axis2.xml file:&lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal"> &lt;wso2esb&gt;\repository\conf\axis2.xml&lt;o:p&gt;&lt;/o:p&gt;&lt;/wso2esb&gt;</div><div class="MsoNormal"><br/></div><div class="MsoNormal">This file has the JMS transport commented out. It also needs the settings updated to use the Qpid libraries. Change the file so that the JMS receiver and sender sections look like this:&lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal"> <span style="font-family: 'Lucida Console'; font-size: 8pt;"> &lt;transportreceiver class="org.apache.axis2.transport.jms.JMSListener" name="jms"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/transportreceiver&gt;</span></div><div class="MsoNormal"><span style="font-family: 'Lucida Console'; font-size: 8pt;">       </span><span class="Apple-style-span" style="font-family: 'Lucida Console';"><span class="Apple-style-span" style="font-size: 11px;">&lt;transportReceiver name="jms" class="org.apache.axis2.transport.jms.JMSListener"&gt;</span></span><br/><span class="Apple-style-span" style="font-family: 'Lucida Console';"><span class="Apple-style-span" style="font-size: 11px;">        &lt;parameter name="myTopicConnectionFactory" locked="false"&gt;</span></span><br/><span class="Apple-style-span" style="font-family: 'Lucida Console';"><span class="Apple-style-span" style="font-size: 11px;">        <span class="Apple-tab-span" style="white-space: pre;"> </span>&lt;parameter name="java.naming.factory.initial" locked="false"&gt;org.apache.qpid.jndi.PropertiesFileInitialContextFactory&lt;/parameter&gt;</span></span><br/><span class="Apple-style-span" style="font-family: 'Lucida Console';"><span class="Apple-style-span" style="font-size: 11px;">        <span class="Apple-tab-span" style="white-space: pre;"> </span>&lt;parameter name="java.naming.provider.url" locked="false"&gt;resources/jndi.properties&lt;/parameter&gt;</span></span><br/><span class="Apple-style-span" style="font-family: 'Lucida Console';"><span class="Apple-style-span" style="font-size: 11px;">        <span class="Apple-tab-span" style="white-space: pre;"> </span>&lt;parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false"&gt;TopicConnectionFactory&lt;/parameter&gt;</span></span><br/><span class="Apple-style-span" style="font-family: 'Lucida Console';"><span class="Apple-style-span" style="font-size: 11px;"><span class="Apple-tab-span" style="white-space: pre;">  </span>&lt;parameter name="transport.jms.ConnectionFactoryType" locked="false"&gt;topic&lt;/parameter&gt;</span></span><br/><span class="Apple-style-span" style="font-family: 'Lucida Console';"><span class="Apple-style-span" style="font-size: 11px;">        &lt;/parameter&gt;</span></span><br/><span class="Apple-style-span" style="font-family: 'Lucida Console';"><span class="Apple-style-span" style="font-size: 11px;"><br/></span></span><br/><span class="Apple-style-span" style="font-family: 'Lucida Console';"><span class="Apple-style-span" style="font-size: 11px;">        &lt;parameter name="myQueueConnectionFactory" locked="false"&gt;</span></span><br/><span class="Apple-style-span" style="font-family: 'Lucida Console';"><span class="Apple-style-span" style="font-size: 11px;">        <span class="Apple-tab-span" style="white-space: pre;"> </span>&lt;parameter name="java.naming.factory.initial" locked="false"&gt;org.apache.qpid.jndi.PropertiesFileInitialContextFactory&lt;/parameter&gt;</span></span><br/><span class="Apple-style-span" style="font-family: 'Lucida Console';"><span class="Apple-style-span" style="font-size: 11px;">        <span class="Apple-tab-span" style="white-space: pre;"> </span>&lt;parameter name="java.naming.provider.url" locked="false"&gt;resources/jndi.properties&lt;/parameter&gt;</span></span><br/><span class="Apple-style-span" style="font-family: 'Lucida Console';"><span class="Apple-style-span" style="font-size: 11px;">        <span class="Apple-tab-span" style="white-space: pre;"> </span>&lt;parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false"&gt;QueueConnectionFactory&lt;/parameter&gt;</span></span><br/><span class="Apple-style-span" style="font-family: 'Lucida Console';"><span class="Apple-style-span" style="font-size: 11px;"><span class="Apple-tab-span" style="white-space: pre;">  </span>&lt;parameter name="transport.jms.ConnectionFactoryType" locked="false"&gt;queue&lt;/parameter&gt;</span></span><br/><span class="Apple-style-span" style="font-family: 'Lucida Console';"><span class="Apple-style-span" style="font-size: 11px;">        &lt;/parameter&gt;</span></span><br/><span class="Apple-style-span" style="font-family: 'Lucida Console';"><span class="Apple-style-span" style="font-size: 11px;"><br/></span></span><br/><span class="Apple-style-span" style="font-family: 'Lucida Console';"><span class="Apple-style-span" style="font-size: 11px;">        &lt;parameter name="default" locked="false"&gt;</span></span><br/><span class="Apple-style-span" style="font-family: 'Lucida Console';"><span class="Apple-style-span" style="font-size: 11px;">        <span class="Apple-tab-span" style="white-space: pre;"> </span>&lt;parameter name="java.naming.factory.initial" locked="false"&gt;org.apache.qpid.jndi.PropertiesFileInitialContextFactory&lt;/parameter&gt;</span></span><br/><span class="Apple-style-span" style="font-family: 'Lucida Console';"><span class="Apple-style-span" style="font-size: 11px;">        <span class="Apple-tab-span" style="white-space: pre;"> </span>&lt;parameter name="java.naming.provider.url" locked="false"&gt;resources/jndi.properties&lt;/parameter&gt;</span></span><br/><span class="Apple-style-span" style="font-family: 'Lucida Console';"><span class="Apple-style-span" style="font-size: 11px;">        <span class="Apple-tab-span" style="white-space: pre;"> </span>&lt;parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false"&gt;QueueConnectionFactory&lt;/parameter&gt;</span></span><br/><span class="Apple-style-span" style="font-family: 'Lucida Console';"><span class="Apple-style-span" style="font-size: 11px;"><span class="Apple-tab-span" style="white-space: pre;">  </span>&lt;parameter name="transport.jms.ConnectionFactoryType" locked="false"&gt;queue&lt;/parameter&gt;</span></span><br/><span class="Apple-style-span" style="font-family: 'Lucida Console';"><span class="Apple-style-span" style="font-size: 11px;">        &lt;/parameter&gt;</span></span><br/><span class="Apple-style-span" style="font-family: 'Lucida Console';"><span class="Apple-style-span" style="font-size: 11px;">    &lt;/transportReceiver&gt;</span></span></div><div class="MsoNormal">You can find my copy of the edited axis2.xml here:&lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal"><a href="http://people.wso2.com/~paul/mb-guide-1.0/">http://people.wso2.com/~paul/mb-guide-1.0/</a> &lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal"><br/></div><div class="MsoNormal">If you have looked through the JMS config you will notice it references a JNDI resource: resources/jndi.properties.&lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal"><br/></div><div class="MsoNormal">This is used to do the same thing the hard-coded properties we used above do – configure the local JNDI that the JMS client inside the ESB will use. In a future release of the ESB we expect to automatically configure this JNDI, but in the meantime, we can simply create a file in the &lt;wso2esb&gt;/resources directory.&lt;o:p&gt;&lt;/o:p&gt;&lt;/wso2esb&gt;</div><div class="MsoNormal"><br/></div><div class="MsoNormal">Please create &lt;wso2esb&gt;/resources/jndi.properties to look like this:&lt;o:p&gt;&lt;/o:p&gt;&lt;/wso2esb&gt;</div><div class="MsoNormal"><br/></div><div class="MsoNormal"><span style="font-family: 'Lucida Console'; font-size: 9pt;">connectionfactory.TopicConnectionFactory = \&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal"><span style="font-family: 'Lucida Console'; font-size: 9pt;">amqp://admin:admin@carbon/carbon?brokerlist='tcp://localhost:5672'&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal"><span style="font-family: 'Lucida Console'; font-size: 9pt;">connectionfactory.QueueConnectionFactory = \&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal"><span style="font-family: 'Lucida Console'; font-size: 9pt;">amqp://admin:admin@carbon/carbon?brokerlist='tcp://localhost:5672'&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal"><span style="font-family: 'Lucida Console'; font-size: 9pt;">destination.dynamicQueues/myqueue=jmsdestinationqueue; {create:always}&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal"><span style="font-family: 'Lucida Console'; font-size: 9pt;">destination.myqueue=jmsdestinationqueue; {create:always}&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal"><br/></div><div class="MsoNormal"><br/></div><div class="MsoNormal">Please note that the lines ending \ are actually split for formatting and should be one continuous line.&lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal"><br/></div><div class="MsoNormal">You can find this file here:&lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal"><a href="http://people.apache.org/~pzf/MB/">http://people.apache.org/~pzf/MB/</a>&lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal"><br/></div><div class="MsoNormal">Now we should be able to start the ESB. Of course it won’t actually do anything yet.&lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal"><br/></div><div class="MsoNormal"><br/></div><div class="MsoNormal">Just for interest, you can try starting the WSO2 ESB with the MB <b style="">stopped. </b>Now that the JMS transport is enabled, you should see connection errors:&lt;o:p&gt;&lt;/o:p&gt;</div><div class="code"><br/></div><div class="code">javax.jms.JMSException: Error creating connection: Connection refused&lt;o:p&gt;&lt;/o:p&gt;</div><div class="code">       at org.apache.qpid.client.AMQConnectionFactory.createConnection(AMQConnectionFactory.java:286)&lt;o:p&gt;&lt;/o:p&gt;</div><div class="code">       at org.apache.axis2.transport.jms.JMSUtils.createConnection(JMSUtils.java:579)&lt;o:p&gt;&lt;/o:p&gt;</div><div class="code">       at org.apache.axis2.transport.jms.ServiceTaskManager$MessageListenerTask.createConnection(ServiceTaskManager.java:803)&lt;o:p&gt;&lt;/o:p&gt;</div><div class="code">       at org.apache.axis2.transport.jms.ServiceTaskManager$MessageListenerTask.getConnection(ServiceTaskManager.java:688)&lt;o:p&gt;&lt;/o:p&gt;</div><div class="code">       at org.apache.axis2.transport.jms.ServiceTaskManager$MessageListenerTask.receiveMessage(ServiceTaskManager.java:487)&lt;o:p&gt;&lt;/o:p&gt;</div><div class="code">       at org.apache.axis2.transport.jms.ServiceTaskManager$MessageListenerTask.run(ServiceTaskManager.java:412)&lt;o:p&gt;&lt;/o:p&gt;</div><div class="code">       at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:58)&lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal"><br/></div><div class="MsoNormal"><br/></div><div class="MsoNormal">The ESB will still start but the JMS transport will be disabled. &lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal"><br/></div><div class="MsoNormal">If you start the MB, then the ESB should start fine. You will however see some warning lines:&lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal">[2011-04-01 09:14:05,320]  WARN - JMSUtils Cannot locate destination : WSDLValidatorService&lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal"><br/></div><div class="MsoNormal">This is because the ESB is binding internal services to the JMS transport. In the most recent builds of the ESB this has been changed so that the ESB only binds internal services to HTTP/S transports to avoid this. &lt;o:p&gt;&lt;/o:p&gt;</div><span style="font-family: Cambria; font-size: 12pt;"><br clear="all" style=""/> </span>  <br/><div class="MsoNormal"><br/></div><div class="MsoNormal"><br/></div><div class="MsoNormal">If you go to the Message Broker web console, you can now see the queues that have been created to support the ESB. Simply click on the left-hand menu item <b style="">Queues</b><b style=""><span style="font-family: Wingdings;">à</span>List</b>.&lt;o:p&gt;&lt;/o:p&gt;</div><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-6-G3EFrhKHs/TZti10ncv0I/AAAAAAAACRY/ca4A4J0KRAY/s1600/third.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="338" src="http://4.bp.blogspot.com/-6-G3EFrhKHs/TZti10ncv0I/AAAAAAAACRY/ca4A4J0KRAY/s640/third.png" width="640"/></a></div><div class="MsoNormal"><br/></div><div class="MsoNormal">&lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal"><br/></div><div class="MsoNormal">Now we can create a simple proxy service that will test the JMS connectivity. This is a slight variation on one of the standard ESB Samples.&lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal"><br/></div><div class="MsoNormal">This proxy service expects a SOAP or XML message via HTTP POST from a client and simply puts the body of this message into a JMS queue. The server then responds with an <b style="">HTTP 202 Accepted</b> to the client. This is a great test, because we can use something as simple as <b style="">curl</b> to post messages into the ESB.&lt;o:p&gt;&lt;/o:p&gt;</div><div class="MsoNormal"><br/></div><div class="MsoNormal">Here is the proxy definition for the ESB:&lt;o:p&gt;&lt;/o:p&gt;</div><div class="code"><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"><br/></span></div><div class="code"><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="code">&lt;proxy name="testJMS" startonload="true" trace="disable" transports="https jms http" xmlns="http://ws.apache.org/ns/synapse"&gt;<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">&lt;o:p&gt;&lt;/o:p&gt;</span>&lt;/proxy&gt;</div><div class="code"><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"/><br/><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">&lt;?xml version="1.0" encoding="UTF-8"?&gt;</span><br/><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">&lt;proxy xmlns="http://ws.apache.org/ns/synapse" name="testJMS" transports="https jms http" startOnLoad="true" trace="disable"&gt;</span><br/><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">    &lt;target&gt;</span><br/><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">        &lt;endpoint name="jmsqueue"&gt;</span><br/><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">            &lt;address uri="jms:/myqueue?transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory&amp;amp;java.naming.factory.initial=org.apache.qpid.jndi.PropertiesFileInitialContextFactory&amp;amp;java.naming.provider.url=resources/jndi.properties"/&gt;</span><br/><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">        &lt;/endpoint&gt;</span><br/><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">        &lt;inSequence&gt;</span><br/><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">        &lt;property action="set" name="OUT_ONLY" value="true"/&gt;</span><br/><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">        &lt;property name="FORCE_SC_ACCEPTED" value="true" scope="axis2"/&gt;    </span><br/><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">        &lt;/inSequence&gt;</span><br/><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">        &lt;outSequence&gt;</span><br/><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">            &lt;send/&gt;</span><br/><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">        &lt;/outSequence&gt;</span><br/><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">    &lt;/target&gt;</span><br/><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">&lt;/proxy&gt;</span></div><address><div class="code">&lt;o:p&gt;&lt;/o:p&gt;</div><div class="code"><br/></div><div class="MsoNormal"><span class="Apple-style-span" style="font-style: normal;">This file is available at </span><span class="Apple-style-span" style="font-style: normal;"><a href="http://people.apache.org/~pzf/MB/testJMS.xml">http://people.apache.org/~pzf/MB/testJMS.xml</a></span><span class="Apple-style-span" style="font-style: normal;"> </span><span class="Apple-style-span" style="font-style: normal;">&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal"><span class="Apple-style-span" style="font-style: normal;"><br/></span></div><div class="MsoNormal"><span class="Apple-style-span" style="font-style: normal;">You need to place this file here:&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal"><span style="font-family: 'Lucida Console'; font-size: 10pt;">&lt;wso2esb style="font-style: normal;"&gt;/repository/conf/synapse-config/proxy-services/testJMS.xml&lt;o:p&gt;&lt;/o:p&gt;&lt;/wso2esb&gt;</span></div><div class="MsoNormal"><span class="Apple-style-span" style="font-style: normal;"><br/></span></div><div class="MsoNormal"><span class="Apple-style-span" style="font-style: normal;">This is a nice feature of the ESB. Effectively you can configure independent proxy services, each with their own config file or registry entry, and the ESB amalgamates them at runtime to create a single consistent ESB. This is great for doing incremental changes. You can even change this file at runtime and have the proxy hot-deployed.&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal"><span class="Apple-style-span" style="font-style: normal;"><br/></span></div><div class="MsoNormal"><span class="Apple-style-span" style="font-style: normal;">The proxy service is really simple. Basically it just sets the destination to send the message on to the JMS queue, which is defined using a combination of JNDI and the JMS URL. &lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal"><span class="Apple-style-span" style="font-style: normal;"><br/></span></div><div class="MsoNormal"><span class="Apple-style-span" style="font-style: normal;">The JMS URL is made up of:&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal" style="text-indent: 36.0pt;"><span style="font-family: 'Lucida Console'; font-size: 10pt; font-style: normal;">jms:/myqueue            &lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal" style="margin-left: 36.0pt; text-indent: 36.0pt;"><span class="Apple-style-span" style="font-style: normal;">Look for a JNDI entry “myqueue” &lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal" style="margin-left: 36.0pt; text-indent: 36.0pt;"><span class="Apple-style-span" style="font-style: normal;">(see jndi properties above)&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal" style="text-indent: 36.0pt;"><span class="Apple-style-span" style="font-style: normal;"><span style="font-family: 'Lucida Console'; font-size: 10pt;">?</span><span style="font-family: 'Lucida Console';">    &lt;o:p&gt;&lt;/o:p&gt;</span></span></div><div class="MsoNormal" style="text-indent: 36.0pt;"><span class="Apple-style-span" style="font-style: normal;">            Separator indicating extra attributes&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal" style="text-indent: 36.0pt;"><span class="Apple-style-span" style="font-style: normal;"><br/></span></div><div class="MsoNormal" style="text-indent: 36.0pt;"><span style="font-family: 'Lucida Console'; font-size: 10pt; font-style: normal;">transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal" style="text-indent: 36.0pt;"><span class="Apple-style-span" style="font-style: normal;">            Look up ConnectionFactory in JNDI with name&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal" style="margin-left: 36.0pt; text-indent: 36.0pt;"><span class="Apple-style-span" style="font-style: normal;"> QueueConnectionFactory                   &lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal" style="text-indent: 36.0pt;"><span style="font-family: 'Lucida Console'; font-size: 10pt; font-style: normal;">&amp; &lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal" style="text-indent: 36.0pt;"><span class="Apple-style-span" style="font-style: normal;">            Separator (this will convert to ‘&amp;’)&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal" style="text-indent: 36.0pt;"><span style="font-family: 'Lucida Console'; font-size: 10pt; font-style: normal;">java.naming.factory.initial=&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal" style="text-indent: 36.0pt;"><span style="font-family: 'Lucida Console'; font-size: 10pt; font-style: normal;">org.apache.qpid.jndi.PropertiesFileInitialContextFactory&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal" style="margin-left: 36.0pt; text-indent: 36.0pt;"><span class="Apple-style-span" style="font-style: normal;">Use the Qpid properties-based JNDI we saw earlier&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="code" style="text-indent: 36.0pt;"><span style="color: windowtext; font-size: 10pt; font-style: normal;">&amp;&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal"><span class="Apple-style-span" style="font-style: normal;">                        Another separator      &lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="code" style="text-indent: 36.0pt;"><span style="color: windowtext; font-size: 10pt; font-style: normal;">java.naming.provider.url=resources/jndi.properties&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal"><span class="Apple-style-span" style="font-style: normal;">                        Look in <b>resources/jndi.properties</b> for the JNDI properties file&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal"><span class="Apple-style-span" style="font-style: normal;"><br/></span></div><div class="MsoNormal"><span class="Apple-style-span" style="font-style: normal;">The next part of the proxy configuration simply tells the ESB this is a one-way flow and not to expect a response:&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="code">&lt;property action="set" name="OUT_ONLY" style="font-style: normal;" value="true"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/property&gt;</div><div class="code"><span class="Apple-style-span" style="font-style: normal;"><br/></span></div><div class="MsoNormal"><span class="Apple-style-span" style="font-style: normal;">The next line ensures the ESB sends back an HTTP 202 Accepted response to the client:&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="code">&lt;property name="FORCE_SC_ACCEPTED" scope="axis2" style="font-style: normal;" value="true"&gt;    &lt;o:p&gt;&lt;/o:p&gt;&lt;/property&gt;</div><div class="MsoNormal"><span class="Apple-style-span" style="font-style: normal;">        &lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal"><span class="Apple-style-span" style="font-style: normal;">All the rest of the config is completely default.&lt;o:p&gt;&lt;/o:p&gt;</span></div><span class="Apple-style-span" style="font-style: normal;"><span style="font-family: Cambria; font-size: 12pt;"><br clear="all"/> </span>  </span><div class="MsoNormal"><span class="Apple-style-span" style="font-style: normal;">In order to try it out, there is a simple XML test file which you can send to the ESB using curl:&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal"><span class="Apple-style-span" style="font-style: normal;"><br/></span></div><div class="MsoNormal"><b style="font-style: normal;">samplexml.xml&lt;o:p&gt;&lt;/o:p&gt;</b></div><div class="code"><span style="font-size: 9pt;">&lt;test style="font-style: normal;" xmlns="http://fremantle.org"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/test&gt;</span></div><div class="code"><br/><span class="Apple-style-span" style="font-size: 12px; font-style: normal;">&lt;test xmlns="http://fremantle.org"&gt;</span><br/><span class="Apple-style-span" style="font-size: 12px; font-style: normal;">   &lt;sample&gt;data&lt;/sample&gt;</span><br/><span class="Apple-style-span" style="font-size: 12px; font-style: normal;">&lt;/test&gt;</span><br/></div><div class="code"><span style="font-size: 9pt; font-style: normal;">&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal"><span class="Apple-style-span" style="font-style: normal;"><br/></span></div><div class="MsoNormal"><span class="Apple-style-span" style="font-style: normal;">Once again you can find this file here:&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal"><span class="Apple-style-span" style="font-style: normal;"><a href="http://people.apache.org/~pzf/MB/">http://people.apache.org/~pzf/MB/</a> &lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal"><span class="Apple-style-span" style="font-style: normal;"><br/></span></div><div class="MsoNormal"><span class="Apple-style-span" style="font-style: normal;">For the next step, please ensure you have a copy of curl installed. If you are on Linux or Mac you will have it by default. On Windows you can find a free version on the web. Let’s try the request against the ESB:&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="code"><span style="font-size: 10pt; font-style: normal;">curl http://localhost:8280/services/testJMS/a -X POST -H 'Content-type: text/plain' --data @samplexml.xml&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal"><span class="Apple-style-span" style="font-style: normal;"><br/></span></div><div class="MsoNormal"><span class="Apple-style-span" style="font-style: normal;">Run this a few times just for fun. You won’t see much. If all is going well, you won’t see any errors on the WSO2 ESB console either. If you add ‘–v’ to the curl command line you will see a lot more information about the HTTP section of the flow and you should see a nice sign that things are going well:&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="code" style="text-indent: 36.0pt;"><span style="font-size: 10pt; font-style: normal;">&lt; HTTP/1.1 202 Accepted&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="code"><span class="Apple-style-span" style="font-style: normal;"><br/></span></div><div class="MsoNormal"><span class="Apple-style-span" style="font-style: normal;">Now go back to the MB console and look at the <b>Queue</b><b><span style="font-family: Wingdings;">à</span>List</b> page. You should now see some messages in the queue:&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal"><span class="Apple-style-span" style="font-style: normal;"><br/></span></div><table border="0" cellpadding="0" cellspacing="0" class="MsoNormalTable" style="border-collapse: collapse;"><thead><tr style="height: 16.5pt;">    <td style="height: 16.5pt; padding: 0cm 0cm 0cm 6.0pt;" valign="top"><div class="MsoNormal" style="line-height: 15.0pt; margin-bottom: 3.75pt;"><span style="font-size: 7pt;">Queue Name</span><span style="font-family: Times; font-size: 7pt;">&lt;o:p&gt;&lt;/o:p&gt;</span></div></td>    <td style="border-left: none; height: 16.5pt; padding: 0cm 0cm 0cm 6.0pt;" valign="top"><div class="MsoNormal" style="line-height: 15.0pt; margin-bottom: 3.75pt;"><span style="font-size: 7pt;">Queue Depth</span><span style="font-family: Times; font-size: 7pt;">&lt;o:p&gt;&lt;/o:p&gt;</span></div></td>    <td style="border-left: none; height: 16.5pt; padding: 0cm 0cm 0cm 6.0pt;" valign="top"><div class="MsoNormal" style="line-height: 15.0pt; margin-bottom: 3.75pt;"><span style="font-size: 7pt;">Message Count</span><span style="font-family: Times; font-size: 7pt;">&lt;o:p&gt;&lt;/o:p&gt;</span></div></td>    <td style="border-left: none; height: 16.5pt; padding: 0cm 0cm 0cm 6.0pt; width: 77.55pt;" valign="top" width="78"><div class="MsoNormal" style="line-height: 15.0pt; margin-bottom: 3.75pt;"><span style="font-size: 7pt;">Created Time</span><span style="font-family: Times; font-size: 7pt;">&lt;o:p&gt;&lt;/o:p&gt;</span></div></td>    <td style="border-left: none; height: 16.5pt; padding: 0cm 0cm 0cm 6.0pt; width: 101.85pt;" valign="top" width="102"><div class="MsoNormal" style="line-height: 15.0pt; margin-bottom: 3.75pt;"><span style="font-size: 7pt;">Updated Time</span><span style="font-family: Times; font-size: 7pt;">&lt;o:p&gt;&lt;/o:p&gt;</span></div></td>    <td style="border-left: none; height: 16.5pt; padding: 0cm 0cm 0cm 6.0pt; width: 78.0pt;" valign="top" width="78"><div class="MsoNormal" style="line-height: 15.0pt; margin-bottom: 3.75pt;"><span style="font-size: 7pt;">Type</span><span style="font-family: Times; font-size: 7pt;">&lt;o:p&gt;&lt;/o:p&gt;</span></div></td>   </tr></thead>  <tbody><tr style="height: 18.75pt;">   <td style="border-top: none; height: 18.75pt; padding: 1.5pt 0cm 1.5pt 0cm;"><div class="MsoNormal"><a href="https://localhost:9443/carbon/queues/queues.jsp?region=region1&amp;item=queues_list_menu"><span style="color: #386698; font-size: 7pt;">echo</span></a><span style="font-family: Times; font-size: 7pt;">&lt;o:p&gt;&lt;/o:p&gt;</span></div></td>   <td style="border-left: none; border-top: none; height: 18.75pt; padding: 1.5pt 0cm 1.5pt 0cm;"><div class="MsoNormal"><span style="font-size: 7pt;">0(b)</span><span style="font-family: Times; font-size: 7pt;">&lt;o:p&gt;&lt;/o:p&gt;</span></div></td>   <td style="border-left: none; border-top: none; height: 18.75pt; padding: 1.5pt 0cm 1.5pt 0cm;"><div class="MsoNormal"><span style="font-size: 7pt;">0</span><span style="font-family: Times; font-size: 7pt;">&lt;o:p&gt;&lt;/o:p&gt;</span></div></td>   <td style="border-left: none; border-top: none; height: 18.75pt; padding: 1.5pt 0cm 1.5pt 0cm; width: 77.55pt;" width="78"><div class="MsoNormal"><span style="font-size: 7pt;">Fri Apr 01 09:14:05 BST 2011</span><span style="font-family: Times; font-size: 7pt;">&lt;o:p&gt;&lt;/o:p&gt;</span></div></td>   <td style="border-left: none; border-top: none; height: 18.75pt; padding: 1.5pt 0cm 1.5pt 0cm; width: 101.85pt;" width="102"><div class="MsoNormal"><span style="font-size: 7pt;">Fri Apr 01 09:14:05 BST 2011</span><span style="font-family: Times; font-size: 7pt;">&lt;o:p&gt;&lt;/o:p&gt;</span></div></td>   <td style="border-left: none; border-top: none; height: 18.75pt; padding: 1.5pt 0cm 1.5pt 0cm; width: 78.0pt;" width="78"/>  </tr><tr style="height: 18.75pt;">   <td style="border-top: none; height: 18.75pt; padding: 1.5pt 0cm 1.5pt 0cm;"><div class="MsoNormal"><a href="https://localhost:9443/carbon/queues/queues.jsp?region=region1&amp;item=queues_list_menu"><span style="color: #386698; font-size: 7pt;">jmsdestinationqueue</span></a><span style="font-family: Times; font-size: 7pt;">&lt;o:p&gt;&lt;/o:p&gt;</span></div></td>   <td style="border-left: none; border-top: none; height: 18.75pt; padding: 1.5pt 0cm 1.5pt 0cm;"><div class="MsoNormal"><span style="font-size: 7pt;">390(b)</span><span style="font-family: Times; font-size: 7pt;">&lt;o:p&gt;&lt;/o:p&gt;</span></div></td>   <td style="border-left: none; border-top: none; height: 18.75pt; padding: 1.5pt 0cm 1.5pt 0cm;"><div class="MsoNormal"><span style="font-size: 7pt;">6</span><span style="font-family: Times; font-size: 7pt;">&lt;o:p&gt;&lt;/o:p&gt;</span></div></td>   <td style="border-left: none; border-top: none; height: 18.75pt; padding: 1.5pt 0cm 1.5pt 0cm; width: 77.55pt;" width="78"><div class="MsoNormal"><span style="font-size: 7pt;">Fri Apr 01 10:04:31 BST 2011</span><span style="font-family: Times; font-size: 7pt;">&lt;o:p&gt;&lt;/o:p&gt;</span></div></td>   <td style="border-left: none; border-top: none; height: 18.75pt; padding: 1.5pt 0cm 1.5pt 0cm; width: 101.85pt;" width="102"><div class="MsoNormal"><span style="font-size: 7pt;">Fri Apr 01 10:04:31 BST 2011</span><span style="font-family: Times; font-size: 7pt;">&lt;o:p&gt;&lt;/o:p&gt;</span></div></td>   <td style="border-left: none; border-top: none; height: 18.75pt; padding: 1.5pt 0cm 1.5pt 0cm; width: 78.0pt;" width="78"/>  </tr></tbody></table><div class="MsoNormal"><span class="Apple-style-span" style="font-style: normal;"><br/></span></div><div class="MsoNormal"><span class="Apple-style-span" style="font-style: normal;">As you can see in my example I sent 6 messages. &lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal"><span class="Apple-style-span" style="font-style: normal;"><br/></span></div><div class="MsoNormal"><span class="Apple-style-span" style="font-style: normal;">As an exercise, why not try modifying the simple JMS code to pick up those messages from the JMS queue. If you get stuck there is a sample in the same place as the other code.&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal"><span class="Apple-style-span" style="font-style: normal;"><br/></span></div><span class="Apple-style-span" style="font-style: normal;"><span style="font-family: Cambria; font-size: 12pt;"><br clear="all"/> </span>  </span><div class="MsoNormal"><b style="font-style: normal;">Conclusion&lt;o:p&gt;&lt;/o:p&gt;</b></div><div class="MsoNormal"><span class="Apple-style-span" style="font-style: normal;">There is a lot more we can do with MB. In future articles I hope to cover using a C# client to interact, using the SQS support, and how the MB code can be embedded directly into the ESB to provide in-process queueing and eventing. In the meantime, I hope this has provided a simple introduction to get you started with WSO2 MB.&lt;o:p&gt;&lt;/o:p&gt;</span></div><div class="MsoNormal"><span class="Apple-style-span" style="font-style: normal;"><br/></span></div></address></div><span style="font-family: Cambria; font-size: 12pt;"><br clear="all" style=""/> </span>  <br/><div class="MsoNormal"><br/></div><div class="MsoNormal"><br/></div><div class="MsoNormal"><br/></div><div class="MsoNormal"><br/></div><div class="MsoNormal"><br/></div><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6003063374827736283-9150345820973576887?l=pzf.fremantle.org" width="1"/></div></div>
    </content>
    <updated>2011-04-05T18:58:26Z</updated>
    <published>2011-04-05T18:23:00Z</published>
    <author>
      <name>Paul Fremantle</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/15326219720808613358</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6003063374827736283</id>
      <category term="apache"/>
      <category term="hampton"/>
      <category term="design patterns"/>
      <category term="stratos"/>
      <category term="tunes"/>
      <category term="birthday"/>
      <category term="PaaS"/>
      <category term="tin whistle"/>
      <category term="tomb"/>
      <category term="cloud wso2 announcement"/>
      <category term="soa"/>
      <category term="synapse"/>
      <category term="arranged marriages"/>
      <category term="business models"/>
      <category term="music"/>
      <category term="mobile phones"/>
      <category term="the 99 flake"/>
      <category term="cloud"/>
      <category term="tune"/>
      <category term="hornpipe"/>
      <category term="open source esb"/>
      <category term="carbon"/>
      <category term="ireland"/>
      <category term="soa governance wso2 registry repository wsdl validation open source governance"/>
      <category term="apache apachecon synapse rest ws-* webservices"/>
      <category term="twitter blog mashup"/>
      <category term="REST Registry UDDI Mule WSO2 SOA"/>
      <category term="the gorse bush"/>
      <category term="wso2"/>
      <author>
        <name>Paul Fremantle</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/15326219720808613358</uri>
      </author>
      <link href="http://pzf.fremantle.org/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/6003063374827736283/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://pzf.fremantle.org/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6003063374827736283/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>SOA, Cloud, Web Services, Synapse, Tin Whistles, Blacksmithing and me</subtitle>
      <title>Paul Fremantle's Blog</title>
      <updated>2012-04-25T10:19:26Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-US">
    <id>urn:lsid:ibm.com:blogs:entry-3bab1f6d-909e-40c7-9c06-df27fef47311</id>
    <link href="https://www.ibm.com/developerworks/mydeveloperworks/blogs/KRL/entry/lotus_symphony_3_beta_2_posted4?lang=en" rel="alternate" type="text/html"/>
    <link href="https://www.ibm.com/developerworks/mydeveloperworks/blogs/KRL/feed/entry/atom?entryid=3bab1f6d-909e-40c7-9c06-df27fef47311&amp;lang=en" rel="self" type="application/atom+xml"/>
    <link href="https://www.ibm.com/developerworks/mydeveloperworks/blogs/KRL/feed/entrycomments/lotus_symphony_3_beta_2_posted4/atom?lang=en" rel="replies" type="application/atom+xml"/>
    <link href="https://www.ibm.com/developerworks/mydeveloperworks/blogs/home/api/reports/3bab1f6d-909e-40c7-9c06-df27fef47311?lang=en" rel="http://www.ibm.com/xmlns/prod/sn/reports" type="text/html"/>
    <link href="https://www.ibm.com/developerworks/mydeveloperworks/blogs/KRL/feed/entryrecommendations/3bab1f6d-909e-40c7-9c06-df27fef47311/atom?lang=en" rel="http://www.ibm.com/xmlns/prod/sn/recommendations" type="text/html"/>
    <link href="https://www.ibm.com/developerworks/mydeveloperworks/blogs/KRL/tags/symphony?lang=en" rel="related" type="text/html"/>
    <link href="https://www.ibm.com/developerworks/mydeveloperworks/blogs/KRL/tags/documents?lang=en" rel="related" type="text/html"/>
    <link href="https://www.ibm.com/developerworks/mydeveloperworks/blogs/KRL/tags/standards?lang=en" rel="related" type="text/html"/>
    <link href="https://www.ibm.com/developerworks/mydeveloperworks/blogs/KRL/tags/odf?lang=en" rel="related" type="text/html"/>
    <title xml:lang="en-US">Lotus Symphony 3 Beta 2 posted</title>
    <summary xml:lang="en-US">The latest Beta release of the new release of IBM Lotus Symphony (version 3) has been posted and is available for free download. Versions are available for Windows, Mac and Linux. I have installed the Mac version and am now using it as my main office...</summary>
    <content type="xhtml" xml:lang="en-US"><div xmlns="http://www.w3.org/1999/xhtml">The latest Beta release of the new release of IBM Lotus Symphony (version 3) has been posted and is available for free download. Versions are available for Windows, Mac and Linux.<div><br/></div><div>I have installed the Mac version and am now using it as my main office application program. You will find it is chock full of nice new features and it also brings the ODF support in the product into line with the one used by Open Office which will enhance document interoperability.</div><div><br/></div><div>Here is <a href="http://symphony.lotus.com/software/lotus/symphony/home.nsf/home">the link</a> to the site where you can download the Beta and also read more about the new features.</div></div>
    </content>
    <updated>2010-02-04T16:04:06Z</updated>
    <published>2010-02-04T16:04:06Z</published>
    <category scheme="http://www.ibm.com/xmlns/prod/sn/collection" term="comments"/>
    <category scheme="http://www.ibm.com/xmlns/prod/sn/collection" term="recommend"/>
    <category term="symphony"/>
    <category term="documents"/>
    <category term="standards"/>
    <category term="odf"/>
    <author>
      <name>Kelvin_Lawrence</name>
    </author>
    <source>
      <id>urn:lsid:ibm.com:blogs:entries-ebfc3d67-f282-4776-8bc0-968bfcefbfe6</id>
      <link href="https://www.ibm.com/developerworks/mydeveloperworks/blogs/KRL/feed/entries/atom?lang=en" rel="self" type="application/atom+xml"/>
      <link href="https://www.ibm.com/developerworks/mydeveloperworks/blogs/KRL?lang=en" rel="alternate" type="text/html"/>
      <title xml:lang="en-US">Kelvin Lawrence on Technology</title>
      <updated>2011-10-18T20:05:56Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-US">
    <id>urn:lsid:ibm.com:blogs:entry-6d9bcf13-2490-43c7-8daf-b104f90008a3</id>
    <link href="https://www.ibm.com/developerworks/mydeveloperworks/blogs/KRL/entry/my_symphony_experiment_week_31?lang=en" rel="alternate" type="text/html"/>
    <link href="https://www.ibm.com/developerworks/mydeveloperworks/blogs/KRL/feed/entry/atom?entryid=6d9bcf13-2490-43c7-8daf-b104f90008a3&amp;lang=en" rel="self" type="application/atom+xml"/>
    <link href="https://www.ibm.com/developerworks/mydeveloperworks/blogs/KRL/feed/entrycomments/my_symphony_experiment_week_31/atom?lang=en" rel="replies" type="application/atom+xml"/>
    <link href="https://www.ibm.com/developerworks/mydeveloperworks/blogs/home/api/reports/6d9bcf13-2490-43c7-8daf-b104f90008a3?lang=en" rel="http://www.ibm.com/xmlns/prod/sn/reports" type="text/html"/>
    <link href="https://www.ibm.com/developerworks/mydeveloperworks/blogs/KRL/feed/entryrecommendations/6d9bcf13-2490-43c7-8daf-b104f90008a3/atom?lang=en" rel="http://www.ibm.com/xmlns/prod/sn/recommendations" type="text/html"/>
    <link href="https://www.ibm.com/developerworks/mydeveloperworks/blogs/KRL/tags/standards?lang=en" rel="related" type="text/html"/>
    <link href="https://www.ibm.com/developerworks/mydeveloperworks/blogs/KRL/tags/documents?lang=en" rel="related" type="text/html"/>
    <link href="https://www.ibm.com/developerworks/mydeveloperworks/blogs/KRL/tags/odf?lang=en" rel="related" type="text/html"/>
    <link href="https://www.ibm.com/developerworks/mydeveloperworks/blogs/KRL/tags/symphony?lang=en" rel="related" type="text/html"/>
    <title xml:lang="en-US">My Symphony Experiment Week 3</title>
    <summary xml:lang="en-US">So I am mid way through my third week of using Symphony as my primary office tool for working with spreadsheets, documents and slides. This week I have been on many conference calls reviewing slides with people. I noticed that I am getting sent a lot more Open...</summary>
    <content type="xhtml" xml:lang="en-US"><div xmlns="http://www.w3.org/1999/xhtml">So I am mid way through my third week of using Symphony as my primary office tool for working with spreadsheets, documents and slides. This week I have been on many conference calls reviewing slides with people. I noticed that I am getting sent a lot more Open Document Format (ODF)files from many of my colleagues. As a standards guy it's nice to see we are using the same standards ourselves that we have worked so hard to embrace and help define. I have also been sent several Power Point (PPT) files this week. So far, I have been able to work with them all fine in Symphony. As a UI guy, I do keep spotting things in the UI that I think could be better and the development team has been very gracious in agreeing to look through all of my feedback. That's it for now, I have some slides to go work on!!<br/></div>
    </content>
    <updated>2009-09-16T17:20:30Z</updated>
    <published>2009-09-16T17:20:30Z</published>
    <category scheme="http://www.ibm.com/xmlns/prod/sn/collection" term="comments"/>
    <category scheme="http://www.ibm.com/xmlns/prod/sn/collection" term="recommend"/>
    <category term="standards"/>
    <category term="documents"/>
    <category term="odf"/>
    <category term="symphony"/>
    <author>
      <name>Kelvin_Lawrence</name>
    </author>
    <source>
      <id>urn:lsid:ibm.com:blogs:entries-ebfc3d67-f282-4776-8bc0-968bfcefbfe6</id>
      <link href="https://www.ibm.com/developerworks/mydeveloperworks/blogs/KRL/feed/entries/atom?lang=en" rel="self" type="application/atom+xml"/>
      <link href="https://www.ibm.com/developerworks/mydeveloperworks/blogs/KRL?lang=en" rel="alternate" type="text/html"/>
      <title xml:lang="en-US">Kelvin Lawrence on Technology</title>
      <updated>2011-10-18T20:05:56Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-US">
    <id>urn:lsid:ibm.com:blogs:entry-7bf24ae6-5135-4b4a-9a3f-35136c2401cf</id>
    <link href="https://www.ibm.com/developerworks/mydeveloperworks/blogs/KRL/entry/re_my_symphony_experiment_week_2?lang=en" rel="alternate" type="text/html"/>
    <link href="https://www.ibm.com/developerworks/mydeveloperworks/blogs/KRL/feed/entry/atom?entryid=7bf24ae6-5135-4b4a-9a3f-35136c2401cf&amp;lang=en" rel="self" type="application/atom+xml"/>
    <link href="https://www.ibm.com/developerworks/mydeveloperworks/blogs/KRL/feed/entrycomments/re_my_symphony_experiment_week_2/atom?lang=en" rel="replies" type="application/atom+xml"/>
    <link href="https://www.ibm.com/developerworks/mydeveloperworks/blogs/home/api/reports/7bf24ae6-5135-4b4a-9a3f-35136c2401cf?lang=en" rel="http://www.ibm.com/xmlns/prod/sn/reports" type="text/html"/>
    <link href="https://www.ibm.com/developerworks/mydeveloperworks/blogs/KRL/feed/entryrecommendations/7bf24ae6-5135-4b4a-9a3f-35136c2401cf/atom?lang=en" rel="http://www.ibm.com/xmlns/prod/sn/recommendations" type="text/html"/>
    <link href="https://www.ibm.com/developerworks/mydeveloperworks/blogs/KRL/tags/odf?lang=en" rel="related" type="text/html"/>
    <link href="https://www.ibm.com/developerworks/mydeveloperworks/blogs/KRL/tags/lotus?lang=en" rel="related" type="text/html"/>
    <link href="https://www.ibm.com/developerworks/mydeveloperworks/blogs/KRL/tags/symphony?lang=en" rel="related" type="text/html"/>
    <link href="https://www.ibm.com/developerworks/mydeveloperworks/blogs/KRL/tags/standards?lang=en" rel="related" type="text/html"/>
    <title xml:lang="en-US">Re: My Symphony Experiment - week 2</title>
    <summary xml:lang="en-US">In response to: My Symphony Experiment - week 2 So far there is nothing I have really needed to do that I have not been able to. That said while I am a self confessed "geek" I try not to be a super power user in any of the Office Suites as I find myself having... to share my work with a lot of different audiences (customers, colleagues, conferences etc) and I have learned over the years that avoiding the advanced features seems to be a good general rule. It's the old 80-20 principle yet again I suppose.  That said I view the evolution of all the ODF based tools in the industry to be just that, an evolution. I think we will see incremental improvement each release.</summary>
    <content type="xhtml" xml:lang="en-US"><div xmlns="http://www.w3.org/1999/xhtml"><p>In response to: <a href="https://www.ibm.com/developerworks/mydeveloperworks/blogs/KRL/entry/my_symphony_experiment_week_25">My Symphony Experiment - week 2</a></p>So far there is nothing I have really needed to do that I have not been able to. That said while I am a self confessed "geek" I try not to be a super power user in any of the Office Suites as I find myself having to share my work with a lot of different audiences (customers, colleagues, conferences etc) and I have learned over the years that avoiding the advanced features seems to be a good general rule. It's the old 80-20 principle yet again I suppose.  That said I view the evolution of all the ODF based tools in the industry to be just that, an evolution. I think we will see incremental improvement each release.</div>
    </content>
    <updated>2009-09-03T12:29:58Z</updated>
    <published>2009-09-03T12:29:58Z</published>
    <category scheme="http://www.ibm.com/xmlns/prod/sn/collection" term="comments"/>
    <category scheme="http://www.ibm.com/xmlns/prod/sn/collection" term="recommend"/>
    <category term="odf"/>
    <category term="lotus"/>
    <category term="symphony"/>
    <category term="standards"/>
    <author>
      <name>Kelvin_Lawrence</name>
    </author>
    <source>
      <id>urn:lsid:ibm.com:blogs:entries-ebfc3d67-f282-4776-8bc0-968bfcefbfe6</id>
      <link href="https://www.ibm.com/developerworks/mydeveloperworks/blogs/KRL/feed/entries/atom?lang=en" rel="self" type="application/atom+xml"/>
      <link href="https://www.ibm.com/developerworks/mydeveloperworks/blogs/KRL?lang=en" rel="alternate" type="text/html"/>
      <title xml:lang="en-US">Kelvin Lawrence on Technology</title>
      <updated>2011-10-18T20:05:56Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-US">
    <id>urn:lsid:ibm.com:blogs:entry-98b3f0d3-18c7-4df1-ad21-0ed25575ab6d</id>
    <link href="https://www.ibm.com/developerworks/mydeveloperworks/blogs/KRL/entry/re_mac_os_x_10_6_a_k_a_snow_leopard?lang=en" rel="alternate" type="text/html"/>
    <link href="https://www.ibm.com/developerworks/mydeveloperworks/blogs/KRL/feed/entry/atom?entryid=98b3f0d3-18c7-4df1-ad21-0ed25575ab6d&amp;lang=en" rel="self" type="application/atom+xml"/>
    <link href="https://www.ibm.com/developerworks/mydeveloperworks/blogs/KRL/feed/entrycomments/re_mac_os_x_10_6_a_k_a_snow_leopard/atom?lang=en" rel="replies" type="application/atom+xml"/>
    <link href="https://www.ibm.com/developerworks/mydeveloperworks/blogs/home/api/reports/98b3f0d3-18c7-4df1-ad21-0ed25575ab6d?lang=en" rel="http://www.ibm.com/xmlns/prod/sn/reports" type="text/html"/>
    <link href="https://www.ibm.com/developerworks/mydeveloperworks/blogs/KRL/feed/entryrecommendations/98b3f0d3-18c7-4df1-ad21-0ed25575ab6d/atom?lang=en" rel="http://www.ibm.com/xmlns/prod/sn/recommendations" type="text/html"/>
    <link href="https://www.ibm.com/developerworks/mydeveloperworks/blogs/KRL/tags/mac?lang=en" rel="related" type="text/html"/>
    <link href="https://www.ibm.com/developerworks/mydeveloperworks/blogs/KRL/tags/osx?lang=en" rel="related" type="text/html"/>
    <title xml:lang="en-US">Re: Mac OS X 10.6 (a.k.a Snow Leopard)</title>
    <summary xml:lang="en-US">In response to: Mac OS X 10.6 (a.k.a Snow Leopard) I have discovered this evening that some of the plug ins I use with Safari on the Mac had stopped working  under 10.6

I was able to get them going again by running Safari... in 32-bit mode.

To start Safari in 32-bit mode, locate it using the Finder, click on the icon and select Get Info. There is an option to launch the app in 32-bit mode. The plug in I most wanted to work that this fixed was the Delicious plugin that I use frequently to help make bookmarking sites on Delicious.com easier.</summary>
    <content type="xhtml" xml:lang="en-US"><div xmlns="http://www.w3.org/1999/xhtml"><p>In response to: <a href="https://www.ibm.com/developerworks/mydeveloperworks/blogs/KRL/entry/mac_os_x_10_6_a_k_a_snow_leopard15">Mac OS X 10.6 (a.k.a Snow Leopard)</a></p>I have discovered this evening that some of the plug ins I use with Safari on the Mac had stopped working  under 10.6

I was able to get them going again by running Safari in 32-bit mode.

To start Safari in 32-bit mode, locate it using the Finder, click on the icon and select Get Info. There is an option to launch the app in 32-bit mode. The plug in I most wanted to work that this fixed was the Delicious plugin that I use frequently to help make bookmarking sites on Delicious.com easier.</div>
    </content>
    <updated>2009-09-02T02:25:28Z</updated>
    <published>2009-09-02T02:25:28Z</published>
    <category scheme="http://www.ibm.com/xmlns/prod/sn/collection" term="comments"/>
    <category scheme="http://www.ibm.com/xmlns/prod/sn/collection" term="recommend"/>
    <category term="mac"/>
    <category term="osx"/>
    <author>
      <name>Kelvin_Lawrence</name>
    </author>
    <source>
      <id>urn:lsid:ibm.com:blogs:entries-ebfc3d67-f282-4776-8bc0-968bfcefbfe6</id>
      <link href="https://www.ibm.com/developerworks/mydeveloperworks/blogs/KRL/feed/entries/atom?lang=en" rel="self" type="application/atom+xml"/>
      <link href="https://www.ibm.com/developerworks/mydeveloperworks/blogs/KRL?lang=en" rel="alternate" type="text/html"/>
      <title xml:lang="en-US">Kelvin Lawrence on Technology</title>
      <updated>2011-10-18T20:05:56Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-us">
    <id>http://softwaresummit.com/index.html</id>
    <title xml:lang="en-us">June 3, 2009: The Finale of Colorado Software Summit</title>
    <content type="xhtml" xml:lang="en-us"><div xmlns="http://www.w3.org/1999/xhtml"><h2>To Our Friends and Supporters,</h2>
    <p>In these challenging economic times, business has slowed, many companies
      have had to resort to layoffs and/or closures, and everyone has been tightening
      their belts. Unfortunately, Colorado Software Summit has not been immune
      to this downturn. As have so many companies and individuals, we too have experienced a
      severe decline in our business, and as a result we are not able to continue
      producing this annual conference.</p>
    <p>This year would have been our 18th conference, and we had  planned to continue through our 20th in 2011, but instead we must  end it now.</p>
    <p>Producing this conference has been a wonderful experience for us, truly a labor of love, and we have been
      extremely privileged to have been able to do well by doing good.  We are
      very proud of the many people whose careers flourished through what they
      learned here, of the extensive community we built via the conference, and
      of the several businesses that were begun through friendships made here.
      We treasure the friends we made, and we consider them to be part of our extended family. Just as in any family, we celebrated with them through joyous life events and grieved with them through tragic ones.</p>
    <p>This is a sad time for us, of course, but not overwhelmingly so. It's sort  of the feeling you have when your son leaves for college, or your  daughter gets married. You knew it was coming someday, but it is here much  sooner than you imagined, and the sadness is sweetened with the joy  you had in all that has come before.</p>
    <p>We have been privileged to have created a thriving community of  friends who  met for the first time at the conference, and we want that community to  continue. We hope that all of you will stay in touch with us and with each other,
      and that the Colorado Software Summit community will continue as a source
      of wisdom and friendship to all of you. If you have ever attended one of our conference, we hope you will consider joining
      the <a href="http://www.softwaresummit.com/../common/email_list.htm">Colorado Software Summit LinkedIn</a> group as one means
      to keep in touch. </p>
    <p>With our very best wishes for your future, and with unbounded gratitude for your support,</p>
    <p>- <em>Wayne and Peggy Kovsky</em> -</p>
      <p>All presentations from <a href="http://www.softwaresummit.com/../2008/agendaspkr.htm" target="_blank">Colorado Software
        Summit 2008</a> have been posted.</p></div>
    </content>
    <updated>2009-06-03T22:08:18Z</updated>
    <published>2009-06-03T22:08:18Z</published>
    <source>
      <id>http://www.softwaresummit.com/</id>
      <icon>http://www.softwaresummit.com/favicon.ico</icon>
      <logo>http://www.softwaresummit.com/graphics/atomfeed.png</logo>
      <author>
        <name>Wayne Kovsky</name>
      </author>
      <link href="http://www.softwaresummit.com/" rel="alternate" type="text/html"/>
      <link href="http://www.softwaresummit.com/coloradosoftwaresummit.atom" rel="self" type="application/atom+xml"/>
      <rights xml:lang="en-us">Copyright (c) 2009 Kovsky Conference Productions Inc.</rights>
      <title xml:lang="en-us">Colorado Software Summit</title>
      <updated>2009-06-03T22:08:18Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-us">
    <id>http://softwaresummit.com/2009/whatsnew.htm#20090521</id>
    <link href="http://www.softwaresummit.com/2009/whatsnew.htm#20090521" rel="alternate" type="text/html"/>
    <title xml:lang="en-us">May 21, 2009: Additions to Preliminary Agenda for Colorado Software Summit 2009</title>
    <content type="xhtml" xml:lang="en-us"><div xmlns="http://www.w3.org/1999/xhtml"><p>We have posted additions to the preliminary agenda for Colorado Software Summit 2009, in two formats:</p>
      <ul>
        <li><a href="http://www.softwaresummit.com/../2009/agendaspeaker.htm">Agenda sorted by speaker last name</a></li>
        <li><a href="http://www.softwaresummit.com/../2009/agendatopic.htm">Agenda sorted by topic title</a></li>
      </ul>
      <p>We will continue to post additions to this agenda during the coming weeks. Please check back here from time to time for additions and/or changes to the agenda, or subscribe to our RSS feed to receive notifications of updates automatically.</p>
      <h4>Presentations from the 2008 Conference</h4>
      <p>We have posted presentations, and notes on the presentations, for this speaker from Colorado Software Summit 2008:</p>
      <ul>
        <li><a href="http://www.softwaresummit.com/../2008/speakers/kaplan-moss.htm" target="_blank">Jacob Kaplan-Moss</a>, <em>Whiskey Media</em>: <a href="http://www.softwaresummit.com/../2008/speakers/presentations/Kaplan-MossIntroductionToDjango.pdf" target="_blank">"Build Better, Faster: An Introduction to Django"</a> and <a href="http://www.softwaresummit.com/../2008/speakers/presentations/Kaplan-MossIntroductionToDjangoNotes.pdf">"Presentation Notes"</a></li>
        <li> <a href="http://www.softwaresummit.com/../2008/speakers/presentations/Kaplan-MossDjangoDesignDecisions.pdf" target="_blank">"Building a Web Framework: Django's Design Decisions"</a> and <a href="http://www.softwaresummit.com/../2008/speakers/presentations/Kaplan-MossDjangoDesignDecisionsNotes.pdf">"Presentation Notes"</a></li>
      </ul>
      <p>Presentations from Colorado Software Summit 2008 will be posted periodically throughout the year.</p></div>
    </content>
    <updated>2009-05-21T16:50:18Z</updated>
    <published>2009-05-21T16:50:18Z</published>
    <source>
      <id>http://www.softwaresummit.com/</id>
      <icon>http://www.softwaresummit.com/favicon.ico</icon>
      <logo>http://www.softwaresummit.com/graphics/atomfeed.png</logo>
      <author>
        <name>Wayne Kovsky</name>
      </author>
      <link href="http://www.softwaresummit.com/" rel="alternate" type="text/html"/>
      <link href="http://www.softwaresummit.com/coloradosoftwaresummit.atom" rel="self" type="application/atom+xml"/>
      <rights xml:lang="en-us">Copyright (c) 2009 Kovsky Conference Productions Inc.</rights>
      <title xml:lang="en-us">Colorado Software Summit</title>
      <updated>2009-05-21T16:50:18Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-us">
    <id>http://softwaresummit.com/2009/whatsnew.htm#20090517</id>
    <link href="http://www.softwaresummit.com/2009/whatsnew.htm#20090517" rel="alternate" type="text/html"/>
    <title xml:lang="en-us">May 17, 2009: Additions to Preliminary Agenda for Colorado Software Summit 2009</title>
    <content type="xhtml" xml:lang="en-us"><div xmlns="http://www.w3.org/1999/xhtml"><p>We have posted additions to the preliminary agenda for Colorado Software Summit 2009, in two formats:</p>
      <ul>
        <li><a href="http://www.softwaresummit.com/../2009/agendaspeaker.htm">Agenda sorted by speaker last name</a></li>
        <li><a href="http://www.softwaresummit.com/../2009/agendatopic.htm">Agenda sorted by topic title</a></li>
      </ul>
      <p>We will continue to post additions to this agenda during the coming weeks. Please check back here from time to time for additions and/or changes to the agenda, or subscribe to our RSS feed to receive notifications of updates automatically.</p>
      <h4>Presentations from the 2008 Conference</h4>
      <p>We have posted presentations for these speakers from Colorado Software Summit 2008:</p>
      <ul>
        <li><a href="http://www.softwaresummit.com/../2008/speakers/harrington.htm" target="_blank">Tom Harrington</a>, <em>AtomicBird</em>: <a href="http://www.softwaresummit.com/../2008/speakers/presentations/HarringtonGettingStartedWithIPhoneDevelopment.pdf" target="_blank">"Getting Started with iPhone Development"</a> and <a href="http://www.softwaresummit.com/../2008/speakers/presentations/HarringtoniPhoneUserInterfaceDesign.pdf" target="_blank">"iPhone User Interface Design"</a></li>
        <li><a href="http://www.softwaresummit.com/../2008/speakers/hatzidakis.htm" target="_blank">Denise Hatzidakis</a>, <em>Perficient, Inc.</em>: <a href="http://www.softwaresummit.com/../2008/speakers/presentations/HatzidakisRESTfulApproach.pdf" target="_blank">"Put Your Feet Up and Take a RESTful Approach"</a> and <a href="http://www.softwaresummit.com/../2008/speakers/presentations/HatzidakisZeroTosMash.pdf" target="_blank">"From Zero to sMash"</a></li>
      </ul>
      <p>Presentations from Colorado Software Summit 2008 will be posted periodically throughout the year.</p></div>
    </content>
    <updated>2009-05-18T00:46:18Z</updated>
    <published>2009-05-18T00:46:18Z</published>
    <source>
      <id>http://www.softwaresummit.com/</id>
      <icon>http://www.softwaresummit.com/favicon.ico</icon>
      <logo>http://www.softwaresummit.com/graphics/atomfeed.png</logo>
      <author>
        <name>Wayne Kovsky</name>
      </author>
      <link href="http://www.softwaresummit.com/" rel="alternate" type="text/html"/>
      <link href="http://www.softwaresummit.com/coloradosoftwaresummit.atom" rel="self" type="application/atom+xml"/>
      <rights xml:lang="en-us">Copyright (c) 2009 Kovsky Conference Productions Inc.</rights>
      <title xml:lang="en-us">Colorado Software Summit</title>
      <updated>2009-06-03T22:08:18Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-us">
    <id>http://softwaresummit.com/2009/whatsnew.htm#20090503</id>
    <link href="http://www.softwaresummit.com/2009/whatsnew.htm#20090503" rel="alternate" type="text/html"/>
    <title xml:lang="en-us">May 3, 2009: Additions to Preliminary Agenda for Colorado Software Summit 2009</title>
    <content type="xhtml" xml:lang="en-us"><div xmlns="http://www.w3.org/1999/xhtml"><p>We have posted additions to the preliminary agenda for Colorado Software Summit 2009, in two formats:</p>
      <ul>
        <li><a href="http://www.softwaresummit.com/../2009/agendaspeaker.htm">Agenda sorted by speaker last name</a></li>
        <li><a href="http://www.softwaresummit.com/../2009/agendatopic.htm">Agenda sorted by topic title</a></li>
      </ul>
      <p>We will continue to post additions to this agenda during the coming weeks. Please check back here from time to time for additions and/or changes to the agenda, or subscribe to our RSS feed to receive notifications of updates automatically.</p>
      <h4>Presentations from the 2008 Conference</h4>
      <p>We have posted presentations for these speakers from Colorado Software Summit 2008:</p>
      <ul>
        <li><a href="http://www.softwaresummit.com/../2008/speakers/dudney.htm" target="_blank">Bill Dudney</a>, <em>Gala Factory Software LLC</em>: <a href="http://www.softwaresummit.com/../2008/speakers/presentations/DudneyCoreAnimation.pdf" target="_blank">"Core Animation on the iPhone: How to Build Animated UI's"</a> and <a href="http://www.softwaresummit.com/../2008/speakers/presentations/DudneyBuildingLocationAwareApps.pdf" target="_blank">"Building Location Aware Apps on iPhone: Taking Advantage of the Location Aware Nature of iPhone"</a></li>
        <li><a href="http://www.softwaresummit.com/../2008/speakers/hanik.htm" target="_blank">Filip Hanik</a>, <em>Covalent</em>: <a href="http://www.softwaresummit.com/../2008/speakers/presentations/HanikZeroLatencyHTTP.pdf" target="_blank">"Zero Latency HTTP: Using Comet with Apache Tomcat"</a> and <a href="http://www.softwaresummit.com/../2008/speakers/presentations/HanikWhattheBayeux.pdf" target="_blank">"What the Bayeux? Understanding, Using and Developing with the Bayeux Protocol"</a></li>
      </ul>
      <p>Presentations from Colorado Software Summit 2008 will be posted periodically throughout the year.</p></div>
    </content>
    <updated>2009-05-03T19:07:18Z</updated>
    <published>2009-05-03T19:07:18Z</published>
    <source>
      <id>http://www.softwaresummit.com/</id>
      <icon>http://www.softwaresummit.com/favicon.ico</icon>
      <logo>http://www.softwaresummit.com/graphics/atomfeed.png</logo>
      <author>
        <name>Wayne Kovsky</name>
      </author>
      <link href="http://www.softwaresummit.com/" rel="alternate" type="text/html"/>
      <link href="http://www.softwaresummit.com/coloradosoftwaresummit.atom" rel="self" type="application/atom+xml"/>
      <rights xml:lang="en-us">Copyright (c) 2009 Kovsky Conference Productions Inc.</rights>
      <title xml:lang="en-us">Colorado Software Summit</title>
      <updated>2009-06-03T22:08:18Z</updated>
    </source>
  </entry>
</feed>

