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

<channel>
	<title>niksilver.com</title>
	<atom:link href="http://niksilver.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://niksilver.com</link>
	<description>Mostly about the management of software development</description>
	<lastBuildDate>Wed, 28 Oct 2009 15:15:35 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Being Agile and open for a stronger business</title>
		<link>http://niksilver.com/2009/10/28/being-agile-and-open-for-a-stronger-business/</link>
		<comments>http://niksilver.com/2009/10/28/being-agile-and-open-for-a-stronger-business/#comments</comments>
		<pubDate>Wed, 28 Oct 2009 10:49:34 +0000</pubDate>
		<dc:creator>Nik</dc:creator>
				<category><![CDATA[Agile]]></category>

		<guid isPermaLink="false">http://niksilver.com/?p=598</guid>
		<description><![CDATA[A couple of weeks ago I presented at the Agile Business Conference 2009. Thanks to all those at the DSDM Consortium who made it such a great event. The theme of the conference was how Agile can help in adversity (e.g. an economic downturn), and I provided a case study &#8212; title above &#8212; of [...]]]></description>
			<content:encoded><![CDATA[<p>A couple of weeks ago I presented at the <a href="http://www.agileconference.org/">Agile Business Conference 2009</a>. Thanks to all those at <a href="http://www.dsdm.org/">the DSDM Consortium</a> who made it such a great event. The theme of the conference was how Agile can help in adversity (e.g. an economic downturn), and I provided a case study &#8212; title above &#8212; of how the digital technology team at the Guardian had responded to various organisational changes and challenges. Looking back over the last few years I found I&#8217;d learned many lessons from working with my friends and colleagues here. This is the summary of those lessons that I offered to the delegates at ABC09&#8230;</p>
<p><strong>Exploit your successes</strong></p>
<p>Our huge rebuild and redesign of guardian.co.uk was a successful project. Once it was done we could have slumped back, exhausted. But instead we used it as a springboard to start additional exciting (and arguably controversial) work. Primarily I&#8217;m thinking of the <a href="http://www.guardian.co.uk/open-platform">Open Platform</a>, led by <a href="http://www.flickr.com/photos/pigsaw/3781358484/in/set-72157621795147169/">Matt McAlister</a>. <a href="http://niksilver.com/2009/03/11/the-open-platform-its-thanks-to-individuals/">As I wrote at the time</a>, getting that off the ground was a huge testament to the work and faith of many people in the company, particularly given that it&#8217;s a very intangible thing at launch.</p>
<p>Still, the Open Platform is built on top of the work in that earlier project, and in particular in that people recognised technology success and were prepared to back more.</p>
<p><strong>Sustainable business needs sustainable technology</strong></p>
<p>Much of our technology, particularly on the web side, is developed in-house. On the one hand that can seem expensive, but on the other hand it does mean we have the ability to take in the direction we see fit. A particular example is the cost of scaling guardian.co.uk. It does cost more money to serve more users, but it doesn&#8217;t cost as much as it might because we have control of the technology.</p>
<p>Broadly speaking since we own the technology we can steer it in line with business needs much more readily.</p>
<p><strong>Right-levelled decision-making builds trust</strong></p>
<p>Let&#8217;s make one thing clear first: &#8220;Right-level&#8221; is absolutely not an acceptable verb phrase, and I only used it because it fitted onto the slide better. Now, to the substance of this&#8230;</p>
<p>Any reasonably sizable projects are approved to go (or not go) by a group of directors and other senior staff, and they do this at a regular meeting on the basis of information provided by the technology team working with many people around the business. This information of course consists of timescales, costs and benefits, but also what other projects are in progress and waiting in the wings.</p>
<p>This may seem obvious, but the consequence is that in the event of heavy cost control (which is what happens when the economy takes a dive) that cost control is exactly in line with project expenditure, because it&#8217;s the same people who are making both kind of decisions. It should be said that this is supported by the Agile principle of delivering value, and delivering frequently, because any project can start demonstrating its value early.</p>
<p><strong>Openness reduces costs and provides options</strong></p>
<p>The Guardian has been open not only with the Open Platform, but also with our full content RSS feeds. Applications have been built on the latter simply because they are a known format and, with full content, have huge utility. By having open full content RSS feeds we have a means of others using our content, and if they (or we) choose that option there are no internal integration costs.</p>
<p><strong>Transparency builds trust</strong></p>
<p>We do a lot of internal reporting: what features we release, our current bug count, project costs, and so on. When times get tough people start asking what value you&#8217;re adding to the business, and where all that money that&#8217;s being spent on your team is actually going. Because of all our reporting it&#8217;s relatively easy to open up our books to the consultants with financial questions, and then we can have an intelligent debate about the value of that expenditure. But that&#8217;s fine, and something we tend to welcome, because it&#8217;s part of the culture that Agile fosters: within the team we debate every week the value of what we do &#8212; that&#8217;s what Agile planning is all about &#8212; and Agile retrospectives are all about seeking improvement.</p>
<p>And finally&#8230;</p>
<p>I recognise that saying all this may be a hostage to fortune: the credit crunch took hold only about a year ago, and we&#8217;re not out of the woods yet. But for now I can look back on some of the things that have gone well, and if we emerge from this economic downturn with only a few cuts and bruises then it will be in no small part due to honesty and openness creating trust, which in turn leads to healthier decision-making.</p>
]]></content:encoded>
			<wfw:commentRss>http://niksilver.com/2009/10/28/being-agile-and-open-for-a-stronger-business/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Eigenharp, openness, and launching something (really) new</title>
		<link>http://niksilver.com/2009/10/07/the-eigenharp-openness-and-launching-something-really-new/</link>
		<comments>http://niksilver.com/2009/10/07/the-eigenharp-openness-and-launching-something-really-new/#comments</comments>
		<pubDate>Wed, 07 Oct 2009 22:21:28 +0000</pubDate>
		<dc:creator>Nik</dc:creator>
				<category><![CDATA[Planning]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://niksilver.com/?p=585</guid>
		<description><![CDATA[Today I attended the launch of something weird and wonderful: a new musical instrument, the Eigenharp. And although this is a hardware device the event, and the run up to it, brought to mind the launch of our own Open Platform six months ago. By seeing some commonalities between the two it gave me a [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/pigsaw/3990391407/in/set-72157622537697462"><img class="alignright" title="Eigenharp buttons and lights up close" src="http://farm3.static.flickr.com/2561/3990391407_2f5e9be01f_d.jpg" alt="" width="500" height="333" /></a>Today I <a href="http://www.flickr.com/photos/pigsaw/sets/72157622537697462/">attended the launch</a> of something weird and wonderful: a new musical instrument, the <a href="http://eigenlabs.com/alpha/">Eigenharp</a>. And although this is a hardware device the event, and the run up to it, brought to mind the launch of our own <a href="http://www.guardian.co.uk/open-platform">Open Platform</a> six months ago. By seeing some commonalities between the two it gave me a whole new respect for the people who do marketing and PR, because it reminded me how much stuff needs to be planned. Common phases I saw are: (1) the controlled buzz, (2) openness at launch, and (3) the follow-through. But first a few words about the two products&#8230;</p>
<p><strong>The Eigenharp and the Open Platform</strong></p>
<p>The Eigenharp is a new kind of device. It&#8217;s a musical instrument with several patents already filed, and incorporates 132 keys with three-colour LEDs and a breath pipe. The keys operate in three dimensions (so you can exploit, say, pressure, pitch bend and filter effects with one finger) and are sensitive to within one micron. So while it&#8217;s compatible with MIDI, that&#8217;s an incredibly out-of-date protocol compared to what you could do with it.</p>
<p>The Open Platform has been well-documented here and elsewhere: a full content API directly into the Guardian&#8217;s content database, plus a store of raw data on which our journalists base some of their stories.</p>
<p>Although they are clearly two different kinds of beasts a remarkable similarity struck me in that they are both not just new products, but <em>really</em> new products. There is no clearly defined place for them in either of their markets, and no predictable success path for either one. The success of each is dependent entirely on other people&#8217;s innovation. The Eigenharp&#8217;s success is dependent on musicians taking their creativity into new directions &#8212; no-one to date has written music for an Eigenharp. The Open Platform&#8217;s success is dependent on developers doing innovative things with the new data they have access to.</p>
<p>So how do you launch a product that&#8217;s <em>really </em>new? The similar steps I can see are&#8230;</p>
<p><strong><a href="http://www.flickr.com/photos/pigsaw/3990393187/in/set-72157622537697462"><img class="alignleft" title="A view from the breath pipe" src="http://farm3.static.flickr.com/2514/3990393187_0c1be9337f_m_d.jpg" alt="" width="160" height="240" /></a>1. The controlled buzz</strong></p>
<p><a href="http://eigenlabs.com">Eigenlabs</a> (the creators of the Eigenharp) and the Guardian (creators of the Open Platform) managed to seed a few select people with their product &#8212; musicians and developers respectively &#8212; and some small details leaked out. This clearly did a couple of things.</p>
<p>First, it helps you get the product right. I know from my conversations around the Open Platform that what might seem a good idea to one or two people close to the product can provoke strong negative reactions when you float it past an informed outsider. When you&#8217;re inside the company you can easily think too much and lose the big picture, so it&#8217;s good to get an informed but independent view before you go public.</p>
<p>Second,  <a href="http://www.engadget.com/2009/09/11/video-mysterious-eigenharp-offers-blinkenlight-sitar-looks-chi/">creating a buzz</a> protects you from a bit of unforeseen negative reaction &#8212; if people are excited about your product and want it to succeed they will forgive some minor mistakes. You can see Eigenlabs achieved this with this low-fi video of <a href="http://www.youtube.com/watch?v=zcVqJh0qEMc">two guys playing the James Bond/Moby theme</a> on YouTube. Eigenlabs didn&#8217;t create this themselves, but they let &#8220;close friends&#8221; do it, and you can see the reaction in the comments underneath: &#8220;What the hell!! This is awesome&#8221;, &#8220;where can I buy one of these?&#8221;, &#8220;dear god this is epic&#8221; and so on.</p>
<p>The benefits of this are <a href="http://www.pcmag.com/article2/0,2817,2352751,00.asp">well explained by Lance Ulanoff at PCMag.com</a>. Here he compares the lacklustre launch of the Motorola Cliq with the hype from the January 2009 announcement (six months before the launch) of the Palm Pre:</p>
<p><span id="intellitxt"> </span></p>
<blockquote><p>Speaking of Palm, it has a good bit in common with Motorola right now. The Pre (and now Pixi) is its hail-Mary pass. If the new phone and WebOS platform fail, Palm will be done. Back in January, however,<!-- start ziffarticle //--> <a href="http://www.pcmag.com/article2/0,2817,2338482,00.asp">Palm ran the best product rollout event</a><!-- end ziffarticle //--> I have ever attended. It perfectly conveyed the company&#8217;s excitement and all that is good about the <!-- start ziffarticle //--><a href="http://www.pcmag.com/article2/0,2817,2338899,00.asp">Pre</a><!-- end ziffarticle //-->. I remember tweeting the event with mounting excitement. Today, I tweeted the Motorola event with mounting confusion.</p>
<p>What Palm did in January was give the Pre a good hard shove off the shore. Those waves of excitement produced a good six months of positive press. Eventually, Palm and the Pre hit some rough waters—a shipping delay, the slow delivery of the SDK and tiny list of apps that has yet to grow. Still, that first day set the tone.</p></blockquote>
<p>Then after the buzz is&#8230;</p>
<p><strong><a href="http://www.flickr.com/photos/pigsaw/3991138894/in/set-72157622537697462"><img class="alignleft" title="A select crowd gathers" src="http://farm4.static.flickr.com/3506/3991138894_313a90d946_m_d.jpg" alt="" width="240" height="160" /></a>2. Openness at launch</strong></p>
<p>There&#8217;s much that doesn&#8217;t need to be said about the launch event, but one thing that struck me about both the <a href="http://www.sonicstate.com/news/2009/10/06/eigenharp-officially-relased-first-look-video/">launch of the Eigenharp</a> and the <a href="http://www.guardian.co.uk/open-platform/blog/launch-presentation-kings-place-london">launch of the Open Platform</a> was a common ethos: the honesty and openness of the presenters, and the openness of the products.</p>
<p>At both events the &#8220;real users&#8221; (musicians/developers) were on-stage demonstrating their early adoption of the product and open to questions from the audience. These are the kinds of people who most marketing and PR people would lock in cupboards at a press event for fear they arrive without the regulation press-on smile and go off-message. But when a product&#8217;s success relies on innovation and creativity from its real users then it&#8217;s important that intended audience hears an authentic voice.</p>
<p>Also, there is an openness about both products. Aside from the very concept of opening up content and data, the Open Platform gives a lot of latitude to developers, <a href="http://www.badidea.co.uk/2009/03/guardians-open-platform-interface-looking-a-lot-better-than-the-new-york-times/">including (unusually) commercial use</a>. Meanwhile Eigenlabs are open-sourcing their software. Again, because each product&#8217;s success relies on people taking it in unexpected directions it&#8217;s important for there to be as many opportunities as possible for that to happen. Otherwise its success is stifled.</p>
<p>And then finally there&#8217;s&#8230;</p>
<p><strong>3. The follow-through</strong></p>
<p>Well, it&#8217;s early days for both products. The Open Platform API is still in beta, but you can see some developments now, such as the launch last week of the <a href="http://www.guardian.co.uk/open-platform/apps">Applications Gallery</a>. It&#8217;s even earlier for the Eigenharp. Company founder John Lambert was asked what well-known musicians he&#8217;d like to see using his creation and he said that a number of high profile people do have the instrument but that he cannot name any names yet. Clearly some really interesting things are going to happen some time soon.</p>
<p>If a product really does depend on the creativity of others then you can&#8217;t &#8212; and mustn&#8217;t &#8212; be too controlling of what those people do with it. (When I spoke to him John seemed slightly apprehensive about the quality of some of the things people might produce around the Eigenharp; I bet Matt McAlister didn&#8217;t anticipate <a href="http://www.guardian.co.uk/open-platform/dataviz-swear-word-tracker">a swearword tracker</a> coming out of the Open Platform.) But if you can&#8217;t control what others do, you can at least show some examples of what might be achieved, and that&#8217;s what the follow-through is doing with each of these products.</p>
<p><strong>1-2-3, easy as A-B-C</strong></p>
<p>Now if any marketing people have stumbled across this blog post I wouldn&#8217;t be surprised if they were horrified by the naivety of these observations &#8212; all of this might just be first grade A-B-C of marketing for them. But I find this fascinating. As a tech person it&#8217;s very easy for me to focus on my own role and not spend much time wondering what challenges are faced by my colleagues in other departments. Here are two products whose paths to success are unusually dependent on the unknown and whose stories will be well worth watching. By looking at the communication that&#8217;s gone on around them the significance of other people&#8217;s role becomes much more apparent. Technology success is about much more than successful technology.</p>
]]></content:encoded>
			<wfw:commentRss>http://niksilver.com/2009/10/07/the-eigenharp-openness-and-launching-something-really-new/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Thanks to ProgrammableWeb</title>
		<link>http://niksilver.com/2009/09/17/thanks-to-programmableweb/</link>
		<comments>http://niksilver.com/2009/09/17/thanks-to-programmableweb/#comments</comments>
		<pubDate>Thu, 17 Sep 2009 18:06:17 +0000</pubDate>
		<dc:creator>Nik</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://niksilver.com/?p=577</guid>
		<description><![CDATA[A quick thanks to the folks at ProgrammableWeb for making my Guardian Tag Bubbles app their Mashup of the Day. It was terrific to see it up there with the likes of the imaginative The Sheep Market and Again But Slower &#8212; to pick just two at random.

]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">A quick thanks to the folks at <a href="http://www.programmableweb.com">ProgrammableWeb</a> for making my <a href="http://niksilver.com/guardian-tag-bubbles/">Guardian Tag Bubbles app</a> their Mashup of the Day. It was terrific to see it up there with the likes of the imaginative <a href="http://www.thesheepmarket.com/">The Sheep Market</a> and <a href="http://againbutslower.com">Again But Slower</a> &#8212; to pick just two at random.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-581" title="Mashup of the Day screenshot" src="http://niksilver.com/wp-content/tag-bubbles-programmableweb-screenshot-100pc.jpg" alt="Mashup of the Day screenshot" width="632" height="474" /></p>
]]></content:encoded>
			<wfw:commentRss>http://niksilver.com/2009/09/17/thanks-to-programmableweb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A health warning to followers of the Knight News Challenge</title>
		<link>http://niksilver.com/2009/09/14/a-health-warning-to-followers-of-the-knight-news-challenge/</link>
		<comments>http://niksilver.com/2009/09/14/a-health-warning-to-followers-of-the-knight-news-challenge/#comments</comments>
		<pubDate>Mon, 14 Sep 2009 22:18:04 +0000</pubDate>
		<dc:creator>Nik</dc:creator>
				<category><![CDATA[Project management]]></category>

		<guid isPermaLink="false">http://niksilver.com/?p=565</guid>
		<description><![CDATA[I was by turns initially horrified and puzzled when I read Ryan Sholin&#8217;s piece on &#8220;How to manage technology decisions in 5 easy steps&#8221;. Horrified because they seemed at odds with my own experiences of what works and what doesn&#8217;t, and then puzzled because Ryan is someone with a great deal of experience in digital [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/jypsygen/3216225917/"><img class="alignright" title="Photo by jypsygen" src="http://farm4.static.flickr.com/3521/3216225917_447f8581c1_d.jpg" alt="" width="375" height="500" /></a>I was by turns initially horrified and puzzled when I read Ryan Sholin&#8217;s piece on <a href="http://www.newschallenge.org/content/how-manage-technology-decisions-5-easy-steps-reportingon-creator-ryan-sholin">&#8220;How to manage technology decisions in 5 easy steps&#8221;</a>. Horrified because they seemed at odds with my own experiences of what works and what doesn&#8217;t, and then puzzled because Ryan is someone with <a href="http://ryansholin.com/about/">a great deal of experience</a> in digital media, so I couldn&#8217;t understand why he was writing these things. Eventually they made sense, but only when I realised his tips were for entrants of the <a href="http://www.newschallenge.org/">Knight News Challenge</a> (KNC), which is a very specific competition with very specific demands from an audience being mostly of a particular type.</p>
<p>It became apparent to me that much digital media advice for non-technical people really needs to come with a very strong health warning. Here&#8217;s one taken from a prescription medicine I&#8217;ve just retrieved from my bathroom. It needed only very light editing and seems quite appropriate:</p>
<blockquote><p>REMEMBER this advice was prescribed only for you. Only a digital professional can prescribe it. NEVER give it to someone else to use even if you think their project is similar.</p></blockquote>
<p>Looking at <a href="http://ryansholin.com/2009/09/11/notes-on-managing-technology-decisions/">Ryan&#8217;s blog</a> the advice is for &#8220;dealing with developers and choosing a platform for your [Knight News Challenge] project&#8221;. As a previous winner of the KNC he should know what he&#8217;s talking about here. Unfortunately in the process of being prepared for the KNC blog its intent seems to have been overstated. It is not, unfortunately, advice on &#8220;how to manage technology decisions in 5 easy steps&#8221; &#8212; which is a shame, because I and a lot people I know could do with easy answers to hard technology decisions. Nor does it provide guidance on &#8220;How to hire developers&#8221;, as the intro suggests, unless you&#8217;re hiring one or two developers specifically for the KNC.</p>
<p>This may sound flippant (perhaps, admittedly, because it is) but there is a serious point here. I suspect there are going to be many more people following the KNC than there are participating, and I think a lot of those followers will be people in the process of embracing digital media projects for the very first time, and will be looking for guidance. Perhaps they are just starting on digital projects within their current traditional media companies. They will need good guidance so they can make a reasonable success of their early projects and so feel confident about getting more involved. The media industry needs those people to be successful.</p>
<p>But taking the right advice for the wrong project will lead to problems. Here are some instances of Ryan&#8217;s advice and where your (or a colleague&#8217;s) situation might require something different&#8230;</p>
<blockquote><p>1. Learn a little bit about any one Web framework, standard, or programming language</p></blockquote>
<p>If you&#8217;re leading a 2 or 3 person team then it&#8217;s a good idea to understand the technologies your team members are using. But you may find yourself in a slightly different position in a larger team. In that case the level of conversation you need to have with people will be different. If the technology being used is fairly complex then deep-diving into a particular web framework or programming language is going to be far less useful than having, say, a good overview of the technologies involved and why they&#8217;re important &#8212; if only so that you can ask appropriate questions and deal with the answers appropriately.</p>
<blockquote><p>2. Choose the people you want to work with and spend an ample amount of time telling them what you want.</p></blockquote>
<p>I&#8217;d never disagree with the &#8220;ample amount of time&#8221; part &#8212; if you don&#8217;t dedicate a lot time to your project don&#8217;t expect it to go the way you want. But the &#8220;telling&#8221; part will only get you so far. It will probably work very well if you&#8217;ve become an expert in a particular web framework which is the basis of your project, and if you&#8217;ve hired someone with less experience there. But if your situation is different your approach should be different. For anything ambitious or complex or imaginative the development will be an evolving two-way conversation, not a one-way monologue in which you&#8217;re telling someone what to do.</p>
<p>So, lots of good advice on the KNC blog for participants of the Knight News Challenge. But if you&#8217;re sitting on the sidelines you should not mistake the demands of the Challenge as being the same as the demands of whichever project you happen to be working on next. Get advice that&#8217;s been prescribed specifically for you.</p>
<p>This information has been provided free of charge under the National Digital Health Service.</p>
]]></content:encoded>
			<wfw:commentRss>http://niksilver.com/2009/09/14/a-health-warning-to-followers-of-the-knight-news-challenge/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>A few things I know about lean</title>
		<link>http://niksilver.com/2009/09/10/a-few-things-i-know-about-lean/</link>
		<comments>http://niksilver.com/2009/09/10/a-few-things-i-know-about-lean/#comments</comments>
		<pubDate>Thu, 10 Sep 2009 21:30:28 +0000</pubDate>
		<dc:creator>Nik</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Working practices]]></category>

		<guid isPermaLink="false">http://niksilver.com/?p=549</guid>
		<description><![CDATA[I&#8217;ve been reading a bit about lean working recently, and this is a bit about what I&#8217;ve learned.
Lean software development is a fascinating step on from Agile, but its history is in manufacturing cars and to date I&#8217;ve only been reading up on lean manufacturing, not lean development. There are two reasons for this. First, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/yj_kia/2412481067/"><img class="alignright" title="Photo by Cookie productions" src="http://farm3.static.flickr.com/2020/2412481067_4ea4f67dd6_d.jpg" alt="" width="500" height="375" /></a>I&#8217;ve been reading a bit about lean working recently, and this is a bit about what I&#8217;ve learned.</p>
<p>Lean software development is a fascinating step on from Agile, but its history is in manufacturing cars and to date I&#8217;ve only been reading up on lean manufacturing, not lean development. There are two reasons for this. First, I&#8217;d feel much more confident about lean if I know the background and reasons for things &#8212; in other words, I want to derive lean software development from first principles. Second, I was rather cautious, if not downright sceptical, that something can be translated from manufacturing to software. So if there&#8217;s any translating to be done then I want to do it myself &#8212; or at least understand someone else&#8217;s translation of some of the processes sufficiently to trust the rest of their translations.</p>
<p>This, then, is some of what I&#8217;ve learnt about lean working so far, based on manufacturing and with my own projections onto software development. It comes with the caveats that it&#8217;s partial and not informed by 99.9% of the work <a href="http://www.poppendieck.com/">Mary and Tom Poppendieck</a>, the acknowledged leaders in the field of lean software development. But it is informed by my reading of two fabulous books: <a href="http://www.thetoyotaway.org/">The Toyota Way by Jeffrey K. Liker</a> (TTW), and <a href="http://www.amazon.co.uk/Lean-Thinking-Banish-Create-Corporation/dp/0743231643">Lean Thinking by James P. Womack and Daniel T. Jones</a> (LT). My interest in cars registers on no scale visible to the human eye, but learning about car production from these authors has been quite eye-opening.</p>
<p>In this post:</p>
<ul>
<li><a href="#common-sense">Lean challenges common sense</a>;</li>
<li><a href="#value">Lean is about producing value</a>;</li>
<li><a href="#value-stream">Lean is about the value stream</a>;</li>
<li><a href="#waste">Lean is all about eliminating waste</a>;</li>
<li><a href="#flow">Flow</a>;</li>
<li><a href="#pull">Pull</a>;</li>
<li><a href="#impossible">Lean promises the seemingly-impossible</a>.</li>
</ul>
<p><strong><a name="common-sense"></a>Lean challenges common sense</strong></p>
<p>The &#8220;common sense&#8221; way of putting a complicated thing together is to divide the manufacturing process into pieces (the engine, the chassis, the interior, the shell), create a specialist team for each area with their specialist tools, then have them work in a long production line. The result is a very long production line with each product moving from one specialist team to another as it&#8217;s built up from beginning to end. If you&#8217;re going to be <em>really</em> efficient then you might batch up all the products of one type and send them through in one go, then switch to another product of another type and send those through.</p>
<p>Lean says this is wrong. It&#8217;s not trying to be deliberately challenging or quirky or iconclastic just for the sake of making a name for its founders. Rather, it says this is wrong because it generates hidden problems. If we look at the very long production line then every one of the products on that line is in an incomplete state and hiding a multitude of problems. And if you were to implement that single-product-batching it would be even worse.</p>
<p>Lean says the most efficient way of doing something is to create it from beginning to end in a single pass. The single long production line transforms into many, much smaller, teams that are each responsible for the entirety of the production of each product.</p>
<p>This is counter-intuitive. Did we learn nothing from Henry Ford? Well, the evidence &#8212; and there is plenty of it &#8212; says otherwise.</p>
<p>But I&#8217;m getting ahead of myself. Let&#8217;s start at the beginning&#8230;</p>
<p><strong><a name="value"></a>Lean is about producing value</strong></p>
<p>This is pretty unstartling and almost uninspiring. But it turns out that what constitutes value is often hard to define. First you have to ask &#8220;value to whom?&#8221; Often in large organisations people are set targets of something which is not the main goal of the organisation, and this means you end up optimising your processes for the wrong thing. For example, the paint team might be targeted on how quickly they can paint a car body before moving onto the next one. But that would be misleading, and might explain why there&#8217;s a retouch team further up the line to cover up the paint problems discovered later. A car company is not about producing painted bodies, it&#8217;s about producing cars, and focusing a team on painting ensures they miss the big picture.</p>
<p>The Guardian software team produces software, so it&#8217;s easy to see that&#8217;s where our value lies and we should optimise our processes around software. But on second thoughts I&#8217;m not entirely sure&#8230; Perhaps value should be measured from the point of view of the end user. The better we provide news and information the greater the value of what we do, and merely producing software is no good if it doesn&#8217;t benefit the end user. And when we do produce software it&#8217;s of absolutely no value until it&#8217;s released and public.</p>
<p><a href="http://www.flickr.com/photos/carbonnyc/2311145896/"><img class="alignleft" title="Photo by CarbonNYC" src="http://farm3.static.flickr.com/2074/2311145896_2c2495caef_m_d.jpg" alt="" width="240" height="160" /></a><strong><a name="value-stream"></a>Lean is about the value stream</strong></p>
<p>Once you&#8217;ve identified the value you need to map the value stream.</p>
<p>Let&#8217;s suppose our value is in producing software that the end user finds useful. The value stream runs from the point of idea inception to the point the user can use it. Mapping the value stream is the painful process of tracking exactly what happens to what and who, and how long it takes. This is painful because you need to be very, very honest with yourself, and map with your eyes wide open. In particular you need to make sure you track all the times something goes back for rework, and all the times the thing just sits there waiting for something to happen to it. It&#8217;s also painful because it means managers have to understand first hand what their team have to deal with &#8212; anyone who thinks they are above that due to demands of time or priorities is going to find this first step very difficult.</p>
<p>A typical Agile process has a backlog of work cued up before the iteration or sprint, and then hopefully delivered at the end. But there will be large gaps between a story being defined and actual development. If an iteration is three weeks then on average there will be a gap of 1.5 weeks between definition and development starting, and if we insist on any story being up to five days&#8217; effort then a typical optimum scenario is that a single story is at least 60% non-work. This is relevant because&#8230;</p>
<p><a href="http://www.flickr.com/photos/macwagen/21333320/"><img class="alignright" title="Photo by macwagen" src="http://farm1.static.flickr.com/17/21333320_7943bb4925_m_d.jpg" alt="" width="240" height="240" /></a><strong><a name="waste"></a>Lean is all about eliminating waste</strong></p>
<p>The primary purpose of lean is to eliminate waste, and I&#8217;ve not put it first in the list of things I know because we first need to define value and then map the value stream. Once we&#8217;ve done that we can tackle the waste.</p>
<p>Waste comes in many forms &#8212; well, seven forms according to lean lore. In manufacturing the most significant of the seven is unused inventory, which means parts that are sitting around in racks and warehouses waiting to be used. Unused inventory not only takes up unnecessary space, it actually masks problems. Here are some examples:</p>
<ul>
<li>the acres of spare parts mask the fact that part production is not in sync with the demand;</li>
<li>the fact that different parts are overstocked by different levels means that it&#8217;s impossible to tell which ones are most and least over-produced;</li>
<li>if a part is only used long after it is produced then  quality problems cannot be captured and addressed in time &#8212; by the time the quality flaw is discovered there will be many similarly-flawed parts in circulation.</li>
</ul>
<p>Inventory in manufacturing seems similar to Agile stories that aren&#8217;t being worked on: they&#8217;ve been specified but are sitting around waiting to be picked off the warehouse rack. And when they&#8217;ve been developed they might be sitting around waiting to be released &#8212; after all, until it&#8217;s released it&#8217;s of no value to the customer.</p>
<p>This is where we return to the example above of a story that&#8217;s 60% non-work &#8212; 60% of its time is just sitting around waiting. The goal is to compress this down to an ideal 0%, but not just because we want to do things quicker. It&#8217;s because having sight of something from beginning to end, and not lose sight of it for a second. It&#8217;s because being able to focus on something means information isn&#8217;t lost, and everyone&#8217;s expertise can be brought to bear on it in one pass. If that were to happen then less would be needed to be written down on the story card because the team wouldn&#8217;t have to suffer context switching. They could also apply much greater creativity to their work, because they would see exactly why certain things were and were not being specified and contribute alternative or additional ideas without causing confusion or risking repetition.</p>
<p>This idea of taking something from beginning to end in a single pass is called&#8230;</p>
<p><a href="http://www.flickr.com/photos/spodzone/429728900/"><img class="alignleft" title="Photo by spodzone" src="http://farm1.static.flickr.com/145/429728900_33221dd690_m_d.jpg" alt="" width="240" height="197" /></a><strong><a name="flow"></a>Flow</strong></p>
<p>In manufacturing this is a big deal. It means rather than having your factory floor as a single production line you create small teams (&#8221;cells&#8221;) which are responsible for the entire production of each unit (car, lawnmower, etc). If you have huge lathes and paint machines and so on it&#8217;s a major change to rearrange the factory floor.</p>
<p>Not so difficult in software development, fortunately &#8212; we tend to just have desks and computers, though in any large organisation with centralised functions you always need to win the buy-in of other people.</p>
<p>However, flow comes with a new and serious responsibility for those involved: the cell as a whole is responsible for producing the goods, so they must work together to ensure regular and maximal output. Let me make that concrete&#8230;</p>
<p>At no time when I&#8217;ve been working with cross-functional teams (software developer, client-side developer, QA, etc) has there been the perfect balance of all roles; we could always have done with one more software developer, or an extra 0.2 of a QA, etc. Much of the time the imbalance is negligible (or quietly welcome), but sometimes it&#8217;s very noticeable.  And when a cell is working together on a single deliverable (the car, the lawnmower, the software feature) then it&#8217;s up to everyone to help each other. It&#8217;s no good the client-side developer producing more widgets to test if the QA can&#8217;t keep up. They need to ignore the traditional perceived boundaries created by job titles, reach across to others, and work together to regulate the output.</p>
<p>I said lean is about eliminating waste, and flow helps with that in a way hinted at earlier. Flow increases quality by allowing all participants to see the thing put together from being to end without interruption. This reduces hand-off time, reduces information loss, reduces relearning, and increases knowledge and ownership. The number of times an item needs to go back for rework is reduced, and if it does need to go back then the rework that&#8217;s needed is clear and therefore quicker.</p>
<p><a href="http://www.flickr.com/photos/infomatique/179150028/"><img class="alignright" title="Photo by infomatique" src="http://farm1.static.flickr.com/74/179150028_2c3d697ad3_d.jpg" alt="" width="500" height="333" /></a><strong><a name="pull"></a>Pull</strong></p>
<p>Meanwhile, all this work needs to come from somewhere and that&#8217;s what &#8220;pull&#8221; is all about. The principle of lean is to only do what&#8217;s needed, and that means only produce something that is a direct response of a specific request, and only when needed.</p>
<p>The distinction is clear in car manufacturing. A car company&#8217;s marketing department will devise a special offer on a particular configuration (these seats, those mirrors, any one of the following colour combinations) and the plant will have to manufacture a whole lot of those particular cars ahead of time, but only with a guess (rather than a certainty) about what the demand will be. In the lean world a car is only produced in response to a specific customer&#8217;s specific purchase: customer goes into showroom, customer orders car, order triggers build.</p>
<p>That&#8217;s how pull works in relation to delivering the product to the customer. But pull also works in relation to building the product inside the factory. The old method is to keep hundreds of each part in store; the lean method is that a part is only provided to the worker when they need it: when they&#8217;re running low they signal the need for more, and it&#8217;s provided for them. This triggers a chain right back potentially to the supplier of the part, ensuring they are always delivering just enough, no more and no less.</p>
<p>The parallel flawed system in the software world is the product backlog. (We&#8217;ll ignore the even worse scenario of waterfall&#8217;s detailed planning up front.) Work is prioritised ahead of the sprint and waits to be developed. Requirements can change, even in that gap between prioritisation and development. The consequences aren&#8217;t as terrible in the Agile world as in the waterfall world, but it still causes problems: it disrupts the team&#8217;s schedule and of course all the effort that went into the planning of the now-deprioritised story is wasted. Even if the requirements remain constant the gap between planning and developing mean knowledge is lost, or conversations need to be repeated, or the requirements turn into mini-waterfall-style requirements specifications.</p>
<p>The lean software alternative is to prioritise the next story only when the team is ready to work on the next story. That means while the team is developing the current feature they don&#8217;t have much certainty about what&#8217;s coming next. Like the worker in the car plant they have to signal slightly ahead of time that a new story needs to be worked out. Then the Scrum Master/business owner/internal customer needs to get something ready so that when they become available the team can all get together, thrash out the details, and set to work again.</p>
<p>As a manager I&#8217;m uncomfortable with this: I can no longer know what&#8217;s going into an iteration when the iteration starts. But the definition of value is not &#8220;what a manager&#8217;s comfortable with&#8221;. I will need to find other ways to ensure we can be accountable to the rest of the business, and they will need to be ways which are closely aligned with end user value &#8212; and that can only be a good thing.</p>
<p>The combination of flow and pull doesn&#8217;t mean the team is only working on one thing at a time. But it does mean that everyone has an equal balance of work at all times. So if Alf&#8217;s development work gets passed over to Betty&#8217;s testing then Alf and Betty need to make sure that she is expecting to finish her current piece of testing at pretty much the same time as Alf finishes his current piece of development and passes it over to her. Keeping that flow even is really important.</p>
<p><strong><a name="impossible"></a>Lean promises the seemingly-impossible</strong></p>
<p>Lean holds out the seemingly-impossible promise of increased productivity and increased quality. But here are some numbers from the literature:</p>
<ul>
<li>The Puget Sound Naval Shipyard, time to prepare a repair document. Originally: 97 days. After a lean workshop and taking action: 26 days. (TTW, p.103)</li>
<li>Lantech wrapping machinery, before and after lean. Production throughput time was 16 weeks, became 14 hours to 5 days. Delivered defects per machine was 8, became 0.8. Employee time per machine was 160 hours, became 80 hours. (LT, p.121)</li>
<li>Porsche, production of the 911, before and after lean. Initial stamping to final shipping was 6 weeks, became 5 days. Inventory held was 17 days&#8217; worth, became 4.2 days&#8217; worth. Errors from work on the assembly line dropped 55%. (LT p.213)</li>
</ul>
<p>I do have some concerns about lean software development, but they&#8217;re less about lean itself and more about bandwagon-jumping and doing things without really understanding the reasons. Regardless of that, it&#8217;s refreshing to find a new way of looking at what seem to be known problems, and making insights which you might not otherwise have found. It&#8217;s certainly something I&#8217;ll be spending quite a bit more time on.</p>
]]></content:encoded>
			<wfw:commentRss>http://niksilver.com/2009/09/10/a-few-things-i-know-about-lean/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Discovering JavaFX with the Guardian Open Platform</title>
		<link>http://niksilver.com/2009/08/31/discovering-javafx-with-the-guardian-open-platform/</link>
		<comments>http://niksilver.com/2009/08/31/discovering-javafx-with-the-guardian-open-platform/#comments</comments>
		<pubDate>Mon, 31 Aug 2009 20:02:33 +0000</pubDate>
		<dc:creator>Nik</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://niksilver.com/?p=499</guid>
		<description><![CDATA[I&#8217;ve spent a while learning JavaFX and developing an application which is now live. I&#8217;ve written about the application itself over on the Guardian&#8217;s Open Platform blog, because it makes use of the Open Platform&#8217;s Content API. But in this blog post I want to write less about the application and more about my experiences [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://niksilver.com/guardian-tag-bubbles/"><img class="alignright size-full wp-image-547" title="Guardian tag bubbles - click to see the application" src="http://niksilver.com/wp-content/screenshot-450.jpg" alt="Guardian tag bubbles - click to see the application" width="450" height="344" /></a>I&#8217;ve spent a while learning <a href="http://javafx.com/">JavaFX</a> and developing <a href="http://niksilver.com/guardian-tag-bubbles/">an application which is now live</a>. I&#8217;ve written about the application itself over <a href="http://www.guardian.co.uk/open-platform/blog/guardian-tag-bubbles">on the Guardian&#8217;s Open Platform blog</a>, because it makes use of the <a href="http://api.guardianapis.com/docs">Open Platform&#8217;s Content API</a>. But in this blog post I want to write less about the application and more about my experiences with the JavaFX technology.</p>
<p>In this article:</p>
<ul style="text-align: left;">
<li><a href="#what-is">What is JavaFX?</a></li>
<li><a href="#language">The language (good)</a></li>
<li><a href="#development">Development support (ugly)</a></li>
<li><a href="#user-experience">The user experience (bad)</a></li>
<li><a href="#conclusions">Conclusions and (inevitable) comparison with Flash</a></li>
</ul>
<p><strong><a name="what-is">What is JavaFX?</a></strong></p>
<p>JavaFX is probably best viewed as Sun&#8217;s answer to Flash, just as Silverlight is Microsoft&#8217;s response. So it&#8217;s a way of developing rich internet applications, or embedding fancy graphical thingies into web pages.</p>
<p>In some sense Sun might not have had any need for JavaFX. For example, take a look at <a href="http://www.wefeelfine.org/">We Feel Fine</a>. This is an astonishingly beautiful and imaginative application, and though it might look like it&#8217;s been written as Flash it&#8217;s actually a Java applet.</p>
<p>So why did Sun feel the need for adding to Java? <a href="http://blogs.sun.com/chrisoliver/entry/f3">According to JavaFX&#8217;s creator, Chris Oliver</a>, &#8220;its purpose was to explore making GUI programming easier in general&#8221;. In other words, the Java language is not really optimised for GUI development. In addition, the language needs a number of libraries. But all of this compiles down to Java bytecode and runs on the JVM, so JavaFX is really just Java with special add-ons to make graphical-oriented applications easier.</p>
<p><strong><a name="language">The language (good)</a></strong></p>
<p>The most obvious initial difference with JavaFX is the language that comes with it: JavaFX Script. As implausible as it sounds Sun has combined the best bits of Javascript and Java, and come up with something really rather wonderful. Consider the following code snippet from my application:</p>
<p><script src="http://gist.github.com/176551.js"></script> This creates a thin ring, which is actually just a circle with an outline and no fill. It starts off being invisible (opacity 0). The variable <code>ring</code> was declared on a previous line and is initialised here. I think this simple piece of code demonstrates a number of really nice things about the language.  First, the code <code>Circle { ... };</code>. This is a constructor, which I really like. It feels lightweight, like Javascript, and it&#8217;s got Javascript&#8217;s named properties. But like Java, JavaFX Script is a statically typed language, so <code>ring</code> is of type <code>Circle</code> and if I forget this later on in my development then the compiler will signal an error &#8212; that error won&#8217;t make it into production.  Second, the most exciting addition: the <code>bind</code> keyword. This means that the formula that follows will change dynamically when any of its component parts changes. So the x co-ordinate of the ring&#8217;s centre is bound to <code>bubble.x</code> &#8212; the <code>x</code> property of the variable <code>bubble</code>, which is the x co-ordinate of its centre. Similarly for the y co-ordinates. Now I know that the ring will always be centred on the bubble: whenever I update the bubble&#8217;s position the ring&#8217;s position will change, too. As one of our team&#8217;s developers explained when I started telling him about JavaFX binding (in fact he didn&#8217;t even let me finish my sentence) it&#8217;s just perfect for a GUI-oriented language where you want the view to track the model.  Another great feature of the language is its native handling of timelines. For example, here&#8217;s a piece of code I use to fade something in or out over a period of half a second:  <script src="http://gist.github.com/178386.js"></script></p>
<p>This constructs a <code>Timeline</code> with a single keyframe (at the half second point), and JavaFX is told that by that point the opacity needs to be at the target opacity. On calling the <code>play()</code> method it will interpolate the object&#8217;s opacity value so that it fades in or out accordingly. Needless to say, you can have several keyframes, and interpolate several values simultaneously or in sequence.</p>
<p>You can also ensure specific actions at certain points. Here is some code which fades a message out, changes it, and fades it back in again. This mixes native timeline syntax with more usual JavaFX syntax:</p>
<p><script src="http://gist.github.com/178389.js"></script></p>
<p>You might also notice from this that functions are treated as a first class object: another very handy feature of the language.</p>
<p><img class="alignright size-full wp-image-519" title="Eclipse development with JavaFX" src="http://niksilver.com/wp-content/eclipse-450.jpg" alt="Eclipse development with JavaFX" width="450" height="423" /><strong><a name="development"></a>Development support (ugly)</strong></p>
<p>As you might expect from a Java extension JavaFX integrates well with Java: you can use any Java class or object in your JavaFX code. In my case I wrote a small physics engine in Java and then accessed it via my JavaFX code; it was trivial to do.</p>
<p>On the other hand, JavaFX classes and methods can&#8217;t be accessed from Java without a lot of jumping through hoops (you have to create an interface in Java, implement it in JavaFX, and then you can reference that interface in your Java code). Also, Java generics aren&#8217;t available in JavaFX, which is a bit of loss.</p>
<p>The JavaFX platform itself is evolving. Version 1.0 was <a href="http://www.sun.com/aboutsun/media/features/2008-1204/index.jsp">released in December 2008</a>. <a href="http://java.sun.com/javafx/1/reference/releasenotes/javafx-sdk-release-notes-1-1.html">Version 1.1 came out in February 2009</a> and changed not only the underlying libraries, but also the language, so even your source code needed be revised. Most recently <a href="http://java.sun.com/javafx/1/reference/releasenotes/javafx-sdk-release-notes-1-2.html">version 1.2 came out in May 2009</a>, with similar changes and similar consequences.</p>
<p>Overall, these changes are a very good thing. Each new version contains not only extra front-end features (charting capabilities appeared in 1.2) but also performance enhancements and changes which ensure greater API consistency and extensibility. It&#8217;s interesting to see Sun take a different approach from Java: there the remit has been to preserve backwards compatibility at all costs, because there are so many applications deployed in it, but JavaFX is still in its infancy and breaking backwards compability is a significantly lesser evil than consistency and extensibility. Nevertheless, the feeling is of a platform that&#8217;s yet to mature, and my productivity was knocked back by one or two platform bugs whose equivalents just wouldn&#8217;t be be dreamt of in, say, Java. Still, JavaFX is clearly actively evolving, and most certainly for the better.</p>
<p>More disappointing is the poor IDE support. Inevitably, support for Sun&#8217;s NetBeans is being actively pursued alongside the evolving platform. But my first experience with JavaFX in NetBeans earlier in 2009 found it to be an imperfect environment, and I opted to switch to Eclipse &#8212; I decided I could live with more quirks in return for a more familiar working environment. And after <a href="http://niksilver.com/2009/05/06/solved-annoying-javafx-eclipse-plugin-problem/">some considerable hassle</a> I got it working.</p>
<p>But Eclipse support really is poor: there are <a href="http://piliq.com/javafx/?p=1075">a few annoyances documented over on pliq.com</a>, and I found a few more. Overall it meant that even typing code was a bit of a minefield, and that&#8217;s without refactoring support.</p>
<p>There is also the inevitable problem with unit testing graphically-oriented applications. I admit I resorted to the old fashioned develop-debug cycle, which was a little disappointing and inevitably frustrating. But I can&#8217;t quite conceive of a unit test framework for a platform in which there is so much visually-oriented code. I suspect it would mean a slightly different approach to coding. My brain can&#8217;t quite work out what, though.</p>
<p><img class="alignright size-full wp-image-521" title="Swirly Java preloader" src="http://niksilver.com/wp-content/java-logo-tunnel.jpg" alt="Swirly Java preloader" width="450" height="450" /><strong><a name="user-experience"></a>The user experience (bad)</strong></p>
<p>So developers have problems. Let&#8217;s pretend not to worry about them; their entire lives revolve around solving problems so they&#8217;ll find ways to solve those. Much more important is the experience of end users, and with <a href="http://www.sun.com/aboutsun/pr/2008-12/sunflash.20081204.1.xml">Sun boasting that Java runs on &#8220;800 million desktops&#8221;</a> (isn&#8217;t that more than the number of atoms in the universe&#8230;?) those people&#8217;s experience is paramount.</p>
<p>Well, if you&#8217;re running the right environment then the JavaFX experience isn&#8217;t at all bad. Unfortunately you&#8217;re very unlikely to be running in the right environment&#8230;</p>
<p>Sun have done an excellent job in making it <a href="http://javafx.com/docs/tutorials/deploy-applet/">simple and reliable to embed your applet into a web page</a>: once you&#8217;ve configured your code you only need some very simple and clear JavaScript in your page. This JavaScript takes care of platform versioning, prompts the user for an update if necessary, shows a standard &#8220;Loading&#8230;&#8221; animation, and downloads and runs your code.</p>
<p>In the circumstances this clever; but the circumstances are far from ideal. For example, when did you last update your JVM? Probably not recently enough to have the latest JavaFX release, so your first use of a 1.2 application is going to prompt you for a very large download of the JavaFX 1.2 runtime. You&#8217;re also going to need to run a launcher applet from Sun, which then prompts you with a popup requesting you trust software from Sun. Anyone who wants a seamless user experience is going to take one look at JavaFX and run a mile.</p>
<p>Even if you&#8217;ve already got the 1.2 runtime and launcher applet the JavaScript embed code itself references a script on Sun&#8217;s website. That means your web page is always relying on Sun&#8217;s website being up, running and performant in order to load. For code on my own little blog that&#8217;s fine &#8212; Sun&#8217;s uptime will always be more reliable than mine. But if this is to be adopted by bigger players, such as my own employer, the Guardian, then the sysadmins responsible for page delivery time and reliability won&#8217;t be happy with another third party dependency.</p>
<p>And if you&#8217;re not impressed with that, then I hope you&#8217;re not an Apple user. Java support for Macs has long lagged behind that of Windows machines (I recall the Java 5 SDK came out over a year after the Windows release) and this shows again with JavaFX. In theory JavaFX runs on a Mac. In practice it&#8217;s a world of pain: it&#8217;s slow and rendering features such as antialiasing are dire. Experiments show that if you&#8217;re running a very high end Mac then it&#8217;s half-way approaching decent, but not actually decent.</p>
<p>As someone who spent a long time developing this on a Windows machine it was very disspiriting to see the fruits of my labour reduced to a syrupy judder when I wanted to demo it to someone with a Mac.</p>
<p><a href="http://www.flickr.com/photos/leaf4/2873452813/"><img class="alignright size-full wp-image-523" title="Dstandley chasm nt by *watersprite" src="http://niksilver.com/wp-content/chasm_by_watersprite.jpg" alt="Dstandley chasm nt by *watersprite" width="375" height="500" /></a><strong><a name="conclusions"></a>Conclusions and (inevitable) comparison with Flash</strong></p>
<p>If Flash didn&#8217;t exist then my view of JavaFX would be different. But Flash does exist, it&#8217;s the dominant RIA platform &#8212; certainly within web pages &#8212; and so any view of JavaFX has to be assessed in that context.</p>
<p>I find it very amusing that Adobe and Sun have eyed up each others&#8217; territory and each wanted a piece of the other&#8217;s action. Adobe has wanted to move out of the web page and onto the desktop, so they&#8217;ve introduced AIR, while ActionScript has gone all serious, ditching the JavaScript-like version 2 for the Java-like version 3, and encouraging <a href="http://www.adobe.com/devnet/actionscript/articles/ora_as3_design_patterns.html">a cavalcade of grown-up design patterns</a>. Meanwhile Sun has left behind that heavyweight baggage of the Java programming language and gone all JavaScripty, with easy constructor syntax, type inference and treating functions as first-class objects. They&#8217;ve each adopted the other&#8217;s clothes, but changing clothes is only part of what&#8217;s needed.</p>
<p>For my money JavaFX Script is the superior language. It&#8217;s designed for graphics creation and management, while ActionScript looks like Java before generics. The code I&#8217;ve found online to <a href="http://snipplr.com/view/10626/draw-rectangle/">draw shapes in ActionScript</a> brings back nightmares from the early days of writing Java applets: get a graphics object, set some properties, start the filling, do the drawing, stop the filling&#8230; it&#8217;s unintuitive, uphill work. (What the hell is a &#8220;graphics object&#8221;, anyway?) With JavaFX you use a constructor like the one shown above.</p>
<p>Mind you, there&#8217;s a reason for this difference. Flash development is predicated on the use of some really well-developed proprietary, commercial tools to do the job: Flash Professional for designers and Flex Builder for application developers. Looking for an ActionScript Hello World program produces some entertaining results. <a href="http://www.dreamincode.net/forums/showtopic14745.htm">Here&#8217;s one conversation</a> in which the request for a Hello World app is met with incomprehension: can&#8217;t you just drop the text on the stage? asks one responder, who misses the point of a programming tutorial; I suppose you could use the trace function to print the text out, suggests someone else. Here&#8217;s <a href="http://www.flashdev.ca/article/hello-world/">an ActionScript Hello World tutorial</a> which includes the instruction &#8220;Select the Text Tool&#8230;&#8221;. There <em>is</em> <a href="http://www.payne.org/index.php/ActionScript_HelloWorld">a purely programmatic tutorial</a> which Andrew Payne created because &#8220;The other examples I could find all used Adobe&#8217;s paid tools, Flash Designer, etc.&#8221; &#8212; but that was written only in January 2009.</p>
<p>So Flash is deeply embedded into design houses, which have come to rely on some very mature tools in which programming is secondary, particularly when it comes to asset creation. And while this might make more traditional developers smile it does demonstrate the cultural chasm that seperates Flash from JavaFX. Designers demand a first rate user experience, or else their work won&#8217;t sell itself. That means Flash execution doesn&#8217;t suffer the popup bombardment of JavaFX. And it means Flash runs just as well on a Mac as on a PC. And it means Flash developers have become obsessed with performance in a way that JavaFX developers can&#8217;t even imagine, so there&#8217;s an entire mindset which has yet to be addressed. And it means component support in JavaFX is lacking where in Flash it&#8217;s commonplace. One example of this is the lack of a JavaFX preloader: with Flash it&#8217;s standard to have a progress bar as the application loads; with JavaFX the standard preloader is an animated image that continues to animate even if there&#8217;s a background error, and I can&#8217;t find any code which shows a progress bar. Another is the ease in which one Flash swf can load another; again, not readily possible in JavaFX.</p>
<p>Designers would also bring a huge benefit to JavaFX beyond setting high bars for user experience: they are the people who will make JavaFX applications look beautiful, and so attract others&#8217; interest, and so start a rolling snowball of adoption. I think my own application is quite pretty, but it was quite different in the early stages. It was only when I studied and tried to emulate the work of the Guardian&#8217;s professional designers that it started to come alive: circles were a friendlier shape than rounded rectangles, the palette of guardian.co.uk was infinitely prettier than my original palette of browns, and so on.</p>
<p>Sun is <a href="http://forums.sun.com/thread.jspa?threadID=5324114">not unaware that this cultural gap needs to be bridged</a>. That will be one reason why they&#8217;ve created <a href="http://javafx.com/docs/gettingstarted/production_suite/">JavaFX Production Suite</a>. But years of cultural awareness and workflow embedded into design studios&#8217; daily operations will be very, very hard to reverse.</p>
<p>So my own thoughts about JavaFX reflect my own experience with it. My development experience was very positive: it&#8217;s a great language and a mediocre development environment with many teething troubles which will no doubt be ironed out over time. I had terrific fun with it, and getting fast results was very rewarding. But beyond the development experience the future seems more difficult. The user experience is very poor, with JavaFX throwing up barriers in front of the non-technical end user where Flash is invisible. And the leap from niche developer interest to general acceptance by design studios is just enormous.</p>
<p>Making JavaFX a real success is huge job for Sun. They&#8217;ve got off to an excellent start, with a language and runtime environment that allow for very quick development. But that, alas, is the easy bit compared to what lies ahead. I do wish them the very best of luck.</p>
]]></content:encoded>
			<wfw:commentRss>http://niksilver.com/2009/08/31/discovering-javafx-with-the-guardian-open-platform/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Never mind Google, this is for you</title>
		<link>http://niksilver.com/2009/08/23/never-mind-google-this-is-for-you/</link>
		<comments>http://niksilver.com/2009/08/23/never-mind-google-this-is-for-you/#comments</comments>
		<pubDate>Sun, 23 Aug 2009 20:20:38 +0000</pubDate>
		<dc:creator>Nik</dc:creator>
				<category><![CDATA[General management]]></category>

		<guid isPermaLink="false">http://niksilver.com/?p=451</guid>
		<description><![CDATA[My public service for today is that of matchmaker, and specifically finding a match for the many online commentators who have a start-up-shaped solution for newspapers&#8217; current crisis of faith and future.
Over on Mashable, Vadim Lavrusik has a useful round-up of &#8220;12 things newspapers should do to survive&#8221;. It&#8217;s good to see a lot of [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-466" title="Even the greatest ideas aren't readily applicable" src="http://niksilver.com/wp-content/gutenberg-mayday-youtube.jpg" alt="Even the greatest ideas aren't readily applicable" width="450" height="337" />My public service for today is that of matchmaker, and specifically finding a match for the many online commentators who have a start-up-shaped solution for newspapers&#8217; current crisis of faith and future.</p>
<p>Over on <a href="http://mashable.com">Mashable</a>, <a href="http://lavrusik.com/">Vadim Lavrusik</a> has a useful round-up of <a href="http://mashable.com/2009/08/14/newspaper-survival/">&#8220;12 things newspapers should do to survive&#8221;</a>. It&#8217;s good to see a lot of thinking brought together, and nice that <a href="http://www.guardian.co.uk/media/pda/2009/jul/31/hacking-opensource1">the Guardian&#8217;s last Hack Day</a> was noted with approval. But if there&#8217;s one thing that rankles me it&#8217;s the seemingly glib assertion that newspaper companies should emulate Internet start-ups, and which features at number six on Vadim&#8217;s list. He says that &#8220;creating a startup-like environment that encourages innovation in the newsroom&#8221; is one way forward, and cites three sources.</p>
<p>First, start-up veteran <a href="http://scottporad.com/2009/05/06/startupcorporate/">Scott Porad on the problem</a>:</p>
<blockquote><p>Over an 8 year period, my last startup grew from a startup into a corporate environment with several hundred employees and layers of management.  For the last 5 or 6 years of that I felt like we spent 80% of our time planning and only 20% of our time doing stuff. [...] On the other hand, my current startup is the opposite — we probably spend 5% of our time planning and 95% doing.</p></blockquote>
<p>Then <a href="http://www.journalism20.com/blog/2009/06/10/how-to-bring-a-startup-culture-into-the-newsroom/">Mike Briggs on how a newsroom can generate some start-up-like energy</a>. And finally <a href="http://ryansholin.com/">Ryan Sholin</a> of <a href="http://www.publish2.com/">Publish2</a>, who thinks that <a href="http://ryansholin.com/2007/07/18/rearranging-the-lipstick-on-a-sinking-pig/">you should &#8220;Make your newspaper function like a start-up.&#8221;</a></p>
<p><a href="http://ryansholin.com/2007/07/18/rearranging-the-lipstick-on-a-sinking-pig/"></a>Somehow start-ups seem to be the panacea: not only do they make good stories, but it&#8217;s so easy to spot the successful ones: for instance <a href="http://www.google.com/intl/en/corporate/history.html">Google started in a garage</a>, and <a href="http://www.fundinguniverse.com/company-histories/Microsoft-Corporation-Company-History.html">Microsoft was started by just a couple of people</a>. And let&#8217;s not forget the <a href="http://www.flickr.com/photos/stabilo-boss/93136022/">many, many start-ups from more recent times</a>. You probably remember Kevin Rose&#8217;s Pownce.com, which was successfully bought by Six Apart, which <a href="http://www.sixapart.com/pownce/">loved it to death</a>; or tr.im, which was so successful at making URLs short, <a href="http://mashable.com/2009/08/09/trim-shuts-down/">they&#8217;ve practically made them vanish</a>. And let&#8217;s not forget the current media darling, Twitter, which is <a href="http://www.theregister.co.uk/2009/02/14/web20rhea_funding/">generating so much profit</a> they&#8217;ve run out of positive numbers to express it and have had to start using negative ones. Meg Pickard has <a href="http://blog.thoughtpick.com/2009/06/top-10-web-startup-business-screwups.html">a more complete and up-to-date history</a> for those of us with selective memory.</p>
<p>But that&#8217;s not to say there&#8217;s nothing there; a typical start-up has the kind of drive and energy in its half dozen employees that any corporate CEO would love to have reproduced across their 1,000-plus workforce. I&#8217;ve written before on about <a href="http://niksilver.com/2009/01/26/how-news-organisations-can-harness-startup-power/">injecting start-up goodness into the newsroom</a>, so you can go there for that. Mark Briggs does acknowledge all that is easier said than done.</p>
<p>Instead of me explaining why, let me introduce the start-up standard-bearers to the new <a href="http://www.creativedisruption.net/">blog from Simon Waldman</a>. This extract from <a href="http://www.creativedisruption.net/2009/08/welcome-to-creative-disruption/">his first entry</a> is worth quoting at length. Although his examples are older, rather than new, internet companies the principle is the same, being about &#8220;the general ways of the online world&#8221;:</p>
<blockquote><p>It has always struck me that there has been a huge amount written about Google, Amazon, Wikipedia and eBay and the general ways of the online world. Some of this is brilliant, and genuinely insightful, some of it is frothy digital euphoria.</p>
<p>There has also been plenty written about what is wrong with newspapers, broadcasters, Britannica, record labels etc, and what they <em>should or could</em> have done; but there have been very few books that I’ve come across that take a systematic look at the what has happened to these businesses – and what they have done that has actually worked, often in the most trying of circumstances.</p>
<p>The point is – businesses that have to deal with the internet are fundamentally different to those that are the products of it. It is great to look at Google; great to admire Amazon, and Wikipedia is as fascinating a social and creative phenomena as you fan find. But if you are running a business that is profoundly structurally challenged, you share very little of their corporate DNA.</p>
<p>Yes, everyone needs to know about their world, but thinking you can just graft on the bits you like from them in a hope that you will ‘get digital’ is no more likely to succeed than putting on a flashing bow tie and hoping everyone thinks you have a sense of humour.</p></blockquote>
<p>Simon is writing a book for the rest of us, who need to listen to those with ideas about how to save our challenged industry, and who also have the responsibility, along with our colleagues, to actually do the saving. The blog is the online counterpart to that book, which will be called Creative Disruption. As you can see from the extract above, it&#8217;s less &#8220;What would Google do?&#8221; and more &#8220;Never mind Google, this is for you.&#8221;</p>
<p>In ten or twenty years we&#8217;ll be able to look back and see which ideas from who were the wisest. For now I&#8217;m going to be a paying a lot of attention to anyone who recognises the fundamental DNA difference that Simon describes, and who deals with it.</p>
]]></content:encoded>
			<wfw:commentRss>http://niksilver.com/2009/08/23/never-mind-google-this-is-for-you/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Guardian Hack Day 2</title>
		<link>http://niksilver.com/2009/08/02/guardian-hack-day-2/</link>
		<comments>http://niksilver.com/2009/08/02/guardian-hack-day-2/#comments</comments>
		<pubDate>Sun, 02 Aug 2009 17:21:14 +0000</pubDate>
		<dc:creator>Nik</dc:creator>
				<category><![CDATA[Guardian.co.uk]]></category>

		<guid isPermaLink="false">http://niksilver.com/?p=443</guid>
		<description><![CDATA[There isn&#8217;t too much I can add to Kevin Anderson&#8217;s extensive coverage of Guardian Hack Day 2 [1, 2, 3, 4, 5, 6]. But here are a couple of things&#8230;
First, huge congratulations to Matt McAlister and the whole organising team. Hack Day 1 set the bar pretty high, but the team managed to meet that, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/pigsaw/3781358484/in/set-72157621795147169"><img class="alignright" title="CP Scott looks on approvingly" src="http://farm4.static.flickr.com/3573/3781358484_da1fc3161d.jpg" alt="" width="500" height="333" /></a>There isn&#8217;t too much I can add to <a href="http://www.guardian.co.uk/profile/kevinanderson">Kevin Anderson</a>&#8217;s extensive coverage of Guardian Hack Day 2 [<a href="http://www.guardian.co.uk/media/pda/2009/jul/31/guardianhackday-arduino-webanalytics">1</a>, <a href="http://www.guardian.co.uk/media/pda/2009/jul/31/hacking-scienceofclimatechange">2</a>, <a href="http://www.guardian.co.uk/media/pda/2009/jul/31/amazon-hacking">3</a>, <a href="http://www.guardian.co.uk/media/pda/2009/jul/31/hacking-opensource">4</a>, <a href="http://www.guardian.co.uk/media/pda/2009/jul/31/hacking-opensource1">5</a>, <a href="http://www.guardian.co.uk/media/pda/2009/jul/31/hacking-opensource2">6</a>]. But here are a couple of things&#8230;</p>
<p>First, huge congratulations to <a href="http://www.mattmcalister.com/">Matt McAlister</a> and the whole organising team. <a href="http://www.guardian.co.uk/global/insideguardian/2008/nov/18/guardian-hack-day-results">Hack Day 1</a> set the bar pretty high, but the team managed to meet that, if not surpass it.</p>
<p>Second, a terrific change from the last one was that so many people seemed to be sharing skills and ideas  across organisations. People from <a href="http://tinker.it/">Tinker.it</a>, the BBC, <a href="http://inkling-software.co.uk/">Inkling</a>, Google, <a href="http://www.talis.com/">Talis</a>, Omniture, <a href="http://www.rabbitmq.com/">Rabbit</a>, Guardian and elsewhere all mixed it up to produce some really innovative stuff. Added to this, there was a healthy number of people who don&#8217;t claim to be programmers creating some very interesting hacks, thanks in part to Simon Willison&#8217;s list of <a href="http://simonwillison.net/2009/Jul/28/tools/">Hack Day tools for non-developers</a>.</p>
<p>So among other things we got a tracker of the most controversial articles, a page of search terms that people are using to find guardian.co.uk &#8212; live &#8212;  a social network for dead people, and much, much more.</p>
<p>The photo here shows Matt under the gaze of the Guardian&#8217;s inspirational editor CP Scott &#8212; or rather a bust of him. I&#8217;ve put this photo and others in <a href="http://www.flickr.com/groups/1189600@N21/">a Flickr photo pool</a>. If you were there, please feel free to contribute.</p>
]]></content:encoded>
			<wfw:commentRss>http://niksilver.com/2009/08/02/guardian-hack-day-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Solved: Annoying JavaFX Eclipse plugin problem</title>
		<link>http://niksilver.com/2009/05/06/solved-annoying-javafx-eclipse-plugin-problem/</link>
		<comments>http://niksilver.com/2009/05/06/solved-annoying-javafx-eclipse-plugin-problem/#comments</comments>
		<pubDate>Wed, 06 May 2009 22:51:51 +0000</pubDate>
		<dc:creator>Nik</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://niksilver.com/?p=411</guid>
		<description><![CDATA[[I don't usually post very technical material here, and apologies if you're after higher level discussion, but it seemed the most appropriate place for this.]
I was quite thrilled last night to have solved a really frustrating bug in a piece of open source software. First the background, then the problem and finally, for the record, [...]]]></description>
			<content:encoded><![CDATA[<p><em>[I don't usually post very technical material here, and apologies if you're after higher level discussion, but it seemed the most appropriate place for this.]</em></p>
<p>I was quite thrilled last night to have solved a really frustrating bug in a piece of open source software. First the background, then the problem and finally, for the record, the solution.</p>
<p><strong>Background</strong></p>
<p>I&#8217;ve been messing around programming with with <a href="http://javafx.com/samples/">JavaFX</a> and would have liked to have used my favourite IDE, Eclipse.</p>
<p>Unfortunately JavaFX has a bit of a poor pedigree. It&#8217;s <a href="http://www.theregister.co.uk/2008/12/06/sun_javafx_launch/">a me-too product</a> being Sun&#8217;s response to Adobe Flash and <a href="http://www.adobe.com/products/air/">AIR</a>, just as <a href="http://silverlight.net/">Silverlight is Microsoft&#8217;s response</a>. It also doesn&#8217;t seem to have been given the heavy backing and attention within Sun that anyone would need going up against the incumbent RIA platform. I see this because (a) <a href="http://java.sun.com/javafx/1/reference/releasenotes/javafx-sdk-release-notes-1-1.html">the language changed slightly</a> after the first official release (1.0) to the next &#8220;minor&#8221; version, which smacks of carelessness (or pressures on dates of public announcements); (b) JavaFX application loading seems to be a variable experience, and certainly not as slick as Flash&#8217;s; (c) patchy documentation &#8212; for your reading pleasure I quote here <a href="http://openjfx.java.sun.com/current-build/doc/reference/ch10s01.html">Chapter 10 of the JavaFX language reference</a> in its entirety:</p>
<blockquote><p><strong>Chapter 10. Animation</strong></p>
<p><strong>Table of contents</strong></p>
<p><em>[To do: write chapter]</em></p></blockquote>
<p>Added to that, <a href="http://www.guardian.co.uk/business/2009/apr/20/oracle-buys-sun-microsystems">Oracle has just bought Sun</a>. Who knows what the new owners will think of this project&#8230; it&#8217;s a long way from their core business of providing large scale middleware solutions. It&#8217;s a shame, because JavaFX has a lot going for it, and as far as I can tell stands up well technically to Flash; but it needs investment in giving it a lot of polish if it&#8217;s to demonstrate this widely. Certainly there doesn&#8217;t seem to be a fully-featured IDE readily available.</p>
<p><strong>Problem</strong></p>
<p>However, a small team of independent developers wrote <a href="http://kenai.com/projects/eplugin">an open source Eclipse plugin</a> which was released in December 2008, but the last commit was on 13 January 2009. Since that time <a href="http://java.sun.com/javafx/1/reference/releasenotes/javafx-sdk-release-notes-1-1.html">JavaFX 1.1 was released</a> in February 2009 which doesn&#8217;t play nicely with the Eclipse plugin, but no word from the maintainers on any new releases. It seems to be dormant.</p>
<p>The problem I (and many before me) found is <a href="http://kenai.com/bugzilla/show_bug.cgi?id=206">bug 206, documented in bugzilla</a>: when writing seemingly innocuous code the incremental compiler reports</p>
<blockquote><p>incompatible types found   : Integer required: com.sun.javafx.runtime.location.FloatVariable</p></blockquote>
<p>Which doesn&#8217;t read very well but I think means &#8220;I found an integer but requred a float&#8221;. The error is reported on about one line in five, swamping genuine error messages, and no amount of bracketing, casting or whatever seems to help. It&#8217;s clearly <a href="http://kenai.com/projects/eplugin/forums/forum/topics/423-Incompatible-types-found-integer-required">frustrated a lot of people</a> and it certainly made me rather disappointed with the whole JavaFX experience.</p>
<p>Anyway, inspired by insights from some of those similarly affected, and after a lot of semi-random hacking and poking I found a solution, which at least works for me.</p>
<p><strong>Solution</strong></p>
<p>The solution is to build the plugin yourself from the source, and use that. <a href="http://kenai.com/projects/eplugin/pages/BuildFromSources">The original documentation for this</a> is a little terse (well, I struggled a couple of times) so here&#8217;s an augmented version:</p>
<p><em><span style="text-decoration: underline;">How to build the plugins from sources</span></em></p>
<p><span style="text-decoration: underline;">1. Requirements</span></p>
<ul>
<li>Install the Eclipse IDE for Java EE Developers from <a href="http://www.eclipse.org/downloads/">http://www.eclipse.org/downloads/</a>.</li>
<li>Install the DeltaPack from <a href="http://update.eclipse.org/downloads/drops/R-3.4-200806172000/index.php#DeltaPack">http://update.eclipse.org/downloads/drops/R-3.4-200806172000/index.php#DeltaPack</a>. (I have no idea what this DeltaPack is, but I think it&#8217;s used in this instance as libraries against which the plugin sources are compiled. I unzipped the download and dropped the files into my Eclipse application directory as appropriate: features in the  <em>features</em> directory, plugins in the <em>plugins</em> directory.)</li>
<li><a href="http://java.sun.com/javafx/downloads/">Get the JavaFX SDK</a> from Sun in the form of a zip file. Since it&#8217;s currently only available as an executable, you need to download and  install that in the usual way (if you haven&#8217;t done so already) and then zip it up into a file. I called my file <em>javafx-sdk1.1.zip</em> (though I&#8217;ve actually got version 1.1.1 &#8212; using only major and minor seems to be the convention).</li>
</ul>
<p><span style="text-decoration: underline;">2. Get the plugin source files</span></p>
<ul>
<li>On the Unix commandline the incantation is <code>svn co https://kenai.com/svn/eplugin~subversion/trunk eplugin</code> (though I&#8217;ve not checked this).</li>
<li>Alternatively on Windows you can use <a href="http://tortoisesvn.net/">TortoiseSVN</a>.</li>
<li>However my Eclipse was set up to use subversion so I imported the source directly into Eclipse:</li>
<li>Import the files into Eclipse. In Eclipse I did <em>File</em> &gt; <em>New</em> &gt; <em>Project</em>&#8230; &gt; <em>SVN</em> &gt; <em>Checkout Projects From SVN</em>. Then use the repository location <em>https://kenai.com/svn/eplugin~subversion/trunk</em> and get the entire contents. I had to accept a few certificates (temporarily) along the way. One time I tried this the new Eclipse project showed lots of Java errors (libraries not found), but they didn&#8217;t seem to cause a problem.</li>
</ul>
<p><span style="text-decoration: underline;">3. Amend and then run the build</span></p>
<p>Running the build that came with the source files didn&#8217;t work, and I needed to amend the Ant <em>build.xml</em> file. I had to change the original line</p>
<blockquote><p><code>&lt;property name="javafx.sdk.root.dir" value="javafx-sdk1.0"/&gt;</code></p></blockquote>
<p>to</p>
<blockquote><p><code>&lt;property name="javafx.sdk.root.dir" value="javafx-sdk1.1"/&gt;</code></p></blockquote>
<p>That is,  I had to change the javafx.sdk.root.dir variable to match the name of my JavaFX SDK zip file, but without <em>.zip</em> bit.</p>
<p>Now you can run the build from within Eclipse. To do this I did: Right click the <em>build.xml</em> file in the Eclipse package navigator, choose <em>Run As &gt; Ant Build&#8230;</em> Go to the <em>Main</em> tab, then the <em>Arguments</em> box and fill in these arguments</p>
<blockquote><p><code>-DeclipseDir=&lt;path&gt; -Djavafx.sdk.build.url=&lt;url_to_zip&gt; clean build-windows [build-macosx] [build-linux]</code></p></blockquote>
<p>Note that you need one file path and one URL, and you need to name the operating system you&#8217;re building for. This took a few minutes to run, but it completed without problems.</p>
<p>If you&#8217;re not doing this from inside Eclipse you can use Ant directly.</p>
<p><span style="text-decoration: underline;">4. Install the results</span></p>
<p>The result of this is in a new <em>dist</em> directory. Here you will find a few files, but the one you&#8217;re interested in is the .zip file. In my case it was called <em>com.sun.javafx.eclipse.feature-win32-win32-x86-1.0.1.zip</em>. This is an Eclipse plugin. Unzip it and drop the contents into the relevant places in your Eclipse install directory: features in <em>features</em>, plugins in <em>plugins</em>.</p>
<p>I hope you find this goes relatively smoothly.</p>
<p><strong>Why did this happen?</strong></p>
<p>Honestly, you think I know? My guess is that the plugin was built with JavaFX 1.0.x embedded, and those of us with JavaFX 1.1.x get compatibility errors; recompiling from sources ensures your new plugin in built with your current JavaFX SDK. If so, that&#8217;s a pain, as it may mean you&#8217;ll need to do all this again when the next JavaFX SDK comes out. But, hey, you&#8217;ll get a few hours of happy coding done in the meantime.</p>
]]></content:encoded>
			<wfw:commentRss>http://niksilver.com/2009/05/06/solved-annoying-javafx-eclipse-plugin-problem/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>QCon London 2009: A few lessons learned</title>
		<link>http://niksilver.com/2009/03/18/qcon-london-2009-a-few-lessons-learned/</link>
		<comments>http://niksilver.com/2009/03/18/qcon-london-2009-a-few-lessons-learned/#comments</comments>
		<pubDate>Wed, 18 Mar 2009 21:10:09 +0000</pubDate>
		<dc:creator>Nik</dc:creator>
				<category><![CDATA[Software design]]></category>

		<guid isPermaLink="false">http://niksilver.com/?p=394</guid>
		<description><![CDATA[Last week I attended QCon London 2009, which was characteristically excellent &#8212; and I know my colleagues who attended thought the same. Most excitingly this year two of the Guardian development team were invited to give presentations on our most recent work building a large content management system for a very large website. I don&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/pigsaw/3360511363/"><img class="alignright" title="Mat Wall explains content and tags" src="http://farm4.static.flickr.com/3655/3360511363_a165409981.jpg" alt="" width="500" height="375" /></a>Last week I attended <a href="http://qconlondon.com/">QCon London 2009</a>, which was characteristically excellent &#8212; and I know my colleagues who attended thought the same. Most excitingly this year two of the Guardian development team were invited to give presentations on our most recent work building a large content management system for a very large website. I don&#8217;t mind admitting that I learnt one or two things from attending those talks; I also found <a href="http://qconlondon.com/london-2009/presentation/Forging+ahead+-+Scaling+the+BBC+into+Web%2F2.0">the presentation on the BBC&#8217;s architecture</a> fascinating. Here are some of the things I took away&#8230;</p>
<p><strong>Mat Wall on <em>The evolving Guardian.co.uk architecture</em></strong></p>
<p>Mat&#8217;s presentation was structured around rebuilding guardian.co.uk over many months and dealing with the scalability issues that were presented at various stages. Some of the many insights were presented in a deliberately provocative way, such as this one:</p>
<blockquote><p>Developers try to complicate things; architects simplify them.</p></blockquote>
<p>I&#8217;m not entirely sure about the first part, but it&#8217;s certainly true that over-engineering is a much more common trait than under-engineering. The second part, though, is very important. It&#8217;s something I&#8217;ve always known, but never quite in that pithy way. It&#8217;s a useful phrase to tuck away for future reference.</p>
<p>And if you think Mat wasn&#8217;t feeling too good towards developers, don&#8217;t worry, because he also put up a slide saying</p>
<blockquote><p>Developers are better than architects.</p></blockquote>
<p>The message behind this is that it&#8217;s the developers who are working on the code each day &#8212; they know what&#8217;s possible and what not, and what&#8217;s reasonable and what&#8217;s not. So it&#8217;s important to trust them when they say they can or can&#8217;t do something.</p>
<p><strong>Dirk-Willem van Gulik on <em>Forging ahead &#8211; Scaling the BBC into Web/2.0</em></strong></p>
<p>Dirk-Willem talked about the programme to re-engineer the BBC websites to enable greater scalability and dynamic content. In an organisation the size and complexity of the BBC you need to spend more time thinking about people than the technology. One of his first slides underlined this by presenting the seven layers of <a href="http://en.wikipedia.org/wiki/OSI_model">the OSI model</a> (physical up to application) and then said</p>
<blockquote><p>But most people forget there are two layers on top of that: level 8, the organisation, and level 9, its goals and objectives.</p></blockquote>
<p>From that point on he kept referring to something being &#8220;an L8 problem&#8221; or &#8220;a level 9 issue&#8221;. It was a powerful reminder that technology work is about much, much more than technology.</p>
<p>Another great insight was how much they have chosen to use the simplest of standard internet protocols to join various layers and services within their network &#8212; even when those layers and services are organisation- and application-specific. This ties back to Mat&#8217;s point about an architect&#8217;s job being one of simplification.</p>
<p><strong>Phil Wills on <em>Rebuilding guardian.co.uk with DDD</em></strong></p>
<p>Phil talked about the role domain driven design has played for us. He also pointed out various lessons that there were learnt along the way, such as the importance of value objects, and the fact that &#8220;database tables are not the model &#8212; I don&#8217;t know how many times I can say this.&#8221;</p>
<p>But it was only a day or two after his presentation that I was struck by a remarkable thing: Phil referred so many times to specific members of the team, and talked about contributions they had made to the software design process, even though the people he was talking about were generally not software developers. He put their pictures up on the screen, he named them, he told stories about how they had shaped key ideas. This was an important reminder to me that being close to our users and stakeholders on a day-to-day basis is incredibly important to the health of our software.</p>
<p><strong>Walking away</strong></p>
<p>I didn&#8217;t get to see as much at QCon as I&#8217;d like to have done, although I dare say most people will say that, even if they went to as many sessions as was physically possible. But what I did see was fascinating and thought-provoking, even when it came from people I work with every day.</p>
]]></content:encoded>
			<wfw:commentRss>http://niksilver.com/2009/03/18/qcon-london-2009-a-few-lessons-learned/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
