<?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>Marc Palmer&#039;s Blog</title>
	<atom:link href="http://www.anyware.co.uk/2005/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.anyware.co.uk/2005</link>
	<description>Grails, iOS, Apple, usability &#38; world stuff</description>
	<lastBuildDate>Fri, 05 Apr 2013 10:39:07 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5</generator>
		<item>
		<title>Announcing my new blog: transition.io</title>
		<link>http://www.anyware.co.uk/2005/2013/04/05/announcing-my-new-blog-transition-io/</link>
		<comments>http://www.anyware.co.uk/2005/2013/04/05/announcing-my-new-blog-transition-io/#comments</comments>
		<pubDate>Fri, 05 Apr 2013 09:32:56 +0000</pubDate>
		<dc:creator>Marc Palmer</dc:creator>
				<category><![CDATA[Announcement]]></category>
		<category><![CDATA[Groovy and Grails]]></category>
		<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.anyware.co.uk/2005/?p=1416</guid>
		<description><![CDATA[I&#8217;ve decided to stop most of my blogging on this AnyWare blog which has served me well for nearly 10 years now. It has become too much of a mish-mash of topics. So I&#8217;m splitting my content out into two blogs. My iOS and general software development articles, reviews and design stuff is going to [...]]]></description>
				<content:encoded><![CDATA[<p>I&#8217;ve decided to stop most of my blogging on this AnyWare blog which has served me well for nearly 10 years now. It has become too much of a mish-mash of topics. 
<span id="more-1416"></span>
So I&#8217;m splitting my content out into two blogs.</p>

<p><img src="http://www.anyware.co.uk/2005/wp-content/uploads/2013/04/Screen-Shot-2013-04-05-at-11.24.40-300x300.png" alt="transition.io screenshot" width="300" height="300" class="alignnone size-medium wp-image-1418" /></p>

<p>My iOS and general software development articles, reviews and design stuff is going to be at the new <a href="http://transition.io">transition.io</a> site. There&#8217;s also a new <a href="http://twitter.com/transition_io">twitter account to follow</a> for post notifications, and a <a href="http://alpha.app.net/transition_io">new app.net account</a> too. If you don&#8217;t yet have an app.net account you can get a limited free one from me by asking me for an invite.  Can recommend it, it&#8217;s like Twitter minus the disregard for the users.</p>

<p>My <a href="http://grails.org">Grails</a> blog posts will now only appear on [grailsrocks.com]. If you&#8217;re not already following <a href="http://twitter.com/grails_rocks">grails_rocks on Twitter</a> you should do so as new posts will be notified that way.</p>

<p>I hope a lot of you will stay with me in one or both subject areas!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.anyware.co.uk/2005/2013/04/05/announcing-my-new-blog-transition-io/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A blast from the past, a sign of changing times</title>
		<link>http://www.anyware.co.uk/2005/2013/03/25/a-blast-from-the-past-a-sign-of-changing-times/</link>
		<comments>http://www.anyware.co.uk/2005/2013/03/25/a-blast-from-the-past-a-sign-of-changing-times/#comments</comments>
		<pubDate>Mon, 25 Mar 2013 20:52:57 +0000</pubDate>
		<dc:creator>Marc Palmer</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[history]]></category>

		<guid isPermaLink="false">http://www.anyware.co.uk/2005/?p=1409</guid>
		<description><![CDATA[I discovered an interview I did for Wiley around 1996 when I had built my Channel Maker app for Windows, for creating offline web subscription channels using the CDF format on Windows. I don&#8217;t remember any of this, and its interesting to see how something so potentially useful like CDF/Pointcast channels just died as bandwidth [...]]]></description>
				<content:encoded><![CDATA[<p>I discovered an <a href="http://www.wiley.com/legacy/compbooks/purcell/Channel/MARC1.HTM">interview I did for Wiley</a> around 1996 when I had built my Channel Maker app for Windows, for creating offline web subscription channels using the CDF format on Windows. I don&#8217;t remember any of this, and its interesting to see how something so potentially useful like CDF/Pointcast channels just died as bandwidth improved.</p>

<p><img src="http://www.anyware.co.uk/2005/wp-content/uploads/2013/03/cm_screen1_full.gif" alt="cm_screen1_full" width="504" class="alignnone size-full wp-image-1410" /></p>

<p>Thanks to the Wayback machine <a href="http://web.archive.org/web/19980111030910/http://www.anyware.co.uk/anyware/cm/features.html">we can see the full 1990s horror of my old website and the app</a>, and lack of understanding that bullet lists should stop at or before 5 items.</p>

<span id="more-1409"></span>

<p>I totally forgot that <a href="http://web.archive.org/web/19990915163538/http://www6.zdnet.com/cgi-bin/texis/swlib/hotfiles/info.html?fcode=000MCQ">my app got a 4-star review on ZDNet too</a>.</p>

<blockquote>
  <p>Tips on Channel Design: Interview with Marc Palmer of AnyWare Limited</p>
  
  <p>Channel Maker, a channel creation and maintenance tool designed by Marc Palmer, simplifies the task of generating a CDF file to represent site contents for an Active Channel. Chapter 10 of Guide to Creating Web Channels provides a case study based on Marc&#8217;s experiences launching his channel development tool on the Internet. In this interview, Marc brings us up to date on his current thoughts about channel design and the future of Web channels on the Internet.</p>
  
  <p>What elements go into good Web channel design?</p>
  
  <p>Basically, channels that don&#8217;t have any ITEMs or sub-channels SUCK! The &#8220;New Scientist&#8221; channel is a case in point-it is terrible for offline viewing. Also, 500K+ is an unnacceptable level of precaching for dial-up use, in my opinion.
  I&#8217;ve looked at IDG&#8217;s Active Channel site and I like the approach of having 2 different channels, one for modem and one for fast links. I imagine the difference is in the pre-caching.I would say that the page referred to by the top level CHANNEL tag (the page it goes to when you first open that channel) should load very quickly&#8230; otherwise, it can take ages before you are able to select an item within the channel.
  I would also say that people should try to keep the text content of their channels changing every day or so, even if there&#8217;s not much news &#8211; I think people will unsubscribe from channels that don&#8217;t seem to change (it encourages the idea that channels don&#8217;t work too). If you just change the text content and not the images, the precaching will be very quick.
  You can read some more of my thoughts on the topic at: http://www.anyware.co.uk/anyware/cm/guide.html</p>
  
  <p>Have you made any IE4 discoveries recently?</p>
  
  <p>I discovered something yesterday-you can drag and drop a subscription from your Subscriptions folder (i.e. a subscription to an HTML page, not a channel) onto your Channel bar. I never knew that&#8230; there are few channels I subscribe to, but there are some plain WWW sites that I like to track, as well.
  Why do you think companies have been so slow to adopt Web channels as a way to move info to their customers?</p>
  
  <p>I think the general problem has been the diversity of the technology-there is no clear winner. Netscape&#8217;s Netcaster, PointCast, Castanet, IE Channels&#8230; all slightly different technologies with no easy way of providing cross-browser support.</p>
  
  <p>I think the two main reasons that Microsoft Active Channels have not taken off are:</p>
  
  <p>1) Buggy implementation (caching problems etc.)
  2) Poor design of the channels that do exist &#8211; puts people off the technology</p>
  
  <p>&#8230;and a third reason that seems to be emerging is Microsoft&#8217;s apparent lack of direction with Channels. They are said to be dropping the channel <em>bar</em> from IE5, but I am told that channels will definitely still be supported and exploited.</p>
  
  <p>Where do you see Web channels going in the next couple of years?</p>
  
  <p>I think they&#8217;ll probably become a tool for TV-delivered Web content, perhaps just for navigating the content that is available, rather than controlling downloads. Microsoft and WebTV may well use them.</p>
  
  <p>Automatic software updates are interesting too&#8230; IE 4.01 introduced this but nobody really knows about it. You can create &#8220;blessed&#8221; shortcuts to your applications that use a CDF file to check if there is a newer software release available-if there is, it may already have been precached (if the CDF file specifies it) and you are taken to a WWW page (also precached) that tells you about the new version, with a link to the setup file. This is all automatic, so every time you run your application it will quickly scan the cached .CDF to see if there is a new version. Could be very useful for keeping staff up to date, or home users who don&#8217;t see the importance of downloading the latest software patch (i.e. WebTV).</p>
  
  <p>What are the best Active Channels you&#8217;ve discovered?</p>
  
  <p>I thought that What&#8217;s New Too was nice because it used DHTML as soon as the technology was there (when it was rare for things to fly around a WWW page!). Nowadays however, I have yet to find a well-thought out channel. It disappoints me that companies like CNN remain on the fence, opting for PointCast, which is something I don&#8217;t want to download; after all, I already have a browser with Channel facilities!</p>
  
  <p>Any suggestions as to useful potential applications for Web Channel technology?</p>
  
  <p>It&#8217;s possible to use channels simply for pre-caching &#8211; for example one user of Channel Maker uses a Channel to keep large numbers of staff up to date with their latest online forms for customer queries and so on, so when they come in in the morning all the latest info is instantly available. I imagine this can improve morning start-up time as the intranet WWW server will not have to handle with 1000s of HTTP requests at 9 a.m. when everyone logs in.</p>
  
  <p>You can also use a channel instead of using an HTTP-EQUIV REFRESH meta tag in pages to provide more sensible updating at specific times rather than at X seconds since the user accessed the page. CNN take note&#8230;</p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.anyware.co.uk/2005/2013/03/25/a-blast-from-the-past-a-sign-of-changing-times/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>All about the APIs</title>
		<link>http://www.anyware.co.uk/2005/2013/03/20/all-about-the-apis/</link>
		<comments>http://www.anyware.co.uk/2005/2013/03/20/all-about-the-apis/#comments</comments>
		<pubDate>Wed, 20 Mar 2013 16:59:20 +0000</pubDate>
		<dc:creator>Marc Palmer</dc:creator>
				<category><![CDATA[Mobile]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[samsung]]></category>

		<guid isPermaLink="false">http://www.anyware.co.uk/2005/?p=1398</guid>
		<description><![CDATA[For the big &#8220;global market&#8221; apps at least, it really is all about the APIs. Listening to the latest &#8220;Critical Path&#8221; podcast with Horace Dedieu, there are some great and compelling speculations. Episode 76 Google vs. Android is really worth listening all the way through for observations about the current state of Android and Google. [...]]]></description>
				<content:encoded><![CDATA[<p>For the big &#8220;global market&#8221; apps at least, it really is all about the APIs. Listening to the latest <a href="http://5by5.tv/criticalpath">&#8220;Critical Path&#8221; podcast with Horace Dedieu</a>, there are some great and compelling speculations. <a href="http://5by5.tv/criticalpath/76">Episode 76 Google vs. Android</a> is really worth listening all the way through for observations about the current state of Android and Google.</p>

<span id="more-1398"></span>

<p><a href="http://www.marco.org/2013/03/19/free-works">Marco Arment&#8217;s post about Google Reader</a> also ties into this. The tide has been turning for some time, but it is clear that the big guys want to own bespoke APIs. Given the famous &#8220;openness&#8221; of web-based apps why aren&#8217;t we seeing real efforts by these guys to create open interoperable protocols for things like Twitter-like messaging? In the old days we&#8217;d be expecting such a protocol to allow a single client app to post &#8220;tweets&#8221; to Twitter, Facebook, App.Net all using the same wire format. Those days are gone.</p>

<p>In Google Reader&#8217;s case they had a bespoke API, but all the original content is exposed with RSS, not an API Google control. Thus the incremental value they could add (and revenue they could derive) was minimal relative to their corporate goals.</p>

<p>What is more interesting to me is how this need for control affects the current mobile market. Manufacturers are differentiating by adding their own APIs on top of Android, just like all the handset operators including Samsung did back in the days of J2ME mobile apps (remember the Samsung FUN Club anyone? It wasn&#8217;t FUN in any way).</p>

<p>It has become very obvious over the last 12 months that Samsung is succeeding in the smartphone market, and this means Android has a lot of users, but it does not mean that Android itself is succeeding. As has been mentioned before, this is putting Android into a difficult place where Samsung can call the shots as they have all the market volume for Android. This appears to be happening because <a href="http://developer.samsung.com/samsung-wallet-api">they are introducing their own APIs</a> and <a href="http://developer.samsung.com/allshare-framework">implementations of services and features</a>, moving away from Google services.</p>

<p>Why are custom Android APIs important? Well if you&#8217;re a mobile developer with a clue and you need to target non-Apple platforms, the only one that matters is Samsung<a href="#fn1">*</a>. If you want to use the latest features of these mass market phones or provide the users with the experience they come to expect from an integrated platform, you will likely have to use Samsung&#8217;s exclusive APIs. This brings us back round to the custom API lock-in of the big net services.</p>

<p>I have no problem with that at all &#8211; after all my preferred platform of iOS / OS X is total platform lock in, in both language and API terms. In fact [I have argued that APIs are the killer requirement for a thriving mobile ecosystem] and this is why Android&#8217;s low O/S upgrade rates <strong>are</strong> a massive problem for app developers who want to make money selling apps (separate from large services trying to make ubiquitous free clients).</p>

<p>Handsets need to differentiate and add features over time, and they are already stabilising just like Mac laptops, which see solid but incremental refinements in hardware. It is the software and API that changes more. This time is arguably upon us already with phones &#8211; battery life and form factor are really the only hardware variables that will see continued tweaks. The odd sensor hear and there, the odd experimental new input method.</p>

<p>The thing is that everyone creating these platforms knows APIs are critical now. Google pretended that the poor Android O/S upgrade rates didn&#8217;t matter, but only because their entire business model for Android prevents them having any control over this. OEM manufacturers naturally tend towards short product life cycles and low margins which preclude long term update programs for existing customers.</p>

<p>I&#8217;m pretty sure Samsung don&#8217;t even want to build a long term platform, they just want differentiation and developer lock-in by offering custom APIs. Horace muses in the podcast that Samsung may one day have their own developer event like WWDC or Google I/O. I am not convinced by this because I don&#8217;t believe they have coherent long term plan for the platform. Its all just about this season&#8217;s hardware and appearing to be competitive with Apple. They would likely outsource the setup of this event and frankly I can&#8217;t see many people queueing up to talk to Samsung engineers or standing in a crammed room to learn how to code some new eyeball movement tracking API, which is the kind of thing that people pay money to do at Apple&#8217;s WWDC.</p>

<p>With the recent ditching of Andy Rubin, it would appear that Google is realising that Android is out of their control now and that they need to move to something new. This is probably the Android/Chrome hybrid that seems implicitly on the cards (it at least feels more likely than iOS and OS X merging).</p>

<p>As Horace Dedieu intimates in the podcast, maybe Google went with Android as an interim solution until the hardware, standards, connectivity and market &#8220;matured&#8221; enough to tolerate pure web O/S like Chrome. It was after all a peculiarly non-web solution for them to choose, and yet only those with blinkers on would have thought a pure web solution would work for mobile 5 years ago, let alone today.</p>

<p><a name="fn1"></a>
<em>(*)This was not how it used to be. Before Apple saved us from the mobile operator despots and brought us real smartphones, you couldn&#8217;t get an app distributed on any mobile operator&#8217;s network unless you ported it to support their own specific set of typically really bad and poor performing handsets like&#8230; oh the Samsung E700 (FUN club remember!), Sharp GX10 (screw you Vodafone!) or the O2 X1 (BenQ deserve punishment for that at some point).</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.anyware.co.uk/2005/2013/03/20/all-about-the-apis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Doing stuff for free, and who keeps communities alive?</title>
		<link>http://www.anyware.co.uk/2005/2013/03/13/doing-stuff-for-free-and-who-keeps-communities-alive/</link>
		<comments>http://www.anyware.co.uk/2005/2013/03/13/doing-stuff-for-free-and-who-keeps-communities-alive/#comments</comments>
		<pubDate>Wed, 13 Mar 2013 11:22:40 +0000</pubDate>
		<dc:creator>Marc Palmer</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Groovy and Grails]]></category>
		<category><![CDATA[Software business]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.anyware.co.uk/2005/?p=1387</guid>
		<description><![CDATA[If you&#8217;ve never listened to Mule Radio&#8217;s &#8220;Let&#8217;s Make Mistakes&#8221; podcast, you probably should. Mike Monteiro and Leah Reich are smart and entertaining, and occasionally deliberately offensive (which I like). Most of my readers are likely to be programmers, and at first it might seem there is not much overlap. If you are a freelance [...]]]></description>
				<content:encoded><![CDATA[<p>If you&#8217;ve never listened to Mule Radio&#8217;s <a href="http://www.muleradio.net/mistakes/">&#8220;Let&#8217;s Make Mistakes&#8221; podcast</a>, you probably should. Mike Monteiro and Leah Reich are smart and entertaining, and occasionally deliberately offensive (which I like). Most of my readers are likely to be programmers, and at first it might seem there is not much overlap. If you are a freelance developer or somebody who cares about running businesses that don&#8217;t suck, or have an interest in design you probably will get a lot from it. I do, and it also makes me laugh as much as it makes me think &#8211; which is quite a lot.
<span id="more-1387"></span>
Anyway, today <a href="http://www.muleradio.net/mistakes/85/">I listened to the latest episode #85</a> and was very surprised at how relevant it was to my <a href="http://grck.it/changes-to-plugins">recent withdrawal from active Open Source development</a> and open source community issues.</p>

<p>This episode covered some recent debacle about journalists being asked to write for free by companies like The Atlantic who should pay for work. If you&#8217;ve developed open source for free, this might ring some bells.</p>

<p>What was very interesting for me was the part (contributed by Leah I think) about people thinking that maybe you don&#8217;t need to be paid to do something you love doing, as well as the part about doing it to get exposure to lead on to further work. These are very common justifications given for doing your &#8220;craft&#8221; for free. Again this sounds very familiar to me.</p>

<p>This attitude is blatant nonsense the moment you stop to think about it. Of course you should be paid to do what you love. Its what we all should strive for &#8211; making our living from something we enjoy &#8211; its a basic way to be happy which is what we all want. Then add to the mix something else: for many of us, there is more than one thing we love doing. This means that if people don&#8217;t want to pay you for <em>this</em> thing that you love, the smart people shift to <em>that</em> thing that they love, where people will pay.</p>

<p>The other very interesting element was the talk about Facebook and social and photo services like Path and Flickr. Their guest Matt Honan, a writer for WIRED rightly says about ailing online or service communities:</p>

<blockquote>
  <p>&#8220;Sorry, but fuck that. The community doesn&#8217;t have any obligation to keep this place going. The people who are running the community do.&#8221;</p>
</blockquote>

<p>He goes on to talk about how Flickr dropped the ball by not having any sane mobile strategy which had them cede the social photo market to Instagram.</p>

<p>This is incredibly brutal and truthful. Businesses or products that rely on a community for their survival actually cannot expect their community to make the business or product thrive. Such activity by the community is a fig leaf over underlying failures and deficiencies. Furthermore and perhaps counterintuitively, people who haven&#8217;t paid anything have no reason to be loyal. People who have paid have made an investment they are less likely to turn their back on. Still, if you aren&#8217;t delivering the goods for your community, even those that pay will go.</p>

<p>The community has to enjoy the service or product and be served well by it. The onus is on the business or provider to make and continue to make it compelling and keep it contemporary. If you make Open Source stuff, however you are funded (or not), you have to keep making it compelling for people to participate. You cannot expect the community to step up and fill the gaps you leave if it is &#8220;your&#8221; product &#8211; which in truth is usually the case one way or another with all Open Source projects. There&#8217;s usually a company with ownership of the team, or an individual who is the leader of the project, and maybe some contributors whose employers are happy to bankroll some time.</p>

<p>If your product or service is not compelling enough, people will try other things and often they will not come back.</p>

<p>Even if they loved what you do, they will go where the pain is less and reminisce about how they enjoyed what your project did, and maybe mourn it a little, but they need to get on with doing stuff and removing the pain points, and they need to be where they can find the other people and features they need to interact with. Failing to change your course when things are causing you problems is that oft-mooted definition of madness.</p>

<p>On a complete side-note, in the podcast Mike Monteiro also lays it down beautifully about the evil that is Facebook:</p>

<blockquote>
  <p>Settings are only as good as the ethics of the people behind them &#8211; Mike Monteiro</p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.anyware.co.uk/2005/2013/03/13/doing-stuff-for-free-and-who-keeps-communities-alive/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A change to my Grails plugins</title>
		<link>http://www.anyware.co.uk/2005/2013/02/07/a-change-to-my-grails-plugins/</link>
		<comments>http://www.anyware.co.uk/2005/2013/02/07/a-change-to-my-grails-plugins/#comments</comments>
		<pubDate>Thu, 07 Feb 2013 17:26:55 +0000</pubDate>
		<dc:creator>Marc Palmer</dc:creator>
				<category><![CDATA[Groovy and Grails]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Software business]]></category>
		<category><![CDATA[announcement]]></category>

		<guid isPermaLink="false">http://www.anyware.co.uk/2005/?p=1377</guid>
		<description><![CDATA[Here&#8217;s the deal. I&#8217;ve worked really hard in various ways to help push the Grails platform forward for the last 6 years or so. I absolutely love Grails and would not currently choose any other web framework to make web apps. However it is completely unsustainable for me to work unpaid on this stuff, in [...]]]></description>
				<content:encoded><![CDATA[<p>Here&#8217;s the deal. I&#8217;ve worked really hard in various ways to help push the <a href="http://grails.org">Grails</a> platform forward for the last 6 years or so. I absolutely love Grails and would not currently choose any other web framework to make web apps.</p>

<p>However it is completely unsustainable for me to work unpaid on this stuff, in fact I should have called this a year or two ago. Releasing plugins used in many peoples&#8217; apps involves a high degree of responsibility, as well as ongoing support and maintenance.</p>

<span id="more-1377"></span>

<p>I have tried over the last 2-3 years to fund my free open source development with meaningful amounts of money; support <a href="http://grailsrocks.com">subscriptions</a>, <a href="http://grck.it/email-confirmation-book">selling e-books</a>, and the <a href="http://grck.it/resources-kickstarter">Resources 1.2 Kickstarter</a>. The Kickstarter may yet reach its goal, and that would be great. Many people have already pledged very generously.</p>

<p>Personally I invested a lot of energy, time and money to try to achieve a sustainable development model. These attempts have not received the level of support from the community needed to make them viable. This is arguably inevitable if you create free product in a relatively small market. Getting money from developers is <em>hard</em>, getting money from your users is close to impossible after you&#8217;ve already given your product to them for free.</p>

<p>For years I thought I could create free open source in the manner of a &#8220;product&#8221; to a high standard. In the end you can&#8217;t escape the fact that you have to either have a lot of time to kill or the financial resources to be able to achieve that. I wanted to create lots of great new stuff that was missing from the ecosystem because I needed it. I released these to share them with others, without considering the workload that would create over time.</p>

<p>The upshot is that I&#8217;m afraid I can no longer do any development or support work on Grails plugins unless I am paid to do so. In effect this is no real change over the situation in recent months, it is merely a formalisation of my intentions.</p>

<p>This affects the following plugins:</p>

<ul>
<li><a href="http://grails.org/plugin/resources">Resources</a></li>
<li><a href="http://grails.org/plugin/platform-core">Platform Core</a></li>
<li><a href="http://grails.org/plugin/platform-ui">Platform UI</a></li>
<li><a href="http://grails.org/plugin/email-confirmation">Email Confirmation</a></li>
<li><a href="http://grails.org/plugin/cached-resources">Cached Resources</a></li>
<li><a href="http://grails.org/plugin/zipped-resources">Zipped Resources</a></li>
<li><a href="http://grails.org/plugin/cache-headers">Cache Headers</a></li>
<li><a href="http://grails.org/plugin/feeds">Feeds</a></li>
<li><a href="http://grails.org/plugin/bean-fields">Bean Fields</a></li>
<li><a href="http://grails.org/plugin/taxonomy">Taxonomy</a></li>
<li><a href="http://grails.org/plugin/invitation-only">Invitation Only</a></li>
<li><a href="http://grails.org/plugin/one-time-data">One Time Data</a></li>
<li><a href="http://grails.org/plugin/authentication">Authentication</a></li>
<li><a href="http://grails.org/plugin/navigation">Navigation</a></li>
<li><em>Update</em> I forgot <a href="http://grails.org/plugin/functional-test">Functional-Test</a></li>
</ul>

<p>…as well as the work-in-progress plugins:</p>

<ul>
<li><a href="http://grails.org/plugin/bootstrap-ui">Bootstrap UI</a></li>
<li><a href="http://grails.org/plugin/bootstrap-theme">Bootstrap Theme</a></li>
<li><a href="http://grails.org/plugin/fresh-security">Fresh Security</a></li>
</ul>

<p>Any future changes I do make to these plugins will strictly be on the basis of sponsorship by clients or my personal needs. I do not plan to release any new plugins publicly on anything other than these same terms.</p>

<p>There are likely to be some minor Platform Core, Platform UI and <a href="http://weceem.org">Weceem</a> updates in the coming months because of a kind offer of sponsorship for this work by <a href="http://jcatalog.com">jCatalog AG</a>. If your company wants to sponsor a block of development time <a href="http://www.anyware.co.uk/marc">please get in touch</a>.</p>

<p>I will begin the process of updating the grails.org plugin portal to clearly state that I am no longer supporting the plugins. I will no longer respond to JIRA issues. I may still post to the mailing list when I have time.</p>

<p>All of the code for the plugins is already in <a href="http://github.com/grailsrocks">Github</a>. You are welcome to fork it. If you want to release new versions of these plugins please:</p>

<ol>
<li>Discuss this intention on the Grails user mailing list</li>
<li>Go ahead and get the relevant permissions to do so</li>
<li>Follow sane release processes i.e. good versioning, tracking of fixes and features in JIRA (or github issues) and publish good release notes, tagging in git etc</li>
<li>Make it clear that you&#8217;re taking on support issues and that I won&#8217;t be</li>
</ol>

<p><em>Update:</em> for clarity, this means I will <em>not</em> review, merge or publish new releases. Someone else will have to take responsibility for that. Fork my Grailsrocks repos to somewhere else and release the plugins under the same name to the Grails plugin repo, after getting permission to do the release from the Grails team.</p>

<p>Effectively I am going to become a some-time contributor to my own plugins. If people from the community want to run with them, they are welcome provided my credit is retained and the license adhered to.</p>

<p>I want to re-iterate that I am still committed to Grails, but my time is going to be spent working with Grails for my paying clients.</p>

<p>I do remain concerned that there seems to be a distinct lack of large companies that use Grails giving back to the community in any tangible way. I can&#8217;t understand this, given the fantastic benefits that Grails provides. Perhaps people think that because VMWare own it that there is no need to provide extra resources?</p>

<p>Anyway, I&#8217;m looking forward to working with some new clients from March 2013. If you&#8217;re interested <a href="http://www.anyware.co.uk/marc">get in touch</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.anyware.co.uk/2005/2013/02/07/a-change-to-my-grails-plugins/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Announcing the launch of Uncoop.me for Co-operative Bank customers</title>
		<link>http://www.anyware.co.uk/2005/2013/01/30/announcing-the-launch-of-uncoop-me-for-co-operative-bank-customers/</link>
		<comments>http://www.anyware.co.uk/2005/2013/01/30/announcing-the-launch-of-uncoop-me-for-co-operative-bank-customers/#comments</comments>
		<pubDate>Wed, 30 Jan 2013 17:55:06 +0000</pubDate>
		<dc:creator>Marc Palmer</dc:creator>
				<category><![CDATA[Announcement]]></category>
		<category><![CDATA[co-op]]></category>

		<guid isPermaLink="false">http://www.anyware.co.uk/2005/?p=1367</guid>
		<description><![CDATA[Over the weekend I wanted to start getting to grips with our personal finances. Where does all the money go eh? I ended up launching a new free utility for The Co-operative Bank customers. As a long time customer of The Co-operative Bank, where your money goes is rather tedious to ascertain. There&#8217;s a lot [...]]]></description>
				<content:encoded><![CDATA[<p>Over the weekend I wanted to start getting to grips with our personal finances. Where <em>does</em> all the money go eh?</p>

<p>I ended up launching a new free utility for The Co-operative Bank customers.
<span id="more-1367"></span></p>

<p>As a long time <a href="http://www.co-operativebank.co.uk">customer of The Co-operative Bank</a>, where your money goes is rather tedious to ascertain. There&#8217;s a lot of personal finance software out there that imports your statements as CSV or OFX files, and lets you do some analysis on them, and this is what you need to use to stay sane. Rifling through page upon page of statements is for the birds.</p>

<p>The problem for us <a href="http://www.co-operativebank.co.uk">The Co-operative Bank</a> customers is that there is <em>no way to export or download your personal banking statements</em> from their very long-in-the-tooth online banking service. Its unbelievable but true. Also, googling seems to indicate that The Co-op have in excess of 20 million account holders. None of whom can use financial planning software without manually inputting all the data from their statements. Or&#8230; using some of the online services that claim to &#8220;connect&#8221; to The Co-op to download your financial data.</p>

<p>In reality those services ask you for all of your confidential login information, which arguably violates your Co-op bank terms and may open you up to claims if your account is used fraudulently. These services are all I believe using a service called Yodlee which stores your confidential login details and uses them to connect as necessary to get your data. This is not something I am willing to do, especially given the fact that most of these services are not open about their use of Yodlee and the risks connected to this.</p>

<p>Anyway, I came up with a new and very elegant solution. Its taken three days to polish it up, but I now present you with <a href="http://uncoop.me">uncoop.me</a>.</p>

<div class='embed-vimeo' style='text-align:center;'><iframe src='http://player.vimeo.com/video/58556537' width='400' height='300' frameborder='0'></iframe></div>

<p>All you do is visit <a href="http://uncoop.me">uncoop.me</a> once, drag the &#8220;Save Co-op Statement&#8221; button to your bookmarks, and when viewing your co-op statement of choice, press the &#8220;Save Co-Op Statement&#8221; button/link in your browser. It &#8220;scrapes&#8221; the information out of the current page, generates both CSV and OFX format data for it, and lets you save it to your computer with a smart automatically-generated filename like &#8220;Statement_PRIVILEGE_12345678_01_02_2013.csv&#8221; (or .ofx).</p>

<p>I&#8217;m pretty pleased with it. I&#8217;m hoping the 20 million plus Co-operative bank customers will enjoy this new freedom until such a time The Co-op actually implement it themselves.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.anyware.co.uk/2005/2013/01/30/announcing-the-launch-of-uncoop-me-for-co-operative-bank-customers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Grails Resources 1.2 Kickstarter is off to a good start</title>
		<link>http://www.anyware.co.uk/2005/2013/01/30/grails-resources-1-2-kickstarter-is-off-to-a-good-start/</link>
		<comments>http://www.anyware.co.uk/2005/2013/01/30/grails-resources-1-2-kickstarter-is-off-to-a-good-start/#comments</comments>
		<pubDate>Wed, 30 Jan 2013 17:39:45 +0000</pubDate>
		<dc:creator>Marc Palmer</dc:creator>
				<category><![CDATA[Groovy and Grails]]></category>

		<guid isPermaLink="false">http://www.anyware.co.uk/2005/?p=1365</guid>
		<description><![CDATA[A couple of days ago I launched the Resources 1.2 Kickstarter project. The project is to resolve at least 46 issues in the Resources plugin and complete a final 1.2 release of it along with much improved test coverage and updates to some related plugins (see Kickstarter for exhaustive details). We&#8217;ve already hit 10% funding [...]]]></description>
				<content:encoded><![CDATA[<p>A couple of days ago I launched the <a href="http://grck.it/resources-kickstarter">Resources 1.2 Kickstarter project</a>. The project is to resolve at least 46 issues in the Resources plugin and complete a final 1.2 release of it along with much improved test coverage and updates to some related plugins (see Kickstarter for exhaustive details).</p>

<p>We&#8217;ve already hit 10% funding in less than two days, with less than thirty backers. I know at least 110 people were prepared to buy the Resources LeanPub book (if it gets made) so there&#8217;s a lot more people out there interested in supporting this work with funds.
<span id="more-1365"></span>
The Kickstarter has lots of info about the project, but in terms of why I&#8217;ve used Kickstarter it may help to give some more details.</p>

<p>Basically, I just can&#8217;t keep up with the Open Source workload. The opportunity cost to me is too great to spend many hours per week keeping up with all the issue and pull requests on my plugins, let alone develop new features. Development has become purely &#8220;needs based&#8221; for me because I really do have to pay the bills.</p>

<p>I have pursued other options, at not insignificant cost in time and cash:</p>

<ul>
<li>Paid support subscriptions &#8211; no interest and cost a fortune in time and Merchant account &amp; recurring payment API fees</li>
<li>E-books &#8211; some people will happily pay for books but its hard enough to make money on them let alone enough money to allow you to improve the code itself, which is what people really want</li>
</ul>

<p>I hope the Kickstarter reaches its goal. In reality I think this is pretty unlikely unless we get some corporate backers. There are surely a lot of medium/large companies out there benefitting from the features Resources provides, and the corporate pledge levels include promo slots on this blog which gets a good amount of Grails specific traffic.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.anyware.co.uk/2005/2013/01/30/grails-resources-1-2-kickstarter-is-off-to-a-good-start/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Email Confirmation 2.0.7 and my first e-book!</title>
		<link>http://www.anyware.co.uk/2005/2013/01/15/email-confirmation-2-0-7-and-my-first-e-book/</link>
		<comments>http://www.anyware.co.uk/2005/2013/01/15/email-confirmation-2-0-7-and-my-first-e-book/#comments</comments>
		<pubDate>Tue, 15 Jan 2013 17:05:18 +0000</pubDate>
		<dc:creator>Marc Palmer</dc:creator>
				<category><![CDATA[Groovy and Grails]]></category>

		<guid isPermaLink="false">http://www.anyware.co.uk/2005/?p=1356</guid>
		<description><![CDATA[I&#8217;ve released Grails Email Confirmation 2.0.7, you can see the announcement here. I&#8217;ve also created (and almost completed) a Lean Publishing e-book as a high quality user guide for the plugin. You can get the PDF, ePub and Kindle versions of this for just a few dollars and you will continue to get updates as [...]]]></description>
				<content:encoded><![CDATA[<p>I&#8217;ve released Grails Email Confirmation 2.0.7, <a href="http://grailsrocks.com/2013/01/15/email-confirmation-2-0-7-released-with-docs-and-e-book-guide/">you can see the announcement here</a>.</p>
<p>I&#8217;ve also created (and almost completed) a Lean Publishing e-book as a high quality user guide for the plugin.<br />
<span id="more-1356"></span><br />
You can get the PDF, ePub and Kindle versions of this for just a few dollars and you will continue to get updates as I finish, refine and update it over time. This has been an interesting experience and means we now have guide docs (as well as new free reference docs) for the plugin.</p>
<p>If you are interested in using the plugin or just want to support my work, please buy it!</p>
<div class="iframe-wrapper">
  <iframe src="https://leanpub.com/grails-email-confirmation/embed" frameborder="0" style="height:400px;width:160px;">Please upgrade your browser</iframe>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.anyware.co.uk/2005/2013/01/15/email-confirmation-2-0-7-and-my-first-e-book/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The recent Rails exploits and Grails</title>
		<link>http://www.anyware.co.uk/2005/2013/01/14/the-recent-rails-exploits-and-grails/</link>
		<comments>http://www.anyware.co.uk/2005/2013/01/14/the-recent-rails-exploits-and-grails/#comments</comments>
		<pubDate>Mon, 14 Jan 2013 12:00:47 +0000</pubDate>
		<dc:creator>Marc Palmer</dc:creator>
				<category><![CDATA[Groovy and Grails]]></category>

		<guid isPermaLink="false">http://www.anyware.co.uk/2005/?p=1346</guid>
		<description><![CDATA[Last week saw a couple of Rails vulnerabilities announced relating to binding parameters from requests. When such announcements come up I always try to apply the same thinking to Grails to make sure we are not affected too. There&#8217;s nothing worse than chuckling at yet another exploit in another framework and then being hit by [...]]]></description>
				<content:encoded><![CDATA[<p>Last week saw a couple of <a href="https://groups.google.com/forum/?fromgroups=#!topic/rubyonrails-security/61bkgvnSGTQ">Rails vulnerabilities</a> announced relating to binding parameters from requests. When such announcements come up I always try to apply the same thinking to Grails to make sure we are not affected too. There&#8217;s nothing worse than chuckling at yet another exploit in another framework and then being hit by it yourself.
<span id="more-1346"></span>
Grails is <strong>inherently not vulnerable to SQL injection attacks</strong> if you use GORM + Hibernate. There may be such exploits possible if you are using your own SQL code or some other DB tech directly without adequate protections but this is unlikely.</p>

<p>There is however one aspect of this exploit that could cause problems for Grails apps. I&#8217;m not aware of any critical security breaches that would be possible but some app code may be vulnerable to bad behaviour.</p>

<p>The issue we do have is that <a href="http://grails.org">Grails</a> automatically creates maps of params that are found with dot notation in their names, to provide the nested parameter maps feature.</p>

<p>This means that if you directly use <code>params</code> values, your code could unexpectedly receive a <code>Map</code> instead of a <code>String</code> value if someone crafts a malicious request. In most cases this will simply cause some kind of exception. This isn&#8217;t ideal but on the basis this will only be happening if someone tries to hack your box, it&#8217;s probably not a big deal. There&#8217;s perhaps a denial of service possibility here.</p>

<p>You can see this at work on the Grails website, and examples of the ways apps may react to it. If you craft a plugin search query to include a sub-parameter:</p>

<p><a href="http://grails.org/plugins/search?q.meaningOfLife=42">http://grails.org/plugins/search?q.meaningOfLife=42</a></p>

<p>What you see is an error message. Chances are this means the app 500&#8242;d due to an exception. This is different to the case where you query with no value for &#8220;q&#8221;:</p>

<p><a href="http://grails.org/plugins/search?_____meaningOfLife=42">http://grails.org/plugins/search?_____meaningOfLife=42</a></p>

<p>In this latter case it sees there is no &#8220;q&#8221; at all and so redirects you. This indicates that getting a Map for &#8220;q&#8221; in the first case caused some obscure problem in the code. If this was a system that updated tables, if it wasn&#8217;t using transactions it would be possible that it left the database in a bad state.</p>

<p>The other way to see this at work in grails.org is to do a site-wide text search using a frigged <code>Map</code> argument:</p>

<p><a href="http://grails.org/search?q.meaningOfLife=42">http://grails.org/search?q.meaningOfLife=42</a></p>

<p>If you click that, will see how it was turned into a map and displayed back to you. So it actually tried to search for &#8220;[meaningOfLife:42]&#8221; but the syntax of the search was rejected by Lucene.</p>

<p>The more insidious problem could theoretically arise if you pass a <code>params</code> value as an argument to a method. Groovy’s dynamic method resolution might resolve to a different form of the method to the one intended. This is similar in some ways to the real Rails exploit.</p>

<p>Here&#8217;s an example in a security controller:</p>

<pre><code>private doUpdate(String id) {
}

private doUpdate(Map properties) {
}

def update = {
   doUpdate(params.id)
}
</code></pre>

<p>In this case you can hopefully see how, if the request was for <code>/update?id.roles=admin</code> that we <em>might</em> be in for some trouble as the <code>Map</code> variant of the method may be called and have a totally different outcome, depending on your code path.</p>

<p>I don&#8217;t know of any real vulnerabilities of this kind with dynamic finders or other Grails or Groovy methods. If you can come up with any please do let us know as soon as possible. Binding whitelists are still important in this scenario to prevent such a Map binding to one of your domain object associations, but if you didn&#8217;t want that property to bind you were excluding it already I presume.</p>

<p>The simple fix for this is to do the right thing in the first place: <strong>never used unchecked params from requests</strong>. All such data is inherently untrustworthy even if a user is authenticated (authorised accounts can still craft bad requests). This is &#8220;Computer Science 101&#8243; really. However it is  currently just too easy to be lazy and use params direct. We&#8217;ve all done it despite the new mechanisms available.</p>

<p>You probably know that Grails provides two fantastic mechanisms to avoid using params un-checked. Command objects and typed action parameter arguments allow you to enforce the correct type and validation and so this kind of attack cannot bite you.</p>

<p>I have suggested to the other Grails core devs that in a future Grails release we disable access to params by default, unless an @UnsafeParams annotation is added to the action. Details of how this affects plugins remain to be fleshed out.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.anyware.co.uk/2005/2013/01/14/the-recent-rails-exploits-and-grails/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>You can now call me for paid support/advice</title>
		<link>http://www.anyware.co.uk/2005/2013/01/09/you-can-now-call-me-for-paid-supportadvice/</link>
		<comments>http://www.anyware.co.uk/2005/2013/01/09/you-can-now-call-me-for-paid-supportadvice/#comments</comments>
		<pubDate>Wed, 09 Jan 2013 13:16:02 +0000</pubDate>
		<dc:creator>Marc Palmer</dc:creator>
				<category><![CDATA[Groovy and Grails]]></category>

		<guid isPermaLink="false">http://www.anyware.co.uk/2005/?p=1343</guid>
		<description><![CDATA[In the ongoing experiment to find ways to have more time to work on my various free open source Grails plugins, I have started using Clarity.fm. This service, as you can see in the side bar on the right of this page, lets you book time with me for a call for which you pay [...]]]></description>
				<content:encoded><![CDATA[<p>In the ongoing experiment to find ways to have more time to work on my various free open source <a href="http://grails.org">Grails</a> plugins, I have started using <a href="http://clarity.fm">Clarity.fm</a>.</p>

<p>This service, as you can see in the side bar on the right of this page, lets you book time with me for a call for which you pay $2 per minute. This means you can limit the time of your call and how much you spend, but you can also get professional help from me without requiring contracts or any longer term commitments.</p>

<p>I don&#8217;t expect this to generate a lot of revenue, but who knows it could help. Perhaps you will be my first caller?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.anyware.co.uk/2005/2013/01/09/you-can-now-call-me-for-paid-supportadvice/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
