<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-17715831</id><updated>2009-12-18T20:45:37.621Z</updated><title type='text'>Pontifications on code</title><subtitle type='html'>A developer pontificates (for is that not what a pontiff does) on coding and the like.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://codepope.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17715831/posts/default'/><link rel='alternate' type='text/html' href='http://codepope.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/17715831/posts/default?start-index=26&amp;max-results=25'/><author><name>Codepope</name><uri>http://www.blogger.com/profile/06399274284779782498</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>50</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-17715831.post-5623667238243585310</id><published>2008-07-26T12:58:00.001+01:00</published><updated>2008-07-26T12:58:20.030+01:00</updated><title type='text'>10 points for redefining "Hello World" in Java</title><content type='html'>Some code we never go back to. Like Java's Hello World... it has a main method which takes arguments and it always looks a little daunting. &lt;a href="http://www.cavdar.net/2008/07/26/say-hello-world-without-main-method-in-java/"&gt;At Cavdar.net someone had a bright idea&lt;/a&gt; and uses a static initialiser block to print "Hello World", and then promptly exits to stop the JVM looking for the main method and giving an error. I, for one, welcome our new "Hello World" overlords...&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17715831-5623667238243585310?l=codepope.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codepope.blogspot.com/feeds/5623667238243585310/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=17715831&amp;postID=5623667238243585310' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17715831/posts/default/5623667238243585310'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17715831/posts/default/5623667238243585310'/><link rel='alternate' type='text/html' href='http://codepope.blogspot.com/2008/07/10-points-for-redefining-world-in-java.html' title='10 points for redefining &amp;quot;Hello World&amp;quot; in Java'/><author><name>Codepope</name><uri>http://www.blogger.com/profile/06399274284779782498</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07561560774516799920'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17715831.post-7499146786365760971</id><published>2008-07-14T08:45:00.001+01:00</published><updated>2008-07-14T08:45:34.710+01:00</updated><title type='text'>Thrift, the other interconnection protocol....</title><content type='html'>How did I manage to miss Thrift. Released a year ago by Facebook, it's very similar to Google's Protocol Buffers, so &lt;a href="http://stuartsierra.com/2008/07/10/thrift-vs-protocol-buffers"&gt;this comparison by Stuart Sierra&lt;/a&gt; puts meat on those bones. &lt;br /&gt;&lt;br /&gt;There's only one way to resolve this... PROTOCOL FIIIIIIIGHT.&lt;br /&gt;&lt;br /&gt;Actually, Thrift looks nice with more languages supported too and now Thrift is in incubation as an Apache project. &lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17715831-7499146786365760971?l=codepope.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codepope.blogspot.com/feeds/7499146786365760971/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=17715831&amp;postID=7499146786365760971' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17715831/posts/default/7499146786365760971'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17715831/posts/default/7499146786365760971'/><link rel='alternate' type='text/html' href='http://codepope.blogspot.com/2008/07/thrift-other-interconnection-protocol.html' title='Thrift, the other interconnection protocol....'/><author><name>Codepope</name><uri>http://www.blogger.com/profile/06399274284779782498</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07561560774516799920'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17715831.post-8815025538480996754</id><published>2008-07-11T09:33:00.001+01:00</published><updated>2008-07-11T09:33:21.547+01:00</updated><title type='text'>A Coder Sighs....</title><content type='html'>Well, I had been working away on Pocket Lendery for the iPhone, and it was coming along nicely but what with me getting a proper job and all, it had slipped a bit.&lt;br /&gt;&lt;br /&gt;And then the iPhone App Store opened and there was &lt;a href="http://www.codingmonkeys.de/circulator/"&gt;Circulator&lt;/a&gt; from the fine chaps at Coding Monkeys. Circulator looks like a fine app and just reminds me of some things I forgot from my spec.&lt;br /&gt;&lt;br /&gt;Still, there's plenty of code in the Pocket Lendery code base, and I'll keep on working on it till it scratches my own itch. I will then release it as an open sourced project (unless you are reading this, are an iPhone coder or want to be, and want to help on the project in which case, mail me)...&lt;br /&gt;&lt;br /&gt;I can't think of a better way to keep the Coding Monkeys on their toes than having an open source project snapping at their heels.&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17715831-8815025538480996754?l=codepope.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codepope.blogspot.com/feeds/8815025538480996754/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=17715831&amp;postID=8815025538480996754' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17715831/posts/default/8815025538480996754'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17715831/posts/default/8815025538480996754'/><link rel='alternate' type='text/html' href='http://codepope.blogspot.com/2008/07/coder-sighs.html' title='A Coder Sighs....'/><author><name>Codepope</name><uri>http://www.blogger.com/profile/06399274284779782498</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07561560774516799920'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17715831.post-7937337672009749204</id><published>2008-07-09T08:45:00.001+01:00</published><updated>2008-07-09T08:45:53.310+01:00</updated><title type='text'>Google Browser Sync open sourced....</title><content type='html'>Google Browser Sync, or at least the client part, has been &lt;a href="http://google-opensource.blogspot.com/2008/07/open-sourcing-browser-sync.html"&gt;open sourced&lt;/a&gt;. I think the idea of porting the server to Google App Engine has potential, but lets see how the community builds around it first. &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17715831-7937337672009749204?l=codepope.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codepope.blogspot.com/feeds/7937337672009749204/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=17715831&amp;postID=7937337672009749204' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17715831/posts/default/7937337672009749204'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17715831/posts/default/7937337672009749204'/><link rel='alternate' type='text/html' href='http://codepope.blogspot.com/2008/07/google-browser-sync-open-sourced.html' title='Google Browser Sync open sourced....'/><author><name>Codepope</name><uri>http://www.blogger.com/profile/06399274284779782498</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07561560774516799920'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17715831.post-2340551057875709856</id><published>2008-07-08T12:00:00.001+01:00</published><updated>2008-07-08T12:00:02.070+01:00</updated><title type='text'>Google Protocol Buffers</title><content type='html'>Google squirt a lot of data internally between a lot of different services written in different languages. The data format between these services has been tricky to manage. The default response is "use XML" but XML makes the data bigger and more costly to parse. Google's solution is &lt;a href="http://code.google.com/p/protobuf/"&gt;Google Protocol Buffers&lt;/a&gt;. Create a .proto file to describe the data contained by a message you want to pass. Run a compiler and you get the Java, Python or C++ code you need to read and write messages with that protocol. Now go wire up your services. All under an Apache 2.0 License. Worth checking out; and it'll be interesting to see how long before that range of languages supported expands.&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17715831-2340551057875709856?l=codepope.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codepope.blogspot.com/feeds/2340551057875709856/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=17715831&amp;postID=2340551057875709856' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17715831/posts/default/2340551057875709856'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17715831/posts/default/2340551057875709856'/><link rel='alternate' type='text/html' href='http://codepope.blogspot.com/2008/07/google-protocol-buffers.html' title='Google Protocol Buffers'/><author><name>Codepope</name><uri>http://www.blogger.com/profile/06399274284779782498</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07561560774516799920'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17715831.post-2272611765834955991</id><published>2008-07-03T15:17:00.001+01:00</published><updated>2008-07-03T15:17:09.376+01:00</updated><title type='text'>Things that suck - unselectable dialog text...</title><content type='html'>I think anyone who makes a dialog window pop up with text along the lines of "Something hasn't worked, see http://example.org/blah/blah/blah for more details" and then makes the URL non clickable and also makes the text unselectable so the user can't copy and paste, needs to have control-C/control-V disabled on their computers and see how they like it.&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17715831-2272611765834955991?l=codepope.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codepope.blogspot.com/feeds/2272611765834955991/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=17715831&amp;postID=2272611765834955991' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17715831/posts/default/2272611765834955991'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17715831/posts/default/2272611765834955991'/><link rel='alternate' type='text/html' href='http://codepope.blogspot.com/2008/07/things-that-suck-unselectable-dialog.html' title='Things that suck - unselectable dialog text...'/><author><name>Codepope</name><uri>http://www.blogger.com/profile/06399274284779782498</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07561560774516799920'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17715831.post-1243668403871316438</id><published>2008-06-24T13:11:00.001+01:00</published><updated>2008-06-24T13:11:37.684+01:00</updated><title type='text'>JSqueak.... Smalltalk in Java</title><content type='html'>It's small (5000 lines of code), it's MIT licensed, it has a development environment, it runs 10-30 times slower than a C based VM, but hey, it looks like fun. It's &lt;a href="http://news.squeak.org/2008/06/21/jsqueak-smalltalk-interpreter-written-in-java/"&gt;JSqueak&lt;/a&gt;, a Squeak interpreter written in Java.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17715831-1243668403871316438?l=codepope.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codepope.blogspot.com/feeds/1243668403871316438/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=17715831&amp;postID=1243668403871316438' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17715831/posts/default/1243668403871316438'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17715831/posts/default/1243668403871316438'/><link rel='alternate' type='text/html' href='http://codepope.blogspot.com/2008/06/jsqueak-smalltalk-in-java.html' title='JSqueak.... Smalltalk in Java'/><author><name>Codepope</name><uri>http://www.blogger.com/profile/06399274284779782498</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07561560774516799920'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17715831.post-6562432008516195784</id><published>2008-06-06T15:23:00.001+01:00</published><updated>2008-06-06T15:23:44.604+01:00</updated><title type='text'>LinkedIn's Architecture....</title><content type='html'>This &lt;a href="http://www.slideshare.net/linkedin/linkedins-communication-architecture"&gt;slideshow&lt;/a&gt; of LinkedIn's JavaOne presentation has some interesting things to take away....&lt;br /&gt;&lt;br /&gt;22 million users.&lt;br /&gt;&lt;br /&gt;A 12GB JVM heap in "The Cloud" which holds 120 million connections between those users with in memory caching implemented in C++ and accessed through JNI.&lt;br /&gt;&lt;br /&gt;99% Java implementation.&lt;br /&gt;&lt;br /&gt;And an architecture that has evolved to scale. (Hey Twitter, take a look?)&lt;br /&gt;&lt;br /&gt;Nice work LinkedIn.&lt;br /&gt;&lt;br /&gt;(via &lt;a href="http://rollerweblogger.org/roller/entry/linkedin_99_pure_java"&gt;Blogging Roller&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17715831-6562432008516195784?l=codepope.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codepope.blogspot.com/feeds/6562432008516195784/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=17715831&amp;postID=6562432008516195784' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17715831/posts/default/6562432008516195784'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17715831/posts/default/6562432008516195784'/><link rel='alternate' type='text/html' href='http://codepope.blogspot.com/2008/06/linkedin-architecture.html' title='LinkedIn&amp;#39;s Architecture....'/><author><name>Codepope</name><uri>http://www.blogger.com/profile/06399274284779782498</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07561560774516799920'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17715831.post-8053314312016482771</id><published>2008-06-04T13:26:00.001+01:00</published><updated>2008-06-04T13:26:51.007+01:00</updated><title type='text'>Like drawing up your application designs?</title><content type='html'>If you do, you'll love &lt;a href="http://developer.yahoo.com/ypatterns/wireframes/"&gt;Yahoo's Design Stencil Kit&lt;/a&gt;. Coming in Omnigraffle, Visio, PDF, PNG and SVG formats, it's a whole host of goodies for sketching out your app in your favourite digital notepad. The stencils under a Creative Commons attribution license, but &lt;a href="http://developer.yahoo.net/blog/archives/2008/06/yahoo_design_st.html"&gt;attribution on created diagrams is optional&lt;/a&gt;. So, no excuse for dodgy diagrams any more.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17715831-8053314312016482771?l=codepope.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codepope.blogspot.com/feeds/8053314312016482771/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=17715831&amp;postID=8053314312016482771' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17715831/posts/default/8053314312016482771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17715831/posts/default/8053314312016482771'/><link rel='alternate' type='text/html' href='http://codepope.blogspot.com/2008/06/like-drawing-up-your-application.html' title='Like drawing up your application designs?'/><author><name>Codepope</name><uri>http://www.blogger.com/profile/06399274284779782498</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07561560774516799920'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17715831.post-2770514668006002295</id><published>2008-05-31T13:35:00.001+01:00</published><updated>2008-05-31T13:35:52.227+01:00</updated><title type='text'>Epictetus - A Java Database Explorer....</title><content type='html'>I haven't played with it yet but &lt;a href="http://antilogics.com/epictetus.html"&gt;Epictetus&lt;/a&gt; looks like a competent Java based database explorer. It is built on the Netbeans platform, but you don't need Netbeans to run it. Note though it is still early days for this application.&lt;br /&gt;&lt;br /&gt;Why the mention? Well, I went and looked at the fuzzy little video there. No strange voice talking over it. Just MC Hammer's Can't Touch This... I was off looking for my big trousers in seconds.&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17715831-2770514668006002295?l=codepope.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codepope.blogspot.com/feeds/2770514668006002295/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=17715831&amp;postID=2770514668006002295' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17715831/posts/default/2770514668006002295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17715831/posts/default/2770514668006002295'/><link rel='alternate' type='text/html' href='http://codepope.blogspot.com/2008/05/epictetus-java-database-explorer.html' title='Epictetus - A Java Database Explorer....'/><author><name>Codepope</name><uri>http://www.blogger.com/profile/06399274284779782498</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07561560774516799920'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17715831.post-4234303806069522517</id><published>2008-05-22T14:59:00.001+01:00</published><updated>2008-05-22T15:01:39.918+01:00</updated><title type='text'>A thought... Annotated licenses....</title><content type='html'>When mixing code libraries together, wouldn't it be neat to be able to enumerate all the licenses that applied to the code base.&lt;br /&gt;&lt;br /&gt;How about an @License annotation?&lt;br /&gt;&lt;br /&gt;@License(name="MyNeatLibrary",type="BSD",author="Blah Blah Inc")&lt;br /&gt;@License(name="IrregularExpression Library",type="CCattrib",attrib="Fred Flintstone",attribemail="fred@example.com",attriburl="http://example.com")&lt;br /&gt;&lt;br /&gt;At run time, the "About" dialog then scans the code base for the annotations, which would be set to runtime persist, and then display about information based on what is actually used. &lt;br /&gt;&lt;br /&gt;It wouldn't attempt to enforce the licenses, but would allow for automatic visibility of licenses.&lt;br /&gt;&lt;br /&gt;Of course, this would have to be done in some coordinated way to standardise the types and attributes, but it has some potential... just as long as we don't end up with per-method licenses. &lt;br /&gt;&lt;br /&gt;[ This thought caused by following &lt;a href="http://twitter.com/mattgemmell"&gt;Matt Gemmell&lt;/a&gt; on Twitter ]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17715831-4234303806069522517?l=codepope.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codepope.blogspot.com/feeds/4234303806069522517/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=17715831&amp;postID=4234303806069522517' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17715831/posts/default/4234303806069522517'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17715831/posts/default/4234303806069522517'/><link rel='alternate' type='text/html' href='http://codepope.blogspot.com/2008/05/thought-annotated-licenses.html' title='A thought... Annotated licenses....'/><author><name>Codepope</name><uri>http://www.blogger.com/profile/06399274284779782498</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07561560774516799920'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17715831.post-4443726196753777983</id><published>2008-05-05T15:26:00.001+01:00</published><updated>2008-05-05T15:26:36.507+01:00</updated><title type='text'>Finally, an end of Time (and Date)</title><content type='html'>Top of the list of things that any Java developer can agree, sucks like a sucky thing from suckington, suckania, it's Date and Time. These have never got better, and like a scab have been picked at with no healing up. Well now there's JSR 310... and &lt;a href="http://java.dzone.com/news/game-over-jdks-date-and-time-c"&gt;here's an interview at Java Lobby with the JSR leaders&lt;/a&gt;.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17715831-4443726196753777983?l=codepope.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codepope.blogspot.com/feeds/4443726196753777983/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=17715831&amp;postID=4443726196753777983' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17715831/posts/default/4443726196753777983'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17715831/posts/default/4443726196753777983'/><link rel='alternate' type='text/html' href='http://codepope.blogspot.com/2008/05/finally-end-of-time-and-date.html' title='Finally, an end of Time (and Date)'/><author><name>Codepope</name><uri>http://www.blogger.com/profile/06399274284779782498</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07561560774516799920'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17715831.post-2731402817264697840</id><published>2008-04-29T14:03:00.001+01:00</published><updated>2008-04-29T14:03:27.376+01:00</updated><title type='text'>A Morning with NetBeans 6.1....</title><content type='html'>I've been off working on the iPhone SDK, so I wasn't too interrupted when &lt;a href="http://netbeans.org/"&gt;NetBeans 6.1&lt;/a&gt; made an early entrance this week. That was until Nomine said to me "What I'd like is an application which looks up the people you are following on Twitter and the people following you on Twitter and shows who the mutual followed/following are"...&lt;br /&gt;&lt;br /&gt;So, I broke out NetBeans 6.1 and gave it a go. First up was the Twitter access. That turned out to be very easy; NB6.1 has precanned code generators for lots of well known web services out there. So I selected Twitter and the appropriate function in the tree and drag it into my code. And pow!, there it is, complete with separate classes generated to handle the result and authentication, including popping up a user name/password authentication dialogue.&lt;br /&gt;&lt;br /&gt;Parsing the XML was more interesting. I decided to use the XML Schema design tool in NetBeans 6.1, which I hadn't used before, but after about an hour or so of fiddling, I had a schema file which was automatically generating code for JAXB.&lt;br /&gt;&lt;br /&gt;Next up, feeding the result of the Twitter API to create objects... Already in there. The result of the Twitter API call can be parsed into a JAXB object by calling a method on the result and telling it what JAXB class you want it turned into.&lt;br /&gt;&lt;br /&gt;The GUI, Matisse as usual, but it's just getting better. Now there's Java Application Framework support in there I made a JAF application, and getting a button to call up Twitter and do all that parsing was a matter of picking the button and doing "Set Action" on it. NetBeans 6.1 can also code generate all the background processing bits, including an animated busy indicator.&lt;br /&gt;&lt;br /&gt;And that was an application built. Doesn't actually change anything but boy, it shows how useful NetBeans 6.1 is.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17715831-2731402817264697840?l=codepope.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codepope.blogspot.com/feeds/2731402817264697840/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=17715831&amp;postID=2731402817264697840' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17715831/posts/default/2731402817264697840'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17715831/posts/default/2731402817264697840'/><link rel='alternate' type='text/html' href='http://codepope.blogspot.com/2008/04/morning-with-netbeans-61.html' title='A Morning with NetBeans 6.1....'/><author><name>Codepope</name><uri>http://www.blogger.com/profile/06399274284779782498</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07561560774516799920'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17715831.post-4362573395318309238</id><published>2008-04-16T12:04:00.001+01:00</published><updated>2008-04-16T12:04:35.248+01:00</updated><title type='text'>Inconsolable....</title><content type='html'>Cross posted from Codepapacy&lt;br /&gt;&lt;br /&gt;I was looking for monospaced fonts, after I was reminded that Microsoft had actually made a decent monospaced font with Consola. After some hunting, and a false start finding the original Inconsolas, I found the latest version, with a slashed zero, and my it looks good. &lt;a href="http://www.ghostscript.com/~raph/type/myfonts/inconsolata.html"&gt;Check it out here.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17715831-4362573395318309238?l=codepope.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codepope.blogspot.com/feeds/4362573395318309238/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=17715831&amp;postID=4362573395318309238' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17715831/posts/default/4362573395318309238'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17715831/posts/default/4362573395318309238'/><link rel='alternate' type='text/html' href='http://codepope.blogspot.com/2008/04/inconsolable.html' title='Inconsolable....'/><author><name>Codepope</name><uri>http://www.blogger.com/profile/06399274284779782498</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07561560774516799920'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17715831.post-549165370418644964</id><published>2008-04-13T12:47:00.001+01:00</published><updated>2008-04-13T12:47:44.032+01:00</updated><title type='text'>6 People and their ids....</title><content type='html'>Playing with the iPhone SDK? If you are working with the addressbook, you might want to know what the default record ids of the simulated addressbook is. &lt;br /&gt;&lt;br /&gt;&lt;pre&gt;1 - Kate Bell&lt;br /&gt;2 - Daniel Higgins&lt;br /&gt;3 - John Appleseed&lt;br /&gt;4 - Anna Haro&lt;br /&gt;5 - Hank Zakroff&lt;br /&gt;6 - David Taylor&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Now you know. This might be handy for testing if nothing else.&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17715831-549165370418644964?l=codepope.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codepope.blogspot.com/feeds/549165370418644964/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=17715831&amp;postID=549165370418644964' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17715831/posts/default/549165370418644964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17715831/posts/default/549165370418644964'/><link rel='alternate' type='text/html' href='http://codepope.blogspot.com/2008/04/6-people-and-their-ids.html' title='6 People and their ids....'/><author><name>Codepope</name><uri>http://www.blogger.com/profile/06399274284779782498</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07561560774516799920'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17715831.post-2102744805032243472</id><published>2008-04-04T11:53:00.001+01:00</published><updated>2008-04-04T11:53:37.712+01:00</updated><title type='text'>Grails and Groovy....</title><content type='html'>I've done an article on Grails and Groovy, which you can find at &lt;a href="http://www.heise-online.co.uk/open/Grails-and-Groovy-The-Dynamic-Duo-for-Java--/features/110425/0"&gt;here on Heise Online UK&lt;/a&gt;. It's an introduction to what Grails is about.&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17715831-2102744805032243472?l=codepope.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codepope.blogspot.com/feeds/2102744805032243472/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=17715831&amp;postID=2102744805032243472' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17715831/posts/default/2102744805032243472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17715831/posts/default/2102744805032243472'/><link rel='alternate' type='text/html' href='http://codepope.blogspot.com/2008/04/grails-and-groovy.html' title='Grails and Groovy....'/><author><name>Codepope</name><uri>http://www.blogger.com/profile/06399274284779782498</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07561560774516799920'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17715831.post-4296770862442125627</id><published>2008-03-19T08:24:00.002Z</published><updated>2008-03-19T08:27:26.508Z</updated><title type='text'>BloglinesMenu 1.6</title><content type='html'>I completely forgot to mention, but BloglinesMenu 1.6 just lost the RC tag and is now a release. And the source it up on the site too. So get &lt;a href="http://www.runstate.com/proj/blmenu.html"&gt;BloglinesMenu 1.6&lt;/a&gt;... if you use Bloglines, that is. Or if you want the source for a simple menu notifier app which you can modify for whatever service you want.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17715831-4296770862442125627?l=codepope.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codepope.blogspot.com/feeds/4296770862442125627/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=17715831&amp;postID=4296770862442125627' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17715831/posts/default/4296770862442125627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17715831/posts/default/4296770862442125627'/><link rel='alternate' type='text/html' href='http://codepope.blogspot.com/2008/03/bloglinesmenu-16.html' title='BloglinesMenu 1.6'/><author><name>Codepope</name><uri>http://www.blogger.com/profile/06399274284779782498</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07561560774516799920'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17715831.post-2649242563591366472</id><published>2008-03-18T17:09:00.001Z</published><updated>2008-03-18T17:09:30.860Z</updated><title type='text'>Ah... __MyCompanyName__ no more....</title><content type='html'>XCode is a tad opaque as to where it keeps the company name value it uses when it makes templates into files. So how to change? Quit XCode and start up a terminal and type&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;defaults write com.apple.xcode PBXCustomTemplateMacroDefinitions -dict ORGANIZATIONNAME RunState&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Restart XCode and all your code is mine! Bwahahaha... Oh yes, change RunState to your company name.&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17715831-2649242563591366472?l=codepope.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codepope.blogspot.com/feeds/2649242563591366472/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=17715831&amp;postID=2649242563591366472' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17715831/posts/default/2649242563591366472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17715831/posts/default/2649242563591366472'/><link rel='alternate' type='text/html' href='http://codepope.blogspot.com/2008/03/ah-mycompanyname-no-more.html' title='Ah... __MyCompanyName__ no more....'/><author><name>Codepope</name><uri>http://www.blogger.com/profile/06399274284779782498</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07561560774516799920'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17715831.post-3683882992851795289</id><published>2008-02-02T10:44:00.001Z</published><updated>2008-02-02T10:51:57.505Z</updated><title type='text'>BloglinesMenu 1.6rc</title><content type='html'>Yes, finally, I updated the &lt;a href="http://runstate.com/proj/blmenu.html"&gt;BloglinesMenu&lt;/a&gt; to be universal. I'm flagging this one a release canidate as I'm not 100% on how this will run in the field*, but it's out there now. If no one flags a problem in the next month or so, I'll just drop the rc from the zip file name.&lt;br /&gt;&lt;br /&gt;Enjoy.... I won't because I'm all Google Reader these days.&lt;br /&gt;&lt;br /&gt;* When I say that, I've given it a good run and it seems to still stay small and work, it's just this is my first Universal build.&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17715831-3683882992851795289?l=codepope.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codepope.blogspot.com/feeds/3683882992851795289/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=17715831&amp;postID=3683882992851795289' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17715831/posts/default/3683882992851795289'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17715831/posts/default/3683882992851795289'/><link rel='alternate' type='text/html' href='http://codepope.blogspot.com/2008/02/bloglinesmenu-16rc.html' title='BloglinesMenu 1.6rc'/><author><name>Codepope</name><uri>http://www.blogger.com/profile/06399274284779782498</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07561560774516799920'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17715831.post-2410371834249145731</id><published>2007-12-13T13:25:00.001Z</published><updated>2007-12-13T13:25:24.965Z</updated><title type='text'>Pope notes* - Rails - restful_authentication --stateful</title><content type='html'>* Pope notes - things that I've just worked on, and got halfway, but need to press on with. Like little papal snapshots, mainly for my reference so I can come back to it later.&lt;br /&gt;&lt;br /&gt;I like state machines; they make life cycles much easier to manage and &lt;a href="http://elitists.textdriven.com/svn/plugins/acts_as_state_machine/trunk/README"&gt;acts_as_state_machine&lt;/a&gt; is a nice way of expressing state machines. The problem I just hit though was that restful_authentication plugin just added --stateful, which generates up an authentication setup that includes the &lt;a href="http://www.vaporbase.com/postings/stateful_authentication"&gt;Stateful authentication setup&lt;/a&gt;. It went well enough getting it to work, but there seems to be a mismatch in statefulness and the use of an observer to generate mail. The observer watches save and creates, and then uses the state of the user to decide what should be done. But, it does this for all saves, and because there's no indication of a state change having just occurred, then having the after_save observer mail when the users state is active triggers off multiple "you have signed in mails" and the variant, checking for a pending state, triggers an activation mail. What struck me was it should be better to move the mail generation into the user model, using the same hooks that the state machine uses for when a state is entered. I had a quick hack, and it seems to work, but does generate two activation mails.... this is probably fixable if I understood the acts_as_state_machine plugin better, so I'm going back to another part of the code which does use that.&lt;br /&gt;&lt;br /&gt;Oh, and I'm in day two of my "coding rails without an IDE"... it's all TextMate and Terminal here for the next fortnight. No better way to know what an IDE is doing right or wrong than getting back to basics.&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17715831-2410371834249145731?l=codepope.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codepope.blogspot.com/feeds/2410371834249145731/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=17715831&amp;postID=2410371834249145731' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17715831/posts/default/2410371834249145731'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17715831/posts/default/2410371834249145731'/><link rel='alternate' type='text/html' href='http://codepope.blogspot.com/2007/12/pope-notes-rails-restfulauthentication.html' title='Pope notes* - Rails - restful_authentication --stateful'/><author><name>Codepope</name><uri>http://www.blogger.com/profile/06399274284779782498</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07561560774516799920'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17715831.post-5928284034374374172</id><published>2007-11-19T15:39:00.001Z</published><updated>2007-11-19T15:39:24.656Z</updated><title type='text'>Busy Busy....</title><content type='html'>What I find hard? Testing. Doubly hard, TDD. Triply hard, BDD. But dammit, I will do this new code base right for a change. Well, righter.&lt;br /&gt;&lt;br /&gt;Busy at the moment working on Lendery. A simple application, I suspect, but I thought I'd mention it.&lt;br /&gt;&lt;br /&gt;Lendery replaces my previous Libr project as I realised that Libr was a lot of work for users creating a library which they may only get one use out of per thing loaned. And thus Lendery was inspired. It lets you record who you loaned something to by their email address (initially) and uses email to tell them (after authenticating the account.... a once only event per email address)... sign up and you can create an identity of multiple email addresses (akas) and the ability to manage your loans on the web.&lt;br /&gt;&lt;br /&gt;Well, thats the plan.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17715831-5928284034374374172?l=codepope.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codepope.blogspot.com/feeds/5928284034374374172/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=17715831&amp;postID=5928284034374374172' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17715831/posts/default/5928284034374374172'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17715831/posts/default/5928284034374374172'/><link rel='alternate' type='text/html' href='http://codepope.blogspot.com/2007/11/busy-busy.html' title='Busy Busy....'/><author><name>Codepope</name><uri>http://www.blogger.com/profile/06399274284779782498</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07561560774516799920'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17715831.post-3450001480275259924</id><published>2007-05-28T09:51:00.001+01:00</published><updated>2007-05-28T09:51:59.976+01:00</updated><title type='text'>Beans, real Beans....</title><content type='html'>&lt;p&gt;Richard Bair's posted about &lt;a href="http://weblogs.java.net/blog/rbair/archive/2006/05/the_unknown_jav.html"&gt;JavaBeans and what makes a real Bean&lt;/a&gt;. Food for thought. And no, JavaBeans don't make you do this....&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;object width="425" height="350"&gt;&lt;param name="movie" value="http://www.youtube.com/v/R6dm9rN6oTs"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/R6dm9rN6oTs" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17715831-3450001480275259924?l=codepope.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codepope.blogspot.com/feeds/3450001480275259924/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=17715831&amp;postID=3450001480275259924' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17715831/posts/default/3450001480275259924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17715831/posts/default/3450001480275259924'/><link rel='alternate' type='text/html' href='http://codepope.blogspot.com/2007/05/beans-real-beans.html' title='Beans, real Beans....'/><author><name>Codepope</name><uri>http://www.blogger.com/profile/06399274284779782498</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07561560774516799920'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17715831.post-4509327380146026961</id><published>2007-05-16T09:11:00.001+01:00</published><updated>2007-05-16T09:17:02.103+01:00</updated><title type='text'>The Repurposing</title><content type='html'>[ I'm playing around with getting some oped out of my head, so this is a developing article ]&lt;br /&gt;&lt;br /&gt;Adobe, Microsoft and Sun have all rolled out their Web "Rich Application" Platforms. Now that the wraps are off the WRAPs, there's one thing that's obvious. They are all based around repurposing each companies existing platform. Adobe took Flash, gave it a programming language that didn't sit on a timeline and glued it into Eclipse so code developers don't have to step out of their IDE to develop for it. But basically, it's Flash, with a pony tail and sandals and a tool bag. Microsoft took their .Net platform, created a bucket of glue for Python to run on it, called the glue the DLR, and made it web embeddable. Sun took Java, fixed up the long standing issue of Java being a big download, popped a new scripting language on top, and called it JavaFX.&lt;br /&gt;&lt;br /&gt;What does the repurposing achieve though? It does establish dynamic scripting languages as a first class platform, rather than its more traditional position as the left-field platform of geeks and hackers. But beyond there, they still have a lot to do. Adobe and Microsoft have delivered not so much open platforms as ajar platforms; they both have open sourced elements to their offerings, but both have proprietary lock-ins, Adobe on the server side (with the Flex platform playing 'best' with Adobe server extensions) and Microsoft on the development tools (Silverlight might run on a Mac, but to develop it you'll be wanting Windows and Visual Studio). Sun have a more open offering but they also have a different problem; over ten years of "Java's too slow, too big" folk analysis is a lot of baggage to take into a fight, a fight which Sun started on back in 1995 when they launched Java.&lt;br /&gt;&lt;br /&gt;But there's also another competitor to all these technologies. The repurposing of the browser. Five years ago if you'd said people could drag and zoom maps, work with documents and spreadsheets, drag and drop components and all this in a web browser with no embedded virtual machines or components, folks would have called you a fantasist. And yet that is where we are with the whole host of Ajax related developments. All they miss is the ability to step "outside" the browser, but even then it's not a huge leap to think of using the core of the browser, the rendering canvas as the run time for non-browser applications; just lose the back button and address bar and you have the repurposed browser. What this approach lacks is a big hitting company behind it.&lt;br /&gt;&lt;br /&gt;So now we have four approaches in play... &lt;br /&gt;&lt;br /&gt;[ to be continued ]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17715831-4509327380146026961?l=codepope.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codepope.blogspot.com/feeds/4509327380146026961/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=17715831&amp;postID=4509327380146026961' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17715831/posts/default/4509327380146026961'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17715831/posts/default/4509327380146026961'/><link rel='alternate' type='text/html' href='http://codepope.blogspot.com/2007/05/repurposing.html' title='The Repurposing'/><author><name>Codepope</name><uri>http://www.blogger.com/profile/06399274284779782498</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07561560774516799920'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17715831.post-7441509426575577946</id><published>2007-03-14T17:38:00.001Z</published><updated>2007-03-14T17:38:36.429Z</updated><title type='text'>AjaxTerm - Thats quite neat...</title><content type='html'>&lt;p&gt;&lt;a href="http://antony.lesuisse.org/qweb/trac/wiki/AjaxTerm"&gt;AjaxTerm&lt;/a&gt; is a rather impressive bit of work. It's a python script you run which lets you point your browser at a port on that machine and get an Ajaxy terminal session which you can login in with. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17715831-7441509426575577946?l=codepope.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codepope.blogspot.com/feeds/7441509426575577946/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=17715831&amp;postID=7441509426575577946' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17715831/posts/default/7441509426575577946'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17715831/posts/default/7441509426575577946'/><link rel='alternate' type='text/html' href='http://codepope.blogspot.com/2007/03/ajaxterm-thats-quite-neat.html' title='AjaxTerm - Thats quite neat...'/><author><name>Codepope</name><uri>http://www.blogger.com/profile/06399274284779782498</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07561560774516799920'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17715831.post-433585494344762151</id><published>2007-03-13T18:07:00.001Z</published><updated>2007-03-13T18:07:27.248Z</updated><title type='text'>Acts_As_Ferret - Full text searching</title><content type='html'>&lt;p&gt;This tutorial, &lt;a href="http://www.twistedmind.com/2007/2/19/acts-as-ferret-tutorial"&gt;Rails Envy: Acts_As_Ferret Tutorial&lt;/a&gt; strikes me as jolly interesting, and alleviates my fear that it would feed my models sugar candy till they go hyperactive like &lt;a href="http://en.wikipedia.org/wiki/Kiki_%28Sluggy_Freelance%29#Kiki"&gt;Kiki&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17715831-433585494344762151?l=codepope.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codepope.blogspot.com/feeds/433585494344762151/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=17715831&amp;postID=433585494344762151' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17715831/posts/default/433585494344762151'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17715831/posts/default/433585494344762151'/><link rel='alternate' type='text/html' href='http://codepope.blogspot.com/2007/03/actsasferret-full-text-searching.html' title='Acts_As_Ferret - Full text searching'/><author><name>Codepope</name><uri>http://www.blogger.com/profile/06399274284779782498</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07561560774516799920'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>