<?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>thread dump &#187; software</title>
	<atom:link href="http://roger.searjeant.net/wp/category/software/feed/" rel="self" type="application/rss+xml" />
	<link>http://roger.searjeant.net/wp</link>
	<description></description>
	<lastBuildDate>Wed, 11 Nov 2009 20:35:00 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Groovy and Language Design</title>
		<link>http://roger.searjeant.net/wp/2009/06/groovy-and-language-design/</link>
		<comments>http://roger.searjeant.net/wp/2009/06/groovy-and-language-design/#comments</comments>
		<pubDate>Sat, 13 Jun 2009 11:18:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://roger.searjeant.net/wp/2009/06/groovy-and-language-design/</guid>
		<description><![CDATA[I was a little surprised to read Elliotte Rusty Harold’s recent comments on Groovy, calling it the ‘Edsel of programming languages’.&#160; It’s an amusing comment, but pejorative and challenging enough to motivate a response.&#160; 
The past few years have been interesting and fruitful from a programming language perspective: Ruby, Groovy, Scala, F#, and the evolution [...]]]></description>
			<content:encoded><![CDATA[<p>I was a little surprised to read Elliotte Rusty Harold’s <a href="http://www.cafeaulait.org/#May_14_2009_23130">recent comments on Groovy</a>, calling it the ‘Edsel of programming languages’.&#160; It’s an amusing comment, but pejorative and challenging enough to motivate a response.&#160; </p>
<p>The past few years have been interesting and fruitful from a programming language perspective: Ruby, Groovy, Scala, F#, and the evolution of C# are those which spring to mind.</p>
<p>Many of these developments have been about finding a way to push functional-programming idioms (lambda expressions, currying) or dynamic language features (type inference, closures) into well-established imperative languages like C# and Java. I think the results have been mixed: imperative languages are essentially assignment-based, not expression-based, so you end up with a hybrid which, from a language syntax point of view, is neither one thing nor another and arguably suffers as a result.&#160; But it’s difficult to argue that these efforts don’t deliver real positive utility.</p>
<p>An example of this is how C# has evolved support for lambda expressions, expression trees and implicit typing. First (in v1) we had simple delegates, then (in v2) we were able to drop the delegate syntax and declare anonymous methods inline, and finally (in v3) we can use a compact <a href="http://msdn.microsoft.com/en-us/library/ms364047(vs.80).aspx#cs3spec_topic4">lambda syntax</a> which looks a bit like <a href="http://en.wikipedia.org/wiki/ML_(programming_language)">ML</a>. But because all this has been added to what remains fundamentally a statically-typed, compiled language, you still have to put up with all the nasty explicit declaration of types (and type parameters) on the l.h.s. of every assignment, just to keep the compiler happy.&#160; So the final step was to introduce the <a href="http://msdn.microsoft.com/en-us/library/ms364047(vs.80).aspx#cs3spec_topic2">var</a> keyword and bring implicit typing into the language. Not dynamic typing, just implicit typing: we get to trim away the ugly declarations but keep the compile-time type safety.&#160; </p>
<p>The confluence of these developments enabled things like <a href="http://msdn.microsoft.com/en-us/netframework/aa904594.aspx">LINQ</a>: blending a query sublanguage into the primary language syntax. The best exposition of this I have read is by Ian Griffiths, in his excellent post on <a href="http://www.interact-sw.co.uk/iangblog/2005/09/30/expressiontrees">expression trees</a>: see the example code just over half-way down, under the section ‘Expression Trees, LINQ, Deferred Queries, and Databases’. It’s all so superficially appealing – just look at the motivating use-case in Ian’s post. But still there’s a small, nagging voice in my head saying this isn’t quite right&#8230; </p>
<p>It feels as if we’re trying to pretend there’s no boundary (or intermediary) between the program text and the resource we’re querying. This is similar to the way we tried to pretend that remote procedure calls were really local calls in the old (and now largely discredited) distributed programming models such as CORBA and DCOM. Recall the <a href="http://en.wikipedia.org/wiki/Fallacies_of_Distributed_Computing">fallacies of distributed computing</a> and the <a href="http://msdn.microsoft.com/en-gb/magazine/cc164026.aspx#S1">tenets of SOA</a>: these are essentially warnings about the dangers of implicit or flawed assumptions.&#160; Although the tenets have been challenged (and were threatened with retirement) most of what they said is timelessly valid.&#160; In the context of LINQ, I think my nagging voice is pointing to the boundary-crossing in a LINQ query and muttering “private implementation technique, not primitive construct”.</p>
<p>What’s this got to do with my starting point for this piece, which was Harold’s ‘Edsel’ jibe?&#160; I suppose it’s this: whatever we may feel about the virtue of purity in language design, in the end productivity and usability are the bigger drivers, and with skill it is possible to combine language features without creating a monster.</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:eb68780c-e498-49db-8b86-e6a41b4f27ed" class="wlWriterEditableSmartContent">Technorati Tags: <a href="http://technorati.com/tags/Java" rel="tag">Java</a>,<a href="http://technorati.com/tags/Groovy" rel="tag">Groovy</a>,<a href="http://technorati.com/tags/C%23" rel="tag">C#</a></div>
]]></content:encoded>
			<wfw:commentRss>http://roger.searjeant.net/wp/2009/06/groovy-and-language-design/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>EIP Shapes for OpenOffice Draw</title>
		<link>http://roger.searjeant.net/wp/2009/03/eip-shapes-for-openoffice-draw/</link>
		<comments>http://roger.searjeant.net/wp/2009/03/eip-shapes-for-openoffice-draw/#comments</comments>
		<pubDate>Sat, 28 Mar 2009 11:06:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Enterprise Integration]]></category>
		<category><![CDATA[OpenOffice]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://roger.searjeant.net/wp/2009/03/eip-shapes-for-openoffice-draw/</guid>
		<description><![CDATA[If you’ve read the excellent Enterprise Integration Patterns (EIP) book by Gregor Hohpe and Bobby Woolf, you may also know that free VISIO stencils are available for the EIP shapes, from the download page.
This is great for those who have a copy of VISIO (or whose employer pays for a copy), but for those of [...]]]></description>
			<content:encoded><![CDATA[<p>If you’ve read the excellent <a href="http://www.eaipatterns.com/">Enterprise Integration Patterns</a> (EIP) book by Gregor Hohpe and Bobby Woolf, you may also know that free VISIO stencils are available for the EIP shapes, from the <a href="http://www.eaipatterns.com/downloads.html">download page</a>.</p>
<p>This is great for those who have a copy of VISIO (or whose employer pays for a copy), but for those of us who don’t want to pay however many hundreds of dollars Microsoft wants for VISIO these days, an alternative (especially a free one) is always welcome.&#160; <a href="http://www.openoffice.org/">OpenOffice</a> (OOo) Draw, though hardly as functional or attractive as VISIO, is both free and good enough for many diagrams. </p>
<p>So I decided to see if I could create a set of OOo Draw shapes from the VISIO stencil, and see whether Draw could be practical for integration diagramming.&#160; In short, I succeeded in converting the stencil, and I think Draw is just about good enough. For those not interested in the background, I’ve made the material freely available from <a href="http://sites.google.com/site/rogersearjeant/eip-shapes-for-openoffice-draw">this page</a> on my website, so just go ahead and download/install.&#160; Otherwise, read on.</p>
<p><strong>Exporting the VISIO Shapes</strong></p>
<p>One way to get shape data into Draw is via <a href="http://en.wikipedia.org/wiki/Scalable_Vector_Graphics">SVG</a>. So I started with the VISIO shapes, freely downloadable from the EIP site, and as I use VISIO at work I was able to load up the stencil and export it as SVG.&#160; </p>
<p>You need to install an OpenOffice <a href="http://extensions.services.openoffice.org/project/svgimport">extension for importing SVG</a>. I’m using OOo 3.0: the extension installed without incident and the import was straightforward. I was surprised at how good the resulting shapes looked in Draw.&#160; Each shape is composed of drawing primitives, so you need to select and group them to create a shape you can place and move easily. I’ve done this for all the shapes in the download.</p>
<p>So now we have the shapes, where can we put them to make them easily reusable?&#160; In Draw, there’s no stencil feature as such: the only option is the Gallery:</p>
<p><a href="http://lh4.ggpht.com/_1Zdup2KWrzE/Sc4EeaBYr_I/AAAAAAAAALQ/1v5JkZpcS-Y/s1600-h/image2.png"><img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="244" alt="image" src="http://lh5.ggpht.com/_1Zdup2KWrzE/Sc4EiE66CpI/AAAAAAAAALU/PjYrxhT9lC4/image_thumb.png?imgmax=800" width="172" border="0" /></a> </p>
<p><strong>The Gallery</strong></p>
<p>The gallery feature in Draw isn’t very appealing, initially. When you first install OOo, the gallery contains some spectacularly awful materials: nasty backgrounds and bullets which I cannot imagine ever wanting to use, and it even contains some pointless sound-clips that surely only a 5-year old might use (and only then if they were desperate). The shapes and graphics are reminiscent of shareware software from the Windows 95 era.&#160; And what is the point of the built-in media player?&#160; Why can’t OpenOffice grow up?&#160; It’s so very close to being excellent in many respects: things like this just make it look silly and dated.</p>
<p>Anyway, back to the gallery feature. The one saving grace of this feature is that you can create new gallery themes and add your own shapes to them. To do this, create a new theme, give it a name and then drag your shapes into it.&#160; Note that when you drag/drop your shape you must hold down the mouse button and pause a second or two before dragging: this pause changes the drag-mode from a simple shape move to the required move/copy.</p>
<p>I’ve done this for all the EIP shapes, creating an EIP gallery theme:</p>
<p><a href="http://lh3.ggpht.com/_1Zdup2KWrzE/Sc4EjYg3yYI/AAAAAAAAALY/-8ARqkNIs6A/s1600-h/image5.png"><img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="150" alt="image" src="http://lh6.ggpht.com/_1Zdup2KWrzE/Sc4Eki41JXI/AAAAAAAAALc/iNVvaqHhtTQ/image_thumb1.png?imgmax=800" width="244" border="0" /></a> </p>
<p><strong>Sharing the EIP Theme</strong></p>
<p>Unfortunately, Draw doesn’t implement a theme export facility so to share this new theme with others requires some irritating file copying.&#160; The contents of the Gallery are stored in your profile (or home) folder. On Windows this is likely to be:</p>
<p>C:\Documents and Settings\&lt;user&gt;\Application Data\OpenOffice.org\3\user\gallery</p>
</p>
<p>On Unix/Linux, check your home folder. There are several file types in here and (unusually for OOo) they are binary, not XML. This makes it difficult to reverse-engineer their purpose and relationship but fortunately it doesn’t seem to be necessary to understand fully what’s going on. The key thing to note is that the numbers in the file names bind together related files.&#160; When you create a new theme, a new set of files appears to be created.</p>
<p>For the EIP theme I have manually renamed the files to use numbers which I hope won’t clash with any existing gallery files you may have.&#160; Check the zip contents <em>before</em> you extract the files into your OOo folder and if you have existing files with the same name, simply rename the files in my zip to be unique in your environment.&#160; </p>
<p><strong>The Result</strong></p>
<p>I think the result is pretty good.&#160; As a test, I have (partially) reproduced the diagram from the end-cover of the EIP book in a Draw file (.odg) which is included in the download zip:</p>
<p><a href="http://lh6.ggpht.com/_1Zdup2KWrzE/Sc4EmlyxwSI/AAAAAAAAALg/y0ok9aT5aN8/s1600-h/image8.png"><img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="149" alt="image" src="http://lh6.ggpht.com/_1Zdup2KWrzE/Sc4EnnydlGI/AAAAAAAAALk/WQFLxht7-y8/image_thumb2.png?imgmax=800" width="244" border="0" /></a> </p>
<p>I hope this may be some use to other folk.&#160; Download from <a href="http://sites.google.com/site/rogersearjeant/eip-shapes-for-openoffice-draw">this page</a>.</p>
<div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:f643b4b0-cb6a-40fc-8d14-bb5742b41c11" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">Technorati Tags: <a href="http://technorati.com/tags/OpenOffice" rel="tag">OpenOffice</a>,<a href="http://technorati.com/tags/EIP" rel="tag">EIP</a>,<a href="http://technorati.com/tags/Enterprise+Integration+Patterns" rel="tag">Enterprise Integration Patterns</a></div>
]]></content:encoded>
			<wfw:commentRss>http://roger.searjeant.net/wp/2009/03/eip-shapes-for-openoffice-draw/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>DropBox again</title>
		<link>http://roger.searjeant.net/wp/2009/03/dropbox-again/</link>
		<comments>http://roger.searjeant.net/wp/2009/03/dropbox-again/#comments</comments>
		<pubDate>Wed, 18 Mar 2009 16:33:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Web Technology]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://roger.searjeant.net/wp/2009/03/dropbox-again/</guid>
		<description><![CDATA[The previous post elicited a comment from Andy at CloudBerry Lab:
I am a developer of another online backup product powered by Amazon S3 http://cloudberrydrive.com/ that we are going to release to beta soon. I would appreciate if you take a look and may be post a review on your blog.

Well I did take a look, [...]]]></description>
			<content:encoded><![CDATA[<p>The previous post elicited a comment from Andy at CloudBerry Lab:</p>
<blockquote><p>I am a developer of another online backup product powered by Amazon S3 <a href="http://cloudberrydrive.com/">http://cloudberrydrive.com/</a> that we are going to release to beta soon. I would appreciate if you take a look and may be post a review on your blog.</p>
</blockquote>
<p>Well I did take a look, but the CloudBerry product isn’t really what I’m looking for.&#160; If all you want/need is a Windows-only client for accessing your S3 buckets directly and copying/moving content, then this product might well be just right.&#160; But it doesn’t really compete with DropBox or JungleDisk.&#160; Andy: if your product were closer to DropBox, and cross-platform, then I would have reviewed it.&#160; As it is, I can’t pass judgement.</p>
<p>If you have time to plough through a very long blog thread, check out Jeremy Zawodny’s <a href="http://jeremy.zawodny.com/blog/archives/007641.html">excellent piece</a> on Amazon S3 tools. The discussion thread contains links to most (maybe all) the tools out there.</p>
<p>I’ve also been reading the DropBox forums. It’s good to see plenty of other people have requested features I miss (e.g. ability to configure DB to ignore certain file patterns).&#160; There is an <a href="http://wiki.getdropbox.com/UpcomingFeatures">upcoming features</a> wiki page which lists some things coming ‘soon’.&#160; Nothing on using your own S3 space though.</p>
]]></content:encoded>
			<wfw:commentRss>http://roger.searjeant.net/wp/2009/03/dropbox-again/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JungleDisk and DropBox</title>
		<link>http://roger.searjeant.net/wp/2009/03/jungledisk-and-dropbox/</link>
		<comments>http://roger.searjeant.net/wp/2009/03/jungledisk-and-dropbox/#comments</comments>
		<pubDate>Mon, 16 Mar 2009 16:21:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Web Technology]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://roger.searjeant.net/wp/2009/03/jungledisk-and-dropbox/</guid>
		<description><![CDATA[There are quite a few network-drive products out there competing for our attention these days.&#160; I’ve tried quite a few (including Box.net and SkyDrive), but narrowed the choice down to the two which seem the best: JungleDisk and DropBox.
JungleDisk attracts me mostly because I can use my existing Amazon S3 storage behind the JungleDisk tool [...]]]></description>
			<content:encoded><![CDATA[<p>There are quite a few network-drive products out there competing for our attention these days.&#160; I’ve tried quite a few (including <a href="http://www.box.net/features">Box.net</a> and <a href="http://skydrive.live.com/">SkyDrive</a>), but narrowed the choice down to the two which seem the best: <a href="http://jungledisk.com">JungleDisk</a> and <a href="http://www.getdropbox.com/">DropBox</a>.</p>
<p>JungleDisk attracts me mostly because I can use my existing Amazon S3 storage behind the JungleDisk tool and pay only for the space I actually use. (Note, JD now also uses <a href="http://www.mosso.com/cloudfiles.jsp">RackSpace CloudFiles</a>, which actually looks even better than S3).&#160; DropBox is free for 2GB, then a hefty 99 USD annually, for 50GB.&#160; Round one to JungleDisk, in my view.</p>
<p>Then we come to the user-interface. Both tools integrate with Windows and Linux, JD using drive mapping to expose the storage and DropBox using a special folder inside My Documents, with icon overlays to indicate file status.&#160; Both support drag/drop access and run a small tray-resident UI application. </p>
<p>But DropBox is just so, so much nicer to use than JD in the everyday Windows context.&#160; It feels better integrated and the UI seems cleaner.&#160; Other folk have blogged about this difference and I must concur – DropBox has the edge.</p>
<p>Now to the subject which prompted this post in the first place. Neither of these products appears to handle proxy servers particularly well, especially when switching between proxy / no-proxy.&#160; If I restart Windows and forget to switch off the proxy in JD, here’s the mess I’m greeted with when Windows starts:</p>
<p><a href="http://lh5.ggpht.com/_1Zdup2KWrzE/Sb5-Cd65h7I/AAAAAAAAAKw/VbUBQ6HuLbk/s1600-h/image%5B2%5D.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="136" alt="image" src="http://lh3.ggpht.com/_1Zdup2KWrzE/Sb5-D_O9ofI/AAAAAAAAAK0/SBm0E8p5vA0/image_thumb.png?imgmax=800" width="244" border="0" /></a>&#160;</p>
<p>Yuk. Can’t it simply notice that the proxy isn’t responding, log the fact / decorate the tray icon, and leave it for me to sort out?&#160; It gets worse: if I click on the links (for more information) look what I get:</p>
<p><a href="http://lh3.ggpht.com/_1Zdup2KWrzE/Sb5-EapbUlI/AAAAAAAAAK4/7idqDPTge-s/s1600-h/image%5B5%5D.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="73" alt="image" src="http://lh5.ggpht.com/_1Zdup2KWrzE/Sb5-EzE7ljI/AAAAAAAAAK8/XVrqrnbz6Mg/image_thumb%5B1%5D.png?imgmax=800" width="244" border="0" /></a> </p>
<p>Is this really what they want the user to see?&#160; This is awful.</p>
<p>DropBox is slightly better, but still doesn’t work properly if I leave the proxy on, and restart. No nasty dialogs, but the network connection isn’t resolved, even if I set it to ‘auto-detect proxy settings’ which according to the <a href="http://www.getdropbox.com/help/21">DropBox site</a> should use the IE settings. Why can’t these tools auto-detect proxies properly?</p>
<p>DropBox files are cached on the local machine which means if the network is down I can still work on all my files locally, and re-sync when I next connect.&#160; JungleDisk does cache your files, but in a pretty inaccessible way in your profile.&#160; The path will be something like C:\Documents and Settings\&lt;user&gt;\Application Data\JungleDisk\cache\e9998872111157539d8880eca4456345-default</p>
<p>Another good feature of DropBox which isn’t available in JungleDisk is sharing files and folders: in JD, everything is private. </p>
<p>DropBox gets so many things right. The one and only feature I want from JungleDisk is the S3 / CloudFiles backing store. Obviously, the DropBox business model is built around the 99 USD annual charge so I don’t know whether this can/will ever happen. </p>
]]></content:encoded>
			<wfw:commentRss>http://roger.searjeant.net/wp/2009/03/jungledisk-and-dropbox/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Tool Support for DDD</title>
		<link>http://roger.searjeant.net/wp/2009/02/tool-support-for-ddd/</link>
		<comments>http://roger.searjeant.net/wp/2009/02/tool-support-for-ddd/#comments</comments>
		<pubDate>Wed, 25 Feb 2009 19:15:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Domain Driven Design]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://roger.searjeant.net/wp/2009/02/tool-support-for-ddd/</guid>
		<description><![CDATA[I like Eric Evan’s book Domain Driven Design very much.&#160; It’s such a nice distillation of a relatively small number of principles, all of which possess real, fundamental value. This is a protein-rich book: it may not feel as filling as the more prescriptive, methodology-driven ‘just-do-as-I-say-and-it-will-come-out-right’ books, but they’re just carbohydrate.&#160; DDD is good for [...]]]></description>
			<content:encoded><![CDATA[<p>I like Eric Evan’s book <a href="http://www.amazon.co.uk/Domain-driven-Design-Tackling-Complexity-Software/dp/0321125215/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1235578645&amp;sr=1-1">Domain Driven Design</a> very much.&#160; It’s such a nice distillation of a relatively small number of principles, all of which possess real, fundamental value. This is a protein-rich book: it may not feel as filling as the more prescriptive, methodology-driven ‘just-do-as-I-say-and-it-will-come-out-right’ books, but they’re just carbohydrate.&#160; DDD is good for you in the long-term.</p>
<p>I’ve just discovered that you can read some of the book online, via <a href="http://books.google.co.uk/books?id=7dlaMs0SECsC">Google Books</a>.&#160; You can also find out more from the <a href="http://domaindrivendesign.org/">DDD Site</a>. </p>
<p>The real point of this post is to share my experience with a small, free tool called <a href="http://wikidpad.sourceforge.net/">wikidPad</a>, which I stumbled on last week when looking for a desktop wiki-based tool to use for capturing <a href="http://domaindrivendesign.org/discussion/messageboardarchive/UbiquitousLanguage.html">Ubiquitous Language</a> (UL) definitions.&#160; Capturing and refining the UL is an essential part of applying DDD, and having a fast, convenient (and open) medium for doing this is essential.&#160; A wiki of some kind is almost ideal.</p>
<p>Most desktop or single-user wikis are either cut-down versions of the equivalent web apps (PHP or whatever), running on localhost ports, or they are single self-editing HTML pages e.g. <a href="http://www.tiddlywiki.com/">TiddlyWiki</a>.&#160; Many of these (including TiddlyWiki) are very good indeed, but somehow, none of them has felt quite right for the UL use-case, which is all about getting hyperlinked definitions into a reusable form as quickly as possible.&#160; wikidPad does this superbly well, in my opinion.&#160; </p>
<p>It’s also a small and fast desktop application, which I find a little more convenient than using a wiki app in a browser. Some examples to support that: </p>
<ol>
<li>wikidPad automatically constructs a tree-view of pages on the left hand side of the application – this makes navigation very fast. </li>
<li>wikidPad does auto-completion of wiki-words (Ctrl-space), which makes writing new entries which link to existing items very fast.</li>
<li>Drag and drop support, and support for multiple tabs – again, all good for speed and usability.</li>
</ol>
<p>When you’re ready to publish the UL to a wider audience, wikidPad will export the whole thing (or any selected part) as a set of HTML pages. </p>
<p>It’s my first day using this tool, so it may be that I’ll discover something to dent my enthusiasm. But so far, it’s all good.</p>
<p>
<div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:d2114f18-865f-44ed-8ef7-f29f0417fcac" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">Technorati Tags: <a href="http://technorati.com/tags/Domain+Driven+Design" rel="tag">Domain Driven Design</a>,<a href="http://technorati.com/tags/wikidPad" rel="tag">wikidPad</a>,<a href="http://technorati.com/tags/wiki" rel="tag">wiki</a></div></p>
]]></content:encoded>
			<wfw:commentRss>http://roger.searjeant.net/wp/2009/02/tool-support-for-ddd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Assembla</title>
		<link>http://roger.searjeant.net/wp/2009/02/assembla/</link>
		<comments>http://roger.searjeant.net/wp/2009/02/assembla/#comments</comments>
		<pubDate>Mon, 23 Feb 2009 09:52:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://roger.searjeant.net/wp/2009/02/assembla/</guid>
		<description><![CDATA[Technorati Tags: subversion,git,hosting
Although Project Locker has served me very well for a good many years, better alternatives have emerged recently. I didn’t set out to switch providers, only to see whether Project Locker would support Mercurial or git. At the time, neither were available – since then PL have added git support. It was while [...]]]></description>
			<content:encoded><![CDATA[<div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:eb713d8e-4ec2-419e-a1bb-598c120b7cb8" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">Technorati Tags: <a href="http://technorati.com/tags/subversion" rel="tag">subversion</a>,<a href="http://technorati.com/tags/git" rel="tag">git</a>,<a href="http://technorati.com/tags/hosting" rel="tag">hosting</a></div>
<p>Although <a href="http://www.projectlocker.com">Project Locker</a> has served me very well for a good many years, better alternatives have emerged recently. I didn’t set out to switch providers, only to see whether <a href="http://www.projectlocker.com">Project Locker</a> would support <a href="http://www.selenic.com/mercurial/wiki/">Mercurial</a> or <a href="http://git-scm.com/">git</a>. At the time, neither were available – since then PL have added git support. It was while looking around at the many newer project hosting services that I came across Assembla.</p>
<p>The <a href="http://www.assembla.com/discounts">Assembla proposition</a> is simple and very reasonable: public, open-source projects are hosted for free (up to 200MB). Private plan pricing is extremely keen:</p>
<ul>
<li>$2.00 per user per space, per month </li>
<li>$3.00 per gigabyte of disk space per month </li>
<li>$8 per user per month maximum. After you pay for a team member in four spaces, additional spaces are free. </li>
</ul>
<p>Private plans get unlimited disc space. </p>
<p>But for me, the economics of Assembla are only half the story: the other half is a combination of things: the clean, functional web interface, the range of additional tools (Trac, wiki, files, chat, project dashboard etc.) and a strong feeling that <a href="http://www.assembla.com/about">the people behind Assembla</a> know what they are doing.</p>
<p>Assembla does offer git hosting, but I’m sticking with Subversion for now.&#160; SVN is good enough for my purposes and I can’t live without <a href="http://tortoisesvn.net/">TortoiseSVN</a>.</p>
<p>I’ve been using Assembla for a couple of months and my experience has been very good indeed.&#160; </p>
]]></content:encoded>
			<wfw:commentRss>http://roger.searjeant.net/wp/2009/02/assembla/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Community and Culture</title>
		<link>http://roger.searjeant.net/wp/2008/11/community-and-culture/</link>
		<comments>http://roger.searjeant.net/wp/2008/11/community-and-culture/#comments</comments>
		<pubDate>Fri, 14 Nov 2008 22:29:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[NetBeans]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[sun]]></category>

		<guid isPermaLink="false">http://roger.searjeant.net/wp/2008/11/community-and-culture/</guid>
		<description><![CDATA[While looking around for Java dependency tools I came across KirkK&#8217;s site, and his JarAnalyzer.  As usual, I wanted to know a little more about the person behind the software, so looked up his blog and found an article from 2007 there which really resonated with me: .Net : Software &#38; Technology @kirkk.comKirk and I [...]]]></description>
			<content:encoded><![CDATA[<div xmlns='http://www.w3.org/1999/xhtml'>While looking around for Java dependency tools I came across <a href='http://techdistrict.kirkk.com/'>KirkK&#8217;s site</a>, and his <a href='http://www.kirkk.com/main/Main/JarAnalyzer'>JarAnalyzer</a>.  As usual, I wanted to know a little more about the person behind the software, so looked up his blog and found an article from 2007 there which really resonated with me: <a href='http://techdistrict.kirkk.com/category/net/'>.Net : Software &amp; Technology @kirkk.com</a><br/><br/>Kirk and I have travelled in opposite directions: he crossed the tracks to work on a .NET project, whilst I&#8217;ve recently shifted my attention almost completely from .NET and the Microsoft environment (where I have spent the last 10 or so years) to the world of Java.  What&#8217;s interesting is that he so quickly formed the same view of the Microsoft development that motivated my move to Java.<br/><br/>Microsoft&#8217;s greedy behaviour has done so much damage to its reputation and the level of goodwill amongst independent developers. Kirk cites the example of TestDriven.Net, but there are examples of other &#8216;alt.net&#8217; type projects (NAnt and NDoc, for example) which Microsoft has effectively (though not directly) either killed or marginalised, not with licensing terms but by introducing proprietary (and arguably weaker) competing technologies.  I&#8217;m sure that part of the reason for that, with the N-prefixed projects at least, was that they couldn&#8217;t bear the prospect of absorbing something with what they would see as alien DNA into their product line.<br/><br/><a href='http://eddiesguy.blogspot.com/2007/06/who-killed-ndoc.html'>This piece</a> by Mike Hofer describes the NDoc demise and nicely summarises the twin underlying problems: the nature of the development community surrounding the Microsoft platform, and Microsoft&#8217;s inability (or unpreparedness) to work with it. Mike&#8217;s article, and the <a href='http://www.charliedigital.com/PermaLink,guid,95b2ab68-ba92-413a-b758-2783cde5df9c.aspx'>linked post</a> by Charles Chen containing the email from NDoc&#8217;s founder, make for quite depressing reading. Perhaps the emergence of a mean-spirited, mean-minded community is to be expected, when the centre of its universe is an avaricious commercial juggernaut?<br/><br/>I feel these things especially keenly, now that I&#8217;m looking over the wall from the Java community side.  The contrast really couldn&#8217;t be more stark, more impressive and more compelling.  Even the large companies operating in this space, notably <a href='http://www.sun.com/'>Sun Micrososystems</a>, appear <a href='http://research.sun.com/minds/'>intelligent</a>, enlightened and <a href='http://www.sun.com/software/solaris/zfs_learning_center.jsp'>innovative</a>; there&#8217;s a very healthy culture here. (A quick and revealing experiment: take Microsoft and Sun &#8211; now try to find the corresponding CEO&#8217;s blog. Top hit in Google for Steve Ballmer when I tried was a <a href='http://fakesteveballmer.blogspot.com/'>send-up site</a>; top hit in Google for Jonathan Schwartz was <a href='http://blogs.sun.com/jonathan/'>Jonathan Schwartz&#8217;s blog</a>. And it&#8217;s worth reading). <br/><br/>Coming back to the issue of building a healthy community around a technology, Sun&#8217;s <a href='http://java.sun.com/'>Java</a> is surely the shining example of how to embrace the great work done by independent developers and build on it, rather than trying to crush it. Just look at <a href='http://www.netbeans.org/'>NetBeans</a>: this is an enterprise-quality IDE, easily the equal of Visual Studio, but not only is it open-source (and free to download) it also employs established open-source tools instead of imposing inferior alternatives:  For unit testing, <a href='http://junit.org/'>JUnit</a> is completely integrated; NetBeans uses <a href='http://ant.apache.org/'>Apache Ant</a> as its underlying build-system; it can work seamlessly with <a href='http://maven.apache.org/'>Maven</a> through the excellent <a href='http://wiki.netbeans.org/MavenBestPractices'>plugin</a>. And you choose the version-control system you prefer (e.g. <a href='http://www.selenic.com/mercurial/wiki/'>Mercurial</a>, <a href='http://subversion.tigris.org/'>Subversion</a>) and NetBeans will allow you to make full use of it, right inside the IDE. <br/><br/>Lastly, you are free to extend NetBeans by writing whatever plugins (modules) you please, without running the risk of getting into litigious exchanges like the TestDriven.Net debacle <a href='http://www.infoq.com/news/2007/06/TestDriven-Express-Emails'>described here</a>, which seems to me to plumb the very depths of time-wasting pointlessness. <br/><br/>I never intended to write all that: it was originally just a reaction to a (rather old) blog entry. But as I revisited the world of the Microsoft monoculture through the tale of those N-projects, it just tumbled out.<br/><br/><br />
<blockquote/></div>
]]></content:encoded>
			<wfw:commentRss>http://roger.searjeant.net/wp/2008/11/community-and-culture/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Neil Bartlett&#8217;s OSGi book</title>
		<link>http://roger.searjeant.net/wp/2008/09/neil-bartletts-osgi-book/</link>
		<comments>http://roger.searjeant.net/wp/2008/09/neil-bartletts-osgi-book/#comments</comments>
		<pubDate>Tue, 23 Sep 2008 08:20:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[osgi]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://roger.searjeant.net/wp/2008/09/neil-bartletts-osgi-book/</guid>
		<description><![CDATA[Just found Neil Bartlett&#8217;s OSGi book project:&#8220;OSGi in Practice&#8221;Looking good so far, but I&#8217;ve only skimmed the first couple of chapters.  I plan to read and contribute to the comments and bug-tracker.  I don&#8217;t think there is another good OSGi book out there yet, so this is potentially important. Great that Neil has decided to [...]]]></description>
			<content:encoded><![CDATA[<div xmlns='http://www.w3.org/1999/xhtml'>Just found Neil Bartlett&#8217;s OSGi book project:<br/><br/><a href='http://neilbartlett.name/blog/osgibook/'>&#8220;OSGi in Practice&#8221;</a><br/><br/>Looking good so far, but I&#8217;ve only skimmed the first couple of chapters.  I plan to read and contribute to the comments and bug-tracker.  <br/><br/>I don&#8217;t think there is another good OSGi book out there yet, so this is potentially important. Great that Neil has decided to license the book under Creative Commons, too.  Like most folk, if the book is good then I&#8217;ll buy a paper copy.<br/><br/></p>
<p class='technorati-tags'><a rel='tag' href='http://technorati.com/tag/OSGi'>OSGi</a>, <a rel='tag' href='http://technorati.com/tag/Java'>Java</a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://roger.searjeant.net/wp/2008/09/neil-bartletts-osgi-book/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubiquity, and Contrasting Cultures</title>
		<link>http://roger.searjeant.net/wp/2008/09/ubiquity-and-contrasting-cultures/</link>
		<comments>http://roger.searjeant.net/wp/2008/09/ubiquity-and-contrasting-cultures/#comments</comments>
		<pubDate>Fri, 19 Sep 2008 11:14:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://roger.searjeant.net/wp/2008/09/ubiquity-and-contrasting-cultures/</guid>
		<description><![CDATA[This is interesting: Mozilla Labs » Blog Archive » Introducing UbiquityWatch the video demonstration.  What a great idea, and I&#8217;m impressed by how well this appears to work even at the prototype stage. I&#8217;m going to install and try it.But even if it turns out not to be so great an experience for me (demos [...]]]></description>
			<content:encoded><![CDATA[<div xmlns='http://www.w3.org/1999/xhtml'>This is interesting: <a href='http://labs.mozilla.com/2008/08/introducing-ubiquity/'>Mozilla Labs » Blog Archive » Introducing Ubiquity</a><br/><br/>Watch the video demonstration.  What a great idea, and I&#8217;m impressed by how well this appears to work even at the prototype stage. I&#8217;m going to install and try it.<br/><br/>But even if it turns out not to be so great an experience for me (demos always work perfectly, don&#8217;t they?), that&#8217;s not the point: what matters is that some bright people are doing interesting and worthwhile things and freely sharing the outcome with us, while Microsoft apparently spends its time (and some of its money mountain) on stuff <a href='http://news.zdnet.com/2424-9595_22-218626.html'>like this</a>.<br/><br/>Links to these two articles were close to each other (can&#8217;t recall where) and I was so struck by the contrast and what it reveals of the cultural differences that I felt compelled to write this.<br/><br/><br />
<blockquote/></div>
]]></content:encoded>
			<wfw:commentRss>http://roger.searjeant.net/wp/2008/09/ubiquity-and-contrasting-cultures/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PSL not DSL</title>
		<link>http://roger.searjeant.net/wp/2008/04/psl-not-dsl/</link>
		<comments>http://roger.searjeant.net/wp/2008/04/psl-not-dsl/#comments</comments>
		<pubDate>Tue, 22 Apr 2008 10:10:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Domain Driven Design]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://roger.searjeant.net/wp/2008/04/psl-not-dsl/</guid>
		<description><![CDATA[I&#8217;ve long felt that the DSL moniker is a little inappropriate for some (perhaps most) applications of the ideas behind it. The majority of &#8216;DSLs&#8217; are really just little languages which help solve specific problems in the software development space, e.g. Rake, which provides a very nice language for expressing graphs of dependent tasks.  Martin [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve long felt that the DSL moniker is a little inappropriate for some (perhaps most) applications of the ideas behind it. The majority of &#8216;DSLs&#8217; are really just little languages which help solve specific problems in the software development space, e.g. <a href="http://rake.rubyforge.org/" target="_blank">Rake</a>, which provides a very nice language for expressing graphs of dependent tasks.  Martin Fowler has written quite a lot on the subject of DSLs &#8211; <a href="http://martinfowler.com/articles/codeGenDsl.html" target="_blank">this paper</a> is a good example of a little language being described as a DSL.</p>
<p>So it was good to hear <a href="http://onestepback.org/" target="_blank">Jim Weirich</a> (the creator of Rake) make this very point while talking about the DSL hype in <a href="http://www.infoq.com/interviews/jim-weirich-discusses-rake#" target="_blank">this InfoQ interview</a>.  The relevant bit is something like 14 minutes in.  I like the term Problem Specific Language (PSL), which Jim invents here.</p>
<p>I&#8217;m working on applying Ruby to modelling (and reasoning about) a real domain, and driving a tool-chain for forward-engineering artifacts from the Ruby description.  Apart from Rake, I&#8217;m also looking at <a href="http://rspec.info/" target="_blank">RSpec</a>, which uses Ruby syntax to capture descriptions of system behaviour.  I&#8217;m very keen to work on the &#8216;real DSL&#8217;  problem, looking for the sweet-spot where <a href="http://www.domaindrivendesign.org/" target="_blank">domain-driven design</a> and programming overlap.  This whole area seems very fruitful for Ruby, because the language allows us to create very rich and expressive scripts which not only read quite naturally, but can also control complex processes.</p>
]]></content:encoded>
			<wfw:commentRss>http://roger.searjeant.net/wp/2008/04/psl-not-dsl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
