<?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>Ollie Glass</title>
	<atom:link href="http://blog.ollieglass.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.ollieglass.com</link>
	<description>Full stack web developer, London UK</description>
	<lastBuildDate>Tue, 09 Apr 2013 01:20:59 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Responsive They Work For You hack</title>
		<link>http://blog.ollieglass.com/2013/04/07/responsive-they-work-for-you-hack/</link>
		<comments>http://blog.ollieglass.com/2013/04/07/responsive-they-work-for-you-hack/#comments</comments>
		<pubDate>Sun, 07 Apr 2013 16:32:00 +0000</pubDate>
		<dc:creator>Ollie Glass</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.ollieglass.com/?p=723</guid>
		<description><![CDATA[Heard of TheyWorkForYou? It&#8217;s a political web site that lets you look up MPs and learn about their voting record, interests, expenses and more. When I asked this at Rewired State&#8217;s National Hack The Government day, most of the room raised their hands. It&#8217;s hugely popular and has remarkable history. Built in 2004 at a [...]]]></description>
				<content:encoded><![CDATA[<p>Heard of <a href="http://www.theyworkforyou.com/">TheyWorkForYou</a>? It&#8217;s a political web site that lets you look up MPs and learn about their voting record, interests, expenses and more.</p>
<p>When I asked this at <a href="http://rewiredstate.org/hacks/national-hack-the-government-2013">Rewired State&#8217;s National Hack The Government</a> day, most of the room raised their hands. It&#8217;s hugely popular and has remarkable history. Built in 2004 at a <a href="http://www.ntk.net/">NTK</a> conference, it&#8217;s won a New Statesman New Media Award, had development supported by the Department for Constitutional Affairs, been referenced in the House of Commons and House of Lords, appeared on Channel 4, been replicated around the world and was called &#8220;the most amazing, subversive piece of political webware I&#8217;ve ever seen&#8221; by Cory Doctorow.</p>
<p><a href="http://i0.wp.com/blog.ollieglass.com/wp-content/uploads/2013/04/Screen-Shot-2013-04-07-at-16.35.32.png"><img class="aligncenter size-medium wp-image-724" alt="TheyWorkForYou" src="http://i0.wp.com/blog.ollieglass.com/wp-content/uploads/2013/04/Screen-Shot-2013-04-07-at-16.35.32.png?resize=300%2C230" data-recalc-dims="1" /></a></p>
<p>Wow. All this and remaining relevant for ten years on the internet is very impressive, but unfortunately it doesn&#8217;t look so good on a mobile in 2013.</p>
<p><a href="http://i0.wp.com/blog.ollieglass.com/wp-content/uploads/2013/04/Screen-Shot-2013-04-07-at-16.42.26.png"><img class="aligncenter size-medium wp-image-725" alt="TheyWorkForYou in Mobile Safari" src="http://i1.wp.com/blog.ollieglass.com/wp-content/uploads/2013/04/Screen-Shot-2013-04-07-at-16.42.26.png?resize=200%2C300" data-recalc-dims="1" /></a></p>
<p>Much as I love diving it and making quick, fun hacks on hackdays, for Rewired State I set myself the challenge of making something that would have lasting value and remain useful after the event. A responsive front end for TheyWorkForYou seemed a great project. My first idea was to build one and make a pull request to <a href="https://github.com/mysociety/theyworkforyou">the Github repo</a>.</p>
<p><a href="http://i2.wp.com/blog.ollieglass.com/wp-content/uploads/2013/04/Screen-Shot-2013-04-07-at-16.56.03.png"><img class="aligncenter size-medium wp-image-726" alt="Heritage PHP" src="http://i0.wp.com/blog.ollieglass.com/wp-content/uploads/2013/04/Screen-Shot-2013-04-07-at-16.56.03.png?resize=300%2C238" data-recalc-dims="1" /></a></p>
<p>Ah. Turns out TheyWorkForYou is written in what we might kindly describe as heritage PHP, which makes it very hard to adjust the front end.</p>
<p>But TheyWorkForYou has an API. If the data&#8217;s there, I can read it and build a new front end on top, right? Ah. Turns out the API also has a lot of&#8230; heritage.</p>
<p><a href="http://i1.wp.com/blog.ollieglass.com/wp-content/uploads/2013/04/Screen-Shot-2013-04-07-at-17.00.48.png"><img class="aligncenter size-medium wp-image-727" alt="Heritage JSON" src="http://i1.wp.com/blog.ollieglass.com/wp-content/uploads/2013/04/Screen-Shot-2013-04-07-at-17.00.48.png?resize=300%2C223" data-recalc-dims="1" /></a></p>
<p>I realised I couldn&#8217;t work through much of this data and code in a day, so I looked for the single most interesting feature of the site to convert to mobile. I think it&#8217;s the voting record, it&#8217;s intriguing to look up how MPs vote and see the issues they actually support. Did you know Nick Clegg was very strongly for tuition fees? Ok&#8230; maybe not the best example.</p>
<p><a href="http://i0.wp.com/blog.ollieglass.com/wp-content/uploads/2013/04/Screen-Shot-2013-04-07-at-17.03.39.png"><img class="aligncenter size-medium wp-image-728" alt="Nick Clegg's votes" src="http://i2.wp.com/blog.ollieglass.com/wp-content/uploads/2013/04/Screen-Shot-2013-04-07-at-17.03.39.png?resize=300%2C132" data-recalc-dims="1" /></a></p>
<p>Well, having worked out a clear and achievable goal, I dived in and started hacking. The result&#8217;s live at <a href="http://is.gd/twfym">is.gd/twfym</a>. It looks like this:</p>
<p><a href="http://i0.wp.com/blog.ollieglass.com/wp-content/uploads/2013/04/Screen-Shot-2013-04-07-at-17.09.49.png"><img class="aligncenter size-medium wp-image-729" alt="They Work For You Mobile" src="http://i1.wp.com/blog.ollieglass.com/wp-content/uploads/2013/04/Screen-Shot-2013-04-07-at-17.09.49.png?resize=190%2C300" data-recalc-dims="1" /></a></p>
<p>There&#8217;s also a spin off hack. I had to parse the TheyWorkForYou API data for my own use, so I made a public endpoint to my data /mp_api/&lt;member_id&gt;/</p>
<p>There&#8217;s only one call, it returns information about an MP and their voting records. Here&#8217;s how my <a href="http://obscure-beach-3236.herokuapp.com/mp_api/11812/">JSON response for Nick Clegg</a> looks:</p>
<p><a href="http://i1.wp.com/blog.ollieglass.com/wp-content/uploads/2013/04/Screen-Shot-2013-04-07-at-17.12.28.png"><img class="aligncenter size-medium wp-image-730" alt="TWFYM API" src="http://i0.wp.com/blog.ollieglass.com/wp-content/uploads/2013/04/Screen-Shot-2013-04-07-at-17.12.28.png?resize=300%2C213" data-recalc-dims="1" /></a></p>
<p>My source code&#8217;s on Github at <a href="https://github.com/ollieglass/theyworkforyou-responsive">https://github.com/ollieglass/theyworkforyou-responsive</a>. I&#8217;m pleased to have turned it around so quickly, but it&#8217;s very rough. There are some especially hacky things in there with the images and MP lookup, we might kindly describe it as stream-of-consciousness Python. If I&#8217;m lucky, perhaps it&#8217;ll get upgraded to heritage status one day.</p>
<p>Everyone presented their hacks at the end of the day, and I was delighted to win a prize from MySociety. It was an honour to give something back and have <a href="http://www.mysociety.org/about-tom-steinberg/">Tom Steinberg</a> recognise my contribution. MySociety&#8217;s projects were a huge influence and inspiration to me when I first saw them, back in the early 2000s when I was reading NTK and writing Perl scripts for a living.</p>
<p><a href="http://i2.wp.com/blog.ollieglass.com/wp-content/uploads/2013/04/Screen-Shot-2013-04-08-at-10.46.04.png"><img class="aligncenter size-medium wp-image-743" alt="Prize" src="http://i2.wp.com/blog.ollieglass.com/wp-content/uploads/2013/04/Screen-Shot-2013-04-08-at-10.46.04.png?resize=300%2C108" data-recalc-dims="1" /></a></p>
<p>Thanks to everyone I met at the event, <a href="http://www.amywhitney.co.uk">Amy Whitney</a> for giving me a hand with the design, and the teams from Rewired State, MySociety, the Taxpayers&#8217; Alliance and Government Digital Service a great day.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ollieglass.com/2013/04/07/responsive-they-work-for-you-hack/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PeerIndex product launch</title>
		<link>http://blog.ollieglass.com/2013/03/01/peerindex-product-launch/</link>
		<comments>http://blog.ollieglass.com/2013/03/01/peerindex-product-launch/#comments</comments>
		<pubDate>Fri, 01 Mar 2013 11:51:44 +0000</pubDate>
		<dc:creator>Ollie Glass</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://ollieglass.com/?p=577</guid>
		<description><![CDATA[In August 2012 I joined PeerIndex as growth hacker. I put a measurement framework in place (based on Dave McClure&#8217;s Pirate Metrics), recorded and analysed the conversion funnels across the peerindex.com site, asked users about their understanding of PeerIndex and what they wanted from us, and ran tests to discover how our audience would respond [...]]]></description>
				<content:encoded><![CDATA[<p>In August 2012 I joined PeerIndex as growth hacker. I put a measurement framework in place (based on Dave McClure&#8217;s Pirate Metrics), recorded and analysed the conversion funnels across the peerindex.com site, asked users about their understanding of PeerIndex and what they wanted from us, and ran tests to discover how our audience would respond to different messages.</p>
<p>If you ever met Dee on the homepage, you saw one of those tests!</p>
<div id="attachment_585" class="wp-caption aligncenter" style="width: 604px"><a href="http://i1.wp.com/blog.ollieglass.com/wp-content/uploads/2013/03/peerindex_homepage_ab_test_control.png"><img class="size-large wp-image-585" alt="Original peerindex.com homepage" src="http://i1.wp.com/blog.ollieglass.com/wp-content/uploads/2013/03/peerindex_homepage_ab_test_control.png?resize=594%2C424" data-recalc-dims="1" /></a><p class="wp-caption-text">Original peerindex.com homepage</p></div>
<div id="attachment_586" class="wp-caption aligncenter" style="width: 604px"><a href="http://i1.wp.com/blog.ollieglass.com/wp-content/uploads/2013/03/peerindex_homepage_ab_test_dee.png"><img class="size-large wp-image-586" alt="Dee, my homepage ab test" src="http://i1.wp.com/blog.ollieglass.com/wp-content/uploads/2013/03/peerindex_homepage_ab_test_dee.png?resize=594%2C459" data-recalc-dims="1" /></a><p class="wp-caption-text">Dee, star of my last homepage ab test</p></div>
<div style="clear: both;"></div>
<p>It became clear pretty quickly that social media analytics were highly valuable, but for a limited audience. I started experimenting with some bold new features, and in December 2012 was asked to lead a team of six to ideate, re-design and build the consumer product. Fast forward to February 26th 2013, now working as PeerIndex&#8217;s product manager I&#8217;m proud to release the new peerindex.com.</p>
<p><a href="http://i1.wp.com/blog.ollieglass.com/wp-content/uploads/2013/03/peerindex_redesign_desktop.png"><img class="aligncenter size-large wp-image-587" alt="peerindex_redesign_desktop" src="http://i2.wp.com/blog.ollieglass.com/wp-content/uploads/2013/03/peerindex_redesign_desktop.png?resize=594%2C497" data-recalc-dims="1" /></a></p>
<p><a href="http://i2.wp.com/blog.ollieglass.com/wp-content/uploads/2013/03/peerindex_redesign_tablet.png"><img class="aligncenter size-medium wp-image-590" alt="peerindex_redesign_tablet" src="http://i0.wp.com/blog.ollieglass.com/wp-content/uploads/2013/03/peerindex_redesign_tablet.png?resize=227%2C300" data-recalc-dims="1" /></a></p>
<p><a href="http://i2.wp.com/blog.ollieglass.com/wp-content/uploads/2013/03/peerindex_redesign_mobile2.png"><img class="aligncenter size-medium wp-image-589" alt="peerindex_redesign_mobile2" src="http://i1.wp.com/blog.ollieglass.com/wp-content/uploads/2013/03/peerindex_redesign_mobile2.png?resize=198%2C300" data-recalc-dims="1" /></a></p>
<p>The consumer proposition is simple and has broad appeal. Your retweets and likes earn you influence, which gives you discounts on products. It&#8217;s had good responses in tests, and over the next few iterations I hope to tighten the messaging, functions and whole product vision even further. I hope you enjoy it!</p>
<p>A few people noticed and wrote some lovely things about us.</p>
<p><a href="http://i2.wp.com/blog.ollieglass.com/wp-content/uploads/2013/03/econsultancy.png"><img class="alignleft size-full wp-image-612" alt="econsultancy" src="http://i1.wp.com/blog.ollieglass.com/wp-content/uploads/2013/03/econsultancy.png?resize=100%2C100" data-recalc-dims="1" /></a>&#8220;Clearly social influence plays a key role in purchases but social influence has yet to have an effect on product discounts… until now. Now with launch of PeerIndex’s new site, this promises product discounted based on your social influence&#8221; <a href="http://econsultancy.com/uk/blog/62240-social-influence-the-next-step-for-ecommerce">eConsultancy</a></p>
<div style="clear: both;"></div>
<p><a href="http://i0.wp.com/blog.ollieglass.com/wp-content/uploads/2013/03/the_telegraph.png"><img class="alignleft size-full wp-image-608" alt="the_telegraph" src="http://i1.wp.com/blog.ollieglass.com/wp-content/uploads/2013/03/the_telegraph.png?resize=100%2C18" data-recalc-dims="1" /></a>&#8220;From today, people whose views are respected by their online friends will be offered discounts of up to 50 per cent on hundreds of products in the hope that they might mention them when they next log in.&#8221; The <a href="http://www.telegraph.co.uk/technology/social-media/9897634/PeerIndex-trading-social-media-influence-for-discounts.html">Telegraph</a></p>
<div style="clear: both;"></div>
<p><a href="http://i0.wp.com/blog.ollieglass.com/wp-content/uploads/2013/03/the_drum1.png"><img class="alignleft size-full wp-image-609" alt="the_drum" src="http://i1.wp.com/blog.ollieglass.com/wp-content/uploads/2013/03/the_drum1.png?resize=100%2C40" data-recalc-dims="1" /></a>&#8220;PeerIndex, the company that measures brand influence on social media, has launched a new service that allows brands to reward consumers with free products and exclusive discounts for their social media contributions, with the aim of generating word-of-mouth on a large scale&#8221; <a href="http://www.thedrum.com/news/2013/02/27/peerindex-launches-new-service-help-brands-generate-word-mouth-scale">The Drum</a></p>
<div style="clear: both;"></div>
<p><a href="http://i0.wp.com/blog.ollieglass.com/wp-content/uploads/2013/03/marketing.png"><img class="alignleft size-full wp-image-610" alt="marketing" src="http://i0.wp.com/blog.ollieglass.com/wp-content/uploads/2013/03/marketing.png?resize=100%2C22" data-recalc-dims="1" /></a>&#8220;Social influence company PeerIndex is launching a new service designed to drive word of mouth marketing on social networks in exchange for perks and discounts&#8221; <a href="http://www.marketingmagazine.co.uk/news/1172652/PeerIndex-offer-authentic-word-of-mouth-scale/">Marketing</a> magazine</p>
<div style="clear: both;"></div>
<p><a href="http://i2.wp.com/blog.ollieglass.com/wp-content/uploads/2013/03/love_money.png"><img class="alignleft size-full wp-image-611" alt="love_money" src="http://i1.wp.com/blog.ollieglass.com/wp-content/uploads/2013/03/love_money.png?resize=100%2C25" data-recalc-dims="1" /></a>&#8220;&#8230; a new service from PeerIndex means Twitter users can bag a range of freebies and discounts.&#8221; <a href="http://www.lovemoney.com/blogs/money-saving-tips-bargains-and-freebies/freebies/19914/how-im-using-twitter-to-get-freebies-and-discounts">Love Money</a></p>
<div style="clear: both;"></div>
<p>There&#8217;s also been some great buzz on Twitter&#8230;</p>
<p><a href="http://i1.wp.com/blog.ollieglass.com/wp-content/uploads/2013/03/peerindex_relaunch_vikki_chowney_tweet.png"><img class="aligncenter size-full wp-image-596" alt="peerindex_relaunch_vikki_chowney_tweet" src="http://i2.wp.com/blog.ollieglass.com/wp-content/uploads/2013/03/peerindex_relaunch_vikki_chowney_tweet.png?resize=509%2C104" data-recalc-dims="1" /></a></p>
<p><a href="http://i0.wp.com/blog.ollieglass.com/wp-content/uploads/2013/03/peerindex_relaunch_jen_rankine_tweet.png"><img class="aligncenter size-full wp-image-593" alt="peerindex_relaunch_jen_rankine_tweet" src="http://i2.wp.com/blog.ollieglass.com/wp-content/uploads/2013/03/peerindex_relaunch_jen_rankine_tweet.png?resize=516%2C104" data-recalc-dims="1" /></a></p>
<p><a href="http://i2.wp.com/blog.ollieglass.com/wp-content/uploads/2013/03/peerindex_relaunch_christian_ullmark_tweet.png"><img class="aligncenter size-full wp-image-592" alt="peerindex_relaunch_christian_ullmark_tweet" src="http://i1.wp.com/blog.ollieglass.com/wp-content/uploads/2013/03/peerindex_relaunch_christian_ullmark_tweet.png?resize=514%2C90" data-recalc-dims="1" /></a></p>
<p><a href="http://i2.wp.com/blog.ollieglass.com/wp-content/uploads/2013/03/peerindex_relaunch_simon_cast_tweet.png"><img class="aligncenter size-full wp-image-595" alt="peerindex_relaunch_simon_cast_tweet" src="http://i1.wp.com/blog.ollieglass.com/wp-content/uploads/2013/03/peerindex_relaunch_simon_cast_tweet.png?resize=516%2C88" data-recalc-dims="1" /></a></p>
<p>It&#8217;s great to see the new product being so warmly received. In a startup there&#8217;s always a thousand and one things you could do &#8211; I think we did the right one, and I&#8217;m looking forward to pressing on with designing, building and iterating through the rest of our ideas!</p>
<p>It&#8217;s also been a pleasure and privilege to work with such smart and varied people. Thanks so much to the whole product team:</p>
<ul>
<li><a href="https://twitter.com/HughHopkins">Hugh Hopkins</a> (commercial) sourced over 350 items in two months, stellar work!</li>
<li><a href="http://natalierooke.com">Natalie Rooke</a> (UI/UX design) made it look so marvellous at so many screen sizes.</li>
<li><a href="http://mikefox.info">Mike Fox</a> (lead dev) made it work, made a million and one tweaks to make it fast, responsive and quick for us all to develop.</li>
<li><a href="http://github.com/sakaru">Sid Karunaratne</a> (back-end dev) also made it work, did some very smart stuff with Hugh to parse and import the product data (we&#8217;ll tell you war stories over a pint).</li>
<li><a href="http://www.cwaring.com">Chris Waring</a> (front-end dev, UX) made it responsive and threw some wild UX ideas in the mix!</li>
</ul>
<p>p.s. my personal favourite tweet &#8211; Linda Sandvik totally gets it <img src='http://i1.wp.com/blog.ollieglass.com/wp-includes/images/smilies/icon_smile.gif?w=625' alt=':)' class='wp-smiley' data-recalc-dims="1" /> </p>
<p><a href="http://i2.wp.com/blog.ollieglass.com/wp-content/uploads/2013/03/peerindex_relaunch_linda_sandvik_tweet.png"><img class="aligncenter size-full wp-image-594" alt="peerindex_relaunch_linda_sandvik_tweet" src="http://i0.wp.com/blog.ollieglass.com/wp-content/uploads/2013/03/peerindex_relaunch_linda_sandvik_tweet.png?resize=568%2C215" data-recalc-dims="1" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ollieglass.com/2013/03/01/peerindex-product-launch/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Akin To &#8211; explore music through adjectives</title>
		<link>http://blog.ollieglass.com/2013/02/03/akin-to-explore-music-through-adjectives/</link>
		<comments>http://blog.ollieglass.com/2013/02/03/akin-to-explore-music-through-adjectives/#comments</comments>
		<pubDate>Sun, 03 Feb 2013 13:44:12 +0000</pubDate>
		<dc:creator>Ollie Glass</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://ollieglass.com/?p=492</guid>
		<description><![CDATA[There&#8217;s a lot of music recommendation systems out there that give pretty obvious and predictable suggestions. They suggest the Beatles if you like the Stones, and Aphex Twin if you&#8217;re a Squarepusher fan. I find them pretty dull and uninspiring. Some of the best music recommendations I&#8217;ve had have been very wild jumps, to music [...]]]></description>
				<content:encoded><![CDATA[<p>There&#8217;s a lot of music recommendation systems out there that give pretty obvious and predictable suggestions. They suggest the Beatles if you like the Stones, and Aphex Twin if you&#8217;re a Squarepusher fan. I find them pretty dull and uninspiring.</p>
<p>Some of the best music recommendations I&#8217;ve had have been very wild jumps, to music with similar qualities in very different genres. A friend once recommended John Coltrane when I said I liked Squarepusher. Years later another guy suggested I listen to Steve Reich when I said I liked Coltrane. I wanted to try and capture some of what was going on in their recommendations.</p>
<p><a href="http://akin.to">Akin To</a> is my attempt at a more imaginative and literary kind of music discovery, letting you explore and compare music through the adjectives in album reviews. Try searching for &#8220;cinematic&#8221;, &#8220;enigmatic&#8221; or &#8220;space-age&#8221; music and you&#8217;ll see albums described with those words. Look up an album or artist you like to see other music that&#8217;s described similarly.</p>
<p><a href="http://www.akin.to"><img class="aligncenter size-full wp-image-494" alt="" src="http://i2.wp.com/blog.ollieglass.com/wp-content/uploads/2013/02/Screen-Shot-2013-02-02-at-19.17.47.png?resize=285%2C129" data-recalc-dims="1" /></a></p>
<p>I&#8217;ll share a few buzzwords and bullet points about the creative and technical challenges of making it:</p>
<ul>
<li>I used Python&#8217;s Natural Language Processing Toolkit to detect adjectives in the reviews.</li>
<li>The similarity between two albums is based on the number of adjectives their reviews have in common, and how unusual those adjectives are.</li>
<li>The web app&#8217;s built with Django on the back-end, Bootstrap, SASS and JavaScript for the responsive front-end, all served by Heroku.</li>
<li>There&#8217;s a graph database underneath it, implemented with MySQL. Mmm, graphs.</li>
</ul>
<p>It&#8217;s an experimental project and I&#8217;d love to hear what you think about it, please leave a comment! And if you&#8217;d like to show your thanks and support further development, why not sponsor your favourite adjective?</p>
<h2>Thanks</h2>
<p><a href="http://i0.wp.com/blog.ollieglass.com/wp-content/uploads/2013/02/Screen-Shot-2013-02-02-at-19.05.45.png"><img class="size-full wp-image-495 alignright" alt="" src="http://i2.wp.com/blog.ollieglass.com/wp-content/uploads/2013/02/Screen-Shot-2013-02-02-at-19.05.45.png?resize=267%2C57" data-recalc-dims="1" /></a>Huge thanks to <a href="http://pitchfork.com">Pitchfork</a>&nbsp;who&#8217;s reviews fuel Akin To&#8217;s engine. They have all the best adjectives, and their writing is perfect material for a project like this.</p>
<div style="clear: both;"></div>
<p>Thanks to everyone who helped me make it. <a href="http://j4mie.org">Jamie Matthews</a> inspired me to learn Django a few years ago and I&#8217;ve never looked back, and <a href="http://www.bladepolska.com/">Tomek Kopczuk</a> helped me with a particularly tricky database issue. <a href="http://www.claresutcliffe.com">Clare Sutcliffe</a> did all of the beautiful mobile and desktop UX and design that you see on the site. The concept, algorithms, full stack development and everything else, especially the mistakes, are my own.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ollieglass.com/2013/02/03/akin-to-explore-music-through-adjectives/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Protected: Personal finance mini-hackathon</title>
		<link>http://blog.ollieglass.com/2013/02/02/personal-finance-mini-hackathon/</link>
		<comments>http://blog.ollieglass.com/2013/02/02/personal-finance-mini-hackathon/#comments</comments>
		<pubDate>Sat, 02 Feb 2013 22:27:19 +0000</pubDate>
		<dc:creator>Ollie Glass</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://ollieglass.com/?p=418</guid>
		<description><![CDATA[There is no excerpt because this is a protected post.]]></description>
				<content:encoded><![CDATA[<form action="http://blog.ollieglass.com/wp-login.php?action=postpass" method="post">
<p>This post is password protected. To view it please enter your password below:</p>
<p><label for="pwbox-418">Password: <input name="post_password" id="pwbox-418" type="password" size="20" /></label> <input type="submit" name="Submit" value="Submit" /></p>
</form>
]]></content:encoded>
			<wfw:commentRss>http://blog.ollieglass.com/2013/02/02/personal-finance-mini-hackathon/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Topsy Tracker &#8211; see who&#8217;s tweeting about your blog posts</title>
		<link>http://blog.ollieglass.com/2013/02/02/topsy-tracker-whos-tweeting-about-your-blog-posts/</link>
		<comments>http://blog.ollieglass.com/2013/02/02/topsy-tracker-whos-tweeting-about-your-blog-posts/#comments</comments>
		<pubDate>Sat, 02 Feb 2013 13:43:18 +0000</pubDate>
		<dc:creator>Ollie Glass</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://ollieglass.com/?p=480</guid>
		<description><![CDATA[Like to know when people are tweeting about your blog posts? Sure you do! Topsy give these neat reports on who&#8217;s sharing your links, like so: See how the address is basically my blog post&#8217;s address, with topsy.com at the front? http://topsy.com/ollieglass.com/2013/01/31/user-experience-design-at-peerindex-complications-with-two-social-logins/ I wondered how easily I could write a script to open browser tabs [...]]]></description>
				<content:encoded><![CDATA[<p>Like to know when people are tweeting about your blog posts? Sure you do! <a href="http://topsy.com">Topsy</a> give these neat reports on who&#8217;s sharing your links, like so:</p>
<p><a href="http://i0.wp.com/blog.ollieglass.com/wp-content/uploads/2013/02/Screen-Shot-2013-02-02-at-13.16.53.png"><img class="aligncenter size-full wp-image-482" alt="Topsy report for my last post" src="http://i1.wp.com/blog.ollieglass.com/wp-content/uploads/2013/02/Screen-Shot-2013-02-02-at-13.16.53.png?resize=625%2C512" data-recalc-dims="1" /></a></p>
<p>See how the address is basically my blog post&#8217;s address, with topsy.com at the front?</p>
<p><code>http://topsy.com/ollieglass.com/2013/01/31/user-experience-design-at-peerindex-complications-with-two-social-logins/</code></p>
<p>I wondered how easily I could write a script to open browser tabs for my last ten posts. Turns out, very easily:</p>
<script src="https://gist.github.com/4697350.js"></script><noscript><p>View the code on <a href="https://gist.github.com/4697350">Gist</a>.</p></noscript>
<p>The comments say it all really, the script reads posts from WordPress, changes the urls to Topsy urls, and opens them all in the default browser. For me, that means they open in new tabs in Safari. Because those two imports are standard Python libraries, this code should &#8220;just work&#8221; if you have Python, i.e. it should work straight out the box on any Mac. Here&#8217;s how you can use it.</p>
<h2>Get set up with the Topsy Tracker</h2>
<p>First download the code above by right clicking on &#8220;view raw&#8221; and downloading it as a file. Move the file to your desktop, right-click and open it with TextEdit.</p>
<p>Change ollieglass.com to your blog&#8217;s address, and change the WORDPRESS_BLOG_NAME, WORDPRESS_USERNAME, and WORDPRESS_PASSWORD settings to your details. Leave the quotes around them! They should end up looking like this:</p>
<p><code>server = xmlrpclib.ServerProxy('http://myblogaddress.com/xmlrpc.php')<br />
result = server.metaWeblog.getRecentPosts('myblogname', 'my_name', 'my_password', 10)<br />
</code></p>
<p>Ok, script&#8217;s ready to go!</p>
<h2>Running the Topsy Tracker</h2>
<p>Open Terminal &#8211; use Spotlight if you don&#8217;t know where your terminal app is!</p>
<div id="attachment_483" class="wp-caption aligncenter" style="width: 411px"><a href="http://i1.wp.com/blog.ollieglass.com/wp-content/uploads/2013/02/Screen-Shot-2013-02-02-at-13.25.18.png"><img class="size-full wp-image-483" alt="" src="http://i1.wp.com/blog.ollieglass.com/wp-content/uploads/2013/02/Screen-Shot-2013-02-02-at-13.25.18.png?resize=401%2C109" data-recalc-dims="1" /></a><p class="wp-caption-text">Best way for a civilian to find Terminal</p></div>
<p>Type <code>cd Desktop</code> and press enter. Then <code>python topsy_tabs.py</code>, and enter again. Voila.</p>
<div id="attachment_488" class="wp-caption aligncenter" style="width: 848px"><a href="http://i2.wp.com/blog.ollieglass.com/wp-content/uploads/2013/02/Screen-Shot-2013-02-02-at-13.20.41.png"><img class="size-full wp-image-488" alt="" src="http://i1.wp.com/blog.ollieglass.com/wp-content/uploads/2013/02/Screen-Shot-2013-02-02-at-13.20.41.png?resize=625%2C98" data-recalc-dims="1" /></a><p class="wp-caption-text">Thanks, Topsy!</p></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.ollieglass.com/2013/02/02/topsy-tracker-whos-tweeting-about-your-blog-posts/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>User experience design at PeerIndex &#8211; complications with two social logins</title>
		<link>http://blog.ollieglass.com/2013/01/31/user-experience-design-at-peerindex-complications-with-two-social-logins/</link>
		<comments>http://blog.ollieglass.com/2013/01/31/user-experience-design-at-peerindex-complications-with-two-social-logins/#comments</comments>
		<pubDate>Thu, 31 Jan 2013 22:59:28 +0000</pubDate>
		<dc:creator>Ollie Glass</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://ollieglass.com/?p=466</guid>
		<description><![CDATA[I gave a talk at UX Cafe on a user experience challenge we have at PeerIndex. There&#8217;s two social logins on our homepage, Facebook and Twitter. Some users create an account with one, then come back and login with the other. This creates a new account, which causes some confusion. My slides tell the story&#8230; [...]]]></description>
				<content:encoded><![CDATA[<p>I gave a talk at <a href="http://www.meetup.com/uxcafe/">UX Cafe</a> on a user experience challenge we have at <a href="http://www.peerindex.com/">PeerIndex</a>. There&#8217;s two social logins on our homepage, Facebook and Twitter. Some users create an account with one, then come back and login with the other. This creates a new account, which causes some confusion. My slides tell the story&#8230;</p>
<object type='application/x-shockwave-flash' wmode='opaque' data='http://static.slideshare.net/swf/ssplayer2.swf?id=16282894&doc=peerindexsocialloginissue-130131161837-phpapp01' width='625' height='512'><param name='movie' value='http://static.slideshare.net/swf/ssplayer2.swf?id=16282894&doc=peerindexsocialloginissue-130131161837-phpapp01' /><param name='allowFullScreen' value='true' /></object>
<p>I got some helpful feedback from <a href="http://flavors.me/grinblo">Jenny Grinblo</a>, <a href="https://twitter.com/mikeatherton/">Mike Atherton</a> and <a href="http://www.meetup.com/uxcafe/members/66948672/">Mark Doolan</a> on the panel, and many people in the audience. There was no definitive answer or best practice for this, but there were some great suggestions. I think I&#8217;ve remembered most of them! Here&#8217;s a summary:</p>
<ul>
<ul>
<li>Give users an opportunity to link other networks during onboarding. This would prevent the second account from being made in the first place.</li>
<li>Incentivise this with a clearer value proposition. PeerIndex could make the benefits of linking several accounts much clearer.</li>
<li>Check names and email addresses when accounts are made. If we&#8217;ve seen them before, ask users if the other accounts are theirs.</li>
<li>Related, we could make it clear users are creating <strong>new</strong> accounts when they&#8217;re signing in for the first time.</li>
<li>Prompt users to add their other accounts after onboarding. LinkedIn and others do a great job of softly nagging you to complete your profile. PeerIndex could do a better job of this.</li>
</ul>
</ul>
<div id="attachment_467" class="wp-caption aligncenter" style="width: 354px"><a href="http://i2.wp.com/blog.ollieglass.com/wp-content/uploads/2013/01/Screen-Shot-2013-01-31-at-22.41.11.png"><img class="size-full wp-image-467" alt="" src="http://i0.wp.com/blog.ollieglass.com/wp-content/uploads/2013/01/Screen-Shot-2013-01-31-at-22.41.11.png?resize=344%2C229" data-recalc-dims="1" /></a><p class="wp-caption-text">See that grey F? That&#8217;s our nag. We&#8217;re a bit too soft.</p></div>
<ul>
<li>We could improve the messaging when connecting an account fails. We need to tell users a PeerIndex account already exists for that social account, and that it might be theirs.</li>
<li>Most radically, we might drop the social login altogether. We could invite users to link their social accounts after signing up with PeerIndex. We&#8217;d need a very strong and clear value proposition to do this without seriously impacting our signups.</li>
<li>Similarly, we could drop one of the logins, and have users link that account after joining.</li>
</ul>
<p>Everyone had plenty to say about PeerIndex in general as well. Thank you for your thoughts and kind words, we&#8217;re working on some new designs which we hope will address many of these points. And I&#8217;m glad you&#8217;re enjoying the perks. You&#8217;re welcome, you earned them!</p>
<p>If you&#8217;re read this far, let me pitch you a job with us <img src='http://i1.wp.com/blog.ollieglass.com/wp-includes/images/smilies/icon_wink.gif?w=625' alt=';-)' class='wp-smiley' data-recalc-dims="1" />  I&#8217;d like to find a UX designer / front-end developer to join me on the product team. If you&#8217;re interested, have a look at the <a href="http://blog.peerindex.com/careers/">PeerIndex careers page</a>, and give me a call if you&#8217;d like to know more about it.</p>
<p>Update: thanks <a href="http://mikefox.info/">Mike Fox</a> for remembering some of the points made &#8211; glad you were there!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ollieglass.com/2013/01/31/user-experience-design-at-peerindex-complications-with-two-social-logins/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Instagram campaign reporting, part 2</title>
		<link>http://blog.ollieglass.com/2012/11/18/instagram-campaign-reporting-part-2/</link>
		<comments>http://blog.ollieglass.com/2012/11/18/instagram-campaign-reporting-part-2/#comments</comments>
		<pubDate>Sun, 18 Nov 2012 22:34:15 +0000</pubDate>
		<dc:creator>Ollie Glass</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[engagement]]></category>
		<category><![CDATA[hacks]]></category>
		<category><![CDATA[influencer identification]]></category>
		<category><![CDATA[Instagram]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[marketing]]></category>
		<category><![CDATA[measurement]]></category>

		<guid isPermaLink="false">http://ollieglass.com/?p=313</guid>
		<description><![CDATA[Barely a week goes by when I don&#8217;t shop in Urban Outfitters. Or window-shop, or think about shopping there, or hear about something they&#8217;re doing. I ran through that conversion funnel, and am happily hanging out in the retention / referral / revenue zone. I got to thinking about who else was in there with [...]]]></description>
				<content:encoded><![CDATA[<div id="attachment_336" class="wp-caption aligncenter" style="width: 426px"><a href="http://i2.wp.com/blog.ollieglass.com/wp-content/uploads/2012/11/urban-outfitters-at-night-e1353271894614.jpg"><img class=" wp-image-336 " title="urban outfitters at night" src="http://i0.wp.com/blog.ollieglass.com/wp-content/uploads/2012/11/urban-outfitters-at-night-e1353271894614-1024x863.jpg?resize=416%2C350" alt="Also looks cool at night" data-recalc-dims="1" /></a><p class="wp-caption-text">Also looks cool at night</p></div>
<p>Barely a week goes by when I don&#8217;t shop in Urban Outfitters. Or window-shop, or think about shopping there, or hear about something they&#8217;re doing. I <em>ran</em> through that conversion funnel, and am happily hanging out in the retention / referral / revenue zone. I got to thinking about who else was in there with me, and if that Instagram data I looked at last time could reveal who the top Urban Outfitters fans are.</p>
<div id="attachment_314" class="wp-caption aligncenter" style="width: 432px"><a href="http://i2.wp.com/blog.ollieglass.com/wp-content/uploads/2012/11/6a00d834517b5669e200e54f1861188833-800wi.jpg"><img class="size-full wp-image-314" title="Pirate metrics" src="http://i2.wp.com/blog.ollieglass.com/wp-content/uploads/2012/11/6a00d834517b5669e200e54f1861188833-800wi.jpg?resize=422%2C325" alt="" data-recalc-dims="1" /></a><p class="wp-caption-text">The funnel</p></div>
<p>In this blog post I build on the ideas in my previous <a href="http://ollieglass.com/2012/11/05/instagram-campaign-reporting/">Instagram campaign reporting</a> piece, developing the <a href="https://github.com/ollieglass/instagram-campaign-tracker">code</a> to capture more data, find the most engaged fans and produce an informative HTML report. </p>
<p>This is a much more technical post than part one. I focus on the architecture needed to get results and how to hack it together quickly, skipping over a lot of material at a fairly high level. If you&#8217;re learning how to write hacks like this, try reading each section and writing your own code to get the same results. Then look at my code and see how our approaches compare. If you just want the results, the code is all there for you to run.</p>
<h2>Capturing all the Instagram data</h2>
<p>In my earlier code I downloaded the Instagram data to a JSON file. It&#8217;s a trivial step from here to store it in a Mongo database, which gives us more powerful and flexible tools to analyse it with. If you&#8217;re on a Mac, I recommend installing Mongo with <a href="http://mxcl.github.com/homebrew/">Homebrew</a>. It&#8217;s easy and neat, and easy to keep up to date.</p>
<p>If you&#8217;re not, how did you come to be reading some hipster growth hacker&#8217;s blog post about tracking Urban Outfitters on Instagram? Didn&#8217;t I throw enough buzzwords and buzz-brands in there to put you off? I thought I was good at audience targeting, but you&#8217;ve thrown me. I don&#8217;t know what to say to you.</p>
<h3>Getting set up</h3>
<p>You can get everything you need with these commands:</p>
<p><code> ruby -e "$(curl -fsSkL raw.github.com/mxcl/homebrew/go)"<br />
brew install mongo<br />
git clone git@github.com:ollieglass/instagram-campaign-tracker.git<br />
cd instagram-campaign-tracker<br />
pip install -r requirements.txt<br />
</code></p>
<p>They will install Homebrew, install Mongo, clone my github repo and install the python dependencies, in that order. Now you&#8217;re good to go.</p>
<h3>Downloading and saving to Mongo</h3>
<p>The download_data.py script has two parameters at the top.</p>
<p><code> CAMPAIGN = "uostyle"<br />
INSTAGRAM_API_ACCESS_TOKEN = "XXXXXXXXXXXXXX"<br />
</code></p>
<p>A quick hack to get an API key: visit <a href="http://instagram.com/developer/api-console/">Instagram&#8217;s web API console</a>, change authentication to OAuth2 and make any request. Copy the access token from the request details in the left hand panel and paste them into the script. Quicker than registering for a key <img src='http://i1.wp.com/blog.ollieglass.com/wp-includes/images/smilies/icon_wink.gif?w=625' alt=';-)' class='wp-smiley' data-recalc-dims="1" /> </p>
<div id="attachment_318" class="wp-caption aligncenter" style="width: 780px"><a href="http://i2.wp.com/blog.ollieglass.com/wp-content/uploads/2012/11/Get-an-access-token-from-the-Instagram-API-console.png"><img class="size-full wp-image-318" title="Get an access token from the Instagram API console" src="http://i2.wp.com/blog.ollieglass.com/wp-content/uploads/2012/11/Get-an-access-token-from-the-Instagram-API-console.png?resize=625%2C339" alt="" data-recalc-dims="1" /></a><p class="wp-caption-text">Get an access token from the Instagram API console</p></div>
<p>Setting the CAMPAIGN variable will change the hashtag that&#8217;s searched for and the Mongo collection the data is saved to, so you can collect data from many campaigns in your database.</p>
<p>The script downloads and stores all of the photo data it can get. You should see output like this as it paginates through the data:</p>
<div id="attachment_320" class="wp-caption aligncenter" style="width: 550px"><a href="http://i0.wp.com/blog.ollieglass.com/wp-content/uploads/2012/11/download_data.py-output.png"><img class="size-full wp-image-320" title="download_data.py output" src="http://i1.wp.com/blog.ollieglass.com/wp-content/uploads/2012/11/download_data.py-output.png?resize=540%2C287" alt="" data-recalc-dims="1" /></a><p class="wp-caption-text">download_data.py output</p></div>
<p>Yeah, it just errors when it&#8217;s finished. It&#8217;s a hack, not some enterprise CRM solution!</p>
<h2>Finding top users in Instagram data</h2>
<p>Now run <code>find_top_fans.py</code>. It will run through all of the photos in the &#8220;uostyle&#8221; collection, and record a count of each username that features in a like, comment, caption or as a photo creator. This script also has a CAMPAIGN variable you can change to analyse different campaigns.</p>
<p><a href="http://i0.wp.com/blog.ollieglass.com/wp-content/uploads/2012/11/find-top-fans-code.png"><img class="aligncenter size-full wp-image-321" title="Where the magic happens" src="http://i1.wp.com/blog.ollieglass.com/wp-content/uploads/2012/11/find-top-fans-code.png?resize=424%2C268" alt="" data-recalc-dims="1" /></a></p>
<p>Every username appearance is counted, and the top ten most frequently occuring are printed to the terminal.</p>
<p><a href="http://i1.wp.com/blog.ollieglass.com/wp-content/uploads/2012/11/find_top_fans-output.png"><img class="aligncenter size-full wp-image-322" title="find_top_fans output" src="http://i1.wp.com/blog.ollieglass.com/wp-content/uploads/2012/11/find_top_fans-output.png?resize=554%2C325" alt="Find top fans - output" data-recalc-dims="1" /></a></p>
<p>This is just a quick script to see what kind of volume we have. Let&#8217;s do something a little more sophisticated and count each type of user engagement.</p>
<h2>Recording user engagement</h2>
<p>The <code>analyse_campaign_users.py</code> script first records the details of every user into a new collection. Then it counts each engagement type &#8211; likes, photos, comments, captions and a total &#8211; and records them to a stats object, one per user.</p>
<p>The new collection name is the campaign name with &#8220;_users&#8221; appended, so uostyle&#8217;s users are in &#8220;uostyle_users&#8221;. You can view the contents of this collection in the database. Run <code>mongo</code> to open a database query analyser, then <code>use instagram</code> to switch to our database, <code>show collections</code> to see each campaign&#8217;s collection and it&#8217;s users collections, and <code>db.uostyle_users.find.limit(1)</code> to see a user.</p>
<p><a href="http://i2.wp.com/blog.ollieglass.com/wp-content/uploads/2012/11/Screen-Shot-2012-11-18-at-20.26.01.png"><img class="aligncenter size-full wp-image-324" title="Screen Shot 2012-11-18 at 20.26.01" src="http://i1.wp.com/blog.ollieglass.com/wp-content/uploads/2012/11/Screen-Shot-2012-11-18-at-20.26.01.png?resize=625%2C112" alt="" data-recalc-dims="1" /></a></p>
<h2>Reporting the most engaged users</h2>
<div id="attachment_327" class="wp-caption aligncenter" style="width: 810px"><a href="http://i0.wp.com/blog.ollieglass.com/wp-content/uploads/2012/11/72.jpg"><img class="size-full wp-image-327 " title="A modern web templating enthusiast, surely" src="http://i1.wp.com/blog.ollieglass.com/wp-content/uploads/2012/11/72.jpg?resize=625%2C423" alt="" data-recalc-dims="1" /></a><p class="wp-caption-text">A modern web templating enthusiast, surely</p></div>
<p>Let&#8217;s get this data off the command line and into the browser. Here&#8217;s a minimal HTML report template that cycles through a dictionary of users, rendering basic information about them, a list of stats and a link to their Instagram profile. It&#8217;s written for <a href="http://jinja.pocoo.org/docs/">Jinja2</a>, in the handlebars syntax that all the cool templating libraries use these days. There&#8217;s some filters in there to sort and capitalise the user data.</p>
<p><a href="http://i2.wp.com/blog.ollieglass.com/wp-content/uploads/2012/11/Top-fans-template.png"><img class="aligncenter size-full wp-image-330" title="Top fans template" src="http://i0.wp.com/blog.ollieglass.com/wp-content/uploads/2012/11/Top-fans-template.png?resize=625%2C380" alt="Top fans template" data-recalc-dims="1" /></a></p>
<p>All we need now is a script to collect the data from Mongo, feed it to the template and render it &#8211; enter <code>produce_top_fans_report.py</code>. This does just that, and utf-8 encodes the result so it will print to the terminal without errors, letting you pipe the output to a file. Run it with <code>python produce_top_fans_report.py >; report.html</code> to create your report. Click through on the image to see one I generated earlier.</p>
<div id="attachment_331" class="wp-caption aligncenter" style="width: 556px"><a href="http://db.tt/mH3Jc5Xt"><img class="size-full wp-image-331" title="Instagram campaign report in glorious HTML" src="http://i1.wp.com/blog.ollieglass.com/wp-content/uploads/2012/11/Screen-Shot-2012-11-18-at-20.42.51.png?resize=546%2C831" alt="" data-recalc-dims="1" /></a><p class="wp-caption-text">Instagram campaign report in glorious HTML</p></div>
<p>You&#8217;ll notice there&#8217;s still issues with unicode names, but I didn&#8217;t want to get into unicode wrangling with Python. Sorry ⚓leannelimwalker⚓, maybe in the next version.</p>
<p>A quick trick for hosting flat HTML files is to put them in your public Dropbox folder. Visit the web interface, right-click and Dropbox will give you a public URL for the file.</p>
<div id="attachment_351" class="wp-caption aligncenter" style="width: 686px"><a href="http://i2.wp.com/blog.ollieglass.com/wp-content/uploads/2012/11/Screen-Shot-2012-11-18-at-21.31.321.png"><img class=" wp-image-351 " title="Serving HTML with Dropbox" src="http://i2.wp.com/blog.ollieglass.com/wp-content/uploads/2012/11/Screen-Shot-2012-11-18-at-21.31.321.png?resize=625%2C294" alt="Serving HTML with Dropbox" data-recalc-dims="1" /></a><p class="wp-caption-text">Serving HTML with Dropbox</p></div>
<h2>Reporting the most engaged users</h2>
<p>So there you go. A bit more work has given me the foundations for a scalable, multi campaign reporting system. There&#8217;s more data in the API to segment and learn from, dates and locations would be good. With a bit more work I could also mine the data for insights like cliques of users and optimal posting times to get comments. It could also be linked to other APIs &#8211; I expect most people have the same username on Instagram and Twitter, so you can probably see where my hacker mind is going with that one.</p>
<p>I&#8217;d love to hear your thoughts. Please leave a comment, and feel free to use and develop the code.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ollieglass.com/2012/11/18/instagram-campaign-reporting-part-2/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Instagram campaign reporting</title>
		<link>http://blog.ollieglass.com/2012/11/05/instagram-campaign-reporting/</link>
		<comments>http://blog.ollieglass.com/2012/11/05/instagram-campaign-reporting/#comments</comments>
		<pubDate>Mon, 05 Nov 2012 01:23:11 +0000</pubDate>
		<dc:creator>Ollie Glass</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[digital strategy]]></category>
		<category><![CDATA[hacks]]></category>
		<category><![CDATA[Instagram]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[marketing]]></category>
		<category><![CDATA[social strategy]]></category>

		<guid isPermaLink="false">http://ollieglass.com/?p=270</guid>
		<description><![CDATA[I saw this sticker in my local Urban Outfitters&#8217; changing room for a new Instagram campaign. You take a photo of yourself trying on an outfit and post it to Instagram with the hashtag #uostyle. Urban Outfitters&#8217; @uoeurope account might then share it on their account. There&#8217;s so much that makes this a great campaign [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://i1.wp.com/blog.ollieglass.com/wp-content/uploads/2012/11/photo.png"><img class="aligncenter size-full wp-image-272" title="Urban Outfitters Instagram campaign" src="http://i0.wp.com/blog.ollieglass.com/wp-content/uploads/2012/11/photo.png?resize=426%2C421" alt="" data-recalc-dims="1" /></a></p>
<p>I saw this sticker in my local Urban Outfitters&#8217; changing room for a new Instagram campaign. You take a photo of yourself trying on an outfit and post it to Instagram with the hashtag #uostyle. Urban Outfitters&#8217; @uoeurope account might then share it on their account. There&#8217;s so much that makes this a great campaign idea:</p>
<ul>
<li>Urban Outfitters become a bigger part of the online fashion conversation.</li>
<li>The stores become a relevant part of that, at a time when offline retail is struggling to compete with online.</li>
<li>The hashtag paves a desire path for people who are already sharing changing room photos, and encourages new people to join in.</li>
<li>The shared photos generate content for @uoeurope, and build up the audience for it and #uostyle</li>
<li>The chance of being shared both amplifies the user voice and acts as an intermittent reinforcement game mechanic.</li>
<li>Qualified prospects are captured from Instagram for Urban Outfitters&#8217; social CRM.</li>
<li>The overheads are really low. The hashtag doesn&#8217;t need moderation and sharing photos on the @uoeurope account doesn&#8217;t take long.</li>
</ul>
<p>It&#8217;s a really smart social campaign and I love the thinking behind it, but I want to know how it&#8217;s actually doing. What&#8217;s the activity and engagement like, can we see some performance stats? Sure! Now Instagram have an API out, we can get the data we need to see the activity for ourselves.</p>
<p>In the following sections of this post I&#8217;ll show you how to search for this data using Instagram&#8217;s API console, the information in the raw data that Instagram returns, and how to collect all the data you need to track a campaign. I&#8217;ll finish by looking up the stats of this Urban Outfitters campaign so you can see how it&#8217;s working out. I hope this piece helps you better understand the data available from Instagram&#8217;s API and assess it as a social campaign platform.</p>
<h2>Viewing Instagram hashtag activity with the API console</h2>
<p>Here&#8217;s a quick guide to getting hashtag data from the API console:</p>
<p>1. Visit <a title="Instagram's API console" href="https://apigee.com/console/instagram" target="_blank">Instagram&#8217;s API console</a>, click the authentication box, select OAuth 2 and login with your Instagram account details.</p>
<p style="text-align: center;"><a href="http://i0.wp.com/blog.ollieglass.com/wp-content/uploads/2012/11/instagram-auth.png"><img class="aligncenter  wp-image-274" title="instagram authentication" src="http://i1.wp.com/blog.ollieglass.com/wp-content/uploads/2012/11/instagram-auth.png?resize=477%2C266" alt="" data-recalc-dims="1" /></a></p>
<p>2. Click the arrow on the left hand side to bring up the list of API calls, and select tags/{tag-name}/media/recent from the menu.</p>
<p style="text-align: center;"><a href="http://i0.wp.com/blog.ollieglass.com/wp-content/uploads/2012/11/Screen-Shot-2012-11-05-at-00.04.28.png"><img class="aligncenter  wp-image-279" title="Screen Shot 2012-11-05 at 00.04.28" src="http://i2.wp.com/blog.ollieglass.com/wp-content/uploads/2012/11/Screen-Shot-2012-11-05-at-00.04.28.png?resize=310%2C365" alt="" data-recalc-dims="1" /></a></p>
<p>&nbsp;</p>
<p>3. In the Request URL bar, replace {tag-name} with the name of the tag we&#8217;re interested in, uostyle.</p>
<p style="text-align: center;"><a href="http://i0.wp.com/blog.ollieglass.com/wp-content/uploads/2012/11/Screen-Shot-2012-11-05-at-00.00.061.png"><img class="aligncenter  wp-image-280" title="Screen Shot 2012-11-05 at 00.00.06" src="http://i1.wp.com/blog.ollieglass.com/wp-content/uploads/2012/11/Screen-Shot-2012-11-05-at-00.00.061.png?resize=501%2C221" alt="" data-recalc-dims="1" /></a></p>
<p>4. Click Send and the API console will fetch the results for you.</p>
<p style="text-align: center;"><a href="http://i1.wp.com/blog.ollieglass.com/wp-content/uploads/2012/11/Screen-Shot-2012-11-05-at-00.08.09.png"><img class="aligncenter  wp-image-281" title="Screen Shot 2012-11-05 at 00.08.09" src="http://i0.wp.com/blog.ollieglass.com/wp-content/uploads/2012/11/Screen-Shot-2012-11-05-at-00.08.09.png?resize=493%2C134" alt="" data-recalc-dims="1" /></a></p>
<p>5. When it&#8217;s finished working, the response section will show raw Instagram JSON data about the photos featuring the hashtag. Let&#8217;s have a look at what this data means.</p>
<h2>Instagram data anatomy</h2>
<p>Here&#8217;s a field by field breakdown of the information in an Instagram photo&#8217;s JSON data. The interesting parts for us are:</p>
<ul>
<li>List of hashtags in the photo&#8217;s caption</li>
<li>Location of the photo &#8211; latitude and longitude, and sometimes a location name</li>
<li>List of comments on the photo, each with the text of the comment and details about the comment&#8217;s author</li>
<li>Date and time the photo was created</li>
<li>Link to view the photo on the web</li>
<li>Count of likes, with details of each user who liked the photo</li>
<li>Links to the image in thumbnail (150&#215;150), low resolution (306&#215;306) and standard (612&#215;612) sizes</li>
<li>Photo&#8217;s caption</li>
<li>Details of the user who posted the photo &#8211; their username, website, bio, profile picture and full name</li>
</ul>
<p style="text-align: center;"><a href="http://i2.wp.com/blog.ollieglass.com/wp-content/uploads/2012/11/Instagram-data-anatomy-part-1.png"><img class="aligncenter  wp-image-284" title="Instagram JSON data anatomy part 1" src="http://i1.wp.com/blog.ollieglass.com/wp-content/uploads/2012/11/Instagram-data-anatomy-part-1.png?resize=607%2C498" alt="" data-recalc-dims="1" /></a></p>
<p style="text-align: center;"><a href="http://i0.wp.com/blog.ollieglass.com/wp-content/uploads/2012/11/Instagram-data-anatomy-part-2.png"><img class="aligncenter  wp-image-285" title="Instagram JSON data anatomy part 2" src="http://i1.wp.com/blog.ollieglass.com/wp-content/uploads/2012/11/Instagram-data-anatomy-part-2.png?resize=620%2C185" alt="" data-recalc-dims="1" /></a></p>
<p>Many of these fields also have ids, so we can cross reference them and link data across users. As well as the photo data, the response contains pagination data so we can get further pages of results, and some meta data to handle rate limits on the API.</p>
<h2>Measuring and reporting an Instagram campaign</h2>
<p>So that&#8217;s the contents of a hashtag search, how can we go from this to a full campaign report? Basically we need to:</p>
<p>1. Download all the data we can get on the hashtag by paginating through the results<br />
2. Get the stats we&#8217;re interested in from the data, like the number of photos shared and the number of likes<br />
3. Report this in a digestible format, like a table or chart</p>
<p>Here&#8217;s <a href="https://github.com/ollieglass/instagram-campaign-tracker">some python code</a> that does just that. You&#8217;ll need a basic knowledge of git and python to use them, but they&#8217;re very straightforward. The first script downloads Instagram data, the second parses it and outputs some interesting stats. </p>
<p>They&#8217;ve very quick and dirty, the biggest hack in there is that I&#8217;m only downloading a few pages of data and manually stopping the pagination rather than waiting until the end is reached. But I wanted to spend five minutes on this for a quick snapshot of campaign activity, not produce a comprehensive report. <em>Totally</em> caveat emptor if you use them yourself &#8211; feel free to fork and develop them further.</p>
<p>How&#8217;s Urban Outfitter&#8217;s campaign doing then? Here&#8217;s what I found:</p>
<blockquote><p>Instagram activity between 2012-01-24 22:53:30 and 2012-11-04 21:09:43<br />
Campaign duration: 284 days, 22:16:13<br />
Photos shared: 442<br />
Users: 442<br />
Likers: 2633<br />
Likes: 10915</p></blockquote>
<p>That&#8217;s about two photos and ten likes per day. Now I have no idea what the scope of this campaign is &#8211; perhaps it&#8217;s just running in the one store I visited in Shoreditch &#8211; so I&#8217;m not really in a position to comment on how well it&#8217;s doing. But close to eleven thousand likes looks good, that&#8217;s a pretty engaged audience they have there. Nice work!</p>
<p><strong>Update</strong> I wrote a <a href="http://ollieglass.com/2012/11/18/instagram-campaign-reporting-part-2/">second piece</a> that builds on this work. The code from this post is now in an &#8220;old_version&#8221; folder in the repository.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ollieglass.com/2012/11/05/instagram-campaign-reporting/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Data Visualization: How can I make a visualization of a startup&#8217;s refer-a-friend program?</title>
		<link>http://blog.ollieglass.com/2012/10/12/data-visualization-how-can-i-make-a-visualization-of-a-startups-refer-a-friend-program/</link>
		<comments>http://blog.ollieglass.com/2012/10/12/data-visualization-how-can-i-make-a-visualization-of-a-startups-refer-a-friend-program/#comments</comments>
		<pubDate>Fri, 12 Oct 2012 21:45:18 +0000</pubDate>
		<dc:creator>Ollie Glass</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[data visualisation]]></category>
		<category><![CDATA[Gephi]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[network analysis]]></category>
		<category><![CDATA[referrer tracking]]></category>

		<guid isPermaLink="false">http://ollieglass.com/?p=232</guid>
		<description><![CDATA[I just answered this question over on Quora (Ollie Glass&#8217;s answer to: Data Visualization: How can I make a visualization of a startup&#8217;s refer-a-friend program?). If you can write basic SQL and use a scripting language like Python or Ruby, it&#8217;s easy to throw a quick and dirty network visualisation together. I&#8217;m assuming you have [...]]]></description>
				<content:encoded><![CDATA[<p>I just answered this question over on Quora (<a href="http://qr.ae/869JL" title="Quora">Ollie Glass&#8217;s answer to:<br />
Data Visualization: How can I make a visualization of a startup&#8217;s refer-a-friend program?</a>). If you can write basic SQL and use a scripting language like Python or Ruby, it&#8217;s easy to throw a quick and dirty network visualisation together.</p>
<p>I&#8217;m assuming you have a database table of your users, with each user having and id an a referrer id. Create a script that loops over every row in the database with a referrer id, printing the user id and referrer id separated by two hyphens. Put this in a text file and add &#8220;graph referrers {&#8221; to the top and &#8220;}&#8221; to the bottom. </p>
<p>Here&#8217;s Python code that does exactly that, just change the database details to work with your setup.</p>
<p><script src="https://gist.github.com/3928307.js?file=vis.py"></script></p>
<p>Run this an pipe the output to a file. On the command line, use <code>python vis.py > vis.dot</code> Your .dot file should looks like this:</p>
<p>graph referrers {<br />
  a &#8212; b<br />
  b &#8212; c<br />
  e &#8212; b<br />
  &#8230; etc.<br />
}</p>
<p>Open this in <a href="http://www.pixelglow.com/graphviz/" title="Pixelglow's Graphviz">Graphviz</a> and voila, you have a basic network visualization like this:</p>
<div id="attachment_233" class="wp-caption aligncenter" style="width: 447px"><a href="http://i1.wp.com/blog.ollieglass.com/wp-content/uploads/2012/10/NeatoFilter.png"><img src="http://i2.wp.com/blog.ollieglass.com/wp-content/uploads/2012/10/NeatoFilter.png?resize=437%2C280" alt="Network visualisation with Graphviz" title="Network visualisation with Graphviz" class="size-full wp-image-233" data-recalc-dims="1" /></a><p class="wp-caption-text">Network visualisation with Graphviz</p></div>
<p>If your file is so large that it crashes Graphviz, or you want to do something a bit prettier, try <a href="https://gephi.org" title="Gephi">Gephi</a>. It&#8217;ll open the file you just made and let you create visualisations that look more like this:</p>
<div id="attachment_234" class="wp-caption aligncenter" style="width: 517px"><a href="http://i2.wp.com/blog.ollieglass.com/wp-content/uploads/2012/10/screenshot_gephi1903.png"><img src="http://i1.wp.com/blog.ollieglass.com/wp-content/uploads/2012/10/screenshot_gephi1903.png?resize=507%2C604" alt="Network visualisation with Gephi" title="Network visualisation with Gephi" class="size-full wp-image-234" data-recalc-dims="1" /></a><p class="wp-caption-text">Network visualisation with Gephi</p></div>
<p>Here&#8217;s their <a href="http://gephi.org/users/quick-start/" title="Gephi tutorial">step by step tutorial</a> to get you going, it&#8217;s pretty straightforward.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ollieglass.com/2012/10/12/data-visualization-how-can-i-make-a-visualization-of-a-startups-refer-a-friend-program/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Showshares &#8211; show links in Twitter searches</title>
		<link>http://blog.ollieglass.com/2012/05/23/showshares-show-links-in-twitter-searches/</link>
		<comments>http://blog.ollieglass.com/2012/05/23/showshares-show-links-in-twitter-searches/#comments</comments>
		<pubDate>Wed, 23 May 2012 16:56:59 +0000</pubDate>
		<dc:creator>Ollie Glass</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[underscore.js]]></category>

		<guid isPermaLink="false">http://ollieglass.com/?p=189</guid>
		<description><![CDATA[Used Summify yet? It sends you a daily email of links shared by the people you follow on Twitter. I like it so much it&#8217;s become part of my daily routine, but it&#8217;s missing a few features I want. The summary doesn&#8217;t show the content of the tweets that include the link &#8211; were the [...]]]></description>
				<content:encoded><![CDATA[<p>Used Summify yet? It sends you a daily email of links shared by the people you follow on Twitter. I like it so much it&#8217;s become part of my daily routine, but it&#8217;s missing a few features I want. The summary doesn&#8217;t show the content of the tweets that include the link &#8211; were the posters being sarcastic, or commenting on it? And it doesn&#8217;t show everything linked, so I don&#8217;t know what I&#8217;ve missed that from my Twitter feed that day.</p>
<p><a href="http://i0.wp.com/blog.ollieglass.com/wp-content/uploads/2012/05/Screen-Shot-2012-05-23-at-17.44.11.png"><img class="aligncenter size-medium wp-image-191" title="Screen Shot 2012-05-23 at 17.44.11" src="http://i1.wp.com/blog.ollieglass.com/wp-content/uploads/2012/05/Screen-Shot-2012-05-23-at-17.44.11.png?resize=281%2C300" alt="" data-recalc-dims="1" /></a></p>
<p>Enter <a href="http://labs.ollieglass.com/showshares/">Showshares</a>, a weekend hack that tried to solve both of my problems, and ended up solving a different one. It&#8217;s a pure JavaScript app that uses Remy Sharp&#8217;s <a href="https://github.com/remy/twitterlib">twitterlib</a> and <a href="http://embed.ly/">Embedly</a>&#8216;s, er, embedder (they call it a Social CDN), plus the usual all-star supporting cast of <a href="http://documentcloud.github.com/underscore/">Underscore.js</a>, <a href="http://jquery.com/">jQuery</a> and Twitter&#8217;s <a href="http://twitter.github.com/bootstrap/">Bootstrap</a>. Pay a visit, run a search and see the results.</p>
<p><a href="http://i0.wp.com/blog.ollieglass.com/wp-content/uploads/2012/05/Screen-Shot-2012-05-23-at-17.46.07.png"><img class="aligncenter size-medium wp-image-193" title="Screen Shot 2012-05-23 at 17.46.07" src="http://i0.wp.com/blog.ollieglass.com/wp-content/uploads/2012/05/Screen-Shot-2012-05-23-at-17.46.07.png?resize=164%2C300" alt="" data-recalc-dims="1" /></a></p>
<p>The full text from the tweets and embedded links are there, but Showshares works from searches rather than user timelines. At the time of writing, reading a user&#8217;s <a href="https://dev.twitter.com/docs/api/1/get/statuses/home_timeline">timeline</a> with the Twitter API requires oAuth authentication, which <a href="http://stackoverflow.com/a/5003176/160406">can&#8217;t be done entirely client side</a> (well, there&#8217;s an interesting way around this using Yahoo&#8217;s <a href="http://derek.io/blog/2010/how-to-secure-oauth-in-javascript/">YQL</a>, but it&#8217;s a bit more elaborate that I wanted to get into).</p>
<p>It&#8217;s straightforward to plug a timeline into this view, and it just needs a server underneath for user authentication. The code&#8217;s on <a href="https://github.com/ollieglass/showshares">github</a> if you&#8217;d like to add that or see how it works.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ollieglass.com/2012/05/23/showshares-show-links-in-twitter-searches/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
