<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>PanGalactica.com</title>
	<atom:link href="http://pangalactica.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://pangalactica.com</link>
	<description>Like having your brains smashed out with a slice of lemon wrapped round a large gold brick...</description>
	<lastBuildDate>Thu, 01 Mar 2012 21:06:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Cool photo displays are on the &#8220;wall&#8221;&#8230;</title>
		<link>http://pangalactica.com/2012/03/01/cool-photo-displays-are-on-the-wall/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=cool-photo-displays-are-on-the-wall</link>
		<comments>http://pangalactica.com/2012/03/01/cool-photo-displays-are-on-the-wall/#comments</comments>
		<pubDate>Thu, 01 Mar 2012 16:28:43 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[Cool Stuff]]></category>
		<category><![CDATA[Photography]]></category>
		<category><![CDATA[cooliris]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[flickr]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[photos]]></category>

		<guid isPermaLink="false">http://pangalactica.com/?p=188</guid>
		<description><![CDATA[So today I embedded my first instance of the &#8220;Cool Wall&#8221; from CoolIris, now re-packaged as &#8220;LiveShare&#8221;. I&#8217;ve known about CoolIris for some time &#8211; it&#8217;s a great plugin for showcasing your photos. Until now, I&#8217;d always used it in the context of browsing. You go to a page that has images, press the &#8220;CoolIris&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p><span class="drop">S</span>o today I embedded my first instance of the &#8220;Cool Wall&#8221; from CoolIris, now re-packaged as &#8220;LiveShare&#8221;. I&#8217;ve known about CoolIris for some time &#8211; it&#8217;s a great plugin for showcasing your photos. Until now, I&#8217;d always used it in the context of browsing. You go to a page that has images, press the &#8220;CoolIris&#8221; button on the browser, and it turns all the page images into a &#8220;Cool Wall&#8221;.</p>
<p>Now they have a Flash Plugin that can be embedded into your posts (either using HTML or Javascript), that uses the Flickr (or Picassa) &#8220;Feed API&#8221; to show content from your public Flickr Feed. You can restrict it by User, Album (set), Group, or Tag. You can also customize the wall to show a certain number of columns, color style, etc.</p>
<p>What I like most about this plugin is:</p>
<ul>
<li>It&#8217;s a cool way to embed your photos from one place (e.g. Flickr)</li>
<li>You can still allow people to &#8220;click through&#8221; to Flickr and see the actual image</li>
<li>User can switch to full-screen for a really nice experience</li>
<li>It&#8217;s difficult (without clicking through and viewing the Flickr photo) to casually download the image. You certainly can&#8217;t &#8216;screen-scrape&#8217; them.</li>
</ul>
<p>The instructions for creating such a wall can be found here:<br />
<a title="CoolIris Wall" href="http://www.cooliris.com/developer/reference/javascript/" target="_blank">http://www.cooliris.com/developer/reference/javascript/</a></p>
<p>As an illustration, here is a &#8220;Cool Wall&#8221; for my &#8220;Misc Art&#8221; set on Flickr.</p>
<p><script type="text/javascript"
         src="http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js">
</script></p>
<div id="wall"></div>
<p><script type="text/javascript">// <![CDATA[
        var flashvars = {
            feed: "api://www.flickr.com/?album=72157625997542532",
            style: "black",
            numRows: 3
        };
        var params = {
             allowFullScreen: "true",
             allowscriptaccess: "always"
        };
        swfobject.embedSWF("http://apps.cooliris.com/embed/cooliris.swf?t=1307582197",
            "wall", "600", "450", "9.0.0", "",
            flashvars, params);
// ]]&gt;</script></p>
<p>For more information on what things you can show in the wall, see here:<br />
<a title="Media Site API Reference" href="http://www.cooliris.com/developer/reference/media-site-apis/" target="_blank">http://www.cooliris.com/developer/reference/media-site-apis/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://pangalactica.com/2012/03/01/cool-photo-displays-are-on-the-wall/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Cluster-wide configuration of components</title>
		<link>http://pangalactica.com/2012/03/01/cluster-wide-configuration-of-components/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=cluster-wide-configuration-of-components</link>
		<comments>http://pangalactica.com/2012/03/01/cluster-wide-configuration-of-components/#comments</comments>
		<pubDate>Thu, 01 Mar 2012 09:26:19 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[Integration]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[clustering]]></category>
		<category><![CDATA[configuration]]></category>
		<category><![CDATA[Felix]]></category>
		<category><![CDATA[Fuse Fabric]]></category>
		<category><![CDATA[OSGi]]></category>
		<category><![CDATA[Servicemix]]></category>

		<guid isPermaLink="false">http://pangalactica.com/?p=162</guid>
		<description><![CDATA[So I&#8217;ve just finished a stint of coding (a rarity nowadays) where I&#8217;ve been adding some capabilities to our platform based on OSGi (we&#8217;re running on Apache Servicemix, running Apache Felix, under the covers). The drivers behind the coding were to address requirements we had to support a more &#8220;tiered&#8221; configuration structure to the one [...]]]></description>
			<content:encoded><![CDATA[<p><span class="drop">S</span>o I&#8217;ve just finished a stint of coding (a rarity nowadays) where I&#8217;ve been adding some capabilities to our platform based on OSGi (we&#8217;re running on Apache Servicemix, running Apache Felix, under the covers). The drivers behind the coding were to address requirements we had to support a more &#8220;tiered&#8221; configuration structure to the one provided by OSGi Configuration Admin. I&#8217;ll attempt to summarise here, in the hope that others have faced same/similar challenges, and can possibly share any experiences they had &#8212; or alternative approaches I might want to consider.</p>
<p>The crux of the requirement is this:</p>
<p>For an OSGi platform, with a given bundle, I might want three different set of configuration available to me:</p>
<ul>
<li>Global Configuration &#8211; available to ALL bundles</li>
<li>Bundle Configuration &#8211; configuration specific to a named bundle (e.g. &#8220;MyApplicationBundle&#8221;)</li>
<li>Version-specific Configuration &#8211; configuration that is specific to a particular version of a bundle</li>
</ul>
<p>Global and Bundle should be self-explanatory, the Version-specific might not be so clear. Version-specific config comes mainly into play when we&#8217;re deploying multiple versions of the same bundle side-by-side. Useful for upgrades, backwards-compatibility, etc. If I write a new version of a bundle (say &#8220;MyApplicationBundle&#8221;, version 2.0), it&#8217;s not necessarily true that the configuration properties I used for version 1.0 are going to be applicable to version 2.0.</p>
<p>But ultimately what I want is to be able to have ONE set of Configuration which is:</p>
<blockquote><p>GLOBAL + BUNDLE + VERSION = [My Bundle Configuration]</p></blockquote>
<p>Where if the same property is specified at the BUNDLE or VERSION level, it overrides the more general property. This allows an administrator to set a particular property <em>once</em> and only override it if necessary, rather than copying it into each configuration for a bundle that requires it.</p>
<p>Config Admin today allows me to load a particular named Configuration (e.g. &#8220;MyApplication&#8221;). I guess you could argue that I could achieve <em>a version</em> of what I want by simply having three property files (&#8220;GLOBAL&#8221;,&#8221;MyApplication&#8221;, and &#8220;MyApplication_2.0&#8243;) stored in ConfigAdmin, and write some re-usable code that merges these together. True, but what that would give me (today, using Felix/Servicemix), is a Config Admin directory full of files all at different levels and versions. If I have 100 bundles, that could sure be a lot of files :) A more manageable structure is required.</p>
<p>So I naturally looked to Maven as a source of inspiration. It already has a good syntax for a hierarchical structure of artefacts, namely:</p>
<p><code><br />
[COMPONENT]<br />
---&gt; [VERSION]<br />
---------&gt; [FILES]<br />
</code></p>
<p>So this allows me to store the following:</p>
<p><code><br />
[ROOT]<br />
---- GLOBAL_PROPERTIES.CFG<br />
---- [MYAPPLICATION]<br />
----------- PROPERTIES.CFG<br />
------------[2.0]<br />
---------------PROPERTIES.CFG<br />
</code></p>
<p>This allows me to keep my three different sets of configuration stored in a logical way.</p>
<p>But sadly, this is only half the problem. When we move from a single server to a multi-node cluster, we likely don&#8217;t want to store our configuration under each node &#8211; we want to store and manage it in a single place (possibly even protected by Version-Management). One such solution might be to store all our configuration in the structure above on a shared drive, and then &#8220;mount&#8221; this drive as the &#8220;configuration directory&#8221; for each node instance. That gets us some way to a clustered configuration, but we still have issues.</p>
<p>In an ideal world (yeah, right) every node in a cluster is equal, and all configured the same. Back in the real world, that isn&#8217;t the case. Certainly for the cases I&#8217;ve seen so far, a number of things might be configured differently, even for a cluster of nodes:</p>
<ul>
<li>Host and port information for callbacks, server URL publishing, etc</li>
<li>Tuning parameters for each node in the cluster, based on the different loads they are expecting (if the cluster is partitioned that way)</li>
<li>Configuration for the applications, if they are partitioned to service different subsets of data (geography, users, volume, etc)</li>
</ul>
<p>Worse still, we almost certainly want the same useful &#8220;merging&#8221; approach here as we do for our single-node problem; that is, I might have a component for which I typically want to have the same configuration across all nodes in the cluster (CLUSTER_COMPONENT), but with overrides for just a few properties on a single node (NODE_COMPONENT). Same goes for GLOBAL and VERSION-level configuration too:</p>
<blockquote><p>CLUSTER_GLOBAL + NODE_GLOBAL + CLUSTER_COMPONENT + NODE_COMPONENT + CLUSTER_VERSION + NODE_VERSION = [My Bundle Configuration in a Cluster]</p></blockquote>
<p>Now of course, this is the WORST CASE SCENARIO for combining configuration, but it&#8217;s still very likely. So now, our structure looks like:</p>
<p><code><br />
[ALL-NODES]<br />
---&gt;[COMPONENT]<br />
-------&gt; [VERSION]<br />
----------&gt; [FILES]<br />
[NODE-01]<br />
---&gt;[COMPONENT]<br />
[NODE-02]<br />
---&gt;[COMPONENT]<br />
[...]<br />
</code></p>
<p>Where &#8220;all-nodes&#8221; is the configuration that applies <em>across</em> the cluster, and &#8220;Node-01&#8243;, &#8220;Node-02&#8243;, etc. is the configuration overrides for a particular node in the cluster. Provided this was stored on a shareable filesystem, this could be the centralised configuration for a cluster. Maybe something like <a href="http://git-scm.com/" title="GIT" target="_blank">GIT</a> could be then used to easily apply Version-Management to it and deploy configuration on-site?</p>
<p>Finally, a large portion of my design was to support multiple <em>sources</em> of the configuration data. Filesystems, LDAP, ConfigAdmin. Certainly for sensitive or easier-to-manage data, LDAP (or a database) is a natural choice, yet I don&#8217;t see a way (that is documented, anyway) in Felix to configure an LDAP source (for example). Certainly nothing that meets my somewhat broad requirements to load <em>multiple sources at once</em>.</p>
<p>So my recent coding-stint addresses all of this into a custom component that we use today. I had a design choice as to whether to position this code <em>underneath</em> Configuration Admin (e.g. our components use CA, CA invokes our code to gather configuration, and returns), or <em>on top</em> (we use a custom bean to request configuration, and that bean uses CA if-and-only-if the requested Configuration is managed by CA). Right now, I&#8217;ve settled on the latter, mainly for portability point-of-view. The component today can be used both inside AND outside of the container &#8211; it has no hard dependencies on OSGi or CA, and so we can use it for Configuring non-OSGi applications too.</p>
<p>But I&#8217;m wondering, has this been discussed/tackled before? Certainly my initial browsing and investigations suggested to me that it hadn&#8217;t. I&#8217;ve taken a look at <a href="http://team.ops4j.org/wiki/display/ops4j/Pax+ConfMan" title="ConfMan from OPS4J PAX" target="_blank">ConfMan from OPS4J PAX</a> which seems to at least be looking at a similar problem, but not as broad a scope with the solution. </p>
<p>Probably the most promising option is <a href="http://fabric.fusesource.org/" title="Fuse Fabric" target="_blank">Fuse Fabric</a>, a product based on <a href="http://zookeeper.apache.org/" title="Apache Zookeeper" target="_blank">Apache Zookeeper</a>, which is starting to work its way into the Servicemix and Karaf products. But I think that, right now, it&#8217;s focus is in a slightly different place to mine &#8211; albeit an area that I&#8217;m likely to be spending more and more time looking at in the future. Fabric is more about the co-ordination of the cluster, which certainly <em>includes</em> configuration, but covers much, much more (upgrading, provisioning, etc). Compared to my approach above (for configuration), it&#8217;s much more of a &#8220;push&#8221; model that an &#8220;pull&#8221;. In my approach above, each node &#8220;pulls&#8221; configuration from the central configuration source, whereas Fabric would &#8220;push&#8221; it. Also, today, I don&#8217;t see anything to suggest the level of complexity in the configuration to support some of the use cases I describe above. The interaction seems to be directly with OSGi Configuration Admin, and so it&#8217;s deploying single configuration files into CA on each node. That said, I&#8217;d love to reach a point where maybe I can have Fabric interacting with my own Configuration component to do the &#8220;tiered config&#8221; approach, and let Fabric manage the rest &#8211; that would be the absolute &#8220;sweet spot&#8221;. </p>
<p>Lastly, I&#8217;ve been toying with the idea of turning this recent work into a separately-named component and opening it up for general use, with the hope that a platform provider like Servcemix might adopt it. Would anyone use it? Would be interested to know what people think.</p>
<p>Dan</p>
]]></content:encoded>
			<wfw:commentRss>http://pangalactica.com/2012/03/01/cluster-wide-configuration-of-components/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Specifications and Interpretations</title>
		<link>http://pangalactica.com/2012/02/26/specifications-and-interpretations/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=specifications-and-interpretations</link>
		<comments>http://pangalactica.com/2012/02/26/specifications-and-interpretations/#comments</comments>
		<pubDate>Sun, 26 Feb 2012 12:07:04 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[Integration]]></category>
		<category><![CDATA[ActiveMQ]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Apollo]]></category>
		<category><![CDATA[JMS]]></category>
		<category><![CDATA[Specifications]]></category>

		<guid isPermaLink="false">http://pangalactica.com/?p=147</guid>
		<description><![CDATA[So I&#8217;ve just spent about an hour reading an uber-discussion from forum feedback based on the release of Apache Apollo v1.0 &#8212; the next generation of messaging broker based on ActiveMQ. For those that aren&#8217;t familiar, Apollo is currently a sub-project of ActiveMQ, simply because the approach used is a radical departure from the way [...]]]></description>
			<content:encoded><![CDATA[<p><span class="drop">S</span>o I&#8217;ve just spent about an hour reading an uber-discussion from forum feedback based on the release of Apache Apollo v1.0 &#8212; the next generation of messaging broker based on ActiveMQ. For those that aren&#8217;t familiar, Apollo is currently a sub-project of ActiveMQ, simply because the approach used is a radical departure from the way that ActiveMQ works. Apollo takes things completely asynchronous, which allows it to fully leverage multi-core hardware. It&#8217;s anticipated that Apollo will become part of ActiveMQ at some future release (possibly as soon as 6.0).</p>
<p>It&#8217;s fair to say that the bulk of the effort so far has been into running Apollo using STOMP, a text-based protocol which is rapidly becoming a preferred protocol over binary transports like OpenWire, thanks to the modern increases in the ability to quickly parse text (compared to binary) headers.</p>
<p>I use a number of Apache products today (via Fusesource) and was interested to see how Apollo was shaping up, so I read the press release for 1.0 with interest. Then I came across <a title="this discussion" href="http://www.infoq.com/news/2012/02/activemq-apollo-1-0-released" target="_blank">this discussion</a>, via a tweet from Rob Davies, which I&#8217;ve only <em>just</em> finished reading. Suffice to say, that like most other areas in technology, there&#8217;s no shortage of &#8220;competitive feedback&#8221; from developers/architects/founders of other messaging brokers/protocols. It&#8217;s to be expected, I guess, since anything like messaging is so driven by performance and reliability, and anything which claims to be better than another is going to be met with the usual scepticism. However this forum thread reached a whole new level.</p>
<p>The &#8216;problem&#8217;, as I understand it, is centered around interpretation of the JMS Specification, namely in the realm of &#8220;Guaranteed Delivery of Persistent Messages&#8221;. JMS API 1.1, section 4.7 states that: </p>
<blockquote><p>&#8220;A JMS provider must deliver a PERSISTENT message once-and-only-once.&#8221;</p></blockquote>
<p>The crux of the issue is that Apollo introduces an optimisation which skips disc writes for persistent messages if the message can be delivered directly to a consumer. That is, if it can successfully deliver the message and receive an ACK, then there is no need to persist the message. All OK so far. Except that it introduces a scenario where the Consumer&#8217;s JMS Client can receive a message, but before it has time to respond with an ACK, the broker dies. So technically, we&#8217;re in a position where the message has not been &#8220;received&#8221; (if we&#8217;re assuming that receipt implies an ACK). But, because the message was never persisted in the broker, the broker cannot re-send it. So what&#8217;s the solution? For Apollo, in this case, they rely on the Producer to re-send the message. Why would it do that? Because, in the case of persistent messages, the Producer waits for an ACK (from the broker) before returning from the call to send() (and hence considering the message successfully sent). If it doesn&#8217;t get a successful return to send(), then it should consider it not successfully sent.</p>
<p>The somewhat long debate centered around the fact that the Consumer might &#8220;see&#8221; a persistent message, suffer a broker failure, and then never receive it again if the Producer dies and never recovers, because the message wasn&#8217;t stored on the broker.</p>
<p>So my take on all this? From a Spec point-of-view, we need to agree on what it means to &#8220;send&#8221; a message, and &#8220;deliver&#8221; a message, and herein lies the slightly wobbly ground. Personally I think that, in general, it&#8217;s perfectly fine for Consumers to only care about messages that were successfully sent. And I think that it&#8217;s OK to consider a persistent message successfully sent if and only if the Producer returns from the call to send(). So from a professional sense, I totally agree that Apollo is adhering to the rules and providing users with a solid improvement in performance. Yay! I look forward to reaping the benefits when it makes its way into ActiveMQ at some point.</p>
<p>However, it uncovers an example of where specifications and interpretations can get us in hot water if they are suitably vague. For this optimisation (and probably other situations too), you can certainly make the case that the &#8220;Sent&#8221; vs &#8220;Received&#8221; argument above could be considered circular. &#8220;When receiving a message, I only consider it valid if it was successfully sent, which will only happen if I successfully acknowledged it, which surely means that I received it?&#8221;.</p>
<p>Nevertheless, nit-picking over the JMS Specification (or any other for that matter), is kinda pointless. Ultimately, it will come down to whether a Client Application and Server Application can send and receive data according to their understanding of the rules, and not lose any messages. If a Client does not actually <em>process</em> any messages that it does not ACK, and a Producer always retries messages that it never successfully sent, then I can&#8217;t see the problem. If you want to hold a pedantic debate, that&#8217;s fine, but it really doesn&#8217;t help (or hinder) my ability to write fault-tolerant message-based systems.</p>
<p>So let&#8217;s not debate &#8220;does it meet (y)our interpretation of the JMS 1.1 Spec&#8221;, let&#8217;s debate &#8220;will it keep my system running as I expect?&#8221;. I believe the answer is a resounding &#8220;YES&#8221;.</p>
<p><a href="http://activemq.apache.org/apollo/" title="http://activemq.apache.org/apollo/" target="_blank">http://activemq.apache.org/apollo/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://pangalactica.com/2012/02/26/specifications-and-interpretations/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Legend of Atlantis&#8230;</title>
		<link>http://pangalactica.com/2012/02/26/the-legend-of-atlantis/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=the-legend-of-atlantis</link>
		<comments>http://pangalactica.com/2012/02/26/the-legend-of-atlantis/#comments</comments>
		<pubDate>Sun, 26 Feb 2012 12:06:16 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[Photography]]></category>
		<category><![CDATA[atlantis]]></category>
		<category><![CDATA[indoor]]></category>
		<category><![CDATA[multi-image]]></category>
		<category><![CDATA[NASA]]></category>
		<category><![CDATA[shuttle]]></category>

		<guid isPermaLink="false">http://pangalactica.com/?p=63</guid>
		<description><![CDATA[I&#8217;ve had a fascination with space from a very early age, thanks to a healthy appetite for reading and TV/Movie shows that featured space (Doctor Who, Thunderbirds, Terrahawks, Star Wars, etc. etc.). Two of my earliest serious memories of space were (1) a space pop-up book with moving galaxies, a pop-up telescope, and many other [...]]]></description>
			<content:encoded><![CDATA[<p><span class="drop">I</span>&#8217;ve had a fascination with space from a very early age, thanks to a healthy appetite for reading and TV/Movie shows that featured space (Doctor Who, Thunderbirds, Terrahawks, Star Wars, etc. etc.). Two of my earliest serious memories of space were (1) a space pop-up book with moving galaxies, a pop-up telescope, and many other cool features that gradually decayed the more I read it&#8230; and (2) a trip to the London Planetarium, which is a simply amazing place &#8212; if you haven&#8217;t visited &#8211; I heartily recommend.</p>
<p>I&#8217;d never visited Florida as a child. My parents aren&#8217;t the &#8220;Disney&#8221; type, and whilst at the time it&#8217;s always something you think of negatively, I can now fully endorse their position, and even though I&#8217;ve grown into an adult that&#8217;s visited there a number of times, I&#8217;ve always done so without children. I&#8217;ve seen my share of exhausted, cranky kids who really are too young to appreciate the experience they&#8217;re having. By the time we were teenagers, my Mum had stopped flying and so it fell to a young travelling 20-something Dan to experience Florida for the first time. Since then, most of my trips to Florida have been on the back of work.</p>
<p>One of the more positive side-effects of working remotely is that a large majority of my team are based in Melbourne, Florida. Apart from the good year-round weather, seafood and proximity to Orlando (and Disney), it&#8217;s also a short 40 minute drive from one of my all-time favorite places <em>in the world</em>. I am referring to the NASA Kennedy Space Center.</p>
<p>Over the course of my years working for a Florida-based team, I&#8217;ve visited the Space Center a number of times, including once with my wife, Charlene. Until a couple of weeks ago, the most amazing visit was to witness STS-129: the launch of Atlantis on November 16th 2009. I was able to stand in the Rocket Garden at the Visitor Complex to watch Atlantis blast off to deliver parts to the International Space Station. I was simply blown away by a number of things: the sight of Atlantis rocketing into the sky, the sound, even from 10 miles away from the pad, and the overriding sense of love and family that each person standing there felt towards both the crew and the craft that was hurtling them into space.</p>
<p><center><br />
<a href="http://www.flickr.com/photos/dansalt/4111054646/"><img src="http://farm3.staticflickr.com/2659/4111054646_6906500315.jpg" alt="Shuttle Launch (7/11)" width="375" height="500" /></a></p>
<p><a href="http://www.flickr.com/photos/dansalt/4110261003/"><img src="http://farm3.staticflickr.com/2762/4110261003_c825168fdb_m.jpg" alt="Shuttle Separation" width="240" height="180" /></a><a href="http://www.flickr.com/photos/dansalt/4111037652/"><img src="http://farm3.staticflickr.com/2665/4111037652_7ecd2c62bf_m.jpg" alt="Ready for Liftoff" width="240" height="180" /></a></p>
<p></center><br />
So when I heard that the Shuttle program was ending, and that these amazing craft were no longer going to be in service, I felt a deep sense of sadness.</p>
<p>Skip forward to just a few weeks ago &#8211; early January 2012. I find out that I&#8217;m going to be taking a trip to Florida, so I check (as I regularly do) the Kennedy Space Center website to see if there was anything special going on, and I see&#8230;. &#8220;Come and look inside the Vehicle Assembly Building!!&#8221;. So not only was I super excited to see inside the VAB, where Atlantis, like every other orbiter, was assembled prior to launch, but another exciting prospect loomed. Although not guaranteed, the Kennedy website suggested that, at certain times, a Shuttle Orbiter may be inside, being prepared and decommissioned before getting sent to various space museums across the USA. I book a ticket. Very quicky. Very, very quickly!</p>
<p>Skip forward to Saturday February 4th, 2012. I&#8217;m on the &#8220;Up Close Tour&#8221;, and the guide drops a BIG hint that there was indeed an orbiter in the VAB. I&#8217;m a big softy at the best of times, but when I heard that, my heart jumped into my throat and stayed there until I arrived at the VAB. It would be a disservice to the VAB to not spend time talking about it. It&#8217;s big. The quote from Douglas Adams regarding &#8220;space&#8221; in the Hitch-hikers Guide to the Galaxy sums it up pretty well:</p>
<blockquote><p>&#8220;Space is big. You just won&#8217;t believe how vastly, hugely, mind-bogglingly big it is. I mean, you may think it&#8217;s a long way down the road to the chemists, but that&#8217;s just peanuts to space.&#8221;</p></blockquote>
<p>It&#8217;s huge. Not only is it huge, it&#8217;s simply impossible to shoot. I must have taken 20-30 shots, in an attempt to later stitch them up into some kind of &#8220;mega image&#8221;. No matter how much I try, I simply can&#8217;t. The pipework, scaffolding and large expanses of glass must be <em>the worst</em> kind of surface to try and image-stitch. The best I could manage was this 2-sheet stich using an app I&#8217;m trialling called &#8220;DoubleTake&#8221; for the Mac:..</p>
<p><a title="VAB-DoubleTake by dansalt75, on Flickr" href="http://www.flickr.com/photos/dansalt/6853457023/"><img src="http://farm8.staticflickr.com/7146/6853457023_508abb111a.jpg" alt="VAB-DoubleTake" width="600px" /></a></p>
<p>Okay &#8211; so it&#8217;s big. The white box at the bottom of the screen is a HUGE door, and the small dark spec in the door is a <em>PERSON</em>!! It stands at a whopping 525ft (160m) tall, and at one point in time was the largest building by volume in the world. It&#8217;s easy to see why, and hard to see how anything could beat it!</p>
<p>And there, nestled in one corner, behind a gate, was&#8230;.. Atlantis. I don&#8217;t think I&#8217;ve ever been quite so emotional about seeing an inanimate object before. I kept getting something in my eye. That&#8217;s my story, and I&#8217;m sticking to it&#8230;</p>
<p><a title="IMG_7700 by dansalt75, on Flickr" href="http://www.flickr.com/photos/dansalt/6853498773/"><img src="http://farm8.staticflickr.com/7163/6853498773_788ca114ac.jpg" alt="IMG_7700" width="600px" /></a></p>
<p>Some pieces (including the front section), were still removed, being processed and cleaned before being re-fitted. It&#8217;s odd, because &#8211; as a regular to the space center &#8211; I&#8217;m used to seeing the replica of the orbiter in the Visitor Complex, next to the Shuttle Launch Simulator. I wonder how many people have walked inside it, thinking that it was a real shuttle. But when you see a <em>real</em> shuttle, an actual craft that&#8217;s been all the way out of our atmosphere, and back again, many times, you really appreciate just how much toll it takes. It&#8217;s not all white and shiny and glossy. It&#8217;s worn and battered. But it stood proud, as if it would have taken another hundred crews into space if it only had been allowed to. And so it initially saddened me, that such a proud machine was now sat there, retired and redundant. Until you remember, of course, that these orbiters are about to become immortal. Preserved for all to see in space museums across the US. And the biggest honor of all? The orbiter that gets to remain in its spiritual home at the Kennedy Space Center? Atlantis :)</p>
<p><a title="IMG_7709 by dansalt75, on Flickr" href="http://www.flickr.com/photos/dansalt/6853508021/"><img src="http://farm8.staticflickr.com/7041/6853508021_a727832634.jpg" alt="IMG_7709" width="600px" /></a></p>
<p>I was (thanks to some rather dubious manoeuvring), the first person to get to see Atlantis. I was the last person standing there at the end, still transfixed on the sight before me. On the second request to head back to the bus I grudgingly obeyed&#8230;</p>
<p>They say <em>&#8220;you should never meet your heroes&#8221;</em>. On this case, they were totally wrong. I met Atlantis, and she was <em>awesome</em>.</p>
<p>Dan</p>
<p><script type="text/javascript"
         src="http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js">
</script></p>
<div id="wall"><!-- 3D Wall Goes Here --></div>
<p><script>
        var flashvars = {
            feed: "api://www.flickr.com/?album=72157629262905829",
style: "black", 
numRows: "2"
        };
        var params = {
             allowFullScreen: "true",
             allowscriptaccess: "always"
        };
        swfobject.embedSWF("http://apps.cooliris.com/embed/cooliris.swf?t=1307582197",
            "wall", "600", "450", "9.0.0", "",
            flashvars, params);
    </script></p>
]]></content:encoded>
			<wfw:commentRss>http://pangalactica.com/2012/02/26/the-legend-of-atlantis/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Getting to grips with Blender &#8211; PtII: The Bottle</title>
		<link>http://pangalactica.com/2009/07/24/getting-to-grips-with-blender-ptii-the-bottle/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=getting-to-grips-with-blender-ptii-the-bottle</link>
		<comments>http://pangalactica.com/2009/07/24/getting-to-grips-with-blender-ptii-the-bottle/#comments</comments>
		<pubDate>Fri, 24 Jul 2009 13:30:41 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[3D Modelling]]></category>
		<category><![CDATA[3d modelling]]></category>
		<category><![CDATA[Blender]]></category>

		<guid isPermaLink="false">http://pangalactica.com/?p=52</guid>
		<description><![CDATA[Okay &#8211; so for my second experiment, I decided that I wanted to learn a little about reflections and transparency. So I decided to try and create a bottle (generic type &#8211; looks a little like a milk-bottle), that was full of water, and reflected the scene around it. I followed some very good tutorials [...]]]></description>
			<content:encoded><![CDATA[<p><span class="drop">O</span>kay &#8211; so for my second experiment, I decided that I wanted to learn a little about reflections and transparency. So I decided to try and create a bottle (generic type &#8211; looks a little like a milk-bottle), that was full of water, and reflected the scene around it.</p>
<p>I followed some very good tutorials on the <a href="http://wiki.blender.org/index.php/Main_Page">Blender Wiki</a>, which contains some great material, so kudos to the guys that write/maintain that site. It walked me through creating a glass texture, setting the right levels of reflection and transparency, and also turning on &#8220;ray-tracing&#8221; to draw the scene properly. It then walked me through setting appropriate lighting (both ambient lamps and spotlights) to effectively light the scene.</p>
<p>The result is below, and for my first ever attempt &#8211; I&#8217;m pretty pleased. I&#8217;m also becoming <em><strong>much</strong></em> more comfortable with all the Blender controls for panning and moving views and objects. Haven&#8217;t decided on my next project just yet &#8211; will update this post when I&#8217;ve decided&#8230;</p>
<p><a href="http://www.flickr.com/photos/dansalt/3752339366/" class="tt-flickr tt-flickr-Medium" title="Bottle Render"><img class="aligncenter" src="http://farm3.static.flickr.com/2624/3752339366_1a1278c604.jpg" alt="Bottle Render" width="500" height="375" /></a> </p>
]]></content:encoded>
			<wfw:commentRss>http://pangalactica.com/2009/07/24/getting-to-grips-with-blender-ptii-the-bottle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Waiting for my tablet&#8230;.</title>
		<link>http://pangalactica.com/2009/07/20/waiting-for-my-tablet/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=waiting-for-my-tablet</link>
		<comments>http://pangalactica.com/2009/07/20/waiting-for-my-tablet/#comments</comments>
		<pubDate>Mon, 20 Jul 2009 21:22:17 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[Photography]]></category>
		<category><![CDATA[bamboo fun]]></category>
		<category><![CDATA[tablet]]></category>
		<category><![CDATA[wacom]]></category>

		<guid isPermaLink="false">http://pangalactica.com/?p=36</guid>
		<description><![CDATA[No, it&#8217;s not some kind of prescription medication addiction &#8211; I&#8217;m talking graphics tablet! Thanks to GE&#8217;s Long Service Award, I treated myself to a Wacom Bamboo Fun Graphics Tablet. Why did I buy one? Well, I&#8217;ve had one before, and used it mainly for sketching out diagrams (rather than spend my day in Visio-Land), [...]]]></description>
			<content:encoded><![CDATA[<p><span class="drop">N</span>o, it&#8217;s not some kind of prescription medication addiction &#8211; I&#8217;m talking <em>graphics</em> tablet! </p>
<p>Thanks to GE&#8217;s Long Service Award, I treated myself to a <a href="http://www.wacom.eu/index2.asp?lang=en&#038;pid=221">Wacom Bamboo Fun Graphics Tablet</a>. Why did I buy one? Well, I&#8217;ve had one before, and used it mainly for sketching out diagrams (rather than spend my day in Visio-Land), and at that time my photography skills didn&#8217;t exactly warrant the use of a tablet.</p>
<p>But NOW that my photography skills are improving, coupled with the hundreds of DSLR magazines I&#8217;ve accumulated showing me how to improve my photos &#8211; I think it&#8217;s time I became reaquainted with the tablet. My old one has since lost its stylus (typically), and so I had no choice but to buy another one ;-) I have a ton of photos waiting to be uploaded to Flickr from my recent narrowboat holiday. I&#8217;m holding back so that I can test out the tablet, and see if it really makes much difference.</p>
<p>Finally &#8211; one of the FIRST things I&#8217;m going to do is create a series of graphical banners for this site! I have a picture in mind for each different subject area (Home Page, Photography, Technology, Integration and Cool Stuff). All bar the Home Page will be photography &#8211; but I really need the tablet to draw what I want for the Home Page. The signature picture for Pangalactica: A slice of lemon wrapped around a gold brick &#8211; as described by the marvelous Mr Adams.</p>
<p>I&#8217;ll post again once I&#8217;ve received it, and had a chance to road-test it. I&#8217;ll try and post in the style of Clarkson. Maybe. Possibly&#8230; </p>
]]></content:encoded>
			<wfw:commentRss>http://pangalactica.com/2009/07/20/waiting-for-my-tablet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Visual Integration Patterns</title>
		<link>http://pangalactica.com/2009/07/20/visual-integration-patterns/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=visual-integration-patterns</link>
		<comments>http://pangalactica.com/2009/07/20/visual-integration-patterns/#comments</comments>
		<pubDate>Mon, 20 Jul 2009 20:14:04 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[Integration]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Enterprise Integration Patterns]]></category>
		<category><![CDATA[Fuji]]></category>
		<category><![CDATA[FUSE]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://pangalactica.com/?p=8</guid>
		<description><![CDATA[I&#8217;d like to know what people think on this subject. Right now, today &#8211; there is a certain degree of expection that Business Processes &#8211; which are typically quite &#8220;step-by-step&#8221; &#8211; have a visual tool that allows (non-)technical creators/editors/debuggers to Create/Edit/View them. This is fine for Business Processes &#8211; their &#8220;flow&#8221; is typically represented as [...]]]></description>
			<content:encoded><![CDATA[<p><span class="drop">I</span>&#8217;d like to know what people think on this subject.</p>
<p>Right now, today &#8211; there is a certain degree of expection that Business Processes &#8211; which are typically quite &#8220;step-by-step&#8221; &#8211; have a visual tool that allows (non-)technical creators/editors/debuggers to Create/Edit/View them. This is fine for Business Processes &#8211; their &#8220;flow&#8221; is typically represented as a &#8220;step-by-step&#8221; process, with some basic conditional routing. Importantly, typically in a Business Process, all the possible routes are pre-determined. At this level, we can focus our attentions at the service-level &#8211; we dont necessarily care where (or how) each service is invoked. So the BPEL &#8220;routes&#8221; are relatively straightforward in design. Which lends itself well to a &#8220;Drag and Drop&#8221;-style GUI tool.</p>
<p>So I find myself recently asked a similar question about (Enterprise) Integration Patterns. Because the very nature of these messages are much lower level, they have a much greater ability to create more complex flows. They are concerned with much more &#8220;physical&#8221; attributes, compared to a Business Process. An Integration Pattern typically DOES care &#8220;which server&#8221;, &#8220;which protocol&#8221;, etc. The real problem comes with the complexity of the &#8220;flow&#8221;.  When the flow is conditional, and the possible routes are NOT explicitly stored in the flow, then it becomes much harder to represent this visually. I refer to patterns like Routing Slip, or where custom Java-DSL routes are defined that internally decide how to continue to route a particular message. How can we draw a &#8220;chart&#8221; of the flow of data through an Integration Pattern, if we don&#8217;t know up-front what the flow is going to be?</p>
<p>I&#8217;m of course picking on the more difficult EIP&#8217;s rather than generalising, but you see my point, right? What good is a tool if it can only (visually) represent <em>some</em> of the patterns?</p>
<p>Despite this, there are already efforts to visually represent Enterprise Integration Patterns. I&#8217;ve seen examples of ESB design tools in what was Oracle SOA Suite (not sure what exists today after the BEA/Oracle technology merge). Although the scope of this was somewhat reduced &#8211; I certainly didn&#8217;t see many Integration Patterns represented in there. More recently the Fuse product team have created the Fuse Integration Designer &#8211; which aims to visualize Apache Camel routes, and include other components such as CXF and Spring-based beans. Finally, more recently, the Sun team have been busy working on tooling for Project Fuji &#8211; which also looks promising.</p>
<p>But my question is this &#8211; how far can this realistically go, and what will it really be used for? How important is visual tooling for Integration Patterns. I can see the benefits to the developer &#8211; the ability to quickly &#8220;mock up&#8221; 50-80% of an EIP project visually clearly saves considerable time. But once that route includes non-visual aspects that affect the route (components that cannot be visually represented) &#8211; how useful is it then? Can it still be edited? Debugged? If we are debugging, and the runtime suddenly dives into a pattern we can&#8217;t represent, and then crashes &#8211; how valuable is this?</p>
<p>My main concern is that it will encourage &#8220;sloppy patterns&#8221; &#8211; patterns that avoid using non-visual components, because it&#8217;s easier to stick to the components that can be created and edited in the visual editor.</p>
<p>Or is there really an answer that enables <em>all</em> components to be represented visually? The only solution I can think of is to split EIP&#8217;s into &#8220;stages&#8221; delimited by endpoints. So every single start/end route combination has a separate view. Then a design/edit/view/debugging tool can &#8220;jump&#8221; from one diagram to another, without losing the context. Clearly for internal java-based errors, we will still need to jump into the code &#8211; but it might enable better web-based &#8220;first line&#8221; debugging to take place to focus the problem onto a particular EIP &#8220;stage&#8221;, or better still, a particular component&#8230;</p>
<p>Thoughts?</p>
]]></content:encoded>
			<wfw:commentRss>http://pangalactica.com/2009/07/20/visual-integration-patterns/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>A Blog without a post&#8230;</title>
		<link>http://pangalactica.com/2009/07/20/hello-world/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=hello-world</link>
		<comments>http://pangalactica.com/2009/07/20/hello-world/#comments</comments>
		<pubDate>Mon, 20 Jul 2009 19:10:35 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[Integration]]></category>

		<guid isPermaLink="false">http://pangalactica.com/?p=1</guid>
		<description><![CDATA[Is like an Enterprise Integration Pattern without a destination &#8211; useless!! So here&#8217;s a &#8220;Hello World&#8221; blog post &#8211; I&#8217;ll post something more significant later&#8230;]]></description>
			<content:encoded><![CDATA[<p><span class="drop">I</span>s like an Enterprise Integration Pattern without a destination &#8211; useless!! So here&#8217;s a &#8220;Hello World&#8221; blog post &#8211; I&#8217;ll post something more significant later&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://pangalactica.com/2009/07/20/hello-world/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting to grips with Blender &#8211; The Big Maoi</title>
		<link>http://pangalactica.com/2009/07/20/getting-to-grips-with-blender-the-big-maoi/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=getting-to-grips-with-blender-the-big-maoi</link>
		<comments>http://pangalactica.com/2009/07/20/getting-to-grips-with-blender-the-big-maoi/#comments</comments>
		<pubDate>Mon, 20 Jul 2009 19:56:27 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[3D Modelling]]></category>
		<category><![CDATA[3d modelling]]></category>
		<category><![CDATA[Blender]]></category>

		<guid isPermaLink="false">http://pangalactica.com/?p=5</guid>
		<description><![CDATA[This is the result of my first serious attempt to create anything in Blender. Using a combination of Edit and Sculpt mode &#8211; I was able to recreate a 3D Model of this &#8220;Big Maoi&#8221;. The &#8220;real&#8221; Maoi sits on my desk, is about 12inches high &#8211; and doubles as a Kleenex dispenser &#8211; although [...]]]></description>
			<content:encoded><![CDATA[<p><a class="tt-flickr tt-flickr-Medium" title="Big Maoi" href="http://www.flickr.com/photos/dansalt/3739545401/"><img class="aligncenter" src="http://farm3.static.flickr.com/2550/3739545401_2a0b9f1479.jpg" alt="Big Maoi" width="500" height="375" /></a></p>
<p><span class="drop">T</span>his is the result of my first serious attempt to create anything in Blender. Using a combination of Edit and Sculpt mode &#8211; I was able to recreate a 3D Model of this &#8220;Big Maoi&#8221;. The &#8220;real&#8221; Maoi sits on my desk, is about 12inches high &#8211; and doubles as a Kleenex dispenser &#8211; although I decided (on this occasion) NOT to render the tissue sticking out of his nose :-) For those that really, really want a Big Maoi on their own desk &#8211; you can find it <a href="http://www.iwantoneofthose.com/big-maoi-tissue-dispenser/index.html">here</a>.</p>
<p>The actual model is constructed from only 2 primitive objects &#8211; both spheres. I could probably have created it all using just one &#8211; but the neck and base of the sculpture was an &#8220;afterthought&#8221; &#8211; so decided to build it separately rather than mess up my crafted head :) This had an interesting side-effect, in that I could very easily take the 2 primitive objects and export the UV maps into other virtual environments (like Second Life, or OpenGrid) that use UV maps to represent free-form sculpted objects. Finally, the texture is just a free &#8220;stucco stone&#8221; texture taken from the internet. The real statue on my desk has a very &#8220;stucco&#8221; feel to it &#8211; so it actually suits it very well.</p>
<p>So what are my impressions of Blender? I have to say that even tho I managed to create this relatively easily (after a few failed attempts), there are still some aspects to it that are going to take some getting used to. The most simple of which is that, unlike other packages I&#8217;ve used in the past (3D Studio, Lightwave, etc) the controls are very &#8220;Keyboard and Menu&#8221; oriented. So it took me a while to figure out all the keys just to (a) move my own view about and (b) move objects about in the scene. Once mastered, tho, it&#8217;s quite powerful. The only thing I still can&#8217;t find out how to do, is control the view of the camera from <em>within</em> the camera view itself &#8211; something I was used to doing in other packages. Once I master enough &#8211; I&#8217;ll create a little &#8220;cheat sheet&#8221; to stick on my monitor.</p>
<p>However all that being said, I&#8217;m relatively optimistic that I&#8217;ll be able to continue to further my skills and create more 3D sculptures. My next project is to create something that has multiple textures &#8220;painted&#8221; onto a single primitive object. I&#8217;ll scan my office for the next likely victim :)</p>
<p><a href="http://www.flickr.com/photos/dansalt/3745753189/" class="tt-flickr tt-flickr-Medium" title="Maoi Render 2"><img class="aligncenter" src="http://farm3.static.flickr.com/2471/3745753189_96ceb92860.jpg" alt="Maoi Render 2" width="500" height="375" /></a> </p>
]]></content:encoded>
			<wfw:commentRss>http://pangalactica.com/2009/07/20/getting-to-grips-with-blender-the-big-maoi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
