<?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>Adrian Short &#187; Software design</title>
	<atom:link href="http://adrianshort.co.uk/category/software-design/feed/" rel="self" type="application/rss+xml" />
	<link>http://adrianshort.co.uk</link>
	<description>Design, citizenship and the city</description>
	<lastBuildDate>Mon, 07 Nov 2011 09:17:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Digital simulacra and the iPad human interface guidelines</title>
		<link>http://adrianshort.co.uk/2010/06/17/digital-simulacra-and-the-ipad-human-interface-guidelines/</link>
		<comments>http://adrianshort.co.uk/2010/06/17/digital-simulacra-and-the-ipad-human-interface-guidelines/#comments</comments>
		<pubDate>Thu, 17 Jun 2010 14:56:55 +0000</pubDate>
		<dc:creator>Adrian Short</dc:creator>
				<category><![CDATA[Design theory]]></category>
		<category><![CDATA[Product design]]></category>
		<category><![CDATA[Software design]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[Windows Phone 7]]></category>

		<guid isPermaLink="false">http://adrianshort.co.uk/?p=603</guid>
		<description><![CDATA[This was originally posted as a comment to an article in UX Magazine about the iPad human interface guidelines. I was reminded by it today by this blogpost by Ben.geek.nz about the forthcoming Windows Phone 7 UI design. While I haven&#8217;t seen a WP7 in the flesh it looks as if it may come closer [...]]]></description>
			<content:encoded><![CDATA[<p><em>This was originally posted as a comment to </em><a href="http://www.uxmag.com/design/ipad-user-experience-guidelines"><em>an article in UX Magazine</em></a><em> about the </em><a href="http://developer.apple.com/iphone/library/documentation/General/Conceptual/iPadHIG/Introduction/Introduction.html"><em>iPad human interface guidelines</em></a><em>. I was reminded by it today by <a href="http://www.ben.geek.nz/2010/06/why-youll-want-a-windows-phone/">this blogpost by Ben.geek.nz</a> about the forthcoming Windows Phone 7 UI design. While I haven&#8217;t seen a WP7 in the flesh it looks as if it may come closer to the spirit of innovative digital design I invoke below. It remains to be seen and as always, god is in the details.</em></p>
<p>This conversation would be funny if it weren&#8217;t so depressing.</p>
<p>So here we have what is supposedly one of the world&#8217;s leading technology companies launching what it calls a &#8220;magical and revolutionary&#8221; product. And what does it do? It goes and encourages developers to build twee simulacra of physical objects. How unmagical. How unrevolutionary. How dull. Apple have seriously employed top-flight designers and developers to build digital representations of address books and books and goodness knows what else that computers are designed to get rid of. And by &#8220;get rid of&#8221; I mean &#8220;eliminate as a concept&#8221; not &#8220;replace with a digital lookalike&#8221;. Now they want everyone else to do the same. No thanks. This is 2010 not 1910.</p>
<p><span id="more-603"></span>This approach is an enormous dead end that&#8217;s wrong on so many levels and plays itself out in various ways, some quite obvious, others more subtle and insidious. In a pragmatic sense, it just doesn&#8217;t work on its own terms. Digital metaphors of physical objects are full of leaky abstractions, being both capable of things that their physical counterparts are not and (surprise!) not capable of things their physical counterparts are. No-one seriously designs these metaphors to be perfect &#8212; it&#8217;s impossible. With computers being mainstream for at least twenty years I&#8217;m wondering why anyone&#8217;s still bothering at all. The desktop metaphor for graphical user interfaces was a smart-ish idea compared with the alternatives in 1984. With every year that passes it gets shot through with more and more holes. And the iPad is supposedly the device that moves on from all that. It certainly has the potential as a piece of hardware, as an OS, as a platform. So why try to limit designers&#8217; approaches to something so decidedly retrospective?</p>
<p>But the real problem is much worse than some of the cheesy UI elements like page curls, as excruciating as they may be. What&#8217;s wrong with this scenario?</p>
<p>I go to the (virtual) bookshop and browse through the (virtual) books. I find one I like and I pay real money for it. The (virtual) book gets transferred to me and placed on my (virtual) bookshelf alongside the other (virtual) books I&#8217;ve bought and that I now have to store and organise.</p>
<p>Hey! It&#8217;s just like the real world!</p>
<p>Quite. With most of its limitations, inefficiencies and exclusions comfortingly intact. Business as usual.</p>
<p>Page curl and page turning is a cartoon of something that&#8217;s an artifact of pagination which is a consequence of the former necessity for long-form texts to be printed and bound and distributed as such in the physical world. So are bookshops. So is the concept of owning a book. So are bookshelves and private collections of books. And yes, I notice that the age-old tradition of handing over real money for the non-exclusive opportunity to access a particular small and pre-defined chunk of content is still going strong.</p>
<p>Designers: You can think of better ways of doing it than this. Numerous better ways. You could get the genius lovechild of <a href="http://www.edwardtufte.com/tufte/">Edward Tufte</a> and <a href="http://www.johnpawson.com/">John Pawson</a> to redesign iBooks&#8217; UI and it&#8217;d still be a bad idea. We don&#8217;t need iBooks any more than we need books. We still need ideas. We still need texts. But where they start and where they end and how we represent them and how we can explore them &#8212; that&#8217;s all up for grabs. Can we do this on the iPad? Probably. Should we try? Definitely. Does Apple want us to? Frankly, probably not.</p>
<p>Someone mentioned beauty. Supposedly there are 80% of people that like &#8220;functional&#8221; stuff and 20% that like &#8220;beautiful&#8221; stuff. That 20% are supposedly Apple&#8217;s customers. and the rest still use slide rules, telephone directories and Windows Mobile. I&#8217;m not going to pick apart how right or wrong that may be right now. But I&#8217;ll say this:</p>
<p>If beauty is making digital simulacra then we need a new aesthetic. If beauty is perpetuating not just the appearances but the cruel limitations of things past, it&#8217;s time to move on. We need a digital aesthetic that&#8217;s more than skin deep. One based on possibilities and power that continue to delight us as we use our new digital tools rather than briefly amusing us when we first encounter them. And yes, given that these are new things they should look like new things too. Get the message? If you&#8217;re not experiencing Google Search on an aesthetic level you&#8217;re not paying enough attention. I&#8217;m not talking about how it looks. I&#8217;m talking about what it can do for you. We need more of that. A whole lot more. In the short term, it&#8217;s about companies paying their bills, thriving, profiting. In the long run it&#8217;s about the entire field of computing progressing or stagnating, not the fortunes of any particular company. It&#8217;s about having an information society rather than an information technology society. You want to have something worthy of an upgrade in 2020? Step away from those horseless carriages. Don&#8217;t look back.</p>
<p>In short, if you love notebooks, buy a <a href="http://www.moleskine.co.uk/">Moleskine</a>. If you want to be a cartoonist, go and work for Pixar. If you&#8217;re confused about which way time&#8217;s running, go cyberpunk or trawl eBay for a <a href="http://en.wikipedia.org/wiki/Newton_(platform)">Newton</a>. And if you want to make a genuinely &#8220;magical and revolutionary&#8221; break with the past on the iPad platform &#8212; and I think you should &#8212; then forget about physicality and virtuality and retro computing and <strong>go and make something that not only doesn&#8217;t exist in the physical world but doesn&#8217;t exist in the digital one either</strong>. After two decades of mainstream computing we&#8217;re more than ready for something genuinely digitally native. We can stand the shock of the new. I hope that someone at Apple still understands that sometimes you&#8217;ve just got to break the rules &#8212; including your own.</p>
]]></content:encoded>
			<wfw:commentRss>http://adrianshort.co.uk/2010/06/17/digital-simulacra-and-the-ipad-human-interface-guidelines/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What&#8217;s the point of a tweeting mobile library?</title>
		<link>http://adrianshort.co.uk/2009/12/17/whats-the-point-of-a-tweeting-mobile-library/</link>
		<comments>http://adrianshort.co.uk/2009/12/17/whats-the-point-of-a-tweeting-mobile-library/#comments</comments>
		<pubDate>Thu, 17 Dec 2009 18:46:41 +0000</pubDate>
		<dc:creator>Adrian Short</dc:creator>
				<category><![CDATA[Design theory]]></category>
		<category><![CDATA[Software design]]></category>
		<category><![CDATA[Sutton]]></category>
		<category><![CDATA[Urban design]]></category>
		<category><![CDATA[@SutMobLib]]></category>
		<category><![CDATA[libraries]]></category>
		<category><![CDATA[mobile libraries]]></category>
		<category><![CDATA[things that tweet]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://adrianshort.co.uk/?p=484</guid>
		<description><![CDATA[Last week I launched @SutMobLib, a Twitter account that tweets the location of Sutton&#8217;s mobile library in real time. No, I&#8217;m not sitting here all day sending messages. A program does that automatically. Every time the library gets to a new stop it posts up its location. The utility of such a thing isn&#8217;t immediately [...]]]></description>
			<content:encoded><![CDATA[<p><a title="@SutMobLib Twitter screenshot by Adrian Short, on Flickr" href="http://www.flickr.com/photos/adrianshort/4193374520/"><img src="http://farm3.static.flickr.com/2724/4193374520_34f35ca88d_o.jpg" alt="@SutMobLib Twitter screenshot" width="552" height="392" /></a></p>
<p>Last week I launched <a href="http://twitter.com/sutmoblib">@SutMobLib</a>, a Twitter account that tweets the location of <a href="http://www.sutton.gov.uk/index.aspx?articleid=915">Sutton&#8217;s mobile library</a> in real time. No, I&#8217;m not sitting here all day sending messages. A program does that automatically. Every time the library gets to a new stop it posts up its location.</p>
<p><span id="more-484"></span></p>
<div class="wp-caption alignnone" style="width: 513px"><a title="@SutMobLib Bing Maps Twitter search screenshot by Adrian Short, on Flickr" href="http://www.flickr.com/photos/adrianshort/4192613683/"><img src="http://farm3.static.flickr.com/2701/4192613683_90658e31b5_o.jpg" alt="@SutMobLib Bing Maps Twitter search screenshot" width="503" height="312" /></a><p class="wp-caption-text">@SutMobLib on Bing Maps Twitter Search</p></div>
<p>The utility of such a thing isn&#8217;t immediately obvious. While I don&#8217;t like to generalise or assume too much, I suspect that the vast majority of mobile library users don&#8217;t use Twitter. So far a grand total of nine  people have signed up to follow <a href="http://twitter.com/SutMobLib">@SutMobLib</a> and most of those are various <a href="http://en.wikipedia.org/wiki/Sockpuppet_(Internet)">sock puppets</a> of mine.</p>
<div class="wp-caption alignright" style="width: 330px"><a title="@SutMobLib Tweetie 2 screenshot by Adrian Short, on Flickr" href="http://www.flickr.com/photos/adrianshort/4193374714/"><img src="http://farm3.static.flickr.com/2798/4193374714_4ba375e7c8_o.jpg" alt="@SutMobLib Tweetie 2 screenshot" width="320" height="480" /></a><p class="wp-caption-text">@SutMobLib on Tweetie 2 &quot;nearby search&quot; for iPhone</p></div>
<p>Unlike most Twitter accounts that belong to real people, <a href="http://twitter.com/SutMobLib">@SutMobLib</a> isn&#8217;t great for conversation. It&#8217;s even less intelligent and interactive than it looks. Anyone that wants to be reminded when the library is visiting their neighbourhood would be better off just putting the relevant day in their calendar.</p>
<p><a href="http://twitter.com/SutMobLib">@SutMobLib</a> is useful because Twitter is now more than just a social network connecting people. It&#8217;s become a platform for realtime geospatial information, where things like the mobile library can post up what they&#8217;re doing and where they&#8217;re doing it, as they&#8217;re doing it.</p>
<p>Experienced Twitter users know that while half the power of Twitter is following people you&#8217;re interested in and conversing with them, the other half is reading <a href="http://search.twitter.com/search?q=dinner">realtime searches</a> for keywords, phrases and <a href="http://hashtags.org/">hashtags</a>. Recently, Twitter enhanced the power of its search by allowing members to post up their precise geographical location with each tweet, which other members can then discover by searching around an area rather than around a hashtag or topic.</p>
<p>So <strong>Twitter has become a radar</strong>. <a href="http://www.atebits.com/tweetie-iphone/">Tweetie 2</a>, a Twitter client for the iPhone, allows users to search &#8220;Nearby&#8221; based on the user&#8217;s current location and shows a map covered with plotted tweets. Web users can do something similar using <a href="http://www.bing.com/maps/explore/#5872/style=auto&amp;lat=51.36389&amp;lon=-0.174522&amp;z=13&amp;pid=5874/5003/0.40326=s:@SutMobLib&amp;o=&amp;a=0">Bing Maps&#8217; Twitter Search</a>. The popular client TweetDeck shows pop-up maps underneath geotweets.</p>
<p>Realtime geospatial search brings a new dimension to finding out about the world. For the first time we can pull up live information about a place, whether that&#8217;s people&#8217;s conversations and observations or the solipsistic self-reporting of things that tweet like Sutton&#8217;s mobile library. Various urban annotation and virtual graffiti projects have existed before now but Twitter brings this capability to a mass-market social network with tens of millions of members. Through reading conversations about coffee in Soho or chemo at the Royal Marsden Hospital, our awareness of the world around us just got a great deal broader.</p>
<div class="wp-caption alignright" style="width: 250px"><a title="@SutMobLib TweetDeck geotweet by Adrian Short, on Flickr" href="http://www.flickr.com/photos/adrianshort/4193374860/"><img src="http://farm3.static.flickr.com/2781/4193374860_aa6cd0bd35_o.jpg" alt="@SutMobLib TweetDeck geotweet" width="240" height="401" /></a><p class="wp-caption-text">@SutMobLib showing as a geotweet in TweetDeck</p></div>
<p>For some, that will mean discovering, spontaneously and without specifically searching for it, that a friend &#8212; or the mobile library &#8212; is around the corner and might be pleased to see us. The world around us is constantly shifting, with opportunities and hazards popping up and then disappearing again, often without leaving a trace. Now we can see those traces. Serendipity is the spice of life and it&#8217;s just got a very big helping hand. Fire up your radar.</p>
<p>&#8212;</p>
<p>Further reading on where ambient intelligence is taking us:</p>
<p>Peter Morville, <em><a href="http://www.amazon.co.uk/Ambient-Findability-What-Changes-Become/dp/0596007655/">Ambient Findability</a></em><br />
Malcolm McCullough, <a href="http://www.amazon.co.uk/Digital-Ground-Architecture-Pervasive-Environmental/dp/0262633272/"><em>Digital Ground</em></a><br />
Adam Greenfield, <a href="http://www.amazon.co.uk/Everyware-Dawning-Age-Ubiquitous-Computing/dp/0321384016/"><em>Everyware</em></a></p>
]]></content:encoded>
			<wfw:commentRss>http://adrianshort.co.uk/2009/12/17/whats-the-point-of-a-tweeting-mobile-library/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Building a local news mashup with Twitter, TwitterFeed, Delicious, Yahoo! Pipes, Ruby and RSS</title>
		<link>http://adrianshort.co.uk/2009/03/15/building-a-local-news-mashup-with-twitter-twitterfeed-delicious-yahoo-pipes-ruby-and-rss/</link>
		<comments>http://adrianshort.co.uk/2009/03/15/building-a-local-news-mashup-with-twitter-twitterfeed-delicious-yahoo-pipes-ruby-and-rss/#comments</comments>
		<pubDate>Sun, 15 Mar 2009 18:35:27 +0000</pubDate>
		<dc:creator>Adrian Short</dc:creator>
				<category><![CDATA[Software design]]></category>
		<category><![CDATA[Sutton]]></category>
		<category><![CDATA[apis]]></category>
		<category><![CDATA[atom]]></category>
		<category><![CDATA[Delicious]]></category>
		<category><![CDATA[Hpricot]]></category>
		<category><![CDATA[mashups]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[Paul Burstow]]></category>
		<category><![CDATA[rss]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Stonecot Hill News]]></category>
		<category><![CDATA[Sutton Council]]></category>
		<category><![CDATA[Sutton Guardian]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[TwitterFeed]]></category>
		<category><![CDATA[Yahoo! Pipes]]></category>

		<guid isPermaLink="false">http://adrianshort.co.uk/?p=311</guid>
		<description><![CDATA[(Click on the image to download the PDF, 19KB, opens in new window/tab.) Like this? Follow me on Twitter: http://twitter.com/adrianshort I&#8217;m a self-confessed and unashamed news junkie and this is how I&#8217;m starting to mash up news in my local area. For those that aren&#8217;t local, Sutton is a London borough with a population of [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://adrianshort.co.uk/wp-content/uploads/2009/03/sutton-local-news-mashup.pdf" target="_blank"><img class="alignnone size-medium wp-image-330" title="sutton-local-news-mashup" src="http://adrianshort.co.uk/wp-content/uploads/2009/03/sutton-local-news-mashup-400x282.png" alt="sutton-local-news-mashup" width="400" height="282" /></a></p>
<p><em>(Click on the image to download the PDF, 19KB, opens in new window/tab.)</em></p>
<p><em>Like this? Follow me on Twitter: <a href="http://twitter.com/adrianshort">http://twitter.com/adrianshort</a><br />
</em></p>
<p>I&#8217;m a self-confessed and unashamed news junkie and this is how I&#8217;m starting to mash up news in my local area. For those that aren&#8217;t local, <a href="http://en.wikipedia.org/wiki/London_Borough_of_Sutton">Sutton</a> is a London borough with a population of approximately 180,000. Stonecot Hill is a neighbourhood within Sutton with a population of a few thousand.</p>
<p>Here&#8217;s how it all works.</p>
<p><strong>Sources (green boxes)</strong></p>
<p>I write <a href="http://www.stonecothillnews.co.uk/">Stonecot Hill News</a> which is a local news blog running as a standalone <a href="http://wordpress.org/">WordPress</a> installation on its own server. It produces an <a href="http://en.wikipedia.org/wiki/RSS_(file_format)">RSS 2.0 feed</a> which here is treated as an outbound <a href="http://en.wikipedia.org/wiki/Api">API</a>.</p>
<p><a href="http://paulburstow.com/">Paul Burstow</a> is the local member of parliament (constituency: Sutton &amp; Cheam). Paul posts news regularly to his website and for many years that site has been serving an RSS 1.0 (RDF) feed. Whether he realises it or not, Paul laid one of the first foundations for news mashability in the borough.</p>
<p>The <a href="http://www.suttonguardian.co.uk/">Sutton Guardian</a> is the local newspaper, published by Newsquest. Together with its sister titles in other areas, they publish <a title="Sutton Guardian RSS feeds" href="http://www.suttonguardian.co.uk/misc/rss/">several dozen RSS 2.0 feeds</a> for a wide variety of content.</p>
<p><a href="http://www.sutton.gov.uk/">Sutton Council</a> is the local authority for the borough. Despite a recent £270,000 revamp to their website they haven&#8217;t yet managed to step into the Twenty-First and produce any RSS feeds. However, they do publish a variety of content regularly on their website, including their <a title="Sutton Council press releases" href="http://www.sutton.gov.uk/index.aspx?articleid=3434">press releases</a>.</p>
<p><strong>APIs (grey boxes)</strong></p>
<p>For the non-technical: API stands for Application Programming Interface, but that doesn&#8217;t tell you very much. Think of APIs like connectors or adapters that allow one program to plug into another in the same way that our household appliances can all connect to the electrical network because they share common plugs and sockets.</p>
<p>An API may be <em>inbound </em>(allowing data to be put into an application), <em>outbound </em>(allowing data to be extracted) or both.</p>
<p>As we can see in the diagram, applications which use APIs can be daisy-chained together, with the output of one application being fed into another.</p>
<p>RSS and <a href="http://en.wikipedia.org/wiki/Atom_(standard)">Atom</a> feeds are also APIs in that they provide a structured way for a program to get data out of an application. These feed formats are simple to implement (many applications produce them automatically) and are the first thing to consider when implementing a simple outbound API for an application.</p>
<p><strong>Mashers (pink boxes)</strong></p>
<p>Mashers are small programs that connect otherwise incompatible inbound and outbound APIs together. <a href="http://twitterfeed.com/">TwitterFeed</a> is a simple example. Say you want to automatically post the new items from your blog to your <a href="http://twitter.com/">Twitter</a> account. Your blog serves an RSS feed but Twitter, while it has an inbound API, cannot accept RSS directly as input. TwitterFeed links the two, allowing the user to define any number of RSS feeds as inputs and any number of Twitter accounts as outputs, via the Twitter API. In this way, TwitterFeed plugs blogs into Twitter.</p>
<p><a href="http://pipes.yahoo.com/">Yahoo! Pipes</a> is a much more sophisticated and flexible masher. It can take inputs from a variety of sources (RSS, Atom, <a title="Comma-separated values file format" href="http://en.wikipedia.org/wiki/Comma-separated_values">CSV</a>, <a title="Flickr photo sharing website" href="http://www.flickr.com/">Flickr</a> API, <a href="http://base.google.com/base/">Google Base</a> or even raw web pages), sort, filter and combine them in every conceivable way, and output the results as a single stream in various formats (RSS, <a title="JavaScript Object Notation" href="http://en.wikipedia.org/wiki/Json">JSON</a>, and <a title="KML - Keyhole Markup Language" href="http://en.wikipedia.org/wiki/Kml">KML</a>, the geo-format used by <a href="http://earth.google.com/">Google Earth</a>). For my mashup I created <a title="Stonecot Hill news mashup Yahoo Pipe" href="http://pipes.yahoo.com/adrianshort/tin_59X73RG83ZoNpgt1Yg">this pipe</a> to filter Paul Burstow&#8217;s, the Sutton Guardian&#8217;s and Sutton Council&#8217;s news and only pass through items containing the word &#8220;stonecot&#8221; to the stream that eventually ends in the <a href="http://twitter.com/stonecothill">@stonecothill Twitter feed</a>, which is just for Stonecot Hill residents. The number of items coming through these sources about Stonecot Hill is very low, but when something appears residents will want to see it. (By way of example, only a single press release from Sutton Council in the last 227 concerns the Stonecot Hill area specifically.)</p>
<p>As mentioned above, Sutton Council doesn&#8217;t provide an RSS feed or any other kind of outbound API for its press release. I wrote a screen scraper in <a title="Ruby programming language" href="http://www.ruby-lang.org/en/">Ruby</a> (using <a title="Hpricot HTML parser for Ruby" href="http://wiki.github.com/why/hpricot">Hpricot</a>) that grabs the press releases directly from the council website, dumps them into a <a href="http://www.mysql.com/">MySQL</a> database and pushes new items into the <a title="Delicious social bookmarks manager" href="http://delicious.com/">Delicious</a> API. I&#8217;ve used Delicious here for two reasons. Firstly, because it generates an RSS feed automatically from all the items posted to it, so I can easily connect this output to other mashers and APIs further downstream without having to generate and host an RSS feed myself. Also, Delicious provides a useful search facility on its website allowing me to easily search just the press releases from Sutton Council. This isn&#8217;t possible with the council&#8217;s own website, where searches are scoped to the entire site.</p>
<p><strong>Destinations (orange boxes)</strong></p>
<p>In my diagram, the destinations are sites and services which represent new ways of consuming information coming from the original sources. Don&#8217;t want to read Sutton Council&#8217;s press releases on their own website? You can folllow them in <a title="Sutton Council's press releases on Delicious" href="http://delicious.com/suttonboro">Delicious</a> or on <a title="Sutton Council's press releases on Twitter" href="http://twitter.com/suttonboro">Twitter</a>. Want to keep up with the latest news about Stonecot Hill? Again, the <a href="http://twitter.com/stonecothill">@stonecothill Twitter account</a> can find this for you from various sources. I also add my own items to @stonecothill, making it a unique mashup of original and syndicated content that&#8217;s highly targeted and very local.</p>
<p>The information stream doesn&#8217;t need to end with these destinations. Any destination that provides an outbound API can simply be another link in the chain to downstream services. In my diagram, the RSS feed from Delicious is used to do just that, pushing all its content on to the @suttonboro Twitter account, and just the Stonecot Hill-related content on to the @stonecothill account via the Yahoo! Pipes filter. Twitter has its own specific outbound API and also serves RSS feeds. There&#8217;s nothing to stop anyone else building on these destinations by combining and filtering them with other sources to produce their own unique, relevant information streams that they find useful.</p>
<p><strong>What next?</strong></p>
<p>If you run a website, it&#8217;s time to start thinking of mashability with the same degree of seriousness as you treat human visitors. Your website needs to serve up feeds and APIs so that other programs can connect to your content and deliver it to people in ways and contexts that they find useful. Some of these may have an audience of thousands or even millions. Others may have an audience of one. Regardless, by providing an API to your content you enable others to build things that you haven&#8217;t imagined, don&#8217;t have the resources or desire to build yourself, and won&#8217;t have to maintain. Businesses like newspapers that survive by selling their content (or selling advertising around their content) are thinking very carefully about the challenges and opportunities for the future of their industries. For government and voluntary organisations, it&#8217;s time to start thinking more like evangelists than economists. Spread the word like the free Bibles in hotel bedrooms and take every opportunity to get your message out there.</p>
<p>Sutton Council have been encouraged in various ways to implement feeds on their own website and the song will remain the same until they do. I don&#8217;t want to maintain my scraper for ever and I certainly don&#8217;t want to build any more of them.</p>
<p>The whole API and mashability agenda is far bigger than simple web feed formats like RSS and Atom. It&#8217;s time for technologists to stop flogging the line that &#8220;RSS is an easy way for people who follow lots of websites to read all their news in one place&#8221;. Direct human consumption of RSS feeds is never going to hit the mainstream in that way. If you&#8217;re reading this, you&#8217;re far more likely that average to use an RSS reader. (I&#8217;ve got 86 feeds in my <a href="http://www.google.com/reader/">Google Reader</a> right now). The average web user has barely heard of the concept and most definitely don&#8217;t do it. I suspect they never will. But it&#8217;s likely they&#8217;re already benefiting from syndicated content through sites and applications that they use. If they never have to see or care about the underlying technology that&#8217;s really no more a problem than worrying that the average web user doesn&#8217;t understand <a href="http://en.wikipedia.org/wiki/Http">HTTP</a> or <a href="http://en.wikipedia.org/wiki/Domain_Name_System">DNS</a>. It&#8217;s just plumbing that can stay out of sight and out of mind as long as it works.</p>
<p>For the minority that do use personal RSS readers, I&#8217;d like to see more of them with built-in filtering features. Setting a simple keyword filter on a feed makes RSS reading considerably more powerful.</p>
<p>For those serving up feeds, I&#8217;d like to see Atom more widely used. Without wanting to open a can of Wineresque worms, RSS 2.0 fudges a number of important issues around content semantics and provides no support whatsoever for correctly attributing items in feeds mashed from several sources. Atom was designed to solve these problems and it does. Let&#8217;s use it.</p>
<p>Lastly, mashability is about every conceivable kind of content and content type. It&#8217;s not just about news and text. Every stream of information should have its own machine-readable feed. Every system that can accept data from human input should implement an inbound API to do likewise. To take one example, <a href="http://www.fixmystreet.com/">FixMyStreet</a> is a website for people to report street faults to local authorities and currently takes around 1000 reports a week. It even has its own <a title="FixMyStreet on the iPhone" href="http://www.mysociety.org/2008/12/10/fixmystreet-iphone/">iPhone application</a> so people can report faults complete with GPS locations and photos directly from the street. Only a single local authority in over 400 has implemented an inbound API to receive these reports. The rest get them by email, which must be manually copied into their own databases with all the effort, expense, possibility for error and opportunity costs that represents. Third-parties building extensions to other people&#8217;s systems is no longer unusual, so organisations need to embrace the possibilities rather than fighting against it or standing around looking bemused.</p>
<p>It&#8217;s time to open the doors and windows and get the web joined up, mashed up and moving.</p>
]]></content:encoded>
			<wfw:commentRss>http://adrianshort.co.uk/2009/03/15/building-a-local-news-mashup-with-twitter-twitterfeed-delicious-yahoo-pipes-ruby-and-rss/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>My thermometer has got an API</title>
		<link>http://adrianshort.co.uk/2009/03/02/my-thermometer-has-got-an-api/</link>
		<comments>http://adrianshort.co.uk/2009/03/02/my-thermometer-has-got-an-api/#comments</comments>
		<pubDate>Mon, 02 Mar 2009 20:06:29 +0000</pubDate>
		<dc:creator>Adrian Short</dc:creator>
				<category><![CDATA[Software design]]></category>
		<category><![CDATA[apis]]></category>
		<category><![CDATA[everyware]]></category>
		<category><![CDATA[Internet of Things]]></category>
		<category><![CDATA[sensors]]></category>
		<category><![CDATA[thermometers]]></category>
		<category><![CDATA[ubicomp]]></category>
		<category><![CDATA[ubiquitous computing]]></category>

		<guid isPermaLink="false">http://adrianshort.co.uk/?p=275</guid>
		<description><![CDATA[Meet my thermometer. It&#8217;s an old-school analogue device, probably at least 50 years old. I don&#8217;t expect it&#8217;s very accurate, certainly not by scientific standards. It hangs outside my door and every now and then I take a look at it and record its reading. But this is no ordinary thermometer. It&#8217;s eqiupped with a [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://adrianshort.co.uk/wp-content/uploads/2009/03/thermometer-800.jpg"><img class="alignnone size-medium wp-image-276" title="Stonecot Hill thermometer" src="http://adrianshort.co.uk/wp-content/uploads/2009/03/thermometer-800-268x400.jpg" alt="Stonecot Hill thermometer" width="268" height="400" /></a></p>
<p>Meet my thermometer.</p>
<p>It&#8217;s an old-school analogue device, probably at least 50 years old. I don&#8217;t expect it&#8217;s very accurate, certainly not by scientific standards. It hangs outside my door and every now and then I take a look at it and record its reading.</p>
<p>But this is no ordinary thermometer. It&#8217;s eqiupped with a capability that would have probably been inconceivable to the people that made it: it has its own <a title="Wikipedia: Application Programming Interface" href="http://en.wikipedia.org/wiki/API">API</a> so that programs can &#8220;read&#8221; it, automatically, across the Internet.</p>
<p>Before explaining <em>how </em>you can use the API I should explain <em>why </em>I&#8217;ve bothered to do this.</p>
<p>By any sensible standard, this project in itself is almost completely useless. I haven&#8217;t created any kind of clever link between the thermometer and the database in which I store its readings. I just read it when I feel like it. Some days I might get five or six readings. (You can get more sophsiticated computer-connected thermometers that do this automatically but I don&#8217;t have one.) Then I might go for five or six days without reading it at all. Combined with what I assume is a fairly low level of accuracy as a result of the device itself, its positioning and the possibility of human error when reading it and recording its value, the data produced seems almost worthless.</p>
<p>There is a crucial difference between <em>almost </em>and <em>completely </em>worthless.</p>
<p>This project is my first contribution towards the <a href="http://en.wikipedia.org/wiki/Internet_of_Things">Internet of Things</a>. The thermometer is a very simple sensor, producing, as I&#8217;ve explained, very low quality data. The API is incredibly basic. There is only one query: read the thermometer. And the result is the following hash:</p>
<table border="1" cellpadding="10">
<tbody>
<tr>
<td>temperature_c</td>
<td>Latest (not current) temperature, in centigrade</td>
</tr>
<tr>
<td>ts</td>
<td>Unix timestamp of the latest reading</td>
</tr>
<tr>
<td>lat</td>
<td>Approximate latitude of the thermometer</td>
</tr>
<tr>
<td>lng</td>
<td>Approximate longitude of the thermometer</td>
</tr>
</tbody>
</table>
<p> </p>
<p>This thermometer is a very simple device with a very basic interface. If you&#8217;re relying on it to provide up-to-date, accurate temperature data, you&#8217;re a fool. But imagine if a dozen people in my neighbourhood did exactly the same thing &#8212; all reading their not-particularly-accurate thermometers whenever they felt like it and updating their databases. As the number of thermometers increases the chance of being able to find a sufficiently-recent reading from one of them improves. And as the data from all these thermometers is being read by a program (or programs), it&#8217;s quite possible to use statistical techniques to smooth out any apparent errors.</p>
<p>This is the opportunity afforded by the <a href="http://en.wikipedia.org/wiki/Internet_of_Things">Internet of Things</a> (sometimes known more generally as <a href="http://en.wikipedia.org/wiki/Ubiquitous_computing">ubiquitous computing</a> or <a title="Everyware: the dawning age of ubiquitous computing by Adam Greenfield" href="http://books.google.co.uk/books?id=noMNgMcZvL0C&amp;dq=everyware&amp;printsec=frontcover&amp;source=bn&amp;hl=en&amp;ei=vzmsSaq1BJDDjAeNhK3UDw&amp;sa=X&amp;oi=book_result&amp;resnum=4&amp;ct=result">everyware</a>). The model is almost completely opposite to current ideas in server and desktop computing, which are focused on a relatively small number of devices with ever-increasing computing power, storage capacity and sophistication. IoT takes a very large number of fairly stupid devices that have, as a minimum, the ability to network with other things and serve up just one piece of useful information, and then mashes them up into something that&#8217;s infinitely more powerful than the sum of its parts.</p>
<p>Imagine a world in which most objects know who they are, where they are and can serve up very basic reports on their status to other objects. Such a &#8220;system&#8221; would be massively redundant. Like the cells in a body, no one object would be necessarily particularly important in the grand scheme of things. It&#8217;s the power of being able to combine these things together &#8212; and of them being able to combine themselves &#8212; that opens up a wealth of new directions. A city in which every lamppost could transmit its precise location would likely be more accurate than GPS. Lampposts don&#8217;t move and they don&#8217;t get obscured by clouds.</p>
<p>Making this happen won&#8217;t require any fundamentally new technological advances, just small improvements to the cost of existing ones. Platforms like <a href="http://www.pachube.com/">Pachube</a> already exist to enable people to network these kinds of devices and build complex, emergent systems on top of them.</p>
<p>Grand schemes aside, using the thermometer&#8217;s API is very simple. Just send an HTTP GET request to:</p>
<p>http://www.stonecothillnews.co.uk/thermometer.php</p>
<p>and you&#8217;ll get back a JSON-encoded hash as described above. This is the <em>latest </em>reading that has been taken on the thermometer. It could have been a minute or a month ago.</p>
<p>Here&#8217;s how you do it in PHP:</p>
<p><code>&lt;?php<br />
define('ENDPOINT', 'http://www.stonecothillnews.co.uk/thermometer.php');<br />
$handle = fopen(ENDPOINT, 'r');<br />
$contents = fread($handle, 8192);<br />
fclose($handle);<br />
$data = json_decode($contents);<br />
print_r($data);<br />
?&gt;<br />
</code></p>
<p>and here&#8217;s a Ruby example:</p>
<p><code><br />
require 'open-uri'      # URI wrapper for File.open<br />
require 'activesupport' # for JSON decoding<br />
require 'pp'            # pretty printer</p>
<p>ENDPOINT = 'http://www.stonecothillnews.co.uk/thermometer.php'</p>
<p>handle = open(ENDPOINT)<br />
output = handle.read<br />
handle.close<br />
data = ActiveSupport::JSON.decode(output)<br />
pp data<br />
</code></p>
<p>I don&#8217;t imagine many readers will have a great deal of use for irregularly-updated temperature data from my neighbourhood. But imagine what could be possible with the contributions of millions of devices like this.</p>
]]></content:encoded>
			<wfw:commentRss>http://adrianshort.co.uk/2009/03/02/my-thermometer-has-got-an-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Estimated date of birth &#8212; an interaction design pattern</title>
		<link>http://adrianshort.co.uk/2008/09/09/estimated-date-of-birth-an-interaction-design-pattern/</link>
		<comments>http://adrianshort.co.uk/2008/09/09/estimated-date-of-birth-an-interaction-design-pattern/#comments</comments>
		<pubDate>Tue, 09 Sep 2008 09:36:27 +0000</pubDate>
		<dc:creator>Adrian Short</dc:creator>
				<category><![CDATA[Design theory]]></category>
		<category><![CDATA[Software design]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[Web design]]></category>
		<category><![CDATA[ages]]></category>
		<category><![CDATA[birthdays]]></category>
		<category><![CDATA[database design]]></category>
		<category><![CDATA[dates of birth]]></category>
		<category><![CDATA[form design]]></category>
		<category><![CDATA[surveys]]></category>

		<guid isPermaLink="false">http://adrianshort.co.uk/?p=65</guid>
		<description><![CDATA[How to avoid asking people for their date of birth when you don't need it but still gain enough data to be able to produce meaningful age segmentations.]]></description>
			<content:encoded><![CDATA[<p><strong>Context</strong></p>
<p>You want to collect the dates of birth of a group of people so that you can analyse and segment the group by age, but asking for a date of birth isn&#8217;t necessary for any specific reason and many people in the group may balk at giving you this private information.</p>
<p><span id="more-65"></span></p>
<p><strong>Discussion</strong></p>
<p>It&#8217;s a common conceit among people designing forms and surveys that if you ask a question, you&#8217;ll get a useful answer, but when it comes to personal information the wise designer treads very carefully.</p>
<p>A general rule for form design is that every extra question reduces your response rate and diminishes the chances of the form being completed accurately. Every time you add something you take something away.</p>
<p>As people become more conscious of the real or imagined incidence of identity theft and the predations of overzealous marketers, they are increasingly reluctant to part with personal information even where they might otherwise be happy to provide information for a purpose with which they agree.</p>
<p>As consumers, we understand that there are times when our date of birth will be required for official purposes. We don&#8217;t expect to be able to open a bank account or obtain a passport without it. But when we&#8217;re completing a marketing survey or simply registering with an online shop it can often feel like too much information. I don&#8217;t get asked my date of birth when I shop on the high street &#8212; why would I need to disclose it just to use the online equivalent?</p>
<p>Having age information about a group of people is often useful or even necessary for researchers and marketers. They might want to produce an age breakdown of a group of people using their service or participating in their research, or validate that people in a group qualify to be there where there is an age restriction.</p>
<p>One solution to the problem is to ask respondents for their <em>age group</em> rather than their date of birth:</p>
<p><em>How old are you?</em></p>
<ul>
<li>under 18</li>
<li>18-25</li>
<li>26-39</li>
<li>40-49</li>
<li>50-64</li>
<li>65 and over</li>
</ul>
<p>This is less intrusive for respondents and more likely to gain a response than asking for a date of birth. It allows a report to be produced grouping the respondents by frequency under these headings.</p>
<p>Unfortunately, this approach is very inflexible. Once the respondents are placed into these groups you cannot produce a different age segmentation. In the above example, if there were a subsequent requirement to count all the people aged under 30, you couldn&#8217;t.</p>
<p>This approach also fails if the data are to be used over time. The age segmentations will be correct at the time of data collection but will rapidly obsolesce after that. It works for a one-time snapshot such as a survey but doesn&#8217;t work for a group who will be participating over time such as members of an organisation or customers of a business.</p>
<p><strong>Resolution</strong></p>
<p>These issues can often be better resolved by asking respondents for their <em>ages </em>and then calculating an <em>estimated date of birth</em> for them which is then stored. Ages are less specific than precise dates of birth and asking for them is more likely to gain an accurate response.</p>
<p><em>How old are you?</em> _____________ (write in your age; leave it blank if you&#8217;d rather not say)</p>
<p>If a person responds that they are 30 today, we cannot possibly know their birthday. It could be any day between today (they&#8217;ve just turned 30) up to a year&#8217;s time less a day.</p>
<p>So calulate the estimated date of birth to be:</p>
<p><em>today &#8211; respondent&#8217;s age in years &#8211; six months</em></p>
<p>While there is only a 1 in 365 (ish) chance of estimating the date of birth correctly for each individual, by assuming that each person is half way towards their next birthday you prevent skewing the overall age breakdown for the group either too low or too high.</p>
<p>Ensure that your database or spreadsheet column is called <em>estimated date of birth</em> to prevent subsequent users assuming that these DOBs are accurate.</p>
<p>Using these estimated dates of birth you can produce sufficiently accurate age segmentations at any time in the future regardless of how you define the segment boundaries.</p>
<p>As a caveat, be aware that while this technique allows you to estimate the <em>number </em>of people in the group, say, under 30, if there&#8217;s an absolutely specific reason to find the <em>actual members </em>that are under 30, you can&#8217;t. You&#8217;ll get a few false positives that you&#8217;re estimating to be under 30 even though they&#8217;ve already reached their 30th birthdays.</p>
]]></content:encoded>
			<wfw:commentRss>http://adrianshort.co.uk/2008/09/09/estimated-date-of-birth-an-interaction-design-pattern/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hack your world</title>
		<link>http://adrianshort.co.uk/2008/08/16/hack-your-world/</link>
		<comments>http://adrianshort.co.uk/2008/08/16/hack-your-world/#comments</comments>
		<pubDate>Sat, 16 Aug 2008 16:38:59 +0000</pubDate>
		<dc:creator>Adrian Short</dc:creator>
				<category><![CDATA[Design theory]]></category>
		<category><![CDATA[Product design]]></category>
		<category><![CDATA[Software design]]></category>
		<category><![CDATA[Urban design]]></category>
		<category><![CDATA[adaptive design]]></category>
		<category><![CDATA[hackability]]></category>
		<category><![CDATA[hackers]]></category>
		<category><![CDATA[hacking]]></category>

		<guid isPermaLink="false">http://adrianshort.co.uk/?p=58</guid>
		<description><![CDATA[On the web, in the streets and even in the municipal flowerbeds, people are taking design into their own hands.]]></description>
			<content:encoded><![CDATA[<p>First came the <a href="http://www.guerrillagardening.org/">guerilla gardeners</a>, sowing seeds and planting plants in public places without permission.</p>
<p>Then there were the <a href="http://www.spacehijackers.co.uk/html/projects/guerrillabench/guerrilla.html">guerilla benchers</a>, installing street seats where the local authority had been too poor or too mean to do it themselves.</p>
<p>On the web, a growing community of <a href="http://www.opendemocracy.net/debates/article-8-85-1025.jsp">civic hackers</a> has been building sites on top of public information to <a href="http://www.programmableweb.com/">mash it up</a> in new ways that the publishers hadn&#8217;t imagined or didn&#8217;t have the means or motive to build.</p>
<p><span id="more-58"></span></p>
<p>In digital and physical space, if something can be hacked it will be. People are no longer content to live with what designers give them. As Stewart Brand argues in <a href="http://en.wikipedia.org/wiki/How_Buildings_Learn"><em>How Buildings Learn</em></a>, the end of the formal, official design process isn&#8217;t the end of design, it&#8217;s just the start of the informal process where the users take over and adapt their spaces to their ever-changing needs.</p>
<p>Within the design profession, the practice of <a href="http://en.wikipedia.org/wiki/Co-Design">co-design</a> is acknowledging that products are better when the users aren&#8217;t just consulted but actually participate in the design process. But this is only half the story. Design is part observation and part clairvoyance, discerning likely future needs from current and past ones. When the scope is limited and familiar &#8212; <a href="http://www.whitehorsepress.com/images/products/large/cup.jpg">a container to hold liquid temporarily for drinking</a> &#8212; one has to try very hard to design badly. When the scope is broad and novel &#8212; <a href="http://ask.metafilter.com/65377/Can-an-Oyster-Card-be-hacked">a cashless and paperless ticketing system for a large urban transport system</a> &#8212; the risks of poor systems and rapid obsolescence increase.</p>
<p>This is where the hackers, or guerilla designers, come in. Hackers take a designed system or object and modify it for their own needs, sometimes by changing the thing itself, sometimes by combining it with other things to produce new possibilities. Unpaid and usually unrecognised, the hacker delights in the intellectual challenge and the satisfaction of making something for practical use. Sometimes the results are crude, sometimes elegant. The only true criterion for success is that they work.</p>
<p>Relatively few people have the inclination or opportunity to work as big-D professional designers, but as <a href="http://en.wikipedia.org/wiki/Brain">design tools</a> and the <a href="http://tom.acrewoods.net/research/hackerethic/dissertation">hacker ethic</a> become ever more embedded in the general population, the world is looking a lot more <a href="http://www.cityofsound.com/blog/2006/05/architecture_an.html">malleable</a> than it used to be.</p>
<p>Where do you want to hack today?</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="100" height="100" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="id" value="VideoPlayback" /><param name="src" value="http://video.google.com/googleplayer.swf?docid=5088653796598486022&amp;hl=en&amp;fs=true" /><embed id="VideoPlayback" type="application/x-shockwave-flash" width="100" height="100" src="http://video.google.com/googleplayer.swf?docid=5088653796598486022&amp;hl=en&amp;fs=true"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://adrianshort.co.uk/2008/08/16/hack-your-world/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Too much information</title>
		<link>http://adrianshort.co.uk/2007/11/21/too-much-information/</link>
		<comments>http://adrianshort.co.uk/2007/11/21/too-much-information/#comments</comments>
		<pubDate>Wed, 21 Nov 2007 13:56:42 +0000</pubDate>
		<dc:creator>Adrian Short</dc:creator>
				<category><![CDATA[Simplicity]]></category>
		<category><![CDATA[Software design]]></category>
		<category><![CDATA[Usability]]></category>

		<guid isPermaLink="false">http://adrianshort.co.uk/?p=22</guid>
		<description><![CDATA[You&#8217;d have to get up pretty early in the morning to put one over the system management software that comes with the Acer Aspire 9300. A jack has been plugged in! A jack has been unplugged! Do you think I don&#8217;t realise already? Who&#8217;s the one doing the plugging and unplugging? An important usability principle [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://adrianshort.co.uk/wp-content/uploads/2008/03/a-jack-has-been-plugged-in.png" alt="A jack has been plugged in" height="104" width="232" /></p>
<p>You&#8217;d have to get up pretty early in the morning to put one over the system management software that comes with the <a href="http://www.acer.co.uk/public/page4.do?sp=page3&amp;dau22.oid=20326&amp;UserCtxParam=0&amp;GroupCtxParam=0&amp;dctx1=17&amp;CountryISOCtxParam=UK&amp;LanguageISOCtxParam=en&amp;ctx3=-1&amp;ctx4=United+Kingdom&amp;crc=2369282384">Acer Aspire 9300</a>.</p>
<p><font>A jack has been plugged in!</font></p>
<p><font>A jack has been unplugged!</font></p>
<p><font>Do you think I don&#8217;t realise already? Who&#8217;s the one doing the plugging and unplugging?</font></p>
<p>An important usability principle is to <strong><font>conserve the user&#8217;s attention</font></strong>. Let them focus on what matters most. Emphasise the main event, quieten the minor details and remove everything that simply doesn&#8217;t need to be shown.</p>
<p>For pity&#8217;s sake, don&#8217;t pop up a balloon just because I&#8217;ve plugged my headphones in.</p>
]]></content:encoded>
			<wfw:commentRss>http://adrianshort.co.uk/2007/11/21/too-much-information/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->
