<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:thr='http://purl.org/syndication/thread/1.0' version='2.0'><channel><atom:id>tag:blogger.com,1999:blog-9053945</atom:id><lastBuildDate>Tue, 27 Apr 2010 09:53:59 +0000</lastBuildDate><title>Agile Application Development: Romilly Cocking's Review</title><description>Items of interest if you want to adopt, adapt, apply and improve Agile Development Processes.</description><link>http://www.cocking.co.uk/blog/</link><managingEditor>noreply@blogger.com (Romilly)</managingEditor><generator>Blogger</generator><openSearch:totalResults>63</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-9053945.post-5681841453460049486</guid><pubDate>Tue, 27 Apr 2010 09:53:00 +0000</pubDate><atom:updated>2010-04-27T10:53:59.804+01:00</atom:updated><title>This blog has moved</title><description>&lt;br /&gt;       This blog is now located at http://romillycocking.blogspot.com/.&lt;br /&gt;       You will be automatically redirected in 30 seconds or you may click &lt;a href='http://romillycocking.blogspot.com/'&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;       For feed subscribers, please update your feed subscriptions to&lt;br /&gt;       http://romillycocking.blogspot.com/feeds/posts/default.&lt;br /&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9053945-5681841453460049486?l=www.cocking.co.uk%2Fblog%2Findex.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.cocking.co.uk/blog/2010/04/this-blog-has-moved.html</link><author>noreply@blogger.com (Romilly)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-9053945.post-7790623298590527822</guid><pubDate>Mon, 28 Sep 2009 10:19:00 +0000</pubDate><atom:updated>2009-09-28T11:23:49.096+01:00</atom:updated><title>Host your own Windows7 launch party?</title><description>At a loose end? Why not host your own Windows7 launch party? &lt;a href="http://www.youtube.com/watch?v=1cX4t5-YpHQ"&gt;Here's how.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Thanks to Neil Hume of &lt;a href="http://ftalphaville.ft.com/"&gt;FT Alphaville&lt;/a&gt; for this.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9053945-7790623298590527822?l=www.cocking.co.uk%2Fblog%2Findex.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.cocking.co.uk/blog/2009/09/host-your-own-windows7-launch-party.html</link><author>noreply@blogger.com (Romilly)</author><thr:total>1</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-9053945.post-5808015171412922314</guid><pubDate>Sun, 05 Jul 2009 10:17:00 +0000</pubDate><atom:updated>2009-07-05T11:21:00.548+01:00</atom:updated><title>What shall we do with Gordon Brown?</title><description>Moonwalker Buzz Aldrin says a &lt;a href="http://news.bbc.co.uk/1/hi/programmes/newsnight/8131706.stm"&gt;global leader should commit to sending a man to Mars&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Go for it, President Obama. And may I suggest Gordon Brown as the lucky spacefarer?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9053945-5808015171412922314?l=www.cocking.co.uk%2Fblog%2Findex.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.cocking.co.uk/blog/2009/07/what-shall-we-do-with-gordon-brown.html</link><author>noreply@blogger.com (Romilly)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-9053945.post-1054300693843550387</guid><pubDate>Mon, 15 Jun 2009 17:05:00 +0000</pubDate><atom:updated>2009-06-15T18:15:47.866+01:00</atom:updated><title>IBM says world will drown in data next year</title><description>According to &lt;a href="http://www-05.ibm.com/uk/smarterplanet/opinions/intelligence/index.html?ca=neiotuk_smart_planet-20090128&amp;amp;me=w&amp;amp;met=opinions&amp;amp;re=gateway&amp;amp;s_tact=&amp;amp;cm_mmc=-_-s-_-opinions-gateway-_-neiotuk_smart_planet-20090128"&gt;IBM&lt;/a&gt;, "Experts predict that by 2010, the amount of digital information will double every 11 hours."&lt;br /&gt;&lt;br /&gt;That's really, really scary. If the amount of data were to double every 11 hours, it would quadruple every day. Over a month the quantity of data would increase by a factor of 36,893,488,147,419,103,232 (roughly speaking). Over a year it would increase by a factor of ...&lt;br /&gt;&lt;br /&gt;No, I'm not going to work it out. But if anyone from IBM reads this please can you buy a calculator for the marketing department.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9053945-1054300693843550387?l=www.cocking.co.uk%2Fblog%2Findex.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.cocking.co.uk/blog/2009/06/ibm-says-world-will-drown-in-data-next.html</link><author>noreply@blogger.com (Romilly)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-9053945.post-7296358720723028021</guid><pubDate>Sat, 13 Jun 2009 07:03:00 +0000</pubDate><atom:updated>2009-06-13T08:08:12.356+01:00</atom:updated><title>Element 112 needs a name</title><description>A German team is &lt;a href="http://news.bbc.co.uk/1/hi/sci/tech/8093374.stm"&gt;looking for a name&lt;/a&gt; for an element that's just about to join the periodic table.&lt;br /&gt;&lt;br /&gt;Element 112 is super-heavy and very unstable. It falls apart in milliSeconds.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Gordonium&lt;/span&gt;?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9053945-7296358720723028021?l=www.cocking.co.uk%2Fblog%2Findex.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.cocking.co.uk/blog/2009/06/element-112-needs-name.html</link><author>noreply@blogger.com (Romilly)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-9053945.post-3225921778938015092</guid><pubDate>Fri, 06 Mar 2009 07:34:00 +0000</pubDate><atom:updated>2009-03-06T08:10:32.347Z</atom:updated><category domain='http://www.blogger.com/atom/ns#'>automated testing</category><category domain='http://www.blogger.com/atom/ns#'>testing</category><category domain='http://www.blogger.com/atom/ns#'>continuous integration</category><category domain='http://www.blogger.com/atom/ns#'>TDD</category><title>Oh, the Coder and the Tester can be Friends, can be Friends...</title><description>(with apologies to &lt;a href="http://en.wikipedia.org/wiki/Oklahoma%21"&gt;&lt;span style="font-style: italic;"&gt;Oklahoma!&lt;/span&gt;&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://testobsessed.com/"&gt;Elisabeth Hendrickson&lt;/a&gt; just tweeted about a &lt;a href="http://www.developsense.com/2009/03/50-deployments-day-and-perpetual-beta.html"&gt;thought-provoking analysis&lt;/a&gt; by Michael Bolton of the much-vaunted Continuous Deployment at &lt;a href="http://www.imvu.com/"&gt;IMVU&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I'm a big fan of TDD, Automated Tests and Continuous Integration, but I'd hate to develop without help from good Testers. A couple of years ago I worked on a dream project; a very small, highly skilled team which included a couple of developers, a tester and a business analyst. We were pair-programming, and my pairs came from a pool that included some of the best agile developers in the UK. The Tester and Business Analyst were also outstanding.&lt;br /&gt;&lt;br /&gt;Our defect rate was very low: five defects in UAT, none in production over a twelve-month period. There's no doubt that this was a team effort; the Tester and  the BA both caught many defects that were caused by problems we developers hadn't though of, and therefore never tested for. Equally, the developers tested so thoroughly that the Tester and BA could focus on the hard stuff, where their skills contributed maximum value.&lt;br /&gt;&lt;br /&gt;For reasons that need not concern us, the application initially went into production on a machine that was controlled by the developers. We &lt;span style="font-style: italic;"&gt;could&lt;/span&gt; have done continuous deployment, but we didn't. We  always asked our Tester to do a final check-through on our staging box; mostly he found nothing, but once or twice he found defects that would have been real embarrasments in production. Of course, that wasn't his only contribution; our acceptance tests were the product of very close collaboration by the whole team.&lt;br /&gt;&lt;br /&gt;So it was no surprise to read to read about Michael Bolton's experience when he did some manual testing of the IMVU site. &lt;a href="http://timothyfitz.wordpress.com/2009/02/10/continuous-deployment-at-imvu-doing-the-impossible-fifty-times-a-day/"&gt;IMVU practise Continuous Deployment&lt;/a&gt;, and claim to rely entirely on Automated Tests. Read Bolton's &lt;a href="http://www.developsense.com/2009/03/50-deployments-day-and-perpetual-beta.html"&gt;50 Deployments A Day and The Perpetual Beta&lt;/a&gt; and see the consequences.&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9053945-3225921778938015092?l=www.cocking.co.uk%2Fblog%2Findex.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.cocking.co.uk/blog/2009/03/oh-coder-and-tester-can-be-friends-can.html</link><author>noreply@blogger.com (Romilly)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-9053945.post-6043049723061059510</guid><pubDate>Sun, 01 Mar 2009 08:30:00 +0000</pubDate><atom:updated>2009-03-01T08:52:00.753Z</atom:updated><title>EtherPad - real-time collaborative text editing</title><description>A tweet from &lt;a href="http://twitter.com/ericmack"&gt;Eric Mack&lt;/a&gt; just pointed me at &lt;a href="http://etherpad.com/"&gt;EtherPad&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;It's a free tool for real-time collaborative text editing. As Eric says, it's simple, and it just works.&lt;br /&gt;&lt;br /&gt;If two or more of you need to collaborate over the web in real-time on a text document, this is all you need.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9053945-6043049723061059510?l=www.cocking.co.uk%2Fblog%2Findex.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.cocking.co.uk/blog/2009/03/etherpad-real-time-collaborative-text.html</link><author>noreply@blogger.com (Romilly)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-9053945.post-7882741262669903510</guid><pubDate>Sat, 28 Feb 2009 11:38:00 +0000</pubDate><atom:updated>2009-03-01T09:53:27.646Z</atom:updated><category domain='http://www.blogger.com/atom/ns#'>refactoring</category><category domain='http://www.blogger.com/atom/ns#'>TDD</category><title>Refactoring is much easier...</title><description>Refactoring is much easier when you have clearly expressed intent.&lt;br /&gt;&lt;br /&gt;This came up a few days ago when I was talking with &lt;a href="http://www.m3p.co.uk/blog/" target="_blank"&gt;Steve&lt;/a&gt; and &lt;a href="http://www.natpryce.com/" target="_blank"&gt;Nat&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;We were holding a lunchtime retrospective about the latest delivery of &lt;a href="http://www.musketeer-labs.com/"&gt;our TDD course&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;We talked about what had worked well, what we could do differently, and how we could customise the course for audiences with differing requirements.&lt;br /&gt;&lt;br /&gt;Nat and Steve were keen to develop an exercise that would focus on refactoring. I liked the idea but I also wanted to keep an existing exercise which brings to life the value of intentional programming.&lt;br /&gt;&lt;br /&gt;I felt that the ability to express intent was even more fundamental than the skill of refactoring.&lt;br /&gt;&lt;br /&gt;It's risky to refactor unless you can check whether the code still does what is wanted. I don't think you can do that easily unless the tests and code express intention.&lt;br /&gt;&lt;br /&gt;Nat reminded me that what you express, and how you express it, is different in code and tests. Good tests remind you of intent when they fail. This makes it easier to diagnose the cause of failure.&lt;br /&gt;&lt;br /&gt;Refactoring  is easiest with clean code, and clean code expresses clear intent. (Of course, as Steve pointed out, &lt;span style="font-style: italic;"&gt;everything&lt;/span&gt; is easier if you have clean code).&lt;br /&gt;&lt;br /&gt;You might refactor &lt;span style="font-style: italic;"&gt;because &lt;/span&gt;the intent is not clear, but there are other reasons to do so. For example,  you might refactor in order to make the code easier to change.&lt;br /&gt;&lt;blockquote&gt;"The ability to pay back debt...depends on you writing code that is clean enough to be able to refactor as you come to understand your problem"&lt;br /&gt;&lt;br /&gt;&lt;a href="http://c2.com/%7Eward/" target="_blank"&gt;Ward Cunningham&lt;/a&gt; - &lt;a href="http://www.youtube.com/watch?v=pqeJFYwnkjE" target="_blank"&gt;Debt&lt;/a&gt;&lt;/blockquote&gt; Conclusion: we will develop a module on refactoring, but we'll keep our emphasis on writing clean code and tests that clearly express intent.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9053945-7882741262669903510?l=www.cocking.co.uk%2Fblog%2Findex.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.cocking.co.uk/blog/2009/02/refactoring-is-much-easier.html</link><author>noreply@blogger.com (Romilly)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-9053945.post-6047899155927571144</guid><pubDate>Fri, 27 Feb 2009 14:07:00 +0000</pubDate><atom:updated>2009-02-27T14:34:16.466Z</atom:updated><category domain='http://www.blogger.com/atom/ns#'>GetInLine</category><category domain='http://www.blogger.com/atom/ns#'>SPA jMock</category><category domain='http://www.blogger.com/atom/ns#'>unit test</category><category domain='http://www.blogger.com/atom/ns#'>TDD</category><title>GetInLine version 2</title><description>I'm currently working on GetInLine 2 - a complete rewrite of &lt;a href="http://sourceforge.net/projects/getinline"&gt;GetInLine&lt;/a&gt;, a record-processing DSL I wrote a couple of years ago.&lt;br /&gt;&lt;br /&gt;The DSL is not yet as fluent as I would like, but I'm much happier with the underlying design. I'll also be switching to an Apache license; &lt;a href="http://macstrac.blogspot.com/"&gt;James Strachan&lt;/a&gt; encouraged me to do this for version 1, but I never got round to it.&lt;br /&gt;&lt;br /&gt;I'm following the development approach that &lt;a href="http://www.m3p.co.uk/blog/"&gt;Steve Freeman&lt;/a&gt; and &lt;a href="http://www.natpryce.com/"&gt;Nat Pryce&lt;/a&gt; advocate in &lt;a href="http://www.mockobjects.com/book/"&gt;their book&lt;/a&gt; (and which the three of us expound in &lt;a href="http://www.mockobjects.com/2008/05/learn-from-source.html"&gt;our TDD course&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;I started with a failing end-to-end test. Then I used mocks and unit tests to help me to pull the required interfaces into existence, filling out the application until the first end-to-end test passed.&lt;br /&gt;&lt;br /&gt;The resulting code is much simpler to test and write than v1 was, and I've ended up with a highly pluggable set of components.&lt;br /&gt;&lt;br /&gt;I'll post a URL as soon as GIL2 is ready for beta testing; if anyone wants to tale a look before then, let me know.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9053945-6047899155927571144?l=www.cocking.co.uk%2Fblog%2Findex.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.cocking.co.uk/blog/2009/02/getinline-version-2.html</link><author>noreply@blogger.com (Romilly)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-9053945.post-4343786923205096777</guid><pubDate>Wed, 11 Feb 2009 10:41:00 +0000</pubDate><atom:updated>2009-02-11T10:56:01.007Z</atom:updated><category domain='http://www.blogger.com/atom/ns#'>PCG</category><category domain='http://www.blogger.com/atom/ns#'>grumpy old men</category><title>Opportunism knocks</title><description>I've just angrily binned an invitation from the Professional Conractors' Guild.&lt;br /&gt;&lt;br /&gt;I'm a PCG member, and I've been very happy with them. If you, like me, work as an IT contractor in the UK you'll find they offer an excellent and valuable range of services. I routinely recommend them to colleagues. So -what did they do to annoy me?&lt;br /&gt;&lt;br /&gt;They invited me to their tenth birthday celebration.&lt;br /&gt;&lt;br /&gt;For which I would have had to don a DJ and pay them £60.&lt;br /&gt;&lt;br /&gt;Why on earth would they think I'd want to do that?&lt;br /&gt;&lt;br /&gt;I'm glad they have been going for a while, but not glad enough to fork out £60. Even worse, I'd have to spend the evening talking to other IT contractors - and we'd all be wearing &lt;span style="font-style: italic;"&gt;dinner jackets&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;If the economy had been booming I'd just have tossed the invitation in the bin, but with things as they are the invitation was about as welcome as an invitation to play a round of golf with Fred the Shred. (I assume he plays golf, on the grounds that he must be good at &lt;span style="font-style: italic;"&gt;something&lt;/span&gt;.)&lt;br /&gt;&lt;br /&gt;So, PCG: I won't be joining in your narcissistic celebration, and please don't waste my membership fees on promoting events like this in future.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9053945-4343786923205096777?l=www.cocking.co.uk%2Fblog%2Findex.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.cocking.co.uk/blog/2009/02/opportunism-knocks.html</link><author>noreply@blogger.com (Romilly)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-9053945.post-4529131539222670740</guid><pubDate>Sat, 07 Feb 2009 14:15:00 +0000</pubDate><atom:updated>2009-02-07T14:51:34.038Z</atom:updated><category domain='http://www.blogger.com/atom/ns#'>XPday</category><category domain='http://www.blogger.com/atom/ns#'>agile devlopment</category><title>Read "Rocks into Gold" and spread the word!</title><description>I've just read Clarke Ching's &lt;a href="http://www.slideshare.net/cching/rocks-into-gold-by-clarke-ching-presentation"&gt;Rock's into Gold&lt;/a&gt; on SlideShare. It's a delightful short story which explains how incremental delivery can improve cash flow, saving jobs in the process.&lt;br /&gt;&lt;br /&gt;I first met Clarke at &lt;a href="http://www.xpday.org/"&gt;XP Day&lt;/a&gt; a couple of years ago. Several friends told me how much they liked his &lt;a href="http://xpday5.xpday.org/sessions.php#IntroductionToAgile"&gt;Introduction to Agile Development&lt;/a&gt;, so I went along. I'm glad I did.&lt;br /&gt;&lt;br /&gt;Clarke's presentation was excellent - clear, simple, business focussed, and very compelling. So's &lt;span style="font-style: italic;"&gt;Rocks Into Gold&lt;/span&gt;. I've started to use it as a resource for prospective agile adopters; I may even save a few jobs!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.slideshare.net/cching/rocks-into-gold-by-clarke-ching-presentation"&gt;Read it&lt;/a&gt; and spread the word.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9053945-4529131539222670740?l=www.cocking.co.uk%2Fblog%2Findex.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.cocking.co.uk/blog/2009/02/read-rocks-into-gold-and-spread-word.html</link><author>noreply@blogger.com (Romilly)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-9053945.post-2319459110131822979</guid><pubDate>Wed, 16 Jul 2008 08:38:00 +0000</pubDate><atom:updated>2008-07-16T10:32:22.747+01:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>innovation</category><category domain='http://www.blogger.com/atom/ns#'>change</category><title>How do new ideas spread?</title><description>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.cocking.co.uk/blog/uploaded_images/chasm-716529.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://www.cocking.co.uk/blog/uploaded_images/chasm-716527.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I've recently been studying how we change the way that we develop software. This links in with the broader question of how innovations spread. The best-known book on this is Geoffrey Moore's &lt;a href="http://www.amazon.co.uk/Crossing-Chasm-Marketing-Technology-Mainstream/dp/1841120634/cockiandco-21"&gt;&lt;span style="font-style: italic;"&gt;Crossing the Chasm&lt;/span&gt;&lt;/a&gt;, which explores the obstacles faced by high-tech innovation.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Crossing the Chasm&lt;/span&gt; is an influential and readable book, generous in its acknowledgements and full of good stories, but it has no bibliography. For sixteen years I've been looking for the book that introduced the technology life cycle. Moore refers to it but never names it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.cocking.co.uk/blog/uploaded_images/innovations-745037.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://www.cocking.co.uk/blog/uploaded_images/innovations-745034.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I think I've found it in &lt;a href="http://www.amazon.co.uk/Diffusion-Innovations-Everett-M-Rogers/dp/0743222091/cockiandco-21"&gt;&lt;span style="font-style: italic;"&gt;Diffusion of Innovations&lt;/span&gt;&lt;/a&gt;, by Everett M. Rogers. It's now in its fifth edition. Its examples are extensive and compelling, and it has an extensive bibliography. Best of all, it includes a checklist of the key attributes of innovations. Rogers calls them&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Relative advantage&lt;/li&gt;&lt;li&gt;Compatibility&lt;/li&gt;&lt;li&gt;Complexity&lt;/li&gt;&lt;li&gt;Trialability  and&lt;/li&gt;&lt;li&gt;Observability&lt;/li&gt;&lt;/ol&gt;These perceptions largely determine the rate at which we adopt an innovation, so anyone in the business of change needs to study them carefully.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.uk/Diffusion-Innovations-Everett-M-Rogers/dp/0743222091/cockiandco-21"&gt;&lt;span style="font-style: italic;"&gt;Diffusion of Innovations&lt;/span&gt;&lt;/a&gt; is a scholarly work, and needs more time to read than &lt;span style="font-style: italic;"&gt;Crossing the Chasm&lt;/span&gt;. For me that time has been well-spent.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9053945-2319459110131822979?l=www.cocking.co.uk%2Fblog%2Findex.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.cocking.co.uk/blog/2008/07/how-do-new-ideas-spread.html</link><author>noreply@blogger.com (Romilly)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-9053945.post-2541157946695291280</guid><pubDate>Wed, 16 Jul 2008 06:47:00 +0000</pubDate><atom:updated>2008-07-16T08:07:05.462+01:00</atom:updated><title>SPA2009 open for session proposals</title><description>&lt;a href="http://www.spaconference.org/spa2009/"&gt;SPA2009&lt;/a&gt; is now accepting session proposals, and some have already arrived.&lt;br /&gt;&lt;br /&gt;If you would like to present at this unique conference you'll find the &lt;a href="http://www.spaconference.org/spa2009/index.php?page=lead-a-session"&gt;call for proposals&lt;/a&gt; on the SPA2009 website.&lt;br /&gt;&lt;br /&gt;If you want to attend the conference, consider proposing a session. As a session leader, you will&lt;br /&gt;&lt;ol&gt;&lt;li&gt;have fun&lt;/li&gt;&lt;li&gt;polish your communication skills&lt;br /&gt;&lt;/li&gt;&lt;li&gt;improve your profile in the industry&lt;/li&gt;&lt;li&gt;and get a substantial discount!&lt;/li&gt;&lt;/ol&gt;You'll be helped by a supportive shepherding process. SPA shepherds are experienced presenters and many of them have coming to the conference for years. The shepherds can help you develop a successful session that takes full advantage of SPA's interactive format.&lt;br /&gt;&lt;br /&gt;The deadline for submissions is 6pm on Monday 15th September 2008.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9053945-2541157946695291280?l=www.cocking.co.uk%2Fblog%2Findex.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.cocking.co.uk/blog/2008/07/spa2009-open-for-session-proposals.html</link><author>noreply@blogger.com (Romilly)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-9053945.post-7005371383321611755</guid><pubDate>Sat, 12 Jul 2008 07:11:00 +0000</pubDate><atom:updated>2008-07-12T08:39:41.052+01:00</atom:updated><title>miniSPA2008 and cfp for Spa2009</title><description>I spent yesterday at &lt;a href="http://www.bcs-spa.org/minispa2008.html"&gt;miniSPA2008.&lt;/a&gt; MiniSPA is the free one-day taster for the annual &lt;a href="http://www.spaconference.org/spa2009/index.php"&gt;Software Practice Advancement conference&lt;/a&gt;. Lots of new faces yesterday, as well as old friends. It looks as if we'll get lots of new session leaders for next year's conference, which is great.&lt;br /&gt;&lt;br /&gt;Session leaders get a significant discount; for the next conference, one of them will pay nothing! &lt;a href="http://www.spaconference.org/spa2009/index.php?page=lead-a-session"&gt;Details on the SPA2009 "lead a session" page&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;If you're new to leading conference sessions, a supportive shepherding process will help you to hone your skills. Quite a few big names on the conference circuit cut their teeth at SPA.&lt;br /&gt;&lt;br /&gt;Whether you're an expert in the making or a hardened veteran, make sure you get your proposal in soon. Submissions open on Monday, and the deadline for submissions is 6pm on 15th September 2008.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9053945-7005371383321611755?l=www.cocking.co.uk%2Fblog%2Findex.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.cocking.co.uk/blog/2008/07/minispa2008-and-cfp-for-spa2009.html</link><author>noreply@blogger.com (Romilly)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-9053945.post-2015389543714232793</guid><pubDate>Mon, 28 Apr 2008 08:50:00 +0000</pubDate><atom:updated>2008-04-28T10:46:18.842+01:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Wiki</category><category domain='http://www.blogger.com/atom/ns#'>knowledge representation</category><category domain='http://www.blogger.com/atom/ns#'>Mind Map</category><category domain='http://www.blogger.com/atom/ns#'>Python</category><title>TiddlyWiki to MindMap converter</title><description>Knowledge is my stock in trade, and I use &lt;a href="http://www.tiddlywiki.com/"&gt;TiddlyWiki&lt;/a&gt; and &lt;a href="http://www.buzanworld.com/"&gt;Mind Mapping&lt;/a&gt; a lot.&lt;br /&gt;&lt;br /&gt;Like all Wikis, TiddlyWiki is a great tool for capturing ideas and facts in text and linking them to other relevant topics. It's not so good at showing you the big picture.&lt;br /&gt;&lt;br /&gt;Mind Maps (tm) are a great way of presenting the big picture, but programs like &lt;a href="http://freemind.sourceforge.net/wiki/index.php/Main_Page"&gt;FreeMind&lt;/a&gt; and &lt;a href="http://www.mindjet.com/"&gt;MindManager&lt;/a&gt; (tm) only show the notes for a single branch at a time.&lt;br /&gt;&lt;br /&gt;What if you think of each tool as giving a &lt;span style="font-style: italic;"&gt;different view on the same data&lt;/span&gt;? Then you could get the best of both worlds.&lt;br /&gt;&lt;br /&gt;There's already a &lt;a href="http://dahukanna.net/wiki/tiddlywiki.htm"&gt;hypergraph extension&lt;/a&gt; for TiddlyWiki which allows you to see a visual  representation of wiki contents but I prefer a more conventional Mind Map that I can edit.&lt;br /&gt;&lt;br /&gt;I'm currently experimenting with a simple &lt;a href="http://www.python.org/"&gt;Python&lt;/a&gt; script which converts a TiddlyWiki into a FreeMind Mind Map. The converter works well for small wikis and I'm currently researching how best to structure larger maps.&lt;br /&gt;&lt;br /&gt;The converter isn't ready for prime time yet, and documentation is minimal, but it's evolving fast. If you're interested please drop me a note ( at romilly dot cocking at gmail dot com) and I'll send you a copy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9053945-2015389543714232793?l=www.cocking.co.uk%2Fblog%2Findex.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.cocking.co.uk/blog/2008/04/tiddlywiki-to-mindmap-converter.html</link><author>noreply@blogger.com (Romilly)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-9053945.post-7586243687847896323</guid><pubDate>Fri, 25 Apr 2008 15:26:00 +0000</pubDate><atom:updated>2008-04-25T16:36:29.316+01:00</atom:updated><title>History meme</title><description>Mom, &lt;a href="http://www.tbray.org/ongoing/When/200x/2008/04/15/History-Meme"&gt;Tim made me do it...&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="font-family:courier new;"&gt;romilly@samba:~$ history | awk&lt;br /&gt;'{a[$2]++}END{for(i in a){print a[i] " " i}}'&lt;br /&gt;| sort -rn | head&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;106 ls&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;96 sudo&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;52 cd&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;22 nano&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;16 man&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;16 find&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;16 exit&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;13 chmod&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;12 cat&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;10 scp&lt;/span&gt;&lt;/pre&gt;and, on the Virtual server that hosts samba,&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="font-family:courier new;"&gt;romilly@pc031:~$  history | awk&lt;br /&gt;'{a[$2]++}END{for(i in a){print a[i] " " i}}'&lt;br /&gt; | sort -rn | head&lt;br /&gt;111 ls&lt;br /&gt;78 cd&lt;br /&gt;76 sudo&lt;br /&gt;32 exit&lt;br /&gt;23 top&lt;br /&gt;21 ping&lt;br /&gt;18 df&lt;br /&gt;13 du&lt;br /&gt;11 scp&lt;br /&gt;11 man&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9053945-7586243687847896323?l=www.cocking.co.uk%2Fblog%2Findex.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.cocking.co.uk/blog/2008/04/history-meme.html</link><author>noreply@blogger.com (Romilly)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-9053945.post-278831804954790729</guid><pubDate>Tue, 15 Apr 2008 10:52:00 +0000</pubDate><atom:updated>2008-04-15T12:12:39.466+01:00</atom:updated><title>Layers considered harmful: design to interfaces</title><description>Mark Dalgarno recently published &lt;a href="http://blog.software-acumen.com/2008/04/11/snowflakes-and-architecture-layers-considered-harmful-steve-love-at-accu-2008/"&gt;an excellent summary&lt;/a&gt; of a session presented by Steve Love at &lt;a href="http://accu.org/index.php/conferences/accu_conference_2008/accu2008_sessions"&gt;ACCU.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The talk offers a critique of the traditional doctrine that architectures should be &lt;span style="font-style: italic;"&gt;layered&lt;/span&gt;. Instead, Love proposes a style based on &lt;span style="font-style: italic;"&gt;designing to interfaces&lt;/span&gt;. That's music to my ears: it's exactly the approach we take in our new &lt;span style="font-style: italic;"&gt;TDD with jMock2&lt;/span&gt; course.&lt;br /&gt;&lt;br /&gt;Love's presentation is &lt;a href="http://accu.org/index.php/conferences/accu_conference_2008/accu2008_sessions"&gt;available as a pdf&lt;/a&gt;. The first half consists of visuals alone; the second half combines the same visuals with notes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9053945-278831804954790729?l=www.cocking.co.uk%2Fblog%2Findex.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.cocking.co.uk/blog/2008/04/layers-considered-harmful-design-to.html</link><author>noreply@blogger.com (Romilly)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-9053945.post-917951464603619311</guid><pubDate>Sun, 06 Apr 2008 10:30:00 +0000</pubDate><atom:updated>2008-04-15T11:51:33.964+01:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>automated testing</category><category domain='http://www.blogger.com/atom/ns#'>java</category><category domain='http://www.blogger.com/atom/ns#'>Hibernate</category><title>Testing Hibernate-based Persistent objects without Spring</title><description>&lt;a href="http://nat.truemesh.com/"&gt;Nat Pryce&lt;/a&gt; just pointed me at an excellent article on &lt;span style="font-style: italic;"&gt;&lt;a href="http://www.time4tea.net/wiki/display/MAIN/Testing+Persistent+Objects+Without+Spring"&gt;Testing Persistent Objects Without Spring&lt;/a&gt;&lt;/span&gt; by James Richardson.&lt;br /&gt;&lt;br /&gt;It shows both the integration test and the code under test.&lt;br /&gt;&lt;br /&gt;Lots of good ideas/good practice.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9053945-917951464603619311?l=www.cocking.co.uk%2Fblog%2Findex.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.cocking.co.uk/blog/2008/04/testing-hibernate-based-persistent.html</link><author>noreply@blogger.com (Romilly)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-9053945.post-8631564648478226678</guid><pubDate>Fri, 28 Mar 2008 14:19:00 +0000</pubDate><atom:updated>2008-03-28T15:10:00.503Z</atom:updated><title>Testing RIAs with WebDriver</title><description>If you need to test Rich Internet Applications from Java, take a look at &lt;a href="http://code.google.com/p/webdriver/"&gt;Webdriver&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Things I like about it:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;It uses real browsers to run the tests, quirks and all&lt;/li&gt;&lt;li&gt;It's got a &lt;font style="font-style: italic;"&gt;literate testing&lt;/font&gt; interface based on &lt;a href="http://code.google.com/p/hamcrest/"&gt;Hamcres&lt;/a&gt;t and inspired by &lt;a href="https://lift.dev.java.net/"&gt;LiFT&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;Here's a very simple example.It's doing simple tests on a static html site:&lt;br /&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;HomePageTest&lt;/span&gt; &lt;span class="k"&gt;extends&lt;/span&gt; &lt;span class="n"&gt;HamcrestWebDriverTestCase&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;&lt;br /&gt;   &lt;br /&gt;   &lt;span class="nd"&gt;@Override&lt;/span&gt;&lt;br /&gt;   &lt;span class="k"&gt;protected&lt;/span&gt; &lt;span class="n"&gt;WebDriver&lt;/span&gt; &lt;span class="nf"&gt;createDriver&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;&lt;br /&gt;      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;HtmlUnitDriver&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;&lt;br /&gt;   &lt;span class="o"&gt;}&lt;/span&gt;&lt;br /&gt;   &lt;br /&gt;   &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;testHomePageHasTitleAndHeading&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&lt;br /&gt;         &lt;span class="k"&gt;throws&lt;/span&gt; &lt;span class="n"&gt;Exception&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;&lt;br /&gt;      &lt;span class="n"&gt;goTo&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;http://test.intranet&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;&lt;br /&gt;      &lt;span class="n"&gt;assertPresenceOf&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&lt;br /&gt;        &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;startsWith&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Agile&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;))));&lt;/span&gt;&lt;br /&gt;      &lt;span class="n"&gt;assertPresenceOf&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&lt;br /&gt;        &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;containsString&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Cocking and Co.&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;))));&lt;/span&gt;&lt;br /&gt;      &lt;span class="n"&gt;assertPresenceOf&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;heading&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;br /&gt;        &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;equalTo&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Agile Application Development&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;))));&lt;/span&gt;&lt;br /&gt;   &lt;span class="o"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span class="o"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This won't quite work out of the box, as there is no heading finder, but adding one is easy:&lt;br /&gt;&lt;br /&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;font class="k"&gt;public&lt;/font&gt; &lt;font class="k"&gt;class&lt;/font&gt; &lt;font class="nc"&gt;HeadingFinder&lt;/font&gt; &lt;font class="k"&gt;extends&lt;/font&gt; &lt;font class="n"&gt;HtmlTagFinder&lt;/font&gt; &lt;font class="o"&gt;{&lt;/font&gt;&lt;br /&gt;  &lt;font class="k"&gt;private&lt;/font&gt; &lt;font class="k"&gt;final&lt;/font&gt; &lt;font class="kt"&gt;int&lt;/font&gt; &lt;font class="n"&gt;level&lt;/font&gt;&lt;font class="o"&gt;;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;  &lt;font class="k"&gt;public&lt;/font&gt; &lt;font class="nf"&gt;HeadingFinder&lt;/font&gt;&lt;font class="o"&gt;(&lt;/font&gt;&lt;font class="kt"&gt;int&lt;/font&gt; &lt;font class="n"&gt;level&lt;/font&gt;&lt;font class="o"&gt;)&lt;/font&gt; &lt;font class="o"&gt;{&lt;/font&gt;&lt;br /&gt;     &lt;font class="k"&gt;this&lt;/font&gt;&lt;font class="o"&gt;.&lt;/font&gt;&lt;font class="na"&gt;level&lt;/font&gt; &lt;font class="o"&gt;=&lt;/font&gt; &lt;font class="n"&gt;level&lt;/font&gt;&lt;font class="o"&gt;;&lt;/font&gt;&lt;br /&gt;  &lt;font class="o"&gt;}&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;  &lt;font class="nd"&gt;@Override&lt;/font&gt;&lt;br /&gt;  &lt;font class="k"&gt;protected&lt;/font&gt; &lt;font class="n"&gt;String&lt;/font&gt; &lt;font class="nf"&gt;tagDescription&lt;/font&gt;&lt;font class="o"&gt;()&lt;/font&gt; &lt;font class="o"&gt;{&lt;/font&gt;&lt;br /&gt;     &lt;font class="k"&gt;return&lt;/font&gt; &lt;font class="s"&gt;"heading level "&lt;/font&gt;&lt;font class="o"&gt;+&lt;/font&gt;&lt;font class="n"&gt;level&lt;/font&gt;&lt;font class="o"&gt;;&lt;/font&gt;&lt;br /&gt;  &lt;font class="o"&gt;}&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;  &lt;font class="nd"&gt;@Override&lt;/font&gt;&lt;br /&gt;  &lt;font class="k"&gt;protected&lt;/font&gt; &lt;font class="n"&gt;String&lt;/font&gt; &lt;font class="nf"&gt;tagName&lt;/font&gt;&lt;font class="o"&gt;()&lt;/font&gt; &lt;font class="o"&gt;{&lt;/font&gt;&lt;br /&gt;     &lt;font class="k"&gt;return&lt;/font&gt; &lt;font class="s"&gt;"h"&lt;/font&gt;&lt;font class="o"&gt;+&lt;/font&gt;&lt;font class="n"&gt;level&lt;/font&gt;&lt;font class="o"&gt;;&lt;/font&gt;&lt;br /&gt;  &lt;font class="o"&gt;}&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;  &lt;font class="k"&gt;public&lt;/font&gt; &lt;font class="k"&gt;static&lt;/font&gt; &lt;font class="n"&gt;HeadingFinder&lt;/font&gt; &lt;font class="nf"&gt;heading&lt;/font&gt;&lt;font class="o"&gt;(&lt;/font&gt;&lt;font class="kt"&gt;int&lt;/font&gt; &lt;font class="n"&gt;level&lt;/font&gt;&lt;font class="o"&gt;)&lt;/font&gt; &lt;font class="o"&gt;{&lt;/font&gt;&lt;br /&gt;     &lt;font class="k"&gt;return&lt;/font&gt; &lt;font class="k"&gt;new&lt;/font&gt; &lt;font class="nf"&gt;HeadingFinder&lt;/font&gt;&lt;font class="o"&gt;(&lt;/font&gt;&lt;font class="n"&gt;level&lt;/font&gt;&lt;font class="o"&gt;);&lt;/font&gt;&lt;br /&gt;  &lt;font class="o"&gt;}&lt;/font&gt;&lt;br /&gt;&lt;font class="o"&gt;}&lt;/font&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;It's fairly new, but there are now pre-built binaries available.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9053945-8631564648478226678?l=www.cocking.co.uk%2Fblog%2Findex.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.cocking.co.uk/blog/2008/03/testing-rias-with-webdriver.html</link><author>noreply@blogger.com (Romilly)</author><thr:total>1</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-9053945.post-2567811978652699646</guid><pubDate>Tue, 25 Mar 2008 10:00:00 +0000</pubDate><atom:updated>2008-03-26T17:55:02.835Z</atom:updated><category domain='http://www.blogger.com/atom/ns#'>SPA</category><category domain='http://www.blogger.com/atom/ns#'>Haskell</category><category domain='http://www.blogger.com/atom/ns#'>Category Theory</category><category domain='http://www.blogger.com/atom/ns#'>FP</category><title>Category Theory/Haskell learning group in London</title><description>Peter Marks organised a BOF (Birds of a feather) session on Category Theory at Spa2008.  To my surprise about twelve of us turned up. We discovered a shared intuition (bizarre though it seems) that  Category Theory will somehow shape the &lt;font style="font-style: italic;"&gt;next big thing&lt;/font&gt; in application development. Less surprisingly, we also discovered a common enthusiasm for Haskell.&lt;br /&gt;&lt;br /&gt;We want to build on this. Most of us are based in London, or can reach it easily. We plan to meet regularly (about once a month) to explore these ideas and to help each other to learn.&lt;br /&gt;&lt;br /&gt;I'll post more about this as soon as we have a date and location for our first meeting.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9053945-2567811978652699646?l=www.cocking.co.uk%2Fblog%2Findex.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.cocking.co.uk/blog/2008/03/category-theoryhaskell-learning-group.html</link><author>noreply@blogger.com (Romilly)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-9053945.post-7439178569397587334</guid><pubDate>Tue, 25 Mar 2008 09:56:00 +0000</pubDate><atom:updated>2008-03-26T20:35:15.849Z</atom:updated><title>Spa2008 retrospectve</title><description>I'm back from Spa2008, and my head is buzzing.&lt;br /&gt;&lt;br /&gt;I felt this was the best Spa conference in recent years. As chairman I'm biased, but I'm not responsible for the quality. That's down to the programme chairs (Eoin Woods and Ivan Moore) and to Andy Moorley who organised things perfectly.&lt;br /&gt;&lt;br /&gt;I went to (and really enjoyed):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Mirror, Mirror on the wall - why me? &lt;span style="font-style: italic;"&gt;Chris Cooper-Bland and &lt;/span&gt;&lt;span style="font-style: italic;"&gt;Portia Tung&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Thou Shalt Integrate by the Sweat of Thy Brow... &lt;span style="font-style: italic;"&gt;Robert James and Eoin Woods&lt;/span&gt;&lt;/li&gt;&lt;li&gt;The Need for Speed &lt;span style="font-style: italic;"&gt;Paul Dyson and John Nolan&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Awesome Acceptance Testing &lt;span style="font-style: italic;"&gt;Dan North and Joe Walnes&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Spanish Guitar Recital &lt;span style="font-style: italic;"&gt;David Harvey&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Is Software Practice Advancing? &lt;span style="font-style: italic;"&gt;John Daniels and friends&lt;/span&gt;&lt;/li&gt;&lt;li&gt;A few things I learned in 50 years of programming &lt;span style="font-style: italic;"&gt;L Peter Deutsch&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Big Ball of Money, Big Ball of Mud: Economics and Legacy Code &lt;span style="font-style: italic;"&gt;Michael Feathers&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Closing the Knowing Doing Gap &lt;span style="font-style: italic;"&gt;Allan Kelly and Lise Hvatum&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;Now it's time to start thinking about Spa2009!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9053945-7439178569397587334?l=www.cocking.co.uk%2Fblog%2Findex.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.cocking.co.uk/blog/2008/03/spa2008-retrospectve.html</link><author>noreply@blogger.com (Romilly)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-9053945.post-2381752177144467320</guid><pubDate>Tue, 26 Feb 2008 11:36:00 +0000</pubDate><atom:updated>2008-02-28T08:40:30.899Z</atom:updated><category domain='http://www.blogger.com/atom/ns#'>development</category><title>Fewer, better people</title><description>I've just read &lt;a href="http://martinfowler.com/bliki/CheaperTalentHypothesis.html"&gt;Martin Fowler's post about the Cheaper Talent Hypothesis&lt;/a&gt;. It's an issue that most of us have encountered.&lt;br /&gt;&lt;br /&gt;If you're in IT, feel underpaid, and think that you're above average (as &gt; 50% of us do), you'll have wondered why you aren't rewarded in keeping with your worth.&lt;br /&gt;&lt;br /&gt;I suspect the main reason that good developers are undervalued is that most people think that software is easy to write. Since many IT projects fail, the implication is that we can't very good at what we do.&lt;br /&gt;&lt;br /&gt;The conclusion is false because the premise is false. Writing good software is one of the hardest things that people do. I'd love to find some way to allow non-developers to find that out for themselves.&lt;br /&gt;&lt;br /&gt;IBM used to run introductory programming courses which included a session called &lt;span style="font-style: italic;"&gt;keep the alien alive&lt;/span&gt;. The instructor played a dumb alien who obeyed spoken instructions literally; the class had to tell him/her how to drink a glass of water. It was surprisingly hard to do, and the instructor usually got soaked. But it really brought home the fact that programming is hard.&lt;br /&gt;&lt;br /&gt;How could we update this for the 21st century?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9053945-2381752177144467320?l=www.cocking.co.uk%2Fblog%2Findex.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.cocking.co.uk/blog/2008/02/fewer-better-people.html</link><author>noreply@blogger.com (Romilly)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-9053945.post-5997046612314521668</guid><pubDate>Tue, 16 Oct 2007 11:23:00 +0000</pubDate><atom:updated>2007-10-16T15:44:21.854+01:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>python jyton programming</category><title>Jython lives!</title><description>It's  good to see that Jython is under active development again.&lt;br /&gt;&lt;br /&gt;I use cPython a lot.  I'd pretty much stopped using Jython because it does not currently support language features that I find essential - decimals, generators and list comprehensions, for example.&lt;br /&gt;&lt;br /&gt;The project seemed to be dormant, but &lt;a href="http://www.jython.org/Project/roadmap.html#id2"&gt;Jython 2.2&lt;/a&gt; has just been released, and it looks like &lt;a href="http://www.theserverside.com/news/thread.tss?thread_id=46661#238687"&gt;Jython 2.5&lt;/a&gt;&lt;a href="http://www.theserverside.com/news/thread.tss?thread_id=46661#238687"&gt; is on the way&lt;/a&gt;, with all the critical features that I need. Excellent news!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9053945-5997046612314521668?l=www.cocking.co.uk%2Fblog%2Findex.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.cocking.co.uk/blog/2007/10/jython-lives.html</link><author>noreply@blogger.com (Romilly)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-9053945.post-8208437083287327958</guid><pubDate>Mon, 24 Sep 2007 17:32:00 +0000</pubDate><atom:updated>2008-03-26T17:51:32.233Z</atom:updated><title>Download all pdfs in a web page</title><description>A while ago I found an out-of-print book with a web-page that listed a series of downloadable pdfs.&lt;br /&gt;&lt;br /&gt;Since there were 17 chapters and several other sections, I didn't want to  right-click my way through the list so  I wrote a quick Python script to do it for me.&lt;br /&gt;&lt;br /&gt;This must be a Python idiom. I've had to re-invent it so often, I thought I'd blog it so that I -and you - will never have to create it from scratch again.&lt;br /&gt;&lt;br /&gt;Here it is.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="font-family:Lucida,Courier New;"&gt;&lt;span style="color: rgb(192, 0, 0);"&gt;import&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;urllib&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;re&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;sys&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;# download each pdf linked to in a web-page.&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;# assumes that the urls are all relative,&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;# which is usually the case&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;pdflink&lt;/span&gt; &lt;span style="color: rgb(0, 0, 192);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;re&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;compile&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 64, 128);"&gt;r'&amp;lt;a href="(.*\.pdf)"&amp;gt;'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;baseURL&lt;/span&gt; &lt;span style="color: rgb(0, 0, 192);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;sys&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;argv&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(0, 128, 192);"&gt;1&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;page&lt;/span&gt; &lt;span style="color: rgb(0, 0, 192);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;urllib&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;urlopen&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;baseURL&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 64, 128);"&gt;"contents.html"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(192, 0, 0);"&gt;for&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;line&lt;/span&gt; &lt;span style="color: rgb(192, 0, 0);"&gt;in&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;page&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;readlines&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;:&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 0, 0);"&gt;match&lt;/span&gt; &lt;span style="color: rgb(0, 0, 192);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;pdflink&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;search&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;line&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;)&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(192, 0, 0);"&gt;if&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;match&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;:&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(0, 0, 0);"&gt;filename&lt;/span&gt; &lt;span style="color: rgb(0, 0, 192);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;match&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;group&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 128, 192);"&gt;1&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;)&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(192, 0, 0);"&gt;print&lt;/span&gt; &lt;span style="color: rgb(0, 64, 128);"&gt;"downloading %s"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 192);"&gt;%&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;filename&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(0, 0, 0);"&gt;urllib&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;urlretrieve&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;baseURL&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;filename&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;filename&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9053945-8208437083287327958?l=www.cocking.co.uk%2Fblog%2Findex.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.cocking.co.uk/blog/2007/09/download-all-pdfs-in-web-page.html</link><author>noreply@blogger.com (Romilly)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-9053945.post-7693640606010765853</guid><pubDate>Mon, 24 Sep 2007 14:00:00 +0000</pubDate><atom:updated>2007-09-24T15:21:09.639+01:00</atom:updated><title>Google soft-launches social bookmarking tool</title><description>&lt;span style="text-decoration: underline;"&gt;Is &lt;/span&gt;&lt;a href="http://www.google.com/s2/sharing/resources/static/html/help.html"&gt;Google shared stuff&lt;/a&gt; the latest hot thing? It's a new social bookmarking tool.&lt;br /&gt;&lt;br /&gt;It's available now, although you won't yet find it in the list of &lt;a href="http://www.google.co.uk/intl/en/options/index.html"&gt;Google services and tools&lt;/a&gt;, nor on the Google labs page.&lt;br /&gt;&lt;br /&gt;As well as sharing with your friends, the new bookmarklet allows you to share your links via several third-party sites, including &lt;a href="http://www.facebook.com/"&gt;Facebook&lt;/a&gt;, &lt;a href="http://digg.com/"&gt;digg&lt;/a&gt;, &lt;a href="http://reddit.com/"&gt;reddit&lt;/a&gt; and &lt;a href="http://del.icio.us/"&gt;del.icio.us&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;In itself, it wouldn't be worldshaking; but&lt;br /&gt;&lt;ol&gt;&lt;li&gt;It's from Google&lt;/li&gt;&lt;li&gt;There are rumors of a soon-to-be-released Google api for social networking.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9053945-7693640606010765853?l=www.cocking.co.uk%2Fblog%2Findex.html' alt='' /&gt;&lt;/div&gt;</description><link>http://www.cocking.co.uk/blog/2007/09/google-soft-launches-social-bookmarking.html</link><author>noreply@blogger.com (Romilly)</author><thr:total>0</thr:total></item></channel></rss>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    