<?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>Grails Rocks &#187; Programming links</title>
	<atom:link href="http://www.anyware.co.uk/2005/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.anyware.co.uk/2005</link>
	<description>Grails, Apple, usability and world stuff</description>
	<lastBuildDate>Fri, 27 Jan 2012 13:52:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Getting started with Arduino / Rainbowduino</title>
		<link>http://www.anyware.co.uk/2005/2012/01/17/getting-started-with-arduino-rainbowduino/</link>
		<comments>http://www.anyware.co.uk/2005/2012/01/17/getting-started-with-arduino-rainbowduino/#comments</comments>
		<pubDate>Tue, 17 Jan 2012 10:30:00 +0000</pubDate>
		<dc:creator>Marc Palmer</dc:creator>
				<category><![CDATA[Groovy and Grails]]></category>
		<category><![CDATA[Programming links]]></category>

		<guid isPermaLink="false">http://www.anyware.co.uk/2005/?p=1135</guid>
		<description><![CDATA[I recently bought some Arduino microcontroller/prototyping boards and components. The plan is to rediscover my childhood interest in electronics and familiarise myself with these tools so that maybe in future I can help teach some of this at schools. This is because I believe that its the practical stuff that can integrate with other school [...]]]></description>
			<content:encoded><![CDATA[<p>I recently bought some <a href="http://arduino.cc">Arduino</a> microcontroller/prototyping boards and components. The plan is to rediscover my childhood interest in electronics and familiarise myself with these tools so that maybe in future I can help teach some of this at schools. This is because I believe that its the practical stuff that can integrate with other school lessons that can give young people the best start at programming.</p>
<p>The great thing is that actually, with only a little knowledge, doing this stuff is really easy. The Arduino board designs and software are open source, which is a good thing. However as usual this means the docs can be problematic.</p>
<p><span id="more-1135"></span>There&#8217;s a confusing array of Arduino hardware out there. The boards have the ATmega micro controller chips on them that you program, and lots of digital and analog input/outputs so you can control and measure things. There are boards with Ethernet, Wi-fi, USB and even LED matrix drivers.</p>
<h2>Basic Arduino (UNO)</h2>
<p>Using this Arduino which has just a USB port and the I/O connectors, plus a bread board and 4-digit 7-segment LED display from an <a href="http://earthshineelectronics.com/">Earthshine</a> starter kit, I managed after digging out the spec sheet on the display, to create a counter from 0001 to 9999. This sounds trivial, but it has a few challenges:</p>
<ol>
<li>The LED display is basically 4 x 8 LEDs (7 segment + decimal point)</li>
<li>There are only 12 pins on it. Huh?</li>
<li>If you don&#8217;t send power to one of the LEDs, it goes off.</li>
</ol>
<p>The spec sheet showed that 4 pins control which of the 4 digits you are addressing &#8211; set them LOW (common cathode) to enable the corresponding digit.</p>
<p>Then you set some of the other 8 pins HIGH to represent the digit or symbol you want to show.</p>
<p>So to set all 4 digits without any shift register chips or other smarts to &#8220;remember&#8221; the state of segments for each digit, you have program the Arduino to continually loop through the 4 selector pins, set the segment pins HIGH, wait a few milliseconds, then set the selector pin for that digit HIGH (to turn it off), and then repeat the same process for the next digit&#8217;s selector pin. What happens is that each digit is illuminated for say 5ms and then it moves to the next one.</p>
<p>They are continually going on and off, but because you constantly loop at high speed over them, it appears to be a continuous display.</p>
<h2>Much more fun &#8211; the Rainbowduino</h2>
<p>The <a href="http://www.seeedstudio.com/wiki/Rainbowduino_v3.0">Rainbowduino</a> is a self contained Arduino board and the latest v3.0 one has built in mini-USB. So its just like an Arduino UNO but has a bunch of other controllers to drive an 8&#215;8 RGB LED matrix with constant current (which I think means when lots of LEDs are on, they stay the same brightness). CAUTION: the LEDs are also seemingly as bright as the sun and staring at them is likely to leave you with a disturbing 8&#215;8 grid of dots burnt into your retina.</p>
<p>So I bought the Rainbowduino plus an 8&#215;8 RGB LED Matrix. The Rainbowduino is built to have the matrix directly plugged into the top of it, which is very handy.</p>
<div id="attachment_1140" class="wp-caption aligncenter" style="width: 302px"><a href="http://www.anyware.co.uk/2005/wp-content/uploads/2012/01/rainbowduino-off.jpg?9d7bd4"><img class="size-medium wp-image-1140 " title="Rainbowduino board plus LED matrix mounted on top" src="http://www.anyware.co.uk/2005/wp-content/uploads/2012/01/rainbowduino-off-e1326794159242-292x300.jpg?9d7bd4" alt="" width="292" height="300" /></a><p class="wp-caption-text">Rainbowduino board plus LED matrix mounted on top</p></div>
<p>There are some tricks to getting this working however:</p>
<ol>
<li>Unlike the Arduino UNO, my Mac would not recognise the Rainbowduino when plugged in to USB. I had to install the <a href="http://www.ftdichip.com/Drivers/VCP.htm">&#8220;FTDI&#8221; drivers from here</a>. Thanks to @andydavies for the tip there</li>
<li>The docs on Rainbowduino are sketchy, and seem to be mainly targeted at an LED 3D cube rather than the matrix, and using the Processing language (which is not what the Arduino IDE uses).</li>
<li>It turns our there are several options for controlling this matrix. You can flash your own Arduino &#8220;sketches&#8221; (programs) directly onto the Rainbowduino, or you can use the I2C serial protocol to drive the Rainbowduino from another Arduino &#8211; I am guessing this means the Rainbowduino ATMega has a custom boot loader that supports serial comms to drive the display. I may be wrong.</li>
</ol>
<p>To solve (2) I had to find the driver code that would work with the Arduino IDE. The <a href="http://www.seeedstudio.com/wiki/Rainbowduino_v3.0#Resources">v3 Rainbowduino driver is here</a>. If you save that to ~/Documents/Arduino/Libraries/Rainbowv3 or similar (for Mac OS X at least that is where it is) and restart Arduino IDE, you will see you can now insert it into your Arduino sketch using the &#8220;Import Library&#8230;&#8221; menu option.</p>
<p>You will then find it does not compile, complaining it cannot find &#8220;WProgram.h&#8221;. This is I think because the library is built to run with &#8220;Wiring&#8221; programming language. To fix this you need to edit the Rainbowduino.h file from the driver that you saved, and change the #include &lt;WProgram.h&gt; to &lt;Arduino.h&gt;.</p>
<p>After that you can use the driver, which is incredibly simple:</p>
<ol>
<li>in setup() call Rb.init()</li>
<li>in loop() call some Rb methods such as: Rb.blankDisplay() and Rb.setPixelXY(x, y, rgbcolour)</li>
</ol>
<div id="attachment_1141" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.anyware.co.uk/2005/wp-content/uploads/2012/01/rainbowduino-spectrum.jpg?9d7bd4"><img class="size-medium wp-image-1141 " title="Rainbowduino with diagonal spectrum" src="http://www.anyware.co.uk/2005/wp-content/uploads/2012/01/rainbowduino-spectrum-e1326794503914-300x277.jpg?9d7bd4" alt="" width="300" height="277" /></a><p class="wp-caption-text">Rainbowduino with diagonal spectrum</p></div>
<p>Why so dark? LEDs are too bright to photograph without a filter. I put lots of tissue paper over them.</p>
<p>So here&#8217;s an example to apply the colour spectrum diagonally to the entire grid in action:</p>
<script src="https://gist.github.com/1626042.js"></script><noscript><p>View the code on <a href="https://gist.github.com/1626042">Gist</a>.</p></noscript>
<p>Note that if you find your reds are not working you probably have a C typing problem, and need to explicitly cast your values to uint32_t to avoid the RR of your RRGGBB being lost to 16bit accuracy.</p>
<p>And seeing as most of my life is spent in <a href="http://grails.org">Grails</a>&#8230; this wouldn&#8217;t be complete without a video of the Grails cup shining in all its 8&#215;8 glory.</p>
<div style='text-align:center;'>
<object type="application/x-shockwave-flash" width="400" height="300" data="http://www.vimeo.com/moogaloop.swf?clip_id=35189087&amp;server=www.vimeo.com&amp;fullscreen=1&amp;show_title=1&amp;show_byline=0&amp;show_portrait=0&amp;color=01AAEA">
	<param name="quality" value="best" />
	<param name="allowfullscreen" value="true" />
	<param name="scale" value="showAll" />
	<param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id=35189087&amp;server=www.vimeo.com&amp;fullscreen=1&amp;show_title=1&amp;show_byline=0&amp;show_portrait=0&amp;color=01AAEA" />
	<param name="wmode" value="opaque" />
</object>
</div>
<p>And here&#8217;s the code, if you want some Grails glory yourself:</p>
<script src="https://gist.github.com/1626085.js"></script><noscript><p>View the code on <a href="https://gist.github.com/1626085">Gist</a>.</p></noscript>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.anyware.co.uk/2005/2012/01/17/getting-started-with-arduino-rainbowduino/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Native will beat web apps on desktop too</title>
		<link>http://www.anyware.co.uk/2005/2011/07/27/native-will-beat-web-apps-on-desktop-too/</link>
		<comments>http://www.anyware.co.uk/2005/2011/07/27/native-will-beat-web-apps-on-desktop-too/#comments</comments>
		<pubDate>Wed, 27 Jul 2011 10:53:20 +0000</pubDate>
		<dc:creator>Marc Palmer</dc:creator>
				<category><![CDATA[Ideas]]></category>
		<category><![CDATA[Programming links]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.anyware.co.uk/2005/?p=832</guid>
		<description><![CDATA[As mooted in all the native vs. web mobile app discussions, the classic issue of access to all the raw platform features comes to the fore. This is even more important on desktop if you are making actual apps rather than services.]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s OK, I have two sets of flameproof clothing on.</p>
<p>Further to my contribution to the <a href="http://www.anyware.co.uk/2005/2011/06/13/the-web-does-not-a-mobile-app-make/">everlasting mobile web apps vs native debate</a> I was discussing these issues again with good friend <a href="http://twitter.com/spugamola">Richard</a> (who is truly called a platform ninja), and again cropped up the &#8220;why is a tablet different from a desktop then? why is native better for tablets and not desktop?&#8221; question.</p>
<p><span id="more-832"></span>Here&#8217;s my take on this, and I&#8217;m going to keep it short:</p>
<ol>
<li>The web is a shit platform for making applications. All this effort we developers are putting into it to is well out of scope.</li>
<li>As many others have noted the primary attraction is that it is easy/easier to make cross platform apps with a web browser.</li>
<li>My conjecture is that point (2) is the only reason people have accepted desktop &#8220;apps&#8221; that are web based.  There was no other choice presented to the users, and the developers had no other choice.</li>
</ol>
<p>The failure of Java as a cross platform UI/desktop consumer app environment is to blame for point (3).</p>
<p>It meant app developers had to begrudgingly support a mass market of Windows devs while actually using Linux or Macs themselves because Windows back in the 3.1 -&gt; XP days was so unutterably shit. If you&#8217;re afraid of writing native apps for iOS or Android, you should have tried writing Win32 applications back in the 90s.</p>
<p>So the web came, and these devs <strong>had</strong> to keep their apps supporting Linux because they used Linux themselves or had Linux guys screaming at them &#8211; but largely ignored the MacOS users (hey I should know, I was one of these developers). The only way to do this was with the web.</p>
<p>Desktop apps, even if you could find a cross platform framework that was not total shit (this is impossible, an immutable rule of the cosmos), require lots of support, required per-platform installation scripts and documentation. Oh and nobody really paid for apps after the initial trend of Shareware subsided.</p>
<p>Consumers didn&#8217;t want to pay Joe Bloggs $20 for this or that.</p>
<p>So freemium was born, where we all have web apps and only a select few make real money. We don&#8217;t care if they actually <em>need</em> to be web apps, we just choose it as a default because it is what we know, and we are scarred by the memories of 1990s native development.</p>
<p>Well here&#8217;s the reality check. It&#8217;s nearly 20 years later. Expectations of apps are much higher now. Quality and UX is much more important. Making cross platform (including mobile) web apps is now harder than it ever was because there&#8217;s so many more layers of stuff we have to schlep into the apps, and reams of JavaScript to do anything half decent. To still fall far short of any meaningful native integration with the desktop O/S&#8217;s features.</p>
<p>&#8230;and now Apple and others are creating high quality app stores for native desktop software. This means that there is a simple &#8220;arms length&#8221; route to market. Millions and millions of users who can and will pay you $5 for your native app. Which, when you have made it native, is likely to be quite easy to port to at least 1 mobile platform as well.</p>
<p>As mooted in all the native vs. web mobile app discussions, the classic issue of access to all the raw platform features comes to the fore. This is even more important on desktop if you are making actual <strong>apps</strong> rather than <strong>services</strong>.</p>
<p>Ergo, <strong>I see a distinct possibility that the stage is set to that native desktop could actually kill the notion of the web &#8220;app&#8221;</strong>. By apps I am talking things that are distinguished from online services. The web is document retrieval and viewing. That&#8217;s always what it was designed for.</p>
<p>Photoshop, Keynote, Email, bla bla. These can be much better as native apps &#8211; there have  been many impressive attempts at web versions of such e.g. 280Slides, Google Mail etc.</p>
<p>However the cloud is not the place for the hosting these desktop apps. The cloud is just the place where you store the data.</p>
<p>People are used to cheap tangible purchases on mobile. They will expect the same on desktop. Its a massive opportunity for developers again to create really compelling applications. Free of the shackles of the 1990s &#8211; both in the sense that native platforms are much nicer to develop for now, and that the constraint of limiting your ideas to what is capable in a browser that 80% of your market uses can now be lifted.</p>
<p>Go and build great native desktop apps, go and build great web services. Don&#8217;t mix them up.</p>
<p>[Before you dismiss me as a madman, I've written many native Win32 apps in C, C++, Delphi. I've written many web services from right back when Mosaic was the only browser we had. I've also written and ported many J2ME mobile apps. I've also made my living off selling shareware as well as consulting.]</p>
<p>[Also interesting read here: <a href="http://mattgemmell.com/2011/07/22/apps-vs-the-web">http://mattgemmell.com/2011/07/22/apps-vs-the-web</a>]</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.anyware.co.uk/2005/2011/07/27/native-will-beat-web-apps-on-desktop-too/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>The web does not a mobile app make.</title>
		<link>http://www.anyware.co.uk/2005/2011/06/13/the-web-does-not-a-mobile-app-make/</link>
		<comments>http://www.anyware.co.uk/2005/2011/06/13/the-web-does-not-a-mobile-app-make/#comments</comments>
		<pubDate>Mon, 13 Jun 2011 13:05:11 +0000</pubDate>
		<dc:creator>Marc Palmer</dc:creator>
				<category><![CDATA[Ideas]]></category>
		<category><![CDATA[Other]]></category>
		<category><![CDATA[Programming links]]></category>
		<category><![CDATA[usability]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[mobile]]></category>

		<guid isPermaLink="false">http://www.anyware.co.uk/2005/?p=808</guid>
		<description><![CDATA[This is a rant about the Web vs. Native debate in mobile. I&#8217;m very squarely on the &#8220;Native is best&#8221; side. Obviously if you don&#8217;t have the funds/expertise to make a native app then you&#8217;ll choose web &#8211; but I would wager this is only viable if you don&#8217;t actually want to make money out [...]]]></description>
			<content:encoded><![CDATA[<p>This is a rant about the Web vs. Native debate in mobile.</p>
<p>I&#8217;m very squarely on the &#8220;Native is best&#8221; side. Obviously if you don&#8217;t have the funds/expertise to make a native app then you&#8217;ll choose web &#8211; but I would wager this is only viable if you don&#8217;t actually want to make money out of the app. Unless you have some amazingly compelling content (like pictures of naked people) that can not be got at by native means.</p>
<p><span id="more-808"></span>The thing is, I&#8217;m not really interested in arguing this any more as its a classic polarized debate like the Mac/PC or Linux/Windows ceaseless arguments. However most people in web development seem to be very anti-native, and as I&#8217;m often the outsider in such things, but also sometimes right, I need to set out my stall so that I can try to keep my mouth shut in any more such discussions!</p>
<p>Let&#8217;s get this straight. Web is <strong>the</strong> perfect platform for presenting documents. It is what it was designed for. Everything else has been a hack. We have many very clever and useful libraries such as jQuery to make web application development half-passable. However anybody who seriously thinks these are anything close to a great development platform is chugging on a crack pipe.</p>
<p>Or not an actual developer, but a web site designer who wants to cash in on making mobile apps.</p>
<p>Before you stop reading &#8211; I&#8217;m a web app dev of many years, and also did more than my fair share of mobile development.</p>
<p>The Web is no cure-all, it is an ugly hack of document rendering turned into interactive UI paradigm. The only selling point for it is that it is cross platform. But your experience &#8211; even on powerful desktops &#8211; varies widely based on CPU, RAM, and browser &#8211; it is simply impossible to make great cross platform apps because to do so is to ignore the native OS paradigms, or poorly mimick them.</p>
<p>Why is it that we are still amazed when someone creates some &#8220;fast&#8221; game in JS and CSS, or creates some amazing new visual trick like&#8230; and animated background or &#8230; 3D!</p>
<p>I means seriously, WTF people? We were doing this stuff on ATARI ST when I was a teenager (&gt; 20 years ago), and this still gets a &#8220;wow&#8221; when somebody manages to make the godawful browser tech stack do the same using CSS and JS? That&#8217;s not progress, that&#8217;s a SHITTY PLATFORM FOR APPS. Its like we all became stupid and forgot everything that goes on in the rest of the tech world once the web hit.</p>
<p>We&#8217;re amazed when stuff like this is done because its so damned hard to do anything good in a web browser. That&#8217;s why designers and animators used Flash so much and cursed us for a decade. It is nothing more than triumph against adversity.</p>
<p>The native OS paradigms (visual or otherwise) issue is borne out in the great many &#8220;Cross platform&#8221; frameworks that have existed over the decades. If you don&#8217;t know the awfulness of J2ME, or Java desktop UIs (Swing), or Tcl/Tk and all the old C++ cross platform toolkits, you have no idea how bad things get. This is in part a reason why Java never took off <strong>even when delivered via the web</strong> and is also part of why Android and iOS are eating the lunch of all the other phone O/Ses whose only realistic entry point was J2ME.</p>
<p>Anybody reading this remember WAP? The mobile Internet that was, right on your phone, back in the early 2000s. What a crock of shit. Why? The UI had no personality, and no styling. It was slow and clunky, and admittedly ran on shitty phones with tiny screens.</p>
<p>WAP lost out to J2ME &#8211; a lesser of two evils &#8211; which you could consider a &#8220;native&#8221; app vs. WAP&#8217;s &#8220;web&#8221; approach. J2ME won that battle, <em>even though</em> people (like me) had to write sometimes 30+ different ports of the same application to handle different handsets. And we&#8217;re not talking just different graphics/screen size here, different data/game levels, different media, different code workarounds to handle bugs and resource limitations.</p>
<p>But <strong>still</strong> it was better than WAP. You had complete control (if you ignored all the J2ME horrible UI libraries) and could draw pixels. WAP&#8230; you could show stuff on screen badly, and maybe submit some forms.</p>
<p>Web on mobile is today&#8217;s WAP, in the same way that Native (Android/iOS/Windows Mobile/WebOS) is today&#8217;s J2ME. For compelling apps you need to use native stuff. What language you use to write that is less important. i.e. PhoneGap apps that use JS to glue together web UI and native features like location, camera etc are native apps. They are just slower, clunkier, non-native UI and feature-limited compared to true native apps.</p>
<p>The pace of development in mobile devices is now unlike anything we have seen before. 6-12 month refresh cycles of hardware and OS releases means the web will never catch up, not even close.</p>
<p>The ease of development used to be a USP of web sites, but this is most definitely not true for non-trivial web apps. For a start, for anything non-trivial you need a back-end server app and all that entails.</p>
<p>Web developers who think web apps can replace native apps ignore another major issue aside from native capabilities and integration &#8211; resources. When was the last time you, as a web developer, cared about how much memory visitors to your site had, or how fast their CPU was?</p>
<p>As a result performance of web applications varies immensely across clients and this matters even for simple forms or content display (layout complexity, images etc). On mobile this is a critical issue. You have to test your web app on every target device your users may be using.</p>
<p>Think about that.</p>
<p>You&#8217;re doing that right now for maybe 3-4 browsers across maybe 2-3 OSes (you are, aren&#8217;t you?).</p>
<p>Now extrapolate that level of work to every mobile device out there (especially the large number of Androids), as they all have difference browsers <strong>and</strong> vastly constrained resources, <strong>and</strong> different pixels-per-inch which affects usability of touch UIs.</p>
<p>Native development doesn&#8217;t skip this problem completely, but it gives you a feel for the size of the challenge that awaits you. Using native UI widgets you are at least nearly guaranteed some reasonable behaviour out of the box.</p>
<p>The point is that web development might get you somewhere, but it is unlikely to get you compelling revenue-generating apps unless your product is incredibly trivial and unique &#8211; unless you focus, like J2ME developers had to &#8211; on the devices that make up the largest market share &#8211; so iPhones and hopefully just a few of the Android handsets. Oh and maybe a HP device too, eh? Oh and Windows Phone.</p>
<p>If you are selling an &#8220;app&#8221; commercially you better be sure you can deliver it in working order to your end user. Make that a &#8220;paying&#8221; user. Not so many of those on the real web are there.</p>
<p>Many web developers fail to understand that mobile devices are &#8220;embedded systems&#8221;, it is not just your desktop web available in your hand. The user expectations are entirely different from desktops. Its so frustrating that people don&#8217;t seem to get that this is consumer electronics: where you push an ON button and stuff happens right there and then.</p>
<p>You pick up a phone to do something, it has to do it quickly, cleanly and reliably. The user does not see a mobile device as a mobile desktop (though more powerful than PCs we used not too long ago) where its OK to spend 15s loading, bombard them with some pointless screens, download a ton of crap off the web.</p>
<p>Even a great deal of native apps fail horribly at this. They take too long to load, the UX is poor due to excessive navigation etc. I have some laughably bad iOS apps installed on my devices &#8211; which occurs because there is no try before you buy / returns policy, a major flaw that needs to be rectified. And if it does get rectified, you better fear for your app-store hosted web apps.</p>
<p>The fact is mobile devices are now so desirable as a platform precisely because of Apple&#8217;s iPhone and the native iOS. Web developers may see these as sexy devices they&#8217;d like to do stuff on, but everybody else sees these as great things that work better and faster than their old computer, with less fuss and (so far) no viruses &#8211; and nobody thinks of these as being like web apps but packaged up. Web applications pull it back to the sluggish land of the desktop. Response time is everything in touch interfaces.</p>
<p>As for native OS integration, whether using HTML5 features (s<em>till</em> not fully standardized) or custom JS APIs á la PhoneGap, the features available will <strong>always</strong> lag behind native apps, and will <strong>usually</strong> lag behind in performance. HTML standards processes are inordinately slow and protracted. Never, ever expect and quick turnaround innovation from HTML. Just forget it.</p>
<p>&#8220;But my app is not performance dependent&#8221;. Yes it bloody is. If the user taps or drags stuff and it doesn&#8217;t happen in smooth realtime like native apps, you stick out like a shit on the arctic tundra. Remember that your app is competing UX wise with all the great default apps shipped on the device (well at least as far as iOS goes).</p>
<p>&#8220;But I don&#8217;t need native integration or true native UI&#8221;. Yes you do &#8211; as soon as you have any form of native competition. And if you are pursuing a market that actually generates decent income, you can bet people will come with native equivalents.</p>
<p>Some people point to WebOS &#8211; it&#8217;s web based technology. However it is effectively native, another proprietary platform. Its yet another OS to port to. Are people seriously saying that, even if performance issues don&#8217;t emerge from this, that they&#8217;d like to use all this hacked together HTML/CSS/JS crud we&#8217;ve amassed over the last 10-15 years to write apps for a tiny device that can have a perfectly good, fast, tightly integrated app written using the well-documented libraries provided in a native language? It&#8217;s a little like writing scalable web app back ends using BASIC. You could do it but&#8230; its the wrong tool for the job.</p>
<p>An interesting blip here is Symbian. This was a native OS platform on all the big Nokia devices. However it failed &#8211; the crown went to the UX-inferior J2ME platform present on the same handsets. Why? Presumably because there was no commercial marketplace of any worth for the apps (the handsets always featured low in app sales, a very small % of total market), and the devices it ran on were the horrible Nokia bricks that cursed us for the last 10 years, cost a fortune and had bad battery life.</p>
<p>In a nutshell the Web is a pile of cobbled together crap &#8211; from an application development point of view.</p>
<p>We can put up with this for true web applications/services as we can&#8217;t face writing native Windows, Linux and Mac OS X clients for our apps &#8211; it makes us gush when a tool like jQuery reduces the pain level by another 10%. Our users are accustomed to this paradigm, and for many of our apps we don&#8217;t need any whizzbangs that require really obscene hacks like Flash for camera access etc. Because their PCs/Macs are a bit of a hassle to maintain they appreciate not having to install apps. They also don&#8217;t expect always-on connectivity so settle for &#8220;just while I&#8217;m sitting at the computer&#8221;.</p>
<p>Even with tablets, there is no point making a web-based app for them. Just make your normal site work well on tablets. Desktop users will likely appreciate the improvements too. I can see the attraction of making a tablet-optimized &#8220;app&#8221; because its reasonably quick and cheap, but really, put that work into your regular web UI. For a Rolls Royce experience for your tablet users, give them a native app if it is commercially sound to do so.</p>
<p>The User expectations of mobile, including tablets are completely different. The device is a tool to get stuff done. In contrast to &#8220;I&#8217;m now sitting at my computer doing a bunch of stuff&#8221;.</p>
<p>Let&#8217;s not even talk about battery usage&#8230;</p>
<p>Bottom line: Mobile development is really hard work, involves lots of time and testing, the likes of which desktop web app developers have little idea about. Browser wars are nothing compared to real cross platform dev where the end product is high quality.</p>
<p>If you&#8217;re going to do it properly, do it native.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.anyware.co.uk/2005/2011/06/13/the-web-does-not-a-mobile-app-make/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Data sync on iPhone, iPod, iPad &#8211; the missing link?</title>
		<link>http://www.anyware.co.uk/2005/2010/02/07/data-sync-on-iphone-ipod-ipad-the-missing-link/</link>
		<comments>http://www.anyware.co.uk/2005/2010/02/07/data-sync-on-iphone-ipod-ipad-the-missing-link/#comments</comments>
		<pubDate>Sun, 07 Feb 2010 13:05:15 +0000</pubDate>
		<dc:creator>Marc Palmer</dc:creator>
				<category><![CDATA[Ideas]]></category>
		<category><![CDATA[Moving to Mac]]></category>
		<category><![CDATA[Programming links]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[ipad]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[ipod]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[OmniFocus]]></category>
		<category><![CDATA[sync]]></category>
		<category><![CDATA[Third]]></category>

		<guid isPermaLink="false">http://www.anyware.co.uk/2005/?p=685</guid>
		<description><![CDATA[Users and particularly developers of Palm&#8217;s old line of PalmOS devices will keenly remember that Palm were the only people to get syncing right at the time. Aside from all the basics, they allowed 3rd party applications on the device AND the desktop to talk to each other directly to sync custom data. I&#8217;ve bitched [...]]]></description>
			<content:encoded><![CDATA[<p>Users and particularly developers of Palm&#8217;s old line of PalmOS devices will keenly remember that Palm were the only people to get syncing right at the time.</p>
<p>Aside from all the basics, they allowed 3rd party applications on the device AND the desktop to talk to each other directly to sync custom data. <a href="http://www.anyware.co.uk/2005/2007/06/13/iphonewwdc-custom-application-thoughts/">I&#8217;ve bitched about this before</a>.</p>
<p>As an avid Mac, iPhone, MobileMe and soon to be iPad user, I have to wonder what is happening with this at Apple. My real-world gripe is this:</p>
<blockquote><p>I was just about to open OmniFocus on my iPhone specifically so that it would sync with the latest data on my MacBook Pro, which is set to sync via MobileMe (using a pretty ugly file based solution). Why am I even doing this? Why isn&#8217;t this data synced (a) when I dock my iPhone to sync all the other iTunes stuff, and (b) why can&#8217;t it automatically sync wirelessly</p></blockquote>
<p>Well part (b) is easier to answer, although it is a three-fold answer. First, there&#8217;s no background app support to allow automatic sync of the OmniFocus app on the phone. That should be addressed by the Push API functionality except that OmniFocus doesn&#8217;t support Push API (server cost to them to do so) <em>and</em> even if they did support Push, iPhone SDK Push is not able to automatically pass the data to the application to force it to sync &#8211; the user must acknowledge the event and run the app on the phone manually. It&#8217;s a pile of suck, surprisingly, with a real feel of &#8220;disconnected device&#8221;.</p>
<p>Part (a) is more tricky to answer. It must be trivial for Apple to add this kind of support for direct-to-app syncing. They already have/had Sync APIs for OS X for a long time. Lack of support for this apparently makes no sense.</p>
<p>In conclusion I am very surprised that Apple has not updated the OS X Sync APIs so that:</p>
<ul>
<li>Third party apps can sync any data they like to/from the iPhone/iPod/iPad with iTunes as the conduit (that was the concept&#8217;s name in PalmOS if I recall)</li>
<li>The transport for sync is completely hidden from the applications such that sync will happen transparently via Dock, Wifi (direct between devices on local Wifi network), and via MobileMe cloud if the device is not on the same Wifi network.</li>
</ul>
<p>This is not rocket science after all. And yet we still have to know / think about what networks our devices are connected to, manually make sure we run them frequently etc. It is pretty lame, <a href="http://www.fakesteve.net/">Mr. Jobs</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.anyware.co.uk/2005/2010/02/07/data-sync-on-iphone-ipod-ipad-the-missing-link/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My Apple tablet predictions &#8211; for what its worth</title>
		<link>http://www.anyware.co.uk/2005/2010/01/20/my-apple-tablet-predictions-for-what-its-worth/</link>
		<comments>http://www.anyware.co.uk/2005/2010/01/20/my-apple-tablet-predictions-for-what-its-worth/#comments</comments>
		<pubDate>Wed, 20 Jan 2010 14:09:06 +0000</pubDate>
		<dc:creator>Marc Palmer</dc:creator>
				<category><![CDATA[Moving to Mac]]></category>
		<category><![CDATA[Programming links]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[speculation]]></category>
		<category><![CDATA[tablet]]></category>

		<guid isPermaLink="false">http://www.anyware.co.uk/2005/?p=678</guid>
		<description><![CDATA[Might as well join in the fun eh. Ironically, I think that there will not be that much hardware &#8220;frill&#8221; with the Apple tablet. I think that actually this is really all about software and the masses of computer users who are not &#8220;power users&#8221;. Follow the logic: Net books are very popular. The iPhone [...]]]></description>
			<content:encoded><![CDATA[<p>Might as well join in the fun eh.</p>
<p>Ironically, I think that there will not be that much hardware &#8220;frill&#8221; with the <a href="http://apple.com">Apple</a> tablet. I think that actually this is really all about software and the masses of computer users who are not &#8220;power users&#8221;.</p>
<p>Follow the logic:</p>
<p>Net books are very popular.</p>
<p>The <a href="http://apple.com/iphone">iPhone</a> and the new breed of beyond-smart phones is incredibly popular.</p>
<p>What is the common thread here? Both devices are very portable and offer most of the basic computing that people need day to day. What is it that most people &#8211; which I&#8217;m afraid guys means non-geeks, the truly massive market beyond geekdom &#8211; need?</p>
<ol>
<li>Email</li>
<li>Web</li>
</ol>
<p>That&#8217;s it. That&#8217;s what most people who are not raving geeks need. In fact some geeks may need only that. After all there isn&#8217;t much you can&#8217;t do with web apps now (e.g. bespin). Google OS/Chrome stuff has been geared to this from the get-go, its not a novel idea.</p>
<p>Functionally, most people also need to be able to write/edit documents that can be read by MS Word &#8211; not that they need MS Word, they just need to write out .doc files. This can be done via web apps or via lightweight local apps.</p>
<p>However Apple would not do something like this unless it also offered uniquely integrated stuff.</p>
<p>So on the back of this I reckon the tablet will:</p>
<ul>
<li>Not be that revolutionary hardware wise &#8211; eg physically this probably is like a giant iphone</li>
<li>To include some web-hosted (with local offline usage) iWork for Pages (= docs &amp; spreadsheets writing. maybe keynote too)</li>
<li>Full access to all your iTunes audio and video media and photos (cloud or not) &#8211; I would be surprised if this is 100% cloud done at this stage, what with the awful 3G coverage and slow speeds to sync photos and videos. Access to this done &#8220;ipod style&#8221;, which is a killer recipe as the market has shown</li>
<li>A first class large-form factor email app, geared to multitouch</li>
<li>And as suspected the delivery of formerly-print media, possibly opening up iTunes marketplace to any author who wants to prepare and sell content. Who knows perhaps you will even be able to create new textual/mixed content on the iPad and sell it via iTunes. This content provision is probably the one really new thing that helps make such a pad a really attractive proposition.</li>
</ul>
<p>In a nutshell, a beautiful portable computer that is most definitely NOT a laptop because a great deal of people will never see themselves as the laptop carrying kind. However they are likely to part with cash for something that is much smaller than that but a true lifestyle accessory that &#8220;just works&#8221;. Obviously it will support custom apps and app store too &#8211; which has already shown on iPhone that a lot of people just want little stuff that makes life easier.</p>
<p>Several programmers including myself have wondered &#8220;Why do I need something like that?&#8221;. The answer is if you have an iPhone and laptop, you don&#8217;t. The big market win here is not people like us, its everyone else in the real world! Laptops are complete overkill for a lot of people and the netbook market has sort of shown that. They&#8217;re not so much winning against laptops as a result of price, they&#8217;re winning on form factor and simplicity. If people really needed high-end laptop features, they&#8217;d still buy a laptop instead of a netbook.</p>
<p>I&#8217;m pretty sure netbooks aren&#8217;t aimed at programmers either &#8211; although I am confident some masochists code Perl on them and swear that its the best <span style="text-decoration: line-through;">calculator</span> computer they&#8217;ve ever had. The tablet on the other hand, is squarely aimed at attacking the netbook and light-use laptop market.</p>
<p>Let&#8217;s see what Wednesday brings!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.anyware.co.uk/2005/2010/01/20/my-apple-tablet-predictions-for-what-its-worth/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What are all the things a startup web service needs?</title>
		<link>http://www.anyware.co.uk/2005/2009/11/30/what-are-all-the-things-a-startup-web-service-needs/</link>
		<comments>http://www.anyware.co.uk/2005/2009/11/30/what-are-all-the-things-a-startup-web-service-needs/#comments</comments>
		<pubDate>Mon, 30 Nov 2009 16:01:49 +0000</pubDate>
		<dc:creator>Marc Palmer</dc:creator>
				<category><![CDATA[Groovy and Grails]]></category>
		<category><![CDATA[Programming links]]></category>
		<category><![CDATA[startups]]></category>

		<guid isPermaLink="false">http://www.anyware.co.uk/2005/?p=633</guid>
		<description><![CDATA[So you focus on getting your &#8220;don&#8217;t worry be crappy&#8221; code together to bootstrap your startup and get something the real world can play with. All the user-oriented features you need are there for 1.0. But what about the rest? What about the things you need to make the service tick, to keep in touch [...]]]></description>
			<content:encoded><![CDATA[<p>So you focus on getting your <a href="http://blog.guykawasaki.com/2006/01/the_art_of_inno.html">&#8220;don&#8217;t worry be crappy&#8221;</a> code together to bootstrap your startup and get something the real world can play with. All the user-oriented features you need are there for 1.0.</p>
<p>But what about the rest? What about the things you need to make the service tick, to keep in touch with the users etc? These things are really important, as you can bet things are not going to go smoothly all the time, especially at the beginning.</p>
<p>We&#8217;re just going through this phase &#8211; all the basic 1.0 coding is near completion, and now we need to make sure we don&#8217;t miss out any major &#8220;duh&#8221; features we need to keep things going.</p>
<p>Off the top of my head, I can think of the following:</p>
<ul>
<li>Effective web stats so you can see how people are using the site</li>
<li>Database backup policy and off-site backup of your users&#8217; data</li>
<li>A mechanism to easily send downtime/update/marketing emails to all your registered users</li>
<li>The ability to add a banner on the site to indicate scheduled downtime</li>
<li>Terms of use</li>
<li>A predefined plan of action to take if the servers are swamped</li>
<li>A way to update key content without a redeploy (= scheduled downtime!)</li>
<li>Basic reporting to see how many new users you are getting, and what they are doing &#8211; over and above webstats, a summary of your domain objects etc.</li>
<li>Make sure load/health reporting is set up and working in advance</li>
<li>Detailed functional tests and/or manual test plans ready and in place. You tested 1.0 right?</li>
</ul>
<p>Do you have anything to add to this?</p>
<p><strong>UPDATE: commenters have also very wisely suggested -</strong></p>
<ul>
<li>Screencast showing users how to use the service</li>
<li>Issue tracker for support</li>
<li>Privacy policy / data protection policy</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.anyware.co.uk/2005/2009/11/30/what-are-all-the-things-a-startup-web-service-needs/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>How Android is just going to be J2ME hell all over again</title>
		<link>http://www.anyware.co.uk/2005/2009/11/20/how-android-is-just-going-to-be-j2me-hell-all-over-again/</link>
		<comments>http://www.anyware.co.uk/2005/2009/11/20/how-android-is-just-going-to-be-j2me-hell-all-over-again/#comments</comments>
		<pubDate>Fri, 20 Nov 2009 11:29:37 +0000</pubDate>
		<dc:creator>Marc Palmer</dc:creator>
				<category><![CDATA[Programming links]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[j2me]]></category>
		<category><![CDATA[mobile]]></category>

		<guid isPermaLink="false">http://www.anyware.co.uk/2005/?p=624</guid>
		<description><![CDATA[I&#8217;m lucky to be out of mobile phone development now. I spent about 2 years coding J2ME games for a wide range of handsets and as anybody who has done it knows, its really shitty. This is because J2ME has standard APIs, but implementations vary in quality, nuance and in some cases downright fail to [...]]]></description>
			<content:encoded><![CDATA[<p><img class="size-full wp-image-625  alignright" title="Ninja Monkey School, one of our games on Nokia" src="http://www.anyware.co.uk/2005/wp-content/uploads/2009/11/nms_shot.png?9d7bd4" alt="Ninja Monkey School, one of our games on Nokia" width="176" height="208" /></p>
<p>I&#8217;m lucky to be out of mobile phone development now. I spent about 2 years coding J2ME games for a wide range of handsets and as anybody who has done it knows, its really shitty. This is because J2ME has standard APIs, but implementations vary in quality, nuance and in some cases downright fail to meet spec. Not to mention all the phones have different API sets and hardware abilities, input methods, screen sizes that vary wildly etc. Oh and I forgot &#8211; bugs across different firmware versions of the same handset &#8211; users without iPhones being unlikely to upgrade firmware as it is likely non-trivial / not handed to them on a plate.</p>
<p>I&#8217;m an iPhone fan, because iPhone makes mobile phones not suck. That&#8217;s all I cared about when I got one.</p>
<p>If I was an active phone developer now, I&#8217;d be very happy to dev exclusively for iPhone because of the tools and APIs and low variance in standard hardware. Issues about app store review policy notwithstanding (that&#8217;s a serious problem that has to be, and I think will be resolved). If you write good apps there&#8217;s easily a big enough market size already to make some good money.</p>
<p>Anyway last night I read this Fake Steve Jobs piece &#8211; ever sharp: <a href="http://www.fakesteve.net/2009/11/developers-only-now-realizing-that-android-is-not-a-platform.html#more-13293">Developers only now realising that Android is not a platform</a></p>
<p>You see when writing mobile apps the number of handsets you have to port to and test with (requires owning the phone typically) is key to your financial bottom line. Mobile operators want/force you to make sure your app supports a wide range of their crappy handsets, even if you will sell 1 copy of your app per year on that handset.</p>
<p>Because it is a phone there are few apps for or it has their logo on the phone, you have to support it.</p>
<p>You have to waste days debugging memory use issues &#8211; often across many different handsets</p>
<p>You have to waste days working out why your colours are coming out wrong on a crappy handset that has sold in high volumes and has a CPU so slow your game is barely playable.</p>
<p>You have to test every feature of your game/app to completion, with lengthy usage tests, incoming call issues etc to be sure it will not fall over / frustrate the user after a while. A quick flick through = poor QA.</p>
<p>The cost and effort behind this is immense and in many cases a complete waste of time. Generally speaking as a mobile dev you want to target the smallest number of phones that give you the biggest market share of people who actually pay for downloaded apps.</p>
<p>Now even with a unified &#8220;app store&#8221; for Android, you&#8217;ll still have to pander to these same requirements even if there is no network operator standing in your way. Because to make money, you have to follow the high volume handsets. Earth to those new to mobile dev: the highest volume handsets are very rarely the most capable or attractive from a development perspective. After the market matures, the highest volume will be in the cheapest/most subsidized handsets. This will likely be operator-badged &#8220;plastic-extruded turd with calculator buttons on&#8221; handsets.</p>
<p>This is why the FSJ post is right on the money. The higher iPhone market share grows &#8211; and the more global it becomes, because this is a double whammy compared to j2me dev with no mainsteam cross-phone app marketplace &#8211; the more attractive iPhone dev becomes. It is just easier to make more money there.</p>
<p>You have effectively one target device (ipod touch may not have mic and no phone but that&#8217;s it, 3gs has&#8230; compass oooh) and a clean reliable platform. Even firmware issues are <em>almost</em> removed because Apple/iTunes make it so trivial for people to update.</p>
<p>Contrast this with Android. From what I have read, it seems the O/S is not a rigid guaranteed platform like iPhone OS, and of course it is targetted at the mass market of phones. This will mean that the capabilities and APIs and quality of implementations will vary across all the handsets &#8211; <strong>just like in your old enemy J2ME.</strong></p>
<p>High volume phone makers will try to shoehorn Android into as little RAM and CPU as they can, with the cheapest acceptable screen they can (who cares if everything looks a bit yellow!), to hit the lowest price point to make their handset the most attractive to the network operators so they can hit high subsidised sale volumes. If there&#8217;s some problem with a part of an API &#8211; maybe the CPU is too slow to do it, or the GPU can&#8217;t handle it, or the screen is &#8220;4.5-bit CMYK&#8221; colour as opposed to 24-bit RGB, they <strong>will</strong> just <span style="text-decoration: line-through;">cut a corner</span>/<span style="text-decoration: line-through;">break</span> compromise that API and almost certainly not document this. It is commercial reality. It is the classic design down to a price, not up to a standard.</p>
<p>J2ME suffered exactly this problem and Sun couldn&#8217;t fix it even though they had a licensing scheme for the VM. Because Google has open sourced Android, I don&#8217;t see how they&#8217;re going to be able to introduce a &#8220;Google Certified Android&#8221; standard that requires complete TCK success for all Android deployments.</p>
<p>As such, mobile devs on Android are doomed to the same existence they&#8217;ve had for a decade on J2ME.</p>
<p>Each new Android handset means another target to test, often requiring you to buy the handset contract free (ouch!), and the diminishing returns as the market is flooded with new handsets each garnering less of the market for your app.</p>
<p>Of course you&#8217;ll still be coding Android apps because manufacturers will be running to unite under an &#8220;iPhone beating OS&#8221;. Really, all that&#8217;s changed is you&#8217;re coding to Android APIs instead of J2ME.</p>
<p>I don&#8217;t mean to say Android won&#8217;t be successful. iPhone OS will not be &#8220;the&#8221; dominant OS in the mobile phone market any time soon, maybe never.</p>
<p>The thing Android devs have to fear is this: the mass market success of Android. Why? Because the mass market success = high volume = cheap crap phone, not a smartphone. That is where the money will be for Android apps, and guess what &#8211; its going to be really pretty ugly. You&#8217;ll make a &#8220;reference port&#8221; on your high end Android handset with touch and lots of RAM and great performance, and then have to downshift everything to the shitsville high volume ones.</p>
<p>So in terms of small developers making money off their apps, I&#8217;m very confident the ROI on iPhone will be far more favourable.</p>
<p>Let the big guys deal with the horror of porting and QA teams for all the Android stuff.</p>
<p>Oh, and wait it remains to be proven that Android users will actually pay for apps in any quantity. Apple creates an environment of value where people understand that, generally speaking, you get what you pay for. As FSJ often says&#8230; &#8220;freetards&#8221; don&#8217;t get this.</p>
<p><strong>UPDATE: </strong>Oh look what just hit the news&#8230; one of (if not the) biggest J2ME game devs is <a href="http://www.macrumors.com/2009/11/20/game-developers-scaling-back-android-efforts-as-iphone-continues-to-dominate/">scaling back their Android efforts</a>. &#8220;It is not as neatly done as on the iPhone. Google has not been very good to entice customers to actually buy products. On Android nobody is making significant revenue,&#8221; AKA &#8220;freetard&#8221; attitude = no money for developers.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.anyware.co.uk/2005/2009/11/20/how-android-is-just-going-to-be-j2me-hell-all-over-again/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Atlassian JIRA 4 and Greenhopper &#8211; First look</title>
		<link>http://www.anyware.co.uk/2005/2009/10/06/atlassian-jira-4-and-greenhopper-first-look/</link>
		<comments>http://www.anyware.co.uk/2005/2009/10/06/atlassian-jira-4-and-greenhopper-first-look/#comments</comments>
		<pubDate>Tue, 06 Oct 2009 17:21:18 +0000</pubDate>
		<dc:creator>Marc Palmer</dc:creator>
				<category><![CDATA[Groovy and Grails]]></category>
		<category><![CDATA[Jira]]></category>
		<category><![CDATA[Programming links]]></category>
		<category><![CDATA[getting to launch]]></category>
		<category><![CDATA[software planning]]></category>

		<guid isPermaLink="false">http://www.anyware.co.uk/2005/?p=564</guid>
		<description><![CDATA[I recently upgraded our JIRA instance to version 4 and installed the GreenHopper plugin &#8211; after getting them for the bargain price of $10 as part of Atlassian&#8217;s amazing repeat bargain offers for charity. I can&#8217;t recommend this enough &#8211; $10 for enterprise Jira is amazing. I have used JIRA for something like 5 years [...]]]></description>
			<content:encoded><![CDATA[<p>I recently upgraded our JIRA instance to version 4 and installed the GreenHopper plugin &#8211; after getting them for the bargain price of $10 as part of <a href="http://www.atlassian.com/starter">Atlassian&#8217;s amazing repeat bargain offers</a> for charity. I can&#8217;t recommend this enough &#8211; $10 for enterprise Jira is amazing.</p>
<p>I have used JIRA for something like 5 years now. I am a big fan, in that it is definitely the best issue tracking solution out there. However I&#8217;m also quite critical of it at times, because I think it often fails in usability and UI terms to deliver an intuitive experience for those doing software (and particularly web) development.</p>
<p>So I thought I&#8217;d write some initial views on the Jira 4 UI and GreenHopper &#8211; my hope being that GreenHopper will alleviate some of my release planning frustrations with Out-of-the-box Jira. These are most definitely first impressions. Any major UI changes are likely to be met by resistance by seasoned users of any application.</p>
<p>First, the good:</p>
<ul>
<li>Jira&#8217;s main dashboard UI etc looks cleaner, drop-down menus for quickly getting to specific projects are welcome</li>
<li>The whole thing feels less cluttered because the right hand side bar which, in my experience was almost never used by most JIRA users, has been taken away</li>
<li>The drop-down action menu for each result in an issue navigator search is great</li>
<li>The activity stream stuff is very helpful</li>
</ul>
<p>Now, the contentious core JIRA stuff:</p>
<ul>
<li>I now feel like I have no issues. If only it were true. The whole JIRA UI feels &#8220;too&#8221; sparse, I feel like I cannot see my workload properly any more / the status of the project. A prime example is when you click on a project version and are shown the version summary tab which seems to show at max 3 updated + 3 &#8220;Due&#8221; issues. What use is that? Doesn&#8217;t seem configurable. <strong>UPDATE: </strong><em>Brian Lane, JIRA product manager has told me this is configurable in a configuration file but not in the UI, where the setting jira.project.summary.max.issues=3 can be found.</em></li>
<li>Roadmap view &#8211; for me at least &#8211; is completely useless now. It no longer shows all issues for a version if there are &#8220;too many&#8221;. This should at least be configurable and behave like old Jira by default. Its an imperfect world. Some of us have 170 issues in a version <img src="http://www.anyware.co.uk/2005/wp-includes/images/smilies/icon_sad.gif?9d7bd4" alt=':(' class='wp-smiley' />  What&#8217;s more the issues are sorted obscurely &#8211; you&#8217;d assume if only showing 50 issues it would show the 30 unresolved issues, but for me shows about 8 of those and 40+ resolved ones. Roadmap does not show me my roadmap, I have to drop into issue navigator <img src="http://www.anyware.co.uk/2005/wp-includes/images/smilies/icon_sad.gif?9d7bd4" alt=':(' class='wp-smiley' /> </li>
<li>I hate portlets. For dashboard overview stuff, fine &#8211; but they are used in other places too eg project overview, which feel like UI/usability cop-out. Its not Web 2.0, its iGoogle. Portlets are too generic to make any app feel seamless.</li>
<li>&#8220;advanced&#8221; searching with some new Jira QL is enabled by default it seems, which I think is a mistake. Bring back the good old simple search for most users by default. <strong>UPDATE:</strong> <em>Brian Lane also told me that this is not the case, it is not on by default. I don&#8217;t know how it became on for me though.</em></li>
</ul>
<p>Next, my first impressions of GreenHopper:</p>
<ul>
<li>GreenHopper is very specific to a particular Agile methodology and &#8220;card&#8221; (or post-it) metaphor. This IMO is enough to make it a total WTF for any users who are not Agile Scrumbag 3rd Dan Blackbelt Extremists. That includes me.</li>
<li>I was hoping for drag and drop planning of issues eg assigning them to people and versions in the roadmap. This is there, to a degree. GreenHopper is major overkill for the majority of users &#8211; and yet with no DnD scheduling in core Jira, you have little choice if you want to avoid the horribly repetitious standard Jira workflow steps to change fix-for on issues during planning where batch changes are not that workable as they require scanning all the issues before making your changes.</li>
<li>The UI is highly functional for the specific metaphor and methodology, but is frankly insane for every day users. It makes me feel ill trying to using it. Too much colour. Too many options. Too small fonts. Web 2.0 was years ago, we&#8217;re allowed to use a font &gt; 12px high now you know!</li>
</ul>
<p>Things I want day to day but can&#8217;t seem to achieve even with the power of Greenhopper and Jira 4:</p>
<ul>
<li>Drag issues to become subtasks of a parent</li>
<li>See a &#8220;tree&#8221; of issues as a list eg parent issues with subtask issues shown below them</li>
<li>Get an instant view of how close we are to the top-level features (parent tasks) being completed &#8211; eg the red/green bar of subtask completion for all parent tasks, shown in a flat list. Don&#8217;t get me started on the &#8220;Task board&#8221; of GreenHopper. Powerful yes. For mortals? No way.</li>
<li>JIRA completely lacks the personal element commonly found in Web 2.0 apps &#8211; avatars for user accounts. Github has this, so do most other hosted web 2.0 apps. Its a real omission and means functionality like &#8220;drop issue onto user&#8217;s face to assign it&#8221; is not yet possible.</li>
</ul>
<p>JIRA is very powerful, has had some solid UI improvements, but ultimately I think from a web-app developer&#8217;s point of view it is now weakened by its un-opinionated and excessively generic underpinnings. This can be seen by the way GreenHopper had to shoehorn its way into JIRA UI with some truly ugly configuration screens, mismatched fonts, general lack of integrated look and feel &#8211; and popup windows with standard Jira issue edit screens in.</p>
<p>It feels like JIRA is still firmly rooted in the waterfall-approach era. It has been very successful by trying to please everybody, but I feel that it is not yet up to the task of truly excellent web-development tracking &#8211; although it certainly remains the best option out there at this time in my opinion.</p>
<p>The GreenHopper plugin tries to bring a visual metaphor to all this, and that is welcome. However I think the visual metaphor of just dragging issues in the normal JIRA roadmap view would work a lot better for 90% of users than the agile &#8220;card&#8221; approach and all the steroids that those UI screens have been given.</p>
<p>I hope this doesn&#8217;t come across as too negative. Both products are a move in the right direction and <a href="http://www.atlassian.com/starter">there&#8217;s no way you can do wrong with the currently special offer pricing</a> that&#8217;s for sure.</p>
<p>However I hoped for a bit more progress in Jira&#8217;s UI for release planning etc out of the box - <a href="Permalink: http://www.anyware.co.uk/2005/2006/07/19/using-jira-to-manage-releases/">I wrote about these desires way back in 2006</a> - and GreenHopper despite normally being a premium product for exactly this, in my opinion fails to meet the needs of real-world users (eg the ones who don&#8217;t live in an Agile methodology bubble).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.anyware.co.uk/2005/2009/10/06/atlassian-jira-4-and-greenhopper-first-look/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>I&#8217;ve released another Grails plugin</title>
		<link>http://www.anyware.co.uk/2005/2009/09/18/ive-released-another-grails-plugin/</link>
		<comments>http://www.anyware.co.uk/2005/2009/09/18/ive-released-another-grails-plugin/#comments</comments>
		<pubDate>Fri, 18 Sep 2009 13:01:05 +0000</pubDate>
		<dc:creator>Marc Palmer</dc:creator>
				<category><![CDATA[Groovy and Grails]]></category>
		<category><![CDATA[Programming links]]></category>
		<category><![CDATA[Grails]]></category>
		<category><![CDATA[plugins]]></category>

		<guid isPermaLink="false">http://www.anyware.co.uk/2005/?p=556</guid>
		<description><![CDATA[Witness the power of the bean-fields plugin for Grails! &#60;bean:withBean beanName="form"&#62; &#60;bean:field property="firstName"/&#62; &#60;bean:field property="lastName"/&#62; &#60;bean:field property="company"/&#62; &#60;bean:field property="email"/&#62; &#60;/bean:withBean&#62; This will render input fields of the appropriate type, with sizes set according to the fields&#8217; constraints, select field items from inList etc. It also renders label tags, errors local to the field, and required [...]]]></description>
			<content:encoded><![CDATA[<p>Witness the power of the <a href="http://grails.org/plugin/bean-fields">bean-fields</a> plugin for <a href="http://grails.org">Grails</a>!</p>
<pre lang="groovy">&lt;bean:withBean beanName="form"&gt;
    &lt;bean:field property="firstName"/&gt;
    &lt;bean:field property="lastName"/&gt;
    &lt;bean:field property="company"/&gt;
    &lt;bean:field property="email"/&gt;
&lt;/bean:withBean&gt;</pre>
<p>This will render input fields of the appropriate type, with sizes set according to the fields&#8217; constraints, select field items from inList etc. It also renders label tags, errors local to the field, and required indicators.</p>
<p>You can customize the markup used for all this stuff, so that you get a consistent and noise-free rendering of fields across all your GSP views.</p>
<p><a href="http://grails.org/plugin/bean-fields">Please do check it out</a> and let me know if you have any issues.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.anyware.co.uk/2005/2009/09/18/ive-released-another-grails-plugin/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Development is easy. Creating product is hard.</title>
		<link>http://www.anyware.co.uk/2005/2009/09/17/development-is-easy-creating-product-is-hard/</link>
		<comments>http://www.anyware.co.uk/2005/2009/09/17/development-is-easy-creating-product-is-hard/#comments</comments>
		<pubDate>Thu, 17 Sep 2009 16:47:33 +0000</pubDate>
		<dc:creator>Marc Palmer</dc:creator>
				<category><![CDATA[Groovy and Grails]]></category>
		<category><![CDATA[Programming links]]></category>
		<category><![CDATA[Grails]]></category>
		<category><![CDATA[projects]]></category>
		<category><![CDATA[web services]]></category>

		<guid isPermaLink="false">http://www.anyware.co.uk/2005/?p=552</guid>
		<description><![CDATA[I&#8217;m working very long hours at the moment. By day I work on Weceem CMS and by night I am acting as the architect and producer of a new web service that I am developing with some friends. Of course the web service is being built with Grails &#8211; it would be insane to use [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m working very long hours at the moment. By day I work on <a href="http://weceem.org">Weceem CMS</a> and by night I am acting as the architect and producer of a new web service that I am developing with some friends.</p>
<p>Of course the web service is being built with <a href="http://grails.org">Grails</a> &#8211; it would be insane to use anything else! Chris our developer is doing an excellent job &#8211; Grails is massively empowering. In the timescale we&#8217;ve been working to an amazing amount of stuff has been achieved &#8211; even when some of it is being learned on the job.</p>
<p>Oh and of course the core idea is there but the details are being fleshed out as it is developed, but Grails reduces the pain for Chris as changing direction on some features is not as heartbreaking as throwing out weeks of work on thousands of lines of code.</p>
<p>Our designer Pat is also working well with editing GSPs directly, something new for her which she is enjoying, along with learning the joys of Blueprint CSS and jQuery UI.</p>
<p>However, what was obvious to me before starting this project, is painfully obvious to me now. Modern tools like Grails take the classically hard part of making a software product and turn the problem upside down.</p>
<p>We don&#8217;t spend time fiddling around with config and trying to glue various tech together, writing reams of bean accessors and lame JDBC code etc. &#8211; we spend all our time trying to meet the challenge of creating an application that really makes sense to users, hides all the technical detail &#8211; while providing features that a few years ago would have been considered very low priority due to the work required to get even the basics off the ground.</p>
<p>Expectations of modern web apps, especially the expectations that come from ourselves as designers and users of such services, are very high.</p>
<p>This is however a &#8220;high quality problem&#8221; compared to chipping away at a massive mountain of code just to get something half-assed ready, and deferring all the parts that are important and useful to end users (and hence ultimately the business) until later.</p>
<p>Time is of the essence. Grails cuts out maybe first 3 months of dev, and we focus on the business problems.</p>
<p>It&#8217;s a no-brainer in that sense.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.anyware.co.uk/2005/2009/09/17/development-is-easy-creating-product-is-hard/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced
Database Caching 11/19 queries in 0.216 seconds using disk: basic

Served from: www.anyware.co.uk @ 2012-02-10 03:30:50 -->
