<?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>David Simpson &#187; web</title>
	<atom:link href="http://davidsimpson.me/category/web/feed/" rel="self" type="application/rss+xml" />
	<link>http://davidsimpson.me</link>
	<description>Developing the web, one page at a time.</description>
	<lastBuildDate>Thu, 02 Feb 2012 13:02:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>A simple Webtrends event tracking tip</title>
		<link>http://davidsimpson.me/2011/11/04/a-simple-webtrends-event-tracking-tip/</link>
		<comments>http://davidsimpson.me/2011/11/04/a-simple-webtrends-event-tracking-tip/#comments</comments>
		<pubDate>Fri, 04 Nov 2011 14:50:31 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[analytics]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[webtrends]]></category>

		<guid isPermaLink="false">http://davidsimpson.me/?p=1220</guid>
		<description><![CDATA[In Webtrends, events that happens after the page loads can be tracked using dcsMultiTrack. This takes the following form: dcsMultiTrack( key1, value1, key2, value2, key3, value3, ... ); But what if you don&#8217;t know how many key/value pairs you&#8217;ll be sending into dcsMultiTrack? How do you call it then? Take advantage of the JavaScript apply [...]]]></description>
			<content:encoded><![CDATA[<div id="tweetbutton1220" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fdavidsimpson.me%2F2011%2F11%2F04%2Fa-simple-webtrends-event-tracking-tip%2F&amp;via=dvdsmpsn&amp;text=A%20simple%20Webtrends%20event%20tracking%20tip&amp;related=&amp;lang=en&amp;count=horizontal&amp;counturl=http%3A%2F%2Fdavidsimpson.me%2F2011%2F11%2F04%2Fa-simple-webtrends-event-tracking-tip%2F" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://davidsimpson.me/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;"></a></div><p>In Webtrends,  events that happens after the page loads can be tracked using <b><a href="https://tagbuilder.webtrends.com/Help/EventTracking/DcsMultiTrack.aspx">dcsMultiTrack</a></b>.</p>
<p>This takes the following form:</p>
<pre class="brush: plain; title: ;">dcsMultiTrack( key1, value1, key2, value2, key3, value3, ... );</pre>
<p>But what if you don&#8217;t know how many key/value pairs you&#8217;ll be sending into <b>dcsMultiTrack</b>? How do you call it then? </p>
<p>Take advantage of the JavaScript <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/function/apply">apply</a> function.  Create an array of key/value pairs and then apply that array to the <b>dcsMultiTrack</b> function:</p>
<pre class="brush: plain; title: ;">
var webtrendsArgs = [
	'DCSext.w_event_type', 'Video Started',
	'DCSext.w_video_id', 'xxxx-yyyy-zzzz-1234',
	'DCSext.w_video_name', 'Kitten Video'
	];

dcsMultiTrack.apply(this, webtrendsArgs);
</pre>
<p>This is equivalent to:</p>
<pre class="brush: plain; title: ;">
dcsMultiTrack(
	'DCSext.w_event_type', 'Video Started',
	'DCSext.w_video_id', 'xxxx-yyyy-zzzz-1234',
	'DCSext.w_video_name', 'Kitten Video'
);
</pre>
<p>If needed, you can add the key/value pairs to <b>webtrendsArgs</b> array incrementally and when complete, apply this to <b>dcsMultiTrack</b> at the end.</p>
<p><cite>Source: <a href="http://stackoverflow.com/questions/6078103/webtrends-analytics-implementation-using-variables-in-an-async-tracking-call-p">StackOverflow</a></cite></p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://davidsimpson.me/2011/11/04/a-simple-webtrends-event-tracking-tip/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Confluence 4  &#8212; wiki markup is *dead*, _long live_ wiki markup</title>
		<link>http://davidsimpson.me/2011/09/20/confluence-4-wiki-markup-is-dead-long-live-wiki-markup/</link>
		<comments>http://davidsimpson.me/2011/09/20/confluence-4-wiki-markup-is-dead-long-live-wiki-markup/#comments</comments>
		<pubDate>Tue, 20 Sep 2011 09:12:54 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[web]]></category>
		<category><![CDATA[confluence]]></category>

		<guid isPermaLink="false">http://davidsimpson.me/?p=1137</guid>
		<description><![CDATA[People have been shouting from the rooftops that Confluence 4 has finally arrived. Despite all the hype, it&#8217;s a cracking release. I&#8217;m not going to list all the features here, as you can find them elsewhere. However I will mention one&#8230; The new editor Simply put, it&#8217;s fast, slick and gorgeous looking. It works better [...]]]></description>
			<content:encoded><![CDATA[<div id="tweetbutton1137" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fdavidsimpson.me%2F2011%2F09%2F20%2Fconfluence-4-wiki-markup-is-dead-long-live-wiki-markup%2F&amp;via=dvdsmpsn&amp;text=Confluence%204%20%20%26%238212%3B%20wiki%20markup%20is%20%2Adead%2A%2C%20_long%20live_%20wiki%20markup&amp;related=&amp;lang=en&amp;count=horizontal&amp;counturl=http%3A%2F%2Fdavidsimpson.me%2F2011%2F09%2F20%2Fconfluence-4-wiki-markup-is-dead-long-live-wiki-markup%2F" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://davidsimpson.me/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;"></a></div><p> People have been <a href="https://twitter.com/#!/search/confluence%204">shouting from the rooftops</a> that Confluence 4 has finally arrived.  Despite all the hype, it&#8217;s a cracking release.  I&#8217;m not going to list  all the features here, as you can find them <a href="atlss.in/conf40">elsewhere</a>. However I will mention one&#8230;</p>
<h2>The new editor</h2>
<p>Simply put, it&#8217;s fast, slick and gorgeous looking.  It works better than any online editor I&#8217;ve used elsewhere.  It is a design that would <a href="http://www.quotationspage.com/quote/26979.html">make Antoine de Saint-Exup&#233;ry proud</a>.</p>
<p><a href="http://davidsimpson.me/wp-content/uploads/2011/09/confluence4-editor.png" rel="lightbox[1137]" title="Confluence 4 - new editor"><img src="http://davidsimpson.me/wp-content/uploads/2011/09/confluence4-editor-1024x786.png" alt="" title="Confluence 4 - new editor" class="alignnone size-large wp-image-1154" /></a></p>
<h2>Wiki markup is dead</h2>
<p>Past experience shows that people&#8217;s fondness of wiki markup is somewhat akin to that of <a href="http://www.marmite.com/">Marmite</a>.  So it seems quite a bold step to ditch this aspect of the editor for something completely new.  </p>
<h2>Long live wiki markup</h2>
<p>The good news is that behind the scenes, wiki markup is alive and well &mdash; all the new editor&#8217;s great keyboard shortcuts are based off of the syntax that many people know so well.  </p>
<p>The final irony being that <b>wiki markup haters</b> may just start using wiki markup in their &#8220;faster, richer, simpler&#8221; editing experience.</p>
<p>Now, see what I mean:</p>
<p><iframe width="560" height="380" style="border: 1px solid #ccc;" src="http://www.youtube.com/embed/h77zmZwFWS4" frameborder="0" allowfullscreen></iframe></p>
<p><a href="http://www.atlassian.com/en/confluence-content-collaboration.html">Find out more.</a></p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://davidsimpson.me/2011/09/20/confluence-4-wiki-markup-is-dead-long-live-wiki-markup/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>London Atlassian User Group &#8211; April 2011</title>
		<link>http://davidsimpson.me/2011/04/26/london-atlassian-user-group/</link>
		<comments>http://davidsimpson.me/2011/04/26/london-atlassian-user-group/#comments</comments>
		<pubDate>Tue, 26 Apr 2011 23:41:22 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[analytics]]></category>
		<category><![CDATA[Featured]]></category>

		<guid isPermaLink="false">http://davidsimpson.me/?p=1065</guid>
		<description><![CDATA[Last Tuesday, I went down to the National Archives at Kew, attended the London Atlassian User Group and presented a talk on &#8220;Confluence and Analytics&#8221;. In the morning there was a meet up with Atlassian plugin developers from all over northern Europe. We discussed amongst other things Adaptavist&#8217;s new plugin licensing system and Active Objects [...]]]></description>
			<content:encoded><![CDATA[<div id="tweetbutton1065" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fdavidsimpson.me%2F2011%2F04%2F26%2Flondon-atlassian-user-group%2F&amp;via=dvdsmpsn&amp;text=London%20Atlassian%20User%20Group%20%26%238211%3B%20April%202011&amp;related=&amp;lang=en&amp;count=horizontal&amp;counturl=http%3A%2F%2Fdavidsimpson.me%2F2011%2F04%2F26%2Flondon-atlassian-user-group%2F" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://davidsimpson.me/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;"></a></div><p><a href="https://twitter.com/bennaftzger/status/60324747052990464"><img src="http://davidsimpson.me/wp-content/uploads/2011/04/bennaftzger-auglon.jpg" alt="" title="bennaftzger-auglon" width="100%" class="alignnone size-full" /></a></p>
<p>Last Tuesday, I went down to the National Archives at Kew, attended the <a href="http://confluence.atlassian.com/display/AUG/London+AUG+April+2011">London Atlassian User Group</a> and presented  a talk on &#8220;Confluence and Analytics&#8221;. </p>
<p>In the morning there was a meet up with Atlassian plugin developers from all over northern Europe.  We discussed amongst other things Adaptavist&#8217;s new plugin licensing system and <a href="http://www.slideshare.net/sleberrigaud/all-your-data-belong-to-us-the-active-objects-plugin">Active Objects</a> &#8211; a database independent sandboxed ORM plugin for all Atlassian products.</p>
<p>The afternoon was dedicated to the main user group event.  There were over 150 people in attendance. <span id="more-1065"></span> Introduced by Guy Fraser from Adaptavist, the meeting quickly split into a user and a technical track.   I stayed in the user track which consisted on a series of user case studies from organisations as diverse as <a href="http://www.nationalarchives.gov.uk">the National Archives</a> (our hosts), <a href="http://www.stevesinnottfoundation.org.uk/">Steve Sinnott Foundation</a>, <a href="http://www.riskandsafetyplus.com/">Risk and Safety Plus</a> and <a href="http://www.nyk.com/english/group/europe.htm">NYL Line</a>. These were punctuated by plugin demonstrations from <a href="http://www.refinedwiki.com/">RefinedWiki</a>, <a href="http://k15t.com/">K15t Software</a> and my own talk representing <a href="http://www.affusions.com/">AppFusions</a>.</p>
<p>Slide from my talk are available here&#8230;</p>
<div style="width:638px" id="__ss_7689935"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/appfusions/analytics-confluence-london-atlassian-user-group" title="Analytics &amp; Confluence">Analytics &amp; Confluence</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/7689935" width="638" height="533" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
<div style="padding:5px 0 12px"> View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/appfusions">AppFusions</a> </div>
</p></div>
<p>After all that talking, we adjourned to the <a href="http://www.kewgardenshotel.com/">Kew Gardens Hotel</a> for continued discussion and some welcome refreshments on such a sunny spring day.  It was a great opportunity to meet up with such a large group of developers and end users.  </p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://davidsimpson.me/2011/04/26/london-atlassian-user-group/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Big M Conference in Bath</title>
		<link>http://davidsimpson.me/2011/03/23/the-big-m-conference-bath/</link>
		<comments>http://davidsimpson.me/2011/03/23/the-big-m-conference-bath/#comments</comments>
		<pubDate>Wed, 23 Mar 2011 01:10:23 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[usability]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://davidsimpson.me/?p=1013</guid>
		<description><![CDATA[On Monday, I travelled down to the beautiful city of Bath to attend The Big M &#8212; &#8220;a brand new independent mobile focused event aimed at those who want to learn from and connect with the very best people in the industry.&#8221; This was a single track conference with around 200 developers and business people [...]]]></description>
			<content:encoded><![CDATA[<div id="tweetbutton1013" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fdavidsimpson.me%2F2011%2F03%2F23%2Fthe-big-m-conference-bath%2F&amp;via=dvdsmpsn&amp;text=The%20Big%20M%20Conference%20in%20Bath&amp;related=&amp;lang=en&amp;count=horizontal&amp;counturl=http%3A%2F%2Fdavidsimpson.me%2F2011%2F03%2F23%2Fthe-big-m-conference-bath%2F" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://davidsimpson.me/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;"></a></div><p>On Monday, I travelled down to the beautiful city of Bath to attend <a href="http://thebigm.mobi/">The Big M</a> &#8212; &#8220;a brand new independent mobile focused event aimed at those who want to learn from and connect with the very best people in the industry.&#8221;<br />
<span id="more-1013"></span></p>
<p>This was a single track conference with around 200 developers and business people in attendance.  </p>
<h2>Raam Thakrar &#8212; App distribution and monetisation – the only things more important than lines of code</h2>
<p><a href="http://davidsimpson.me/wp-content/uploads/2011/03/raam.jpg" rel="lightbox[1013]" title="raam"><img src="http://davidsimpson.me/wp-content/uploads/2011/03/raam.jpg" alt="" title="raam" class="alignnone size-full wp-image-1030" /></a></p>
<p><a href="http://twitter.com/raamthakrar">Raam</a> is keen on the business of distributing and monetising mobile apps.  His business is an m-commerce startup selling physical photo postcards taken and ordered directly from the phone. He is very interested in cutting deals with carriers to ensure his app is preloaded on as many handsets as possible and integrated into the camera and gallery.  </p>
<p>He believes that mobile developers should be treated like rockstars. Hmm. Well paid like rockstars at least &#8212; $120k+ per year after 5 years experience or put down your laptop and walk away. </p>
<p><strong>Soundbites:</strong></p>
<ul>
<li>If you are not going to rule the world &#8211; go home. Have those ambitions!</li>
<li>Making an ROI on apps is very difficult without the help of a distributor</li>
<li>Develop an app that makes the phone look awesome</li>
</ul>
<h2>Aral Balkan &#8212; Beyond Usability on Mobile</h2>
<p><a href="http://twitter.com/aral">Aral</a> is a very slick presenter. An inspiring guy who knows a thing or two about usability and designing a &#8220;magical&#8221; user experience.  </p>
<p>He discussed real world experiences with bad or inconsistent design e.g. on trains and hotel elevators. Then moved on to discuss the reasoning behind design decisions on his iPhone apps. e.g. ease of use over oAuth on his twitter app feathers and &#8220;delighters&#8221; &#8212; extra layers of detail which give joy to the user.  </p>
<p>He also warned that the user experience is only as good as the weakest link. e.g. reviews of feathers have nose-dived after the change to the twitter API.</p>
<p><strong>Soundbites:</strong></p>
<ul>
<li>Why are we willing to pay extra for a particular commodity? The differentiating factor is user experience</li>
<li>User experience is a cross-cutting concern. You either have a focus on it from the top of your business or you don&#8217;t</li>
<li>Design is not democratic &#8211; it is a dictatorship if you want to stay focussed on simplicity</li>
</ul>
<h2>Bruce Lawson &#8212; Web Anywhere</h2>
<p><a href="http://twitter.com/brucel">Bruce</a> gave a whistle-stop tour of his recent SXSW talk.  It was a great introduction for people who need to catch up on what HTML5 + CSS3 + JavaScript have to offer you and some very handy hints.  </p>
<p>He crammed in a massive amount of information considering the time he had.  Topics covered included responsive web design, progressive enhancement, HTML5 forms, application cache, W3C widgets</p>
<p><strong>Soundbites:</strong></p>
<ul>
<li>Refactor for a small screen, don&#8217;t dumb down for mobile</li>
<li>If your javascript must be in the header, put it after the CSS so you don&#8217;t see unstyled content whilst it loads</li>
<li>Most of that works in the 4 modern browsers, <strong>and</strong> it works in IE9</li>
</ul>
<p><strong>See the slides:</strong></p>
<div style="width:425px" id="__ss_7249887"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/brucelawson/web-anywhere-mobile-optimisation-with-html5-css3-javascript" title="Web Anywhere: Mobile Optimisation With HTML5, CSS3, JavaScript">Web Anywhere: Mobile Optimisation With HTML5, CSS3, JavaScript</a></strong> <object id="__sse7249887" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=bruce-lawson-web-anywhere-sxsw-110313095126-phpapp01&#038;stripped_title=web-anywhere-mobile-optimisation-with-html5-css3-javascript&#038;userName=brucelawson" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed name="__sse7249887" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=bruce-lawson-web-anywhere-sxsw-110313095126-phpapp01&#038;stripped_title=web-anywhere-mobile-optimisation-with-html5-css3-javascript&#038;userName=brucelawson" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<div style="padding:5px 0 12px"> View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/brucelawson">brucelawson</a> </div>
</p></div>
<h2>Ewan MacLeod &#8212; State of the Union &#8211; Mobile Address</h2>
<p><a href="http://twitter.com/ew4n">Ewan</a> is not a happy man. In fact he is <a href="http://twitpic.com/4c74iw">very angry</a>. Angry at mobile carriers. Angry that the world does not work the way he wants.</p>
<p><a href="http://twitpic.com/4c74iw"><img src="http://davidsimpson.me/wp-content/uploads/2011/03/ewan.jpg" alt="" title="ewan" class="alignnone size-full wp-image-1048" /></a></p>
<p style="font-size:80%;">Update: Doodle by <a href="https://twitter.com/#!/wordbeard/status/50507823817306112/">@wordbeard</a></p>
<p>Ewan made a lot of very good points about the current state of mobile, but he needs to deal with himself.  He seems to want everything in life reduced down to a cold, hollow transaction.  </p>
<p>He seems happier to trust the information accessed from his handset than discuss matters with real life people.  It seems that he&#8217;s trying to strip the humanity out of his life.  Let&#8217;s hope that people like Aral can inject some back in via decent usability and &#8220;delighters&#8221; in the apps on his handset.</p>
<p>To be fair, Ewan was really just looking for a response from the audience. From what I could see, the audience looked a little nervous. </p>
<p>In many ways, he reminds me of my driving instructor who told me &#8220;If they leave the car crying or calling me a bastard, at least I know they listened&#8221;.  </p>
<p>I&#8217;ll remember his points, so his shouty delivery must have worked on some level.</p>
<p><strong>See the slides:</strong></p>
<div style="width:425px" id="__ss_7356048"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/mobileindustryreview/the-big-m-ewans-presentation" title="The Big M - Ewan&#39;s Presentation">The Big M &#8211; Ewan&#39;s Presentation</a></strong> <object id="__sse7356048" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=ewan-the-big-mversion2-110323043809-phpapp02&#038;stripped_title=the-big-m-ewans-presentation&#038;userName=mobileindustryreview" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed name="__sse7356048" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=ewan-the-big-mversion2-110323043809-phpapp02&#038;stripped_title=the-big-m-ewans-presentation&#038;userName=mobileindustryreview" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<div style="padding:5px 0 12px"> View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/mobileindustryreview">Mobile Industry Review</a> </div>
</p></div>
<h2>Paul Golding &#8212; Future Innovations in Mobile</h2>
<p><a href="http://davidsimpson.me/wp-content/uploads/2011/03/pgolding.jpg" rel="lightbox[1013]" title="pgolding"><img src="http://davidsimpson.me/wp-content/uploads/2011/03/pgolding.jpg" alt="" title="pgolding" class="alignnone size-full wp-image-1024" /></a></p>
<p>This was the highlight for me.  A great talk from a man with buckets of experience &#8212; 21 years working with mobile, 16 patents in GSM, PhD in AR.</p>
<p>This touched on so many areas of importance for start-ups and not just those devoted to mobile.</p>
<p><strong>Soundbites:</strong></p>
<ul>
<li>	Be the first to win, not to market</li>
<li>	ROI of doing nothing is nothing</li>
<li>	Code towards customers</li>
<li>	Innovate where it matters</li>
<li>	Think biz models, not technology</li>
<li>	Try Osterwalder&#8217;s biz model canvas</li>
</ul>
<p><strong>See the slides and explore the references:</strong></p>
<div style="width:425px" id="__ss_7338270"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/pgolding/big-m-conference-future-mobile-innovations" title="Big M Conference - Future Mobile Innovations">Big M Conference &#8211; Future Mobile Innovations</a></strong> <object id="__sse7338270" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=bigm-110321153712-phpapp01&#038;stripped_title=big-m-conference-future-mobile-innovations&#038;userName=pgolding" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed name="__sse7338270" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=bigm-110321153712-phpapp01&#038;stripped_title=big-m-conference-future-mobile-innovations&#038;userName=pgolding" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<div style="padding:5px 0 12px"> View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/pgolding">Paul Golding</a> </div>
</p></div>
<h2>My Verdict</h2>
<p>The lack of wifi meant it was a real dog-fooding experience for the mobile industry.  O2 provided very patchy coverage, so I&#8217;ll concede that Ewan had a good point in some of his ranting.  On the other hand it&#8217;s good to disconnect from time to time. </p>
<p>It was a thought provoking day that gave me plenty to reflect on during the long drive back to Nottingham afterwards.   I&#8217;ll be picking over the sources for Paul Golding&#8217;s talk for a little while yet.</p>
<p>It also gave my a great opportunity to finally visit the Roman Baths whilst I was in the city.  Thanks to <a href="http://twitter.com/m1ke_ellis">Mike Ellis</a> and co for a great day.</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://davidsimpson.me/2011/03/23/the-big-m-conference-bath/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Analytics Tip: Use Advanced Segments</title>
		<link>http://davidsimpson.me/2010/09/24/google-analytics-tip-use-advanced-segments/</link>
		<comments>http://davidsimpson.me/2010/09/24/google-analytics-tip-use-advanced-segments/#comments</comments>
		<pubDate>Fri, 24 Sep 2010 19:26:11 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[analytics]]></category>
		<category><![CDATA[google analytics]]></category>

		<guid isPermaLink="false">http://davidsimpson.me/?p=902</guid>
		<description><![CDATA[I&#8217;ve said it before, but I&#8217;ll say it again — I like to #measure. Google Analytics has a great feature called Advanced Segments. Using this feature, you can easily show a subset of data. Sharing advanced segments with other users One of the ways I use advanced segments is to categorise traffic into user types. [...]]]></description>
			<content:encoded><![CDATA[<div id="tweetbutton902" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fdavidsimpson.me%2F2010%2F09%2F24%2Fgoogle-analytics-tip-use-advanced-segments%2F&amp;text=Google%20Analytics%20Tip%3A%20Use%20Advanced%20Segments&amp;related=&amp;lang=en&amp;count=horizontal&amp;counturl=http%3A%2F%2Fdavidsimpson.me%2F2010%2F09%2F24%2Fgoogle-analytics-tip-use-advanced-segments%2F" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://davidsimpson.me/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;"></a></div><p>I&#8217;ve said it before, but I&#8217;ll say it again — I like to <a href="http://search.twitter.com/search?q=%23measure">#measure</a>.  Google Analytics has a great feature called <strong>Advanced Segments</strong>.  Using this feature, you can easily show a subset of data.</p>
<h2>Sharing advanced segments with other users</h2>
<p>One of the ways I use advanced segments is to categorise traffic into user types.  It works really well and the great thing is that any advanced segment you create, you can also share with other Google Analytics users.</p>
<p>The links below are examples of some advanced segments I created for the University of Nottingham. If they seem helpful to you, feel free to use them as part of your Google Analytics reporting activity.  To use them, simply login to Google Analytics and then click on the links below.<br />
<span id="more-902"></span></p>
<ul>
<li><a href="http://www.google.com/analytics/reporting/add_segment?share=mtMHRSsBAAA.RD_MY1rbVaEf7ayaUJLvVIp5hygzV3QgZeP33FJ4FCSFmsyt7q3YVKJIj0KrlOC4BelMH7mZCeLsatFDLCqdvQ.ghQRN2pc_woXx0RTCZVa4w">Visits from the University of Nottingham (Campus)</a></li>
<li><a href="http://www.google.com/analytics/reporting/add_segment?share=mtMHRSsBAAA.RD_MY1rbVaEf7ayaUJLvVIp5hygzV3QgZeP33FJ4FCSFmsyt7q3YVKJIj0KrlOC4MkyRaaTu7Gu3UETaeB90bQ.4UgBm1lMAQUTVRygPcAF8Q">Visits not from the University of Nottingham (the opposite of the previous one)</a></li>
<li><a href="http://www.google.com/analytics/reporting/add_segment?share=mtMHRSsBAAA.RD_MY1rbVaEf7ayaUJLvVIp5hygzV3QgZeP33FJ4FCSFmsyt7q3YVKJIj0KrlOC4jejUXMMikBgScIG469WTRw.eZaq07T1VQcygPJBvX7Szg">Visits from the city of Nottingham</a></li>
<li><a href="http://www.google.com/analytics/reporting/add_segment?share=mtMHRSsBAAA.RD_MY1rbVaEf7ayaUJLvVIp5hygzV3QgZeP33FJ4FCSFmsyt7q3YVKJIj0KrlOC4yoPwhj_PvsEh75Lt2x3eJA.U8EOJsZPRy4ThUuSGQ-0vA">Visits from China</a></li>
<li><a href="http://www.google.com/analytics/reporting/add_segment?share=mtMHRSsBAAA.RD_MY1rbVaEf7ayaUJLvVIp5hygzV3QgZeP33FJ4FCSFmsyt7q3YVKJIj0KrlOC4Lj2r8B3KmiI43tVqrktSOw.RePTh7K6Typ3XAiJcsvllg">Visits from Malaysia</a></li>
</ul>
<h2>Tutorial</h2>
<p>Here&#8217;s a nice tutorial video from <a href="http://www.youtube.com/user/GoogleBusiness">GoogleBusiness</a> on how to create and use your own custom advanced segments:</p>
<p><object width="425" height="345"><param name="movie" value="http://www.youtube.com/v/wu8YzF0AM14?fs=1&amp;hl=en_US"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/wu8YzF0AM14?fs=1&amp;hl=en_US" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="345"></embed></object></p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://davidsimpson.me/2010/09/24/google-analytics-tip-use-advanced-segments/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Analytics Plugin for Confluence 1.2 released</title>
		<link>http://davidsimpson.me/2010/06/24/analytics-plugin-for-confluence-12-released/</link>
		<comments>http://davidsimpson.me/2010/06/24/analytics-plugin-for-confluence-12-released/#comments</comments>
		<pubDate>Thu, 24 Jun 2010 11:39:35 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[analytics]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[atlassian]]></category>
		<category><![CDATA[confluence]]></category>
		<category><![CDATA[google analytics]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[web analytics]]></category>
		<category><![CDATA[wiki]]></category>

		<guid isPermaLink="false">http://davidsimpson.me/?p=865</guid>
		<description><![CDATA[Last week I released Analytics Plugin for Confluence 1.2 on the Atlassian Plugin Exchange. It&#8217;s been 6 months since the initial release which was only tested on Confluence 3.0. This time I&#8217;ve added a new dashboard section, full support for Confluence 3.1 &#038; 3.2 and a pile of macro parameters as requested by Guy Fraser. [...]]]></description>
			<content:encoded><![CDATA[<div id="tweetbutton865" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fdavidsimpson.me%2F2010%2F06%2F24%2Fanalytics-plugin-for-confluence-12-released%2F&amp;text=Analytics%20Plugin%20for%20Confluence%201.2%20released&amp;related=&amp;lang=en&amp;count=horizontal&amp;counturl=http%3A%2F%2Fdavidsimpson.me%2F2010%2F06%2F24%2Fanalytics-plugin-for-confluence-12-released%2F" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://davidsimpson.me/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;"></a></div><p><img src="/wp-content/uploads/2010/06/analytics-plugin-icon-60pc.png" alt="analytics-plugin-icon-60pc" title="analytics-plugin-icon-60pc" width="153" height="124" class="alignleft size-full wp-image-875" /> Last week I released <a href="https://plugins.atlassian.com/plugin/details/16722">Analytics Plugin for Confluence 1.2</a> on the Atlassian Plugin Exchange.  </p>
<p>It&#8217;s been  6 months since the initial release which was only tested on Confluence 3.0.  This time I&#8217;ve added a new dashboard section, full support for Confluence 3.1 &#038; 3.2 and a pile of macro parameters <a href="/2010/01/02/announcing-google-analytics-plugin-for-confluence/comment-page-1/#comment-487">as requested</a> by Guy Fraser.     The <a href="https://studio.plugins.atlassian.com/wiki/display/CGAP/Analytics+Plugin+1.2+-+Release+Notes">release notes are here</a>.   Confluence 3.3  is just around the corner, so I&#8217;ll add an update for that when it comes out.</p>
<h3>Thank you</h3>
<p>The Confluence community has shown a great deal of support and encouragement since the plugin was originally released.   For example, <a href="http://blogs.atlassian.com/confluence/2009/12/report-confluence-activity-using-google-analytics-in-the-wiki.html">Atlassian blogged about it</a> before I got a chance to.  So thanks to all for your support.  </p>
<p>The plugin was name checked by Sherif Mansour &#8211; Atlassian&#8217;s  Product Manager for Confluence in the <a href="http://www.atlassian.com/summit/2010/presentations/collaboration-and-projects/confluence-state-of-union.jsp">Confluence State of the Union</a> presentation at <a href="http://www.atlassian.com/summit/2010/">Atlassian Summit 2010</a> at the start of the month.  Watch it all, but concentrate especially around 5:10!</p>
<p>This week Google approved the plugin for their <a href="http://www.google.com/analytics/apps/">Google Analytics Application Gallery</a> &mdash;  <a href="http://www.google.com/analytics/apps/about?app_id=229002">take a look here</a>.  The Apps Gallery has only been going for about a month so I&#8217;m really excited about being a part of it.  The slight name change and new logo were done to fit in with the Application Gallery Policy.<br />
<span id="more-865"></span></p>
<h3>In the future</h3>
<p>The next release should support Confluence 3.3  and also complete tracking of all pages in a space  &mdash; not just those with a URL starting /display/spaceKey/  &mdash; based on <a href="/2010/04/09/meta-tags-are-your-friend-part-2-space-specific-tracking-in-confluence-with-google-analytics/">this hack</a> :</p>
<pre class="brush: jscript; title: ;">
// Add a page-level custom variable to record the space-key
if (typeof jQuery('meta[name=confluence-space-key]').attr(&quot;content&quot;) == 'string')
{
  pageTracker._setCustomVar(
    1, // This custom var is set to slot #1 of 5

    // The name acts as a kind of category for the user activity
    'confluence-space-key',    

    // This value of the custom variable
    jQuery('meta[name=confluence-space-key]').attr(&quot;content&quot;), 

    3 // Sets the scope to page-level
  );
}
</pre>
<p>&mdash; If you want to use this hack now, try out <a href="http://www.google.com/analytics/reporting/edit_custom_report?share=gKOvaSkBAAA.5cmZVfTgv7FSDQaf3SApcJ_A8fPPw5P0SVumf1XIBw6dZ9IfubVqvpdV97TN5wj9PYWeLHgMbDxm22PtwyLU0Q.tBCFvr4UE3alVuAccnjeMA">this custom Google Analytics report</a> which will allow you to take advantage of it now.</p>
<p>I&#8217;d also like to add full space specific tracking for attachments too.</p>
<h3>A quick demo</h3>
<p>And finally, this is what the new version looks like:</p>
<p><object height="350" width="425" class="alignleft"><param value="http://www.youtube.com/v/0JgoBwlQT_4&amp;hl=en_US&amp;fs=1&amp;" name="movie"><param value="true" name="allowFullScreen"><param value="always" name="allowscriptaccess"><embed height="350" width="425" allowfullscreen="true" allowscriptaccess="always" type="application/x-shockwave-flash" src="http://www.youtube.com/v/0JgoBwlQT_4&amp;hl=en_US&amp;fs=1&amp;"></object> &nbsp;</p>
<h3>Related Posts</h3>
<ul>
<li><a href="/2009/03/18/tracking-atlassian-confluence-usage-with-google-analytics/">Tracking Atlassian Confluence usage with Google Analytics</a></li>
<li><a href="/2009/04/16/4-useful-tips-on-google-analytics-reporting-for-confluence/">4 Useful Tips on Google Analytics Reporting for Confluence</a></li>
<li><a href="/2010/01/02/announcing-google-analytics-plugin-for-confluence/">Announcing: Google Analytics plugin for Confluence</a> &#8211; original release</li>
</ul>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://davidsimpson.me/2010/06/24/analytics-plugin-for-confluence-12-released/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Bitten a lot by a bitlybot</title>
		<link>http://davidsimpson.me/2010/06/22/bitten-a-lot-by-a-bitlybot/</link>
		<comments>http://davidsimpson.me/2010/06/22/bitten-a-lot-by-a-bitlybot/#comments</comments>
		<pubDate>Mon, 21 Jun 2010 23:29:14 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[web]]></category>
		<category><![CDATA[bad coding]]></category>
		<category><![CDATA[bitly]]></category>
		<category><![CDATA[bitlybot]]></category>

		<guid isPermaLink="false">http://davidsimpson.me/?p=829</guid>
		<description><![CDATA[This website and one or two others I run recently experienced what appeared to be a denial-of-service attack. Looking at the access logs, I could see several tens of thousands of requests all originating from a range of amazonaws.com IP addresses. All with the useragent &#8220;bitlybot&#8221;. This post is a quick postmortem of what went [...]]]></description>
			<content:encoded><![CDATA[<div id="tweetbutton829" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fdavidsimpson.me%2F2010%2F06%2F22%2Fbitten-a-lot-by-a-bitlybot%2F&amp;text=Bitten%20a%20lot%20by%20a%20bitlybot&amp;related=&amp;lang=en&amp;count=horizontal&amp;counturl=http%3A%2F%2Fdavidsimpson.me%2F2010%2F06%2F22%2Fbitten-a-lot-by-a-bitlybot%2F" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://davidsimpson.me/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;"></a></div><p><a href="http://bit.ly/"><img src="/wp-content/uploads/2010/06/blowfish_twtr.png" alt="Bitly" title="Bitly blowfish" width="73" height="73" class="alignleft size-full wp-image-841" /></a></p>
<p>This website and one or two others I run recently experienced what appeared to be a denial-of-service attack.   </p>
<p>Looking at the access logs, I could see several tens of thousands of requests all originating from a range of amazonaws.com IP addresses. All with the useragent &#8220;bitlybot&#8221;.</p>
<p>This post is a quick postmortem of what went wrong and why.<br />
<span id="more-829"></span>	</p>
<h2>So what happened?</h2>
<p>I&#8217;ve been happily using the excellent <a href="http://bit.ly/">bit.ly</a> URL shortening API on the <a href="http://www.read-able.com/">Readability Test Tool</a> website for over a year with no problems at all.  Whenever a user checks the readability of a web page using the Readability Test Tool, a convenient &#8220;tweet this&#8221; link is provided for the results page.  </p>
<p>My bit.ly link also innocently appended a query string &mdash; <strong>&#038;utm_source=twitter&#038;utm_medium=retweet</strong> &mdash; so that I can track click-throughs from Twitter in <a hef="http://www.google.com/analytics/">Google Analytics</a>.  </p>
<p>Looking back at this, it wasn&#8217;t that clever a thing to do, but it only took a couple of minutes to implement, so was very little effort for a nice bit of analytics/measurement return.</p>
<p>All was good for a year.  Google Analytics tracking worked well.  There were no problems.  Indeed looking back at the access logs, the bitlybot user agent had not so much as sniffed the website once in that time. </p>
<p>One day, something changed.  Overnight bitlybot started crawling my website for all the links it had created over the year.  Unfortunately for every link it crawl, it also created another link appending more parameters to the query string. </p>
<p>Which it then crawled. Creating another link with more appended query parameters.  Ouch.</p>
<p>e.g.</p>
<pre class="brush: plain; title: ;">

http://www.read-able.com/check.php?uri=http%3A%2F%2Fwww.example.com%2F&#038;utm_source=twitter&#038;utm_medium=retweet

http://www.read-able.com/check.php?uri=http%3A%2F%2Fwww.example.com%2F&#038;utm_source=twitter&#038;utm_medium=retweet&#038;utm_source=twitter&#038;utm_medium=retweet

http://www.read-able.com/check.php?uri=http%3A%2F%2Fwww.example.com%2F&#038;utm_source=twitter&#038;utm_medium=retweet&#038;utm_source=twitter&#038;utm_medium=retweet&#038;utm_source=twitter&#038;utm_medium=retweet
</pre>
<p>And so on.</p>
<h2>What did I do?</h2>
<p>Initially I ranted on Twitter.  </p>
<p>Then I removed the &#8220;tweet this&#8221; link to prevent further bit.ly URLs from being created.  This wouldn&#8217;t stop things for while, but would at least prevent the problem from getting any worse.</p>
<p>Then I edited robots.txt:</p>
<pre class="brush: bash; title: ;">
# Tell &quot;bitlybot&quot; not to come here at all
User-agent: bitlybot
Disallow: /
</pre>
<p>This did not work &#8211; bitlybot only checks robots.txt once a day, so this would not improve matters instantly.</p>
<p>Then I redirected the traffic to bit.ly:</p>
<pre class="brush: php; title: ;">
if ($_SERVER['HTTP_USER_AGENT'] == 'bitlybot')
{
	header('Location: http://bit.ly/', true, 301);
}
</pre>
<p>That slowed it a bit.  Admittedly, I was still blaming them at this point.</p>
<p>Then <a href="http://twitter.com/dvdsmpsn/status/12973263701">I reached out to @bitly</a>.</p>
<p>They were very responsive. I sent them a detailed email with a section of access logs and they fixed it.  Quickly.</p>
<p>They disabled my account, preventing me from causing any further mischief.  They stopped bitlybot from it&#8217;s crawling activity and reported the progress back to me.</p>
<p>Each contact with bit.ly via twitter or email resulted in a positive response &mdash; they were very quick to respond and my websites were soon back to their usual somewhat diminutive volume of traffic.</p>
<h2>Conclusions</h2>
<ul>
<li>Bit.ly has excellent support &#8211; they are very responsive and my little server was soon back to normal</li>
<li>Think before you write code that uses other people&#8217;s APIs &#8211; you may not fully understand the consequences of your actions</li>
<li>My Google Analytics tracking parameters were added with little thought &#8211; I really ought to have tried a bit harder to weigh up the implications</li>
<li>My small VPS does nicely thank you for the limited traffic that it experiences.  Given some decent volumes of traffic it will fail.</li>
</ul>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://davidsimpson.me/2010/06/22/bitten-a-lot-by-a-bitlybot/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Hide wiki markup &#8211; Confluence user macro</title>
		<link>http://davidsimpson.me/2010/06/06/hide-wiki-markup-confluence-user-macro/</link>
		<comments>http://davidsimpson.me/2010/06/06/hide-wiki-markup-confluence-user-macro/#comments</comments>
		<pubDate>Sun, 06 Jun 2010 21:30:31 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[web]]></category>
		<category><![CDATA[atlassian]]></category>
		<category><![CDATA[confluence]]></category>

		<guid isPermaLink="false">http://davidsimpson.me/?p=788</guid>
		<description><![CDATA[Update: 2011-09-20 With the release of Confluence 4.0, this post obsolete. A simple Confluence user macro to hide access to the View Wiki Markup menu link&#8230; {hide-wiki-markup} One thing I love about Confluence is the way that you can browse other people&#8217;s pages and steal their superior layout ideas for your own wiki pages. It&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<div id="tweetbutton788" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fdavidsimpson.me%2F2010%2F06%2F06%2Fhide-wiki-markup-confluence-user-macro%2F&amp;text=Hide%20wiki%20markup%20%26%238211%3B%20Confluence%20user%20macro&amp;related=&amp;lang=en&amp;count=horizontal&amp;counturl=http%3A%2F%2Fdavidsimpson.me%2F2010%2F06%2F06%2Fhide-wiki-markup-confluence-user-macro%2F" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://davidsimpson.me/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;"></a></div><p><em><strong>Update:</strong> 2011-09-20 With the release of Confluence 4.0, this post obsolete.</em></p>
<p>A simple Confluence user macro to hide access to the <b>View Wiki Markup</b> menu link&#8230;</p>
<p style="font-size:250%; font-family:monaco,courier,fixed-width;">{hide-wiki-markup}</p>
<p><img align="right" src="/wp-content/uploads/2010/06/tools-menu1.png" alt="tools-menu" title="tools-menu" width="164" height="464" class="alignleft size-full wp-image-801" /></p>
<p>One thing I love about Confluence is the way that you can browse other people&#8217;s pages and steal their superior layout ideas for your own wiki pages.  </p>
<p>It&#8217;s dead easy to do.  Go to the <b>Tools</b> drop down menu and click on the <b>View Wiki Markup</b> link.  A new window will open containing the wiki markup for the page.  You can now copy the bits you like and discard the rest.  Your friends and colleagues will be impressed by your wiki skills and you can continue on your path to <a href="http://confluence.atlassian.com/display/CONFDEVAL/Become+a+Wiki+Ninja+with+Confluence">becoming a wiki ninja</a>.</p>
<p><b>But what if you don&#8217;t want to share those wiki markup skills?</b><br />
That&#8217;s not very collaborative, I know. But there are entirely valid reasons that you&#8217;d wish to disable this feature.<br />
<span id="more-788"></span><br />
An example of this is use of the <code>{sql}</code> plugin.  This is a really powerful plugin that allows you to query databases and tabulate the results in Confluence. Wrap this in a <code>{chart}</code> macro and you have an instant graph. Nice work!  There&#8217;s a <a href="http://blogs.atlassian.com/confluence/2009/08/confluence-business-intelligence-part1.html">great blog post at Atlassian</a> that use this to great effect.</p>
<h2>Security</h2>
<p>However, using this kind of markup on a public website is a bad idea.  Exposing the structure of your databases to people you don&#8217;t know and can&#8217;t trust is somewhat short sighted.  On a company intranet, the risk is still there, but hopefully it is not so dangerous.  Even so, it&#8217;s really best not to show this information in the first place.</p>
<h2>What can we do about it?</h2>
<p>The best solution would be additional security in the product that allows editors to prevent others from viewing wiki markup.  It would probably go in the <b>Restrictions</b> screen.  This does seem somewhat like a paranoid feature request, but call me paranoid.</p>
<p>Another way is to use Javascript to remove the link from the DOM.  This is not a replacement for good security, but will stop the casual user from accessing the wiki markup.</p>
<p><b>It is easily done in a user macro:</b></p>
<p>As a Confluence administrator, go to <b>Confluence Admin | User Macros</b> and click on <b>Create a User Macro</b>.</p>
<p>Fill out the form&#8230;<br />
<b>Macro name:</b> hide-wiki-markup<br />
<b>Output:</b> Macro generates HTML markup<br />
<b>Template:</b></p>
<pre class="brush: xml; title: ;">&lt;script type=&quot;text/javascript&quot;&gt;
jQuery('#action-view-source-link').parent().hide(); /*Updated from .remove(); Aug 2010*/
&lt;/script&gt;
</pre>
<p><img src="/wp-content/uploads/2010/06/hide-wiki-markup-config.png" alt="hide-wiki-markup-config" title="hide-wiki-markup-config"  /></p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://davidsimpson.me/2010/06/06/hide-wiki-markup-confluence-user-macro/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Meta tags are your friend part 2: Space specific tracking in Confluence with Google Analytics</title>
		<link>http://davidsimpson.me/2010/04/09/meta-tags-are-your-friend-part-2-space-specific-tracking-in-confluence-with-google-analytics/</link>
		<comments>http://davidsimpson.me/2010/04/09/meta-tags-are-your-friend-part-2-space-specific-tracking-in-confluence-with-google-analytics/#comments</comments>
		<pubDate>Fri, 09 Apr 2010 01:14:54 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[analytics]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[atlassian]]></category>
		<category><![CDATA[confluence]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[google analytics]]></category>
		<category><![CDATA[web analytics]]></category>
		<category><![CDATA[wiki]]></category>

		<guid isPermaLink="false">http://davidsimpson.me/?p=719</guid>
		<description><![CDATA[I&#8217;ve previously written a number of posts about Confluence and Google Analytics (GA), including how to set up GA on Confluence and pointers for GA reports you should consider. Lastly, I wrote the Confluence Google Analytics Plugin (CGAP) which provides space specific GA reports from within Confluence. However, I&#8217;ve not been entirely happy because there [...]]]></description>
			<content:encoded><![CDATA[<div id="tweetbutton719" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fdavidsimpson.me%2F2010%2F04%2F09%2Fmeta-tags-are-your-friend-part-2-space-specific-tracking-in-confluence-with-google-analytics%2F&amp;text=Meta%20tags%20are%20your%20friend%20part%202%3A%20Space%20specific%20tracking%20in%20Confluence%20with%20Google%20Analytics&amp;related=&amp;lang=en&amp;count=horizontal&amp;counturl=http%3A%2F%2Fdavidsimpson.me%2F2010%2F04%2F09%2Fmeta-tags-are-your-friend-part-2-space-specific-tracking-in-confluence-with-google-analytics%2F" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://davidsimpson.me/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;"></a></div><p>I&#8217;ve previously written a number of posts about Confluence and Google Analytics (GA), including <a href="/2009/03/18/tracking-atlassian-confluence-usage-with-google-analytics/">how to set up GA on Confluence</a> and pointers for <a href="/2009/04/16/4-useful-tips-on-google-analytics-reporting-for-confluence/">GA reports you should consider</a>.  Lastly, I wrote the <a href="/2010/01/02/announcing-google-analytics-plugin-for-confluence/">Confluence Google Analytics Plugin</a> (CGAP) which provides space specific GA reports from within Confluence.</p>
<p>However, I&#8217;ve not been entirely happy because there wasn&#8217;t a method to allow complete tracking of all space specific Confluence pages using CGAP or the reports that I&#8217;ve previously described.</p>
<p>This has been <a href="http://forums.atlassian.com/thread.jspa?messageID=257303418">documented</a> <a href="http://blogs.atlassian.com/confluence/2009/12/report-confluence-activity-using-google-analytics-in-the-wiki.html#comment-210247">elsewhere</a>, but briefly, the problem is with&#8230;</p>
<ul>
<li>pages with punctuation in the title e.g. <a href="http://workspace.nottingham.ac.uk/pages/viewpage.action?pageId=45947608" title="http://workspace.nottingham.ac.uk/pages/viewpage.action?pageId=45947608">This page is bad for Analytics, isn&#8217;t it?</a> (hover on the link to see the URI)</li>
<li>short URLs e.g. /x/2Bq9Ag</li>
<li>space administration e.g. /spaces/spaceadmin.action?key=spaceKey</li>
<li>page edits e.g./pages/editpage.action?pageId=XXXX</li>
<li>page creation e.g. /pages/createpage.action?spaceKey=spaceKey&#038;fromPageId=XXXX</li>
<li>add/view attachments e.g. /pages/viewpageattachments.action?pageId=XXXX</li>
<li>page history e.g. /pages/viewpreviousversions.action?pageId=XXXX</li>
<li>view wiki markup e.g. /pages/viewpagesrc.action?pageId=XXXX</li>
</ul>
<p>&#8230;and so on.  I think you get the picture.</p>
<p>For any page where there is a real interaction with the wiki &mdash; such as page creation or page edits, attachment viewing or uploading &mdash; it is very difficult associate that interaction to the space where the interaction took place.  Damn.  That&#8217;s the main point really. Wikis are for collaboration &mdash; editing and creating content &mdash; not just passively reading.  </p>
<p>It really bugs me that the URIs in Confluence aren&#8217;t built up so that they always provide a context of where you are.  But what can we do?</p>
<p>This post suggests 2 possible solutions to this problem:  </p>
<ol>
<li>A Javascript only method</li>
<li>A Javascript and velocity templating method</li>
</ol>
<p>Both have their drawbacks, but they do let you get a little closer to understanding what your users are doing within your Confluence spaces. Try them out and please report back on your preference or your own alternative solution.</p>
<p><span id="more-719"></span></p>
<h2>The Javascript only method</h2>
<p>In this method, we track a custom variable in GA where possible, so that we can attach a page view to the corresponding Confluence space.</p>
<p>Atlassian handily provide the following (example) meta tag on every page that has an associated space:</p>
<pre class="brush: xml; title: ;">&lt;meta id=&quot;confluence-space-key&quot; name=&quot;confluence-space-key&quot; content=&quot;~cczdas&quot;&gt;</pre>
<p>We can check for that meta tag and pass it into a custom variable in Google Analytics.</p>
<p>In Confluence, go to <b>Dashboard | Administration | Look and Feel | Custom HTML</b></p>
<p>Click on the “Edit” button and add this javascript snippet (with your tracker code) to the “At end of the BODY” section:</p>
<pre class="brush: jscript; title: ;">
&lt;script type=&quot;text/javascript&quot;&gt;
var gaJsHost = ((&quot;https:&quot; == document.location.protocol) ? &quot;https://ssl.&quot; : &quot;http://www.&quot;);
document.write(unescape(&quot;%3Cscript src='&quot; + gaJsHost + &quot;google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E&quot;));
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;

	window.onload = function(){
		try
		{
			var pageTracker = _gat._getTracker(&quot;UA-XXXXX-XX&quot;);

			// Add a page-level custom variable to record the space-key
			if (typeof jQuery('meta[name=confluence-space-key]').attr(&quot;content&quot;) == 'string')
			{
				pageTracker._setCustomVar(
				     1,                         // This custom var is set to slot #1 of 5
				     'confluence-space-key',    // The name acts as a kind of category for the user activity
				     jQuery('meta[name=confluence-space-key]').attr(&quot;content&quot;), // This value of the custom variable
				     3                          // Sets the scope to page-level
				);
			}
		}
		catch (err) {}
	}

&lt;/script&gt;
</pre>
<p>This means for each page, we&#8217;ve added a custom variable which can later be check against.  We can now therefore easily check which page belongs to which space.</p>
<p>In Google Analytics, the custom variables report looks like this:</p>
<p><a href="http://localhost/davidsimpson.me/wp-content/uploads/2010/04/confluence-ga-custom-variable-report.png" rel="lightbox[719]" title="confluence-ga-custom-variable-report"><img src="http://davidsimpson.me/wp-content/uploads/2010/04/confluence-ga-custom-variable-report-440x316.png" alt="confluence-ga-custom-variable-report" title="confluence-ga-custom-variable-report" width="440" height="316" class="size-medium wp-image-725" /></a></p>
<p>This doesn&#8217;t really tell us much, other than the number of page views for a space and a little more.  To get at the real power of custom variables, we need to create a custom segment for each space.  This will allow us to see all the interactions for the space.</p>
<p>Here&#8217;s a short video guide to creating custom segments for Confluence spaces:</p>
<p><object width="480" height="385"><param name="movie" value="http://www.youtube.com/v/gOBoqG7LNLc&#038;hl=en_US&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/gOBoqG7LNLc&#038;hl=en_US&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object></p>
<h3>Pros</h3>
<ul>
<li>It&#8217;s really simple. Anyone with Confluence administration rights can cut and paste this code.</li>
<li>It&#8217;s pure. This should not be affected by upgrades to the platform.</li>
<li>It&#8217;s easily to support. Lots of people know Javascript.</li>
</ul>
<h3>Cons</h3>
<ul>
<li>You&#8217;re moving into slightly advanced Google Analytics territory here.</li>
<li>You&#8217;ll need to set up a separate custom advanced segment for each space.  This may be somewhat dull.</li>
</ul>
<p>I really like this approach, but haven&#8217;t managed to successfully add it into CGAP yet <a href="http://www.google.com/support/forum/p/Google+Analytics/thread?tid=23eb6e88efbd4ac3&#038;hl=en">whilst maintaining access to historical data</a>.</p>
<h2>Javascript and velocity templating method</h2>
<p>In this method, we trick Google Analytics into reporting the URL in a the format that works with content drill-down e.g.</p>
<ul>
<li>/pages/viewpage.action?pageId=XXXX becomes /display/spaceKey/Page+Title</li>
<li>/x/2Bq9Ag (short URL) becomes /display/spaceKey/Page+Title</li>
<li>/pages/editpage.action?pageId=XXX becomes /display/spaceKey/Page+Title/edit</li>
<li>/pages/viewpageattachments.action?pageId=XXX becomes /display/spaceKey/Page+Title/view-attachments</li>
</ul>
<p>We do this by adding a custom meta tag named &#8220;analytics.url.fix&#8221; from which we read the &#8220;fixed&#8221; URL using a little Javascript.	</p>
<h3>Edits</h3>
<p><b>page.vmd</b> in your theme:</p>
<pre class="brush: plain; title: ;">
## Add Google Analytics support for page edits, attachment views etc.
## Called by $!sitemeshPage.getProperty(&quot;page.googleAnalyticsUrlFix&quot;) in main.vmd
&lt;content tag=&quot;googleAnalyticsUrlFix&quot;&gt;
	#if ($mode == &quot;view&quot;)
		&lt;meta name=&quot;analytics.url.fix&quot; desc=&quot;$req.contextPath/display/$page.spaceKey/$page.title&quot; /&gt;
	#else
		&lt;meta name=&quot;analytics.url.fix&quot; desc=&quot;$req.contextPath/display/$page.spaceKey/$page.title/$mode&quot; /&gt;
	#end
&lt;/content&gt;
</pre>
<p><b>main.vmd</b> in your theme:<br />
Add after the title node in /html/head/title</p>
<pre class="brush: plain; title: ;">
## Call the googleAnalyticsUrlFix content tag in page.vmd, fail silently:
$!sitemeshPage.getProperty(&quot;page.googleAnalyticsUrlFix&quot;)
</pre>
<p>In Confluence, go to <b>Dashboard | Administration | Look and Feel | Custom HTML</b></p>
<p>Click on the “Edit” button and add this javascript snippet (with your tracker code) to the “At end of the BODY” section:</p>
<pre class="brush: jscript; title: ;">
&lt;script type=&quot;text/javascript&quot;&gt;
var gaJsHost = ((&quot;https:&quot; == document.location.protocol) ? &quot;https://ssl.&quot; : &quot;http://www.&quot;);
document.write(unescape(&quot;%3Cscript src='&quot; + gaJsHost + &quot;google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E&quot;));
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
	window.onload = function(){
		try
		{
			var pageTracker = _gat._getTracker(&quot;UA-XXXXXX-X&quot;); 

			// Test for the meta[name=analytics.url.fix] tag &amp; fix the url
			if (typeof jQuery('meta[name=analytics.url.fix]').attr(&quot;content&quot;) == 'string')
			{
	 			// console.debug('corrected pageview');
	   			var pageUri = jQuery('meta[name=analytics.url.fix]').attr(&quot;content&quot;).replace(/s+/gi, '+');
				pageTracker._trackPageview(pageUri);
			}
			else
			{
				// console.debug('default pageview');
				pageTracker._trackPageview();
			}
		}
		catch (err) {}
	}
&lt;/script&gt;
</pre>
<h3>Pros</h3>
<ul>
<li>You don&#8217;t have to do anything on the Google Analytics side at all</li>
<li>
		This is just great for the content drilldown screen in Google Analytics.</p>
<ul>
<li>It means that pages with punctuation in the title can now be seen within their correct space.</li>
<li>The space owners can now be sure of the stats for viewing and editing pages within their space.</li>
</ul>
</li>
<li>
		This is great for the Google Analytics plugin for Confluence (CGAP)</p>
<ul>
<li>All the page edits should be shown in the analytics report</li>
<li>It&#8217;s easily supportable. Lots of people know Javascript</li>
</ul>
</li>
</ul>
<h3>Cons</h3>
<ul>
<li>It&#8217;s a bit messy.</li>
<li>You&#8217;ll have to apply this to every theme you support.</li>
<li>Editing velocity templates isn&#8217;t everyone&#8217;s cup of tea.</li>
<li>I&#8217;ve no idea what will happen when you upgrade Confluence.</li>
<li>It niggles me that we&#8217;re sending incorrect (though easily readable) pageview data to Google Analytics.</li>
<li>It still doesn&#8217;t tie everything to the space, just the page interactions</li>
</ul>
<p>To my mind, this is less elegant, but provides pretty much instant results.</p>
<h2>Which one to choose?</h2>
<p>I really like the simplicity of the first solution. Just a little bit of Javascript to read a meta tag that&#8217;s already there.  It&#8217;s likely to easily survive an upgrade. But I&#8217;m  disappointed that as yet, I can&#8217;t get it to work nicely with CGAP.</p>
<p>For ongoing support reasons, I&#8217;d always say <b>don&#8217;t mess with the platform</b>. Don&#8217;t do anything which makes it more difficult to upgrade to the latest and greatest version. If you agree, then steer well clear of the latter option.  If however, you absolutely have to start complete space specific tracking right now, no matter what, then the latter is then choice for you.</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://davidsimpson.me/2010/04/09/meta-tags-are-your-friend-part-2-space-specific-tracking-in-confluence-with-google-analytics/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Dear Apple Inc.</title>
		<link>http://davidsimpson.me/2010/02/10/dear-apple-inc/</link>
		<comments>http://davidsimpson.me/2010/02/10/dear-apple-inc/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 19:52:52 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[usability]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[ui patterns]]></category>
		<category><![CDATA[ux]]></category>

		<guid isPermaLink="false">http://davidsimpson.me/?p=571</guid>
		<description><![CDATA[Please fix the search UI in Safari on the iPhone. I&#8217;ve been using the iPhone for some time now and overall, the interface is really slick. The buttons are consistently placed and this gives a really strong user experience. Everything appears to be in the obvious place. The trouble is, I like to search the [...]]]></description>
			<content:encoded><![CDATA[<div id="tweetbutton571" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fdavidsimpson.me%2F2010%2F02%2F10%2Fdear-apple-inc%2F&amp;text=Dear%20Apple%20Inc.&amp;related=&amp;lang=en&amp;count=horizontal&amp;counturl=http%3A%2F%2Fdavidsimpson.me%2F2010%2F02%2F10%2Fdear-apple-inc%2F" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://davidsimpson.me/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;"></a></div><p><img align="right" src="/wp-content/uploads/2010/02/UK_Mailred.png" alt="UK postage stamp" title="UK postage stamp" width="128" height="128" class="alignleft size-full wp-image-596" /></p>
<p><strong>Please fix the search <acronym title="user interface">UI<acronym> in Safari on the iPhone.</strong>  </p>
<p>I&#8217;ve been using the iPhone for some time now and overall, the interface is really slick.  The buttons are consistently placed and this gives a really strong user experience.  Everything appears to be in the obvious place.  </p>
<p>The trouble is, I like to search the web and it looks like you&#8217;ve forgotten your own iPhone user interface rules for this area.<br />
<span id="more-571"></span></p>
<h3>Let me explain</h3>
<p>In all your other applications, the primary action button is located top-right with a secondary action button top-left.  </p>
<p><strong>Here&#8217;s some examples:</strong></p>
<p><img src="/wp-content/uploads/2010/02/Calendar-Add-Event.png" alt="Calendar - Add Event" title="Calendar - Add Event" width="320" height="480"  /></p>
<p><img src="/wp-content/uploads/2010/02/Mail-New-Message.png" alt="Mail - New Message" title="Mail - New Message" width="320" height="480" /></p>
<p><img src="/wp-content/uploads/2010/02/Safari-Basic-Authentication-dialog.png" alt="Safari Basic Authentication dialog" title="Safari Basic Authentication dialog" width="320" height="480" /></p>
<p><img src="/wp-content/uploads/2010/02/Messages-Edit.png" alt="Messages - Edit" title="Messages - Edit" width="320" height="480"  /></p>
<p>You get the picture, right?</p>
<p>Over time the user learns this convention and without realising it assumes that the top-right button means &#8220;OK&#8221;, &#8220;Submit&#8221;, &#8220;Search&#8221; or whatever the primary action is.</p>
<h3>Now, let&#8217;s have a look at the Safari search screen</h3>
<p>What&#8217;s in the top-right button position?</p>
<p><img src="/wp-content/uploads/2010/02/Safari-Search-Currently.png" alt="Safari Search - Currently" title="Safari Search - Currently" width="320" height="480" /></p>
<p> It&#8217;s the &#8220;Cancel&#8221; button i.e. the secondary action.  </p>
<p><strong>Oh dear.  How did that get there?</strong></p>
<p>At first, I thought that I was at fault because I hadn&#8217;t properly learned the interface.  Then I remembered one of the first observations you make when usability testing.  <strong>Users blame themselves</strong> for the mistakes in the design of the interface.</p>
<p>That the reason I was making the mistake so often was precisely because I <em>had</em>  learned the conventions of the user interface.</p>
<h3>So what can we do?</h3>
<p>The interface needs a subtle redesign.  Nothing major, just an increment to correct the problem.</p>
<p><strong>There are 2 options that immediately spring to mind</strong></p>
<p><strong>Option 1:</strong>  Move the Cancel button to the top-left &#8220;secondary action&#8221; position</p>
<p><img src="/wp-content/uploads/2010/02/Safari-Search-Enhancement-Option-2.png" alt="Safari Search Enhancement - Option" title="Safari Search Enhancement - Option" width="320" height="480" /></p>
<p>This should be really easy.  The basic premise of the current design is left intact and the secondary action is returned to the correct place in the interface &#8211; the top-left position.</p>
<p><strong>Option 2:</strong> Add a &#8220;Search&#8221; button in the top-right position and move the Cancel button to the top-left &#8220;secondary action&#8221; position.</p>
<p><img src="/wp-content/uploads/2010/02/Safari-Search-Enhancement-Option-1.png" alt="Safari Search Enhancement - Option" title="Safari Search Enhancement - Option" width="320" height="480"  /></p>
<p>We&#8217;ve got an additional button now, but it&#8217;s consistent with the overall design of the other apps you produce.</p>
<p>I know you&#8217;re really busy right now, especially with all the activity around the iPad, but please fit this into the next version of the OS.  It is such a minor UI change, but would markedly improve the way the browser search interface works.</p>
<p>Best of luck with iPhone OS 4.0.  I hope you bundle some of <a href="http://www.tuaw.com/2010/01/10/dear-apple-what-we-want-to-see-for-iphone-4-0-part-1?icid=sphere_blogsmith_inpage_tuaw">these ideas</a>, but don&#8217;t worry too much about Flash.</p>
<p><a href="http://twitter.com/dvdsmpsn">David</a></p>
<p><strong>P.S.</strong> If you can&#8217;t manage this for me, then I&#8217;d be happy to settle for <a href="http://www.opera.com/press/releases/2010/02/10/">Opera Mini</a> being approved in the App Store instead &#8211;  I quite like the idea of being able to browse <a href="http://my.opera.com/haavard/blog/2010/02/10/opera-mini-iphone">6 times faster than Safari</a>.</p>
<p>Image credit: <a href="http://www.tonysmac.pwp.blueyonder.co.uk/2007/02/uk-stamp-icons.html">UK stamp</a></p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://davidsimpson.me/2010/02/10/dear-apple-inc/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

