<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Simon Palmer's blog</title>
	<atom:link href="http://simonpalmer.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://simonpalmer.com</link>
	<description>Wondering whether anyone will ever read this...</description>
	<lastBuildDate>Fri, 12 Mar 2010 19:54:14 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='simonpalmer.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/a5928e402a7256cd88836e6e07c73080?s=96&#038;d=http://s2.wp.com/i/buttonw-com.png</url>
		<title>Simon Palmer's blog</title>
		<link>http://simonpalmer.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://simonpalmer.com/osd.xml" title="Simon Palmer&#8217;s blog" />
	<atom:link rel='hub' href='http://simonpalmer.com/?pushpress=hub'/>
		<item>
		<title>*Really* simple Mail service for authsmtp in Grails</title>
		<link>http://simonpalmer.com/2010/03/12/really-simple-mail-service-for-authsmtp-in-grails/</link>
		<comments>http://simonpalmer.com/2010/03/12/really-simple-mail-service-for-authsmtp-in-grails/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 14:37:47 +0000</pubDate>
		<dc:creator>simonpalmer</dc:creator>
				<category><![CDATA[Grails]]></category>
		<category><![CDATA[code]]></category>

		<guid isPermaLink="false">http://simonpalmer.com/?p=248</guid>
		<description><![CDATA[OK, after A MONTH of trying to figure out how to get the Grails mail plugin to talk to authsmtp, and *utterly* failing, in a puddle of tears this afternoon at my 1,745th attempt at finding out anything about this on the web, I went into deep hack mode and cracked it in 15 minutes [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simonpalmer.com&blog=2386747&post=248&subd=simonpalmer&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<p>OK, after <strong>A MONTH</strong> of trying to figure out how to get the Grails mail plugin to talk to authsmtp, and *utterly* failing, in a puddle of tears this afternoon at my 1,745th attempt at finding out anything about this on the web, I went into deep hack mode and cracked it in 15 minutes flat.</p>
<p>The answer&#8230; write my own f*!%$ing email service.</p>
<p>If you can bear to read to the end I have a bigger Grails lesson, but here&#8217;s the solution for any poor person who may be following me down this path.  </p>
<p>First off, why <a href="http://www.authsmtp.com/index.html">AuthSMTP.com</a>?  Well, in a production envronment, for a real world application which is going to be generating email in response to user actions (such as notifications), then your gmail account will not cut it and your local ISP will almost certainly block the IP address of your server &#8211; especially if you deploy into the cloud at either Google or AWS.  That means you have to have a real SMTP host to take care of the relaying and send.  AuthSMTP is one of many out there, but their pricing policy is reasonable and they are production strength.  I have used them for personal accounts for POP3 and they have been good, although their technical support demonstrated the worst sort of brainless responses possible and was deeply disappointing.</p>
<p>So, following the mantra which got me here, of &#8220;how hard can it be?&#8221;, here&#8217;s the answer&#8230;</p>
<p>First off go to your grails prompt and create a service with a name of your choice using </p>
<p>grails create-service Mymail</p>
<p>Next in the scaffolded code, put the following &#8211; I decided that I would just use old fashioned Java since I sort of felt I know what I was doing and I am still not comfortable enough with Groovy that I would risk chasing my own stupid errors for another month.</p>
<pre class="brush: java;">
import java.util.Properties;
import javax.mail.internet.*;
import javax.mail.*;

class MymailService
{
    boolean transactional = false

    public boolean sendMessage(String to, String msgSubject, String msgText)
    {
		String host = &quot;mail.authsmtp.com&quot;;
		String username = &quot;ac99999&quot;; // your authsmtp username
		String password = &quot;xxxxxxxxxx&quot; // your authsmtp password
		String from = &quot;no-reply@yourdomain.com&quot;;

		Properties props = System.getProperties();
		props.put(&quot;mail.smtp.host&quot;, host);
		props.put(&quot;mail.smtp.user&quot;, username);
		props.put(&quot;mail.smtp.password&quot;, password);
		props.put(&quot;mail.smtp.port&quot;, &quot;2525&quot;); // thish is the port recommended by authsmtp
		props.put(&quot;mail.smtp.auth&quot;, &quot;true&quot;);

		Session session = Session.getDefaultInstance(props, null);
		MimeMessage message = new MimeMessage(session);
		message.setFrom(new InternetAddress(from));

		InternetAddress to_address = new InternetAddress(to);
		message.addRecipient(Message.RecipientType.TO, to_address);

		message.setSubject(msgSubject);
		message.setText(msgText);
		Transport transport = session.getTransport(&quot;smtp&quot;);
		transport.connect(host, username, password);
		transport.sendMessage(message, message.getAllRecipients());
		transport.close();
		return true;
	}
}
</pre>
<p>It&#8217;s worst fault is that the thread waits for a response form the server and I confess the error handling could be <del datetime="2010-03-12T14:34:28+00:00">added</del> improved, and OK, you can&#8217;t attach files and you can&#8217;t send to multiple recipients, although adding that would be really simple, and you can&#8217;t do back-flips and set properties on the fly and blah blah.  BUT&#8230; you can send a basic message from one email address to another, which I am betting is what 99% of automatically generated email does.</p>
<p>Now for the lesson, and look away if you have already been baptised by a Grails evangelist.  The conclusion I am quickly coming to is that all the benefit I got on the swings of a rapid start with Grails I have more than lost on the ugly, nasty, dizzying, vomity, downright dangerous roundabout of debugging it when something doesn&#8217;t work.</p>
<p>Even having gone as far as downloading and installing the STS Eclipse IDE &#8211; which remains the slowest piece of software on my desktop by a factor of 5 &#8211; and figuring out how to actually debug a session, stepping through the code I found myself in a completely impenetrable marass of codeless call stacks as deep as the <a href="http://www.marianatrench.com/">mariana trench</a>.  It remains about as bad a development experience as I have had in the 20-some years I&#8217;ve been doing it.  The only worse thing is the silent fail of a Javascript library as the browser refuses it. It&#8217;s about time the browser was replaced with something better, but that&#8217;s a whole other rant.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/simonpalmer.wordpress.com/248/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/simonpalmer.wordpress.com/248/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/simonpalmer.wordpress.com/248/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/simonpalmer.wordpress.com/248/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/simonpalmer.wordpress.com/248/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/simonpalmer.wordpress.com/248/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/simonpalmer.wordpress.com/248/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/simonpalmer.wordpress.com/248/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/simonpalmer.wordpress.com/248/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/simonpalmer.wordpress.com/248/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simonpalmer.com&blog=2386747&post=248&subd=simonpalmer&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://simonpalmer.com/2010/03/12/really-simple-mail-service-for-authsmtp-in-grails/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/56e7993be670c363354b696cff311172?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">simonpalmer</media:title>
		</media:content>
	</item>
		<item>
		<title>*Really* simple asynchronous file upload in Grails</title>
		<link>http://simonpalmer.com/2010/03/05/really-simple-file-upload-in-grails/</link>
		<comments>http://simonpalmer.com/2010/03/05/really-simple-file-upload-in-grails/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 16:11:58 +0000</pubDate>
		<dc:creator>simonpalmer</dc:creator>
				<category><![CDATA[Grails]]></category>
		<category><![CDATA[code]]></category>

		<guid isPermaLink="false">http://simonpalmer.com/?p=239</guid>
		<description><![CDATA[I spent ages trying to decide which was the best way for me to implement file upload in my grails app.  What I wanted was the ability for a user to select an image from their local machine and for it to be uploaded into a tag on my page.  The biggest issue [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simonpalmer.com&blog=2386747&post=239&subd=simonpalmer&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<p>I spent ages trying to decide which was the best way for me to implement file upload in my grails app.  What I wanted was the ability for a user to select an image from their local machine and for it to be uploaded into a tag on my page.  The biggest issue I faced was that the upload button, and in fact the whole DIV that contained the image and other stuff, is generated at runtime.  The other mandatory condition was that it had to happen asynchronously and without re-loading the page.  </p>
<p>I tried out 3 or 4 solutions, including several grails plug-ins (google for &#8220;grails file upload&#8221; and you&#8217;ll find them), several ajax javascript solutions, which I have now lost, and a couple of Flash uploader implementations.  The trouble with all of them was a combination of complexity and size.  In the end I found a really simple alternative which seems to work just fine and builds on adding the Grails UI plugin into my application.</p>
<p>My solution was in two parts, first was to give myself the ability to have a modal dialog box on my page and second was to utilise the Yahoo GUI library to make an asynchronous connection back to the server.</p>
<p>The modal dialog came directly from the <a href="http://grails.org/plugin/grails-ui">Grails UI plugin</a>, which has a very rich set of excellent features and I recommend it.  Installing that plugin gave me a dialog box, which was as simple as including a resource reference and a GSP tag in a hidden div on my page&#8230;</p>
<pre class="brush: xml;">
        &lt;gui:resources components=&quot;['dialog']&quot;/&gt;
        &lt;div&gt;
            &lt;gui:dialog
                id=&quot;dlgFileUpload&quot;
                title=&quot;Upload Image&quot;
                draggable=&quot;false&quot;
                modal=&quot;true&quot;
                buttons=&quot;[[text:'Upload', handler: 'onUploadButtonClick', isDefault: true],[text:'Cancel', handler: 'function() {this.cancel();}', isDefault: false]]&quot;&gt;
                &lt;form action=&quot;uploadfile&quot; enctype=&quot;multipart/form-data&quot; method=&quot;post&quot; id=&quot;uploadForm&quot;&gt;
                &lt;input type=&quot;file&quot; name=&quot;testFile&quot;/&gt;
                &lt;/form&gt;
            &lt;/gui:dialog&gt;
        &lt;/div&gt;
</pre>
<p>The important thing to notice in here is that the dialog box contains a form which defines the multipart enctype, the method as POST.  The action refers to the code in my Grails controller which handled persistence of the file.  The gui:resources tag is exploded by Grails into a set of script includes for the Yahoo UI libraries.  This is important because the YUI library is very large and there are many interdependencies, and this single tag hides all that, which is a major time saver.</p>
<p>The other thing that the Grails UI plugin gave me was the whole of the YUI library, so the next bit was to write some code to handle the file upload itself.  Rather than lots of fancy components I realised that I could just use the YAHOO.util.Connect object to make an asynchronous call back to the server, in much that same way that I might otherwise have used an XMLHTTPRequest object in Javascript. Because the whole YUI library is included with the plugin I already had the code.  To get at the Connect object I had to include the appropriate script because the gui:resources tag seemed not to add it as a dependence&#8230;</p>
<pre class="brush: xml;">
        &lt;script type=&quot;text/javascript&quot; src=&quot;/js/yui/2.7.0/utilities/utilities.js&quot; &gt;&lt;/script&gt;
</pre>
<p>From that point it was a simple matter of writing a function to handle the click on the upload button in my dialog which made the request back to the server, and handled the response&#8230;</p>
<pre class="brush: jscript;">
        function onUploadButtonClick(e)
        {
            var uploadHandler =
            {
                upload: function(o)
                {
                    refreshActiveImage(o.responseText);
                    setDirty();
                    hideWaitCursor();
                }
            };
            showWaitCursor();
            //the second argument of setForm is crucial,
            //which tells Connection Manager this is an file upload form
            YAHOO.util.Connect.setForm('uploadForm', true);
            YAHOO.util.Connect.asyncRequest('POST', 'uploadfile', uploadHandler);
            this.cancel();
        }
</pre>
<p>The important thinhg to notice in here is that the setForm call requires the second argument to be set to true so it recognises the form settings for the POST.  Otherwise, the two lines of code invoking YAHOO connect do everything you need to send a file back to the server.</p>
<p>My server side code processes the multipart file upload and persists the file into a known location which suits my application.  I then render the file as a virtual location relative to the current page back into my page so I can simply update the src property of the right IMG tag on my page &#8211; that&#8217;s what refreshActiveImage(o.responseText); does.</p>
<p>Eh voila!  A common plug-in, a great utility library, some really basic Javascript and a form and I have the simplest file upload I could imagine.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/simonpalmer.wordpress.com/239/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/simonpalmer.wordpress.com/239/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/simonpalmer.wordpress.com/239/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/simonpalmer.wordpress.com/239/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/simonpalmer.wordpress.com/239/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/simonpalmer.wordpress.com/239/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/simonpalmer.wordpress.com/239/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/simonpalmer.wordpress.com/239/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/simonpalmer.wordpress.com/239/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/simonpalmer.wordpress.com/239/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simonpalmer.com&blog=2386747&post=239&subd=simonpalmer&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://simonpalmer.com/2010/03/05/really-simple-file-upload-in-grails/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/56e7993be670c363354b696cff311172?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">simonpalmer</media:title>
		</media:content>
	</item>
		<item>
		<title>Hallelujah.  Code formatting in my wordpress blog!</title>
		<link>http://simonpalmer.com/2010/03/02/hallelujah-code-formatting-in-my-wordpress-blog/</link>
		<comments>http://simonpalmer.com/2010/03/02/hallelujah-code-formatting-in-my-wordpress-blog/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 22:15:18 +0000</pubDate>
		<dc:creator>simonpalmer</dc:creator>
				<category><![CDATA[code]]></category>

		<guid isPermaLink="false">http://simonpalmer.com/?p=215</guid>
		<description><![CDATA[How did I not know about the Sourcecode tags?  I have spent years trying to figure out how to post nice looking code to my blog and was misled by all the plug-in nonsense which only applies if you are hosting your own wordpress instance &#8211; which I&#8217;m not.  Here is the link [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simonpalmer.com&blog=2386747&post=215&subd=simonpalmer&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<p>How did I not know about the Sourcecode tags?  I have spent years trying to figure out how to post nice looking code to my blog and was misled by all the plug-in nonsense which only applies if you are hosting your own wordpress instance &#8211; which I&#8217;m not.  <a href="http://en.support.wordpress.com/code/posting-source-code/">Here is the link to the docs</a> for formatting source code in your wordpress.org or wordpress.com hosted blog.</p>
<p>I&#8217;m a bit disappointed that there is not an HTML language definition, but that&#8217;s OK, I write XHTML in any case so XML works just fine.</p>
<pre class="brush: jscript;">
function makeRooms(edit)
{
	var t = getTag(&quot;roomsBody&quot;, &quot;div&quot;);
	if (t != null)
	{
		var div = &quot;&lt;div id='rooms'&gt;&quot;;

		//if (rooms === undefined) rooms = [];
		for (var i = 0; i &amp;lt; rooms.length; i++)
		{
			if (edit)
			{
				div += makeRoomDivEdit(rooms[i], imgpath, i);
			}
			else
			{
				div += makeRoomDiv(rooms[i], imgpath);
			}
		}
		div += &amp;quot;&lt;/div&gt;&quot;;
		if (edit) div += &quot;&lt;a style='padding:5px;' class='instruction' href='addRoom()'&gt;Add Room&lt;/a&gt;&quot;;
		t.innerHTML = div;
	}
}
</pre>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/simonpalmer.wordpress.com/215/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/simonpalmer.wordpress.com/215/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/simonpalmer.wordpress.com/215/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/simonpalmer.wordpress.com/215/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/simonpalmer.wordpress.com/215/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/simonpalmer.wordpress.com/215/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/simonpalmer.wordpress.com/215/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/simonpalmer.wordpress.com/215/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/simonpalmer.wordpress.com/215/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/simonpalmer.wordpress.com/215/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simonpalmer.com&blog=2386747&post=215&subd=simonpalmer&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://simonpalmer.com/2010/03/02/hallelujah-code-formatting-in-my-wordpress-blog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/56e7993be670c363354b696cff311172?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">simonpalmer</media:title>
		</media:content>
	</item>
		<item>
		<title>Styling grails-ui elements</title>
		<link>http://simonpalmer.com/2010/03/02/styling-grails-ui-elements/</link>
		<comments>http://simonpalmer.com/2010/03/02/styling-grails-ui-elements/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 22:05:07 +0000</pubDate>
		<dc:creator>simonpalmer</dc:creator>
				<category><![CDATA[Grails]]></category>
		<category><![CDATA[code]]></category>

		<guid isPermaLink="false">http://simonpalmer.com/?p=207</guid>
		<description><![CDATA[The grails-ui plugin has a very rich feature set, being based on the Yahoo&#8217;s YUI library.  I have been trying to avoid it, but eventually I have caved and I need a modal dialog box for my web page.  I say caved because I think that it is not an intuitive element of a web [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simonpalmer.com&blog=2386747&post=207&subd=simonpalmer&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://www.grails.org/plugin/grails-ui">grails-ui plugin</a> has a very rich feature set, being based on the <a href="http://developer.yahoo.com/yui/" target="_blank">Yahoo&#8217;s YUI library</a>.  I have been trying to avoid it, but eventually I have caved and I need a modal dialog box for my web page.  I say caved because I think that it is not an intuitive element of a web application and there are enough cross-browser coding issues to make the introduction of a modal window on a web page a bit of a nightmare.  Of course that&#8217;s all taken care of by libraries such as YUI, but they come at a price; there&#8217;s a lot of code to download.</p>
<p>Anyhow, I caved and decided I would install the ui plugin to my project and use the dialog box.  It still feels like a bit of a sledgehammer to crack my little nut, but it works and it is not as buggy as the modal DIV I started writing myself.</p>
<p>The trouble is that out of the box you get none of the default styling from the YUI skins.  According to the grails documentation it should be sufficient to enclose your dialog in a tag and set the class of that tag to refer to the YUI skins&#8230;</p>
<pre class="brush: xml;">
    &lt;body&gt;
        &lt;div class=&quot;yui-skin-sam&quot;&gt;
            &lt;gui:dialog blah blah&gt;&lt;/gui:dialog&gt;
        &lt;/div&gt;
    &lt;/body&gt;
</pre>
<p>However, this doesn&#8217;t work.  And neither does this&#8230;</p>
<pre class="brush: xml;">
    &lt;body class=&quot;yui-skin-sam&quot;&gt;
        &lt;div&gt;
            &lt;gui:dialog blah blah&gt;&lt;/gui:dialog&gt;
        &lt;/div&gt;
    &lt;/body&gt;
</pre>
<p>In fact the only way I could get this to work was by adding the &#8220;yui-skin-sam&#8221; class reference to the body tag in layout/main.gsp.</p>
<p>But that comes with a set of problems of its own, not least of which is that styling the body tag in the main layout means that every generated page gets that styling.  If, like me, you had gone to some lengths to define your own styling, that is a real pain because the chance of you not having weird clashes in styles &#8211; and yui-skin-sam not overriding them &#8211; is almost nil for any semi-serious web app.</p>
<p>So, some words to the wise:</p>
<ul>
<li>If you are starting out on your new shiny Grails app, and you want to style it yourself, imply a namespace in your style names when you are making them by prefixing them all with a code. </li>
<li>If you think you might want some exoteric UI feature from the grails UI plug-in &#8211; and you almost certainly will &#8211; then install it early and declare the style class on the main layout body tag from the start.  That way you won&#8217;t have a lot of re-factoring of style code to do later.</li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/simonpalmer.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/simonpalmer.wordpress.com/207/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/simonpalmer.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/simonpalmer.wordpress.com/207/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/simonpalmer.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/simonpalmer.wordpress.com/207/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/simonpalmer.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/simonpalmer.wordpress.com/207/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/simonpalmer.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/simonpalmer.wordpress.com/207/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simonpalmer.com&blog=2386747&post=207&subd=simonpalmer&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://simonpalmer.com/2010/03/02/styling-grails-ui-elements/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/56e7993be670c363354b696cff311172?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">simonpalmer</media:title>
		</media:content>
	</item>
		<item>
		<title>Textpad syntax file for Grails GSP</title>
		<link>http://simonpalmer.com/2010/01/30/textpad-syntax-file-for-grails-gsp/</link>
		<comments>http://simonpalmer.com/2010/01/30/textpad-syntax-file-for-grails-gsp/#comments</comments>
		<pubDate>Sat, 30 Jan 2010 16:39:14 +0000</pubDate>
		<dc:creator>simonpalmer</dc:creator>
				<category><![CDATA[Grails]]></category>

		<guid isPermaLink="false">http://simonpalmer.com/?p=203</guid>
		<description><![CDATA[Since I couldn&#8217;t find one on Textpad&#8217;s list, or anywhere else on the web, and nobody on Stackoverflow had one either, I thought I would write myself a syntax hilighting file for Grails GSP.
Here it is for anyone else who might find it useful.  Because WordPress don&#8217;t allow upload of the .syn file extension [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simonpalmer.com&blog=2386747&post=203&subd=simonpalmer&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<p>Since I couldn&#8217;t find one on <a href="http://www.textpad.com/add-ons/syna2g.html">Textpad&#8217;s list</a>, or anywhere else on the web, and nobody on <a href="http://stackoverflow.com/questions/2032729/does-anyone-have-a-textpad-syn-file-for-gsp">Stackoverflow </a>had one either, I thought I would write myself a syntax hilighting file for Grails GSP.</p>
<p><a href='http://simonpalmer.files.wordpress.com/2010/01/gsp.pdf'>Here it is</a> for anyone else who might find it useful.  Because WordPress don&#8217;t allow upload of the .syn file extension I have renamed it gsp.pdf.  Right-click on the link save it to your hard disk and rename to .syn file to have it work.  It needs to go into your samples folder underneath your Textpad install location.</p>
<p>I have been building it as I have gone along, so it is likely to be incomplete.  However, it has most of the commonly used tags so it works for me.  I based it on an existing HTML template which also has reasonably support for Javascript, so it is a pretty good general Grails View syntax hilighter.</p>
<p>This seems particularly important for Grails since the IDE&#8217;s available are pretty bad (or expensive) and it sort of works better to have a favourite text editor in the mix as your primary editor.  I have also added some of the common grails commands to Textpad and it is starting to function as a pretty good alternative to the STS Eclipse plug-in which Spring provide &#8211; which isn&#8217;t worth it in my opinion.</p>
<p>I have another one I am building for Groovy which I&#8217;ll post just as soon as I get it in a state where it does what I feel is the minimum to get by.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/simonpalmer.wordpress.com/203/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/simonpalmer.wordpress.com/203/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/simonpalmer.wordpress.com/203/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/simonpalmer.wordpress.com/203/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/simonpalmer.wordpress.com/203/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/simonpalmer.wordpress.com/203/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/simonpalmer.wordpress.com/203/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/simonpalmer.wordpress.com/203/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/simonpalmer.wordpress.com/203/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/simonpalmer.wordpress.com/203/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simonpalmer.com&blog=2386747&post=203&subd=simonpalmer&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://simonpalmer.com/2010/01/30/textpad-syntax-file-for-grails-gsp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/56e7993be670c363354b696cff311172?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">simonpalmer</media:title>
		</media:content>
	</item>
		<item>
		<title>Back on Stack</title>
		<link>http://simonpalmer.com/2010/01/07/back-on-stack/</link>
		<comments>http://simonpalmer.com/2010/01/07/back-on-stack/#comments</comments>
		<pubDate>Thu, 07 Jan 2010 21:26:30 +0000</pubDate>
		<dc:creator>simonpalmer</dc:creator>
				<category><![CDATA[stackoverflow]]></category>

		<guid isPermaLink="false">http://simonpalmer.com/?p=194</guid>
		<description><![CDATA[I am back using Stackoverflow after falling out of love with it.  I went back for a specific reason, which was entirely the right reason, namely that I had a difficult technical problem that I could not find any solution for.  You can see the post which took me back here.  
I [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simonpalmer.com&blog=2386747&post=194&subd=simonpalmer&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<p>I am back using Stackoverflow after falling out of love with it.  I went back for a specific reason, which was entirely the right reason, namely that I had a difficult technical problem that I could not find any solution for.  You can see the post which took me back <a href="http://stackoverflow.com/questions/1709467/why-does-the-flash-player-throw-a-sandbox-error-in-this-case">here</a>.  </p>
<p>I got some great responses, although none of them led me to a real answer.  I ended up <a href="http://bugs.adobe.com/jira/browse/FP-3302">logging a bug at Adobe</a> about the issue.  Lord knows what will happen to that and I still have a broken Flex socket server, but the experience was good enough that I have overcome my objections and re-joined the Stackoverflow community.</p>
<p>It is easy to spend (read waste) too much time there chasing rep points, and generally in response to questions that the posters ought really to be able to figure out for themselves.  And my criticisms remain the same as they were, I have just got over them.  Mostly.</p>
<p>There is a definite increase in the sorts of questions which start &#8220;I downloaded this code from the internet&#8221;, followed by &#8220;I have no idea what this bit does, but I changed it and now it doesn&#8217;t work&#8221;, followed by &#8220;can you tell me why&#8221;.  Basically I think this is lazy and dangerous and I hope these ar students rather than professional programmers.  Stackoverflow encourages this sort of behaviour because someone &#8211; probably in pursuit of rep points &#8211; will normally take the time to post an answer, sometimes a very good answer.</p>
<p>I&#8217;m not bothered about the rep any more, although it remains a nice idea and a very good way to get people hookes for long enough to see the real value underneath it.  The self-regulation seems to be working reasonably well too and the excesses of the early days are all but gone and there are fewer people trying to be the SO police than there were &#8211; although that remains a problem.</p>
<p>So back on and getting and adding value.  SO is now part of my technical infrastructure, which I suppose means it is succeeding.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/simonpalmer.wordpress.com/194/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/simonpalmer.wordpress.com/194/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/simonpalmer.wordpress.com/194/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/simonpalmer.wordpress.com/194/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/simonpalmer.wordpress.com/194/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/simonpalmer.wordpress.com/194/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/simonpalmer.wordpress.com/194/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/simonpalmer.wordpress.com/194/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/simonpalmer.wordpress.com/194/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/simonpalmer.wordpress.com/194/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simonpalmer.com&blog=2386747&post=194&subd=simonpalmer&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://simonpalmer.com/2010/01/07/back-on-stack/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/56e7993be670c363354b696cff311172?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">simonpalmer</media:title>
		</media:content>
	</item>
		<item>
		<title>Clever little fella</title>
		<link>http://simonpalmer.com/2010/01/07/clever-little-fella/</link>
		<comments>http://simonpalmer.com/2010/01/07/clever-little-fella/#comments</comments>
		<pubDate>Thu, 07 Jan 2010 14:52:28 +0000</pubDate>
		<dc:creator>simonpalmer</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://simonpalmer.com/?p=192</guid>
		<description><![CDATA[I was talking to Jack this morning and he was repeating back to me what I said.  Then he suddenly started changing the odd word so that it was funny.  This is a nice little game that he and I play quite often and I&#8217;m sure is quite common between parents and kids. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simonpalmer.com&blog=2386747&post=192&subd=simonpalmer&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<p>I was talking to Jack this morning and he was repeating back to me what I said.  Then he suddenly started changing the odd word so that it was funny.  This is a nice little game that he and I play quite often and I&#8217;m sure is quite common between parents and kids.  It causes him to belly laugh when he finds a word which changes the meaning of the sentence and makes it funny.</p>
<p>If you think about it a sense of humour is a very sophisticated layer of communication which sits above mastering the mechanics of speaking, the detail of language and the meaning of words.  </p>
<p>I was amazed.  6 months ago he was in nappies and barely able to talk.  Now we are playing word games and he is deciding what is funny.  That sort of transformation must belie a huge change inside his head.</p>
<p>I think I subscribe to the Noam Chomsky, Stephen Pinker view of the world that we have an <a href="http://pinker.wjh.harvard.edu/books/tli/index.html">innate ability to master language</a>, and I suspect that the real key to it all is the development of memory.  If you consider everything that is necessary to be able to communicate, vocabulary, syntax, grammar etc. it is all predicated on being able to remember things.  I suspect that the transformation I have witnessed in Jack is the development of his memory.</p>
<p>He suddenly has an amazing vocabulary.  Yesterday as he was struggling with unzipping his coat and he said quite clearly &#8220;absolutely ridiculous&#8221;.  Later that day he was sitting on the loo and he looked at me and said &#8220;concentrate&#8221;.  These are very sophisticated ideas and there is a complex context necessary for them to be applied appropriately, which they were.</p>
<p>Memory development is supported by the other amazing things he has started to do which is remember directions and locations.  If we drive out from our home towards the North of London he can now tell whether we are going to the shopping mall, the chinese grocery store or Nanny&#8217;s house by the route we take right at the last moment.</p>
<p>So I&#8217;m obviously a proud dad &#8211; he&#8217;s only 2 1/2 &#8211; but I am also an amazed observer of the rate of development of the human brain.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/simonpalmer.wordpress.com/192/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/simonpalmer.wordpress.com/192/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/simonpalmer.wordpress.com/192/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/simonpalmer.wordpress.com/192/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/simonpalmer.wordpress.com/192/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/simonpalmer.wordpress.com/192/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/simonpalmer.wordpress.com/192/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/simonpalmer.wordpress.com/192/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/simonpalmer.wordpress.com/192/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/simonpalmer.wordpress.com/192/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simonpalmer.com&blog=2386747&post=192&subd=simonpalmer&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://simonpalmer.com/2010/01/07/clever-little-fella/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/56e7993be670c363354b696cff311172?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">simonpalmer</media:title>
		</media:content>
	</item>
		<item>
		<title>Google Wave.  Ho Hum.</title>
		<link>http://simonpalmer.com/2009/12/20/google-wave-ho-hum/</link>
		<comments>http://simonpalmer.com/2009/12/20/google-wave-ho-hum/#comments</comments>
		<pubDate>Sun, 20 Dec 2009 21:54:24 +0000</pubDate>
		<dc:creator>simonpalmer</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://simonpalmer.com/?p=188</guid>
		<description><![CDATA[My wave account is now a month old.  I have about 20 fellow waving friends.  We don&#8217;t use it.  As far as I can tell they don&#8217;t use it either.  In fact, who does use it, other than the development team who built it?  I never remember to check it [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simonpalmer.com&blog=2386747&post=188&subd=simonpalmer&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<p>My wave account is now a month old.  I have about 20 fellow waving friends.  We don&#8217;t use it.  As far as I can tell they don&#8217;t use it either.  In fact, who does use it, other than the development team who built it?  I never remember to check it and it doesn&#8217;t flag activity to me via email, which I&#8217;m sure is deliberate and would be tautological in the eyes of the wave creators.</p>
<p>I was talking to a software friend based in California at the start of this week.  She has people developing software in pretty much all the major centres in the world.  I asked whether she either used, or intended to use Google Wave and she didn&#8217;t.  Not because it may not be the best thing since sliced bread, but primarily because she already had processes and systems in place which worked perfectly well and which were embedded into her teams.</p>
<p>Of course that presumes that she had concluded what it was that Google Wave does, and when I asked she waffled a bit but basically said &#8220;collaboration&#8221;.  That&#8217;s a big space, but it seems to be where most people place Google Wave when thinking about mapping it into their world.  </p>
<p>It is generally a big ask to have all your teams switch working practices, especially core traits like how they communicate with peers and document that communication.  Contemplating such a switch generally requires a backdrop of discontinuous change or profound dysfunction, to make it worthwhile, and I guess Google may claim ground as agents of discontinuous change with Wave.  I&#8217;m not convinced though.</p>
<p>I&#8217;ll keep my account of course, but until I find a need it remains a Faberge egg.  A fascinating, if useless, enigma.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/simonpalmer.wordpress.com/188/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/simonpalmer.wordpress.com/188/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/simonpalmer.wordpress.com/188/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/simonpalmer.wordpress.com/188/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/simonpalmer.wordpress.com/188/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/simonpalmer.wordpress.com/188/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/simonpalmer.wordpress.com/188/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/simonpalmer.wordpress.com/188/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/simonpalmer.wordpress.com/188/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/simonpalmer.wordpress.com/188/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simonpalmer.com&blog=2386747&post=188&subd=simonpalmer&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://simonpalmer.com/2009/12/20/google-wave-ho-hum/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/56e7993be670c363354b696cff311172?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">simonpalmer</media:title>
		</media:content>
	</item>
		<item>
		<title>Google Wave</title>
		<link>http://simonpalmer.com/2009/11/12/google-wave/</link>
		<comments>http://simonpalmer.com/2009/11/12/google-wave/#comments</comments>
		<pubDate>Thu, 12 Nov 2009 16:59:06 +0000</pubDate>
		<dc:creator>simonpalmer</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://simonpalmer.com/?p=183</guid>
		<description><![CDATA[So I got my Google Wave invitation today (from the same person who invited me to GMail many moons ago &#8211; mucho gracias fooch) and I logged in for the first time today.  Here are my first observations&#8230;
Ouch, scrollbars don&#8217;t work properly in Firefox 3.0.15, pretty fundamental and visible feature and surprised they don&#8217;t [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simonpalmer.com&blog=2386747&post=183&subd=simonpalmer&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<p>So I got my Google Wave invitation today (from the same person who invited me to GMail many moons ago &#8211; mucho gracias fooch) and I logged in for the first time today.  Here are my first observations&#8230;</p>
<p>Ouch, scrollbars don&#8217;t work properly in Firefox 3.0.15, pretty fundamental and visible feature and surprised they don&#8217;t have a commodity widget like that working.  Even more surprisingly, when I try to run it in IE to see if it works there I&#8217;m asked to install the Chrome Frame plug-in.  Small things perhaps, but shop-window problems which make it feel pre-beta.</p>
<p>Layout is simple and clean and in the Google mould.  Bits of my gmail profile, picture and contacts for instance, have made it across.  It is obvious how to create a new Wave and add people to it and I have started a couple with the contacts I have which appear to have wave accounts.  I have a simon.palmer@googlewave.com address, which mirrors my gmail address, so I try and send an email to it to see what happens.  So far nothing has happened.  It didn&#8217;t bounce and nothing arrived.</p>
<p>Weirdly I was expecting to see my gmail inbox in here.  I don&#8217;t know why really, I was just expecting it.  And that leads me to the obvious question.  If this isn&#8217;t email, then what is it?  What can I wave that I can&#8217;t email?</p>
<p>I have a couple of waves already set up, several welcome ones from Dr Wave (c&#8217;mon, are we really patients?  or does it need a PhD to figure it out) containing video clip tutorials and explanations.  After watching a few the idea seems to be a cross between multi-party email and chat, with sharing of documents, pictures etc. and the whole in a chronological sequence of evolution of the interaction.  You can (apparently, and eventually) use it for collaboration on documents, creating events and the like.  I&#8217;m beginning to get the picture.</p>
<p>Trying to map it into the MS Office world, I think it sits somewhere between Sharepoint, BPM, MSN, Word and Outlook.  It is certainly a different take.  I think my main issue at the moment is that the benefit is not clearly articulated.  How is it better than working the old way, because let&#8217;s face it, most of us do most of these things today, and there is overlap between them already?</p>
<p>It may make corporate buyers look again before investing in collaboration infrastructure like Sharepoint, although it is the smaller players in that market, and the open source projects that are likely to feel the ripples from the wave, not Microsoft.</p>
<p>So those are my first immediate impressions and I&#8217;m going to hedge my bets at this point.  There may yet be something very illuminating underneath it which I am yet to see.  Maybe, as we all take to smaller devices, there is some new way of working which wave is anticipating.</p>
<p>However, it has more than a little of the <a href="http://en.wikipedia.org/wiki/Segway_PT">segway </a>about it, and unfortunately a bit of the <a href="http://en.wikipedia.org/wiki/Sinclair_C5">Sinclair C5</a> too.  Innovative and clever?  Undoubtedly.  Challenging to established norms?  Certainly.  Paradigm-shifting?  Hmm, maybe not.  I have the feeling that we are all still going to be emailing in 5 years time.  Google Wave will almost certainly find a niche in some CaliTechy communities, as has the segway, but I&#8217;m still walking and driving rather than segwaying, and I can&#8217;t see my wavebox displacing my inbox.  Yet at least.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/simonpalmer.wordpress.com/183/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/simonpalmer.wordpress.com/183/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/simonpalmer.wordpress.com/183/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/simonpalmer.wordpress.com/183/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/simonpalmer.wordpress.com/183/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/simonpalmer.wordpress.com/183/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/simonpalmer.wordpress.com/183/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/simonpalmer.wordpress.com/183/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/simonpalmer.wordpress.com/183/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/simonpalmer.wordpress.com/183/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simonpalmer.com&blog=2386747&post=183&subd=simonpalmer&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://simonpalmer.com/2009/11/12/google-wave/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/56e7993be670c363354b696cff311172?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">simonpalmer</media:title>
		</media:content>
	</item>
		<item>
		<title>LinkedIn. Sigh.</title>
		<link>http://simonpalmer.com/2009/10/05/linkedin-sigh/</link>
		<comments>http://simonpalmer.com/2009/10/05/linkedin-sigh/#comments</comments>
		<pubDate>Mon, 05 Oct 2009 16:32:53 +0000</pubDate>
		<dc:creator>simonpalmer</dc:creator>
				<category><![CDATA[personal]]></category>

		<guid isPermaLink="false">http://simonpalmer.com/?p=168</guid>
		<description><![CDATA[I&#8217;ve had a LinkedIn profile since 5th March, 2005.  In that time I have gathered 70 connections and 3 recommendations.  I have joined numerous groups and have engaged in dialogue in all of them.
I say dialogue, but the reality is that communication happening in LinkedIn is not a dialogue at all.  At [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simonpalmer.com&blog=2386747&post=168&subd=simonpalmer&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve had a LinkedIn profile since 5th March, 2005.  In that time I have gathered 70 connections and 3 recommendations.  I have joined numerous groups and have engaged in dialogue in all of them.</p>
<p>I say dialogue, but the reality is that communication happening in LinkedIn is not a dialogue at all.  At best it is a didactic monologue conducted in a forum where <a href="http://en.wikipedia.org/wiki/Speakers%27_Corner">everyone is shouting</a>.  At worst it is a set of very thinly veiled adverts for people or companies who clearly think they are operating at the bleeding edge of guerilla marketing.  And unfortunately the worst is also the most common.</p>
<p>After years of patience with it, repeatedly giving it another chance, and following the updates where my first circle of contacts are connecting with, well, my first circle of contacts (with whom I know they already have alternative connections) I have finally had the veil of web 2.0 drawn back from my eyes and asked myself, objectively, what&#8217;s the point?</p>
<p>I&#8217;ve done some evaulation of the number of outbound vs. inbound contacts I have had in the last 4 years, and the extent of those which have resulted in a contacts for which I have no other contact than LinkedIn, or would otherwise not have made contact with those people.  My measure of its value as a networking tool is the extent to which it has extended my network, rather than just confirmed it in another medium.  I have subtracted anyone who I found elsewhere and thereafter connected with on LInkedIn.</p>
<p>It makes dismal reading.</p>
<p>Of my 70 contacts&#8230;<br />
21 are friends<br />
26 are ex-colleagues<br />
14 I met elsewhere<br />
8 are current colleagues</p>
<p>and</p>
<p>1 I found on LinkedIn (I have not heard from him since the initial contact in 2007)</p>
<p>I have been a member of 23 groups, all but one of which I have left because they were thinly veiled self-publicisation for the founder and members.  I&#8217;m about to leave the remaining one for the same reason, just as soon as I stop ranting.</p>
<p>Maybe my version of networking is out of touch with what everyone else calls networking.  Maybe I&#8217;m just using it as a version of Facebook without the silly games and photos.  But as far as I can tell, so is everyone else.  If I look at the second circle beyond mine, which is indeed a large number of people (9,500) they have a similar profile of connections to my connections, namely friends and colleagues.</p>
<p>The groups seem to be populated by people who believe that if they word their advertisement as a question the rest of us will be completely fooled by it and will follow the link to their web site.  How stupid do you think we are, and how far from networking can you get?  For an answer please go to my web site http://www.WhatSortOfMoronsAskQuestionsLikeThatAndThinkItIsClever.com</p>
<p>The questions section is no better.  The questions are asked by people who clearly think they have the answer already and conveniently provide you with a link to their web site to supply it.  They are then answered by other people who think they too have the perfect solution which, surprise surprise, you can find by clicking on the link to their web site.</p>
<p>In what possible way can this be construed as networking?  It&#8217;s not even advertising or marketing or PR.  It&#8217;s just aimless posting.  If you want to do that why not have a blog?</p>
<p>Lastly to the jobs.  I have optimistically bought the notion that people who advertise open positions on LinkedIn are genuinely interested in people responding who have the right skills and experience.  It may be true, but I am yet to see evidence to support the assertion.  </p>
<p>I wanted to test out the efficacy of LinkedIn as a tool to help in a job search.  I am genuinely in a position where I would benefit from having a network of people look at my CV and I am in the job seeking market.  I brushed up my CV, updated my profile, cleaned up my blog and links and then set about applying for positions for which I thought I would be a suitable candidate, and for which I am eminently qualified.</p>
<p>So far I have I applied for 46 positions.  I have done research into each company and written a cover letter with each application, and have a named individual to whom I am writing.  I&#8217;m an experienced guy who knows how to write and knows a bit about business, especially the business I have been in for the last 20-something years.</p>
<p>I have had <strong>ZERO</strong> responses.  Not even a single courtesy note saying &#8220;no thank you&#8221;.  The closest I got was an out of office.</p>
<p>Maybe I&#8217;ve got an unappealing profile and I am applying for things that are inappropriate given my background.  Maybe my cover letters are not good enough and my CV doesn&#8217;t make me stand out.  Maybe the prevailing economic conditions mean that the job market is bad.  Maybe.</p>
<p>But maybe, just maybe, LinkedIn doesn&#8217;t work.  Maybe people use it as either a last resort or as a way of pretending they are doing something when they are not, or as a lazy way of avoiding making a real network.  Maybe there are some mavens for whom their 1,435 direct contacts are the source of valuable business, but maybe peoples&#8217; contacts are little more than their personal phone book or contact list tapped into a web site.  Maybe, like mine and pretty much everyone else I know and am connected to, they are little more than a online map charting our recent business past.</p>
<p>For me the promise has definitely not delivered.  I have had absolutely no return for the investment of time and effort I have made in attempting to conjure a network on LinkedIn.  I think I have used it in a fairly typical way and at a fairly typical level of activity.  I think my job search was probably characteristic of what someone might do if they were serious about using it as a tool for job hunting.  If it can&#8217;t deliver benefit in that domain then what exactly is the point?</p>
<p>In spite of this I will keep my profile.  The somewhat un-dis-provable argument of it not doing any harm will mean that I may as well.  I want it to work, I really do, however it doesn&#8217;t, and I doubt I am alone in being disenchanted with the reality.  </p>
<p>LinkedIn.  Sigh.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/simonpalmer.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/simonpalmer.wordpress.com/168/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/simonpalmer.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/simonpalmer.wordpress.com/168/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/simonpalmer.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/simonpalmer.wordpress.com/168/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/simonpalmer.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/simonpalmer.wordpress.com/168/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/simonpalmer.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/simonpalmer.wordpress.com/168/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simonpalmer.com&blog=2386747&post=168&subd=simonpalmer&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://simonpalmer.com/2009/10/05/linkedin-sigh/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/56e7993be670c363354b696cff311172?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">simonpalmer</media:title>
		</media:content>
	</item>
	</channel>
</rss>