<?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>blog.andyhume.net &#187; 2007</title>
	<atom:link href="http://blog.andyhume.net/2007/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.andyhume.net</link>
	<description>Thoughts and commentary on web development</description>
	<lastBuildDate>Thu, 13 May 2010 13:37:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Ordnance Survey mapping</title>
		<link>http://blog.andyhume.net/ordnance-survey-mapping</link>
		<comments>http://blog.andyhume.net/ordnance-survey-mapping#comments</comments>
		<pubDate>Tue, 25 Sep 2007 23:43:37 +0000</pubDate>
		<dc:creator>ahume</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.andyhume.net/?p=200</guid>
		<description><![CDATA[Just a quick note to point any mapping geeks out there to the inclusion of Ordnance Survey maps in Multimap&#8217;s free mapping API. These are the 1:50000 Landranger maps so popular amongst walkers, hikers and anyone who took Geography lessons at school. This is a nice little inclusion to the API, and I look forward [...]]]></description>
			<content:encoded><![CDATA[<p>Just a quick note to point any mapping geeks out there to the inclusion of <a href="http://blog.multimap.com/2007/09/21/open-api-uk-data-update/">Ordnance Survey maps</a> in Multimap&#8217;s free <a href="http://www.multimap.com/openapi/">mapping API</a>. These are the 1:50000 Landranger maps so popular amongst walkers, hikers and anyone who took Geography lessons at school.</p>
<p>This is a nice little inclusion to the API, and I look forward to seeing people taking advantage of it in the UK. It&#8217;s probably worth mentioning again that you can also use the following bookmarklet to switch on <a href="http://openstreetmap.org">Open Street Map</a> data for the Multimap website as well as other Multimap API powered apps.</p>
<p><a href="javascript:void((function()%20{%20var%20map;%20if(%20self.MMWCore%20)%20{%20map%20=%20self.MMWCore.UI.Mapviewer.map;%20}%20if(%20!%20map%20)%20{%20%20map%20=%20window.mapviewer;%20}%20if(%20!%20map%20)%20return;var%20custom_map_types%20=%20{%20'mapnik'%20:%20{%20'label'%20:%20'Mapnik',%20'callback'%20:%20function(%20a,%20b%20)%20{%20return%20'http://tile.openstreetmap.org/test/'+(b-1)+'/'+a.x+'/'+a.y+'.png';%20}%20},%20'osmarender'%20:%20{%20'label'%20:%20'OsmaRender',%20'callback'%20:%20function(%20a,%20b%20)%20{%20return%20'http://dev.openstreetmap.org/~ojw/Tiles/tile.php/'+(b-1)+'/'+a.x+'/'+a.y+'.png';%20}%20}%20};%20function%20makeMap(%20obj%20)%20{%20var%20copyright%20=%20new%20MMCopyright(%201,%20[%20new%20MMBounds(%20new%20MMLatLon(%20-90,%20-180%20),%20new%20MMLatLon(%2090,%20180%20)%20)%20],%201,%20'Open%20Street%20Map'%20);%20var%20copyrightCollection%20=%20new%20MMCopyrightCollection(%20'Maps:%20'%20);%20copyrightCollection.addCopyright(%20copyright%20);%20var%20tilelayer%20=%20new%20MMTileLayer(%20copyrightCollection,%20obj.minResolution%20?%20obj.minResolution%20:%201,%2019%20);%20tilelayer.getTileUrl%20=%20obj['callback'];%20var%20tilelayers%20=%20[%20tilelayer%20];%20if(%20!%20obj.projection%20)%20obj.projection%20=%20new%20MMMercatorProjection(20);%20obj.map%20=%20new%20MMMapType(%20tilelayers,%20obj.projection,%20obj.label%20);%20return%20obj.map;%20}%20;%20if(%20map%20instanceof%20MultimapViewer%20)%20{%20for(%20var%20type%20in%20custom_map_types%20)%20{%20map.addMapType(%20makeMap(%20custom_map_types[type]%20)%20);%20}%20}%20})());" title="Don't click on this link, add it to your favourites.">OSMify</a></p>
<p>Go enjoy some maps!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.andyhume.net/ordnance-survey-mapping/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Five quick Javascript tips</title>
		<link>http://blog.andyhume.net/five-quick-javascript-tips</link>
		<comments>http://blog.andyhume.net/five-quick-javascript-tips#comments</comments>
		<pubDate>Wed, 05 Sep 2007 23:46:38 +0000</pubDate>
		<dc:creator>ahume</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.andyhume.net/?p=202</guid>
		<description><![CDATA[When we&#8217;re hiring JavaScript developers at Multimap we sometimes ask them to build a little application, or mash-up, with the Multimap API. It&#8217;s a pretty simple little task but it allows us to see how people approach building a web application. This is a list of five things I often notice when looking at these [...]]]></description>
			<content:encoded><![CDATA[<p>When we&#8217;re hiring JavaScript developers at Multimap we sometimes ask them to build a little application, or mash-up, with the <a href="http://multimap.com/apidocs/">Multimap API</a>. It&#8217;s a pretty simple little task but it allows us to see how people approach building a web application.</p>
<p>This is a list of five things I often notice when looking at these little applications that could be improved. They may be obvious to some people, but certainly not to all. So, without more ado: five quick JavaScript tips to improve the quality of your code.</p>
<h3>Use the submit event on forms</h3>
<p>When attaching event handlers to forms, always use the submit event of the form and not the click event of the submit button.</p>
<h3>If something is clickable, make sure it&#8217;s a link</h3>
<p>Don&#8217;t attach click events to elements other than anchors or form submit buttons. This is particularly important for users navigating the site with methods other than the mouse, where they may have difficulty getting focus on non-anchor elements.</p>
<h3>Simple loop optimisation</h3>
<p>There&#8217;s a very simple change you can make to a <code>for</code> loop to improve it&#8217;s performance.</p>
<p><code><br />
for ( var i = 0; i < elements.length; ++i )<br />
for ( var i = 0, j = elements.length; i < j; ++i )<br />
</code></p>
<p>In the second example the length of the elements array is stored in the j variable, so it's not queried on every iteration of the loop.</p>
<h3>Use anonymous functions for event handlers</h3>
<p>Particularly with short functions like the below, it is far more readable to create an anonymous function than to reference another named function elsewhere. It also allows you to use closures of course.</p>
<p><code><br />
anchor.onclick = function() {<br />
    map.goToPosition( home );<br />
    return false;<br />
}<br />
</code></p>
<h3>Use <code>Array.join</code> instead of concatenating strings</h3>
<p>When working with long strings that need to be joined up, it is more readable and better for performance to place strings in an array and use the <code>join</code> method to return a string.</p>
<p><code><br />
var text = 'There are' + elements.length + 'members in the elements array.';<br />
var text = ['There are', elements.length, 'members in the elements array.'].join(' ');<br />
</code></p>
<p><strong>Update:</strong><br />
A number of people have mentioned to me that the Array.join technique for string concatenation is a bad one, particularly if you're only doing it with a small number of strings. Our benchmarks show it being faster for IE when you get to about 6/7 string concatenations, so it's been useful to us in some situations. But I'd agree with Stuart below that for the average situation it's not going to be worth it. However, I don't see using Array.join() for string concatenation as an <a href="http://friedcellcollective.net/outbreak/2007/09/06/use-arrayjoin-instead-of-concatenating-strings/">abuse of JavaScript</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.andyhume.net/five-quick-javascript-tips/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Event delegation without a JavaScript library</title>
		<link>http://blog.andyhume.net/event-delegation-without-javascript-library</link>
		<comments>http://blog.andyhume.net/event-delegation-without-javascript-library#comments</comments>
		<pubDate>Thu, 09 Aug 2007 23:51:35 +0000</pubDate>
		<dc:creator>ahume</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.andyhume.net/?p=204</guid>
		<description><![CDATA[Most of the articles and examples I&#8217;ve seen of handling events with event delegation use some kind of JavaScript library. Chris Heilmann&#8217;s much cited article uses the YUI library, and Dan Webb&#8216;s presentation at @media last month used the Prototype framework. For those of us just building a bog standard JavaScript application without one of [...]]]></description>
			<content:encoded><![CDATA[<p>Most of the articles and examples I&#8217;ve seen of handling events with event delegation use some kind of JavaScript library. Chris Heilmann&#8217;s <a href="http://icant.co.uk/sandbox/eventdelegation/">much cited article</a> uses the <a href="http://developer.yahoo.com/yui/">YUI library</a>, and <a href="http://www.danwebb.net/">Dan Webb</a>&#8216;s presentation at @media last month used the <a href="http://www.prototypejs.org/">Prototype</a> framework.</p>
<p>For those of us just building a bog standard JavaScript application without one of these fancy libraries, it&#8217;s worth taking a look at how event delegation works in the real world. It sounds more complicated than handling events in the standard way, but it really isn&#8217;t.</p>
<p>For those that haven&#8217;t come across the term before, event delegation refers to the technique of reducing the number of event listeners attached to the document by attaching just one listener to a containing element and testing in the handler where that event has bubbled up from.</p>
<p>Let me give you an example from the Multimap website. The main navigation on the site includes 6 links across the top, 4 of which require event handlers to alter the href attribute of the link when it is clicked. These 4 links have a class attribute of &#8216;bundle&#8217;.</p>
<p>Traditionally you might approach that situation in the following way.</p>
<p><code><br />
var MMNav = {<br />
	init: function() {<br />
		var nav = document.getElementById('mainNav');<br />
		var links = nav.getElementsByTagName('a');<br />
		for ( var i = 0, j = links.length; i < j; ++i ) {<br />
			if ( links[i].className == 'bundle' ) {<br />
				links[i].onclick = this.onclick;<br />
			}<br />
		}<br />
	},<br />
	onclick: function() {<br />
		this.href = this.href + '?name=value;<br />
		return true;<br />
	}<br />
}<br />
</code></p>
<p>There's a lot of overhead in the above code. First of all the <code>getElementsByTagName</code> loops through every DOM node in the <code>mainNav</code> element to find all the links. We then have to loop through them again manually to check the class names of the links. That's wasted CPU cycles at every stage.</p>
<p>How about if we could just attach one event listener to the <code>mainNav</code> element and then capture any click on the links within that?</p>
<p><code><br />
var MMNav = {<br />
	init: function() {<br />
		var nav = document.getElementById('mainNav');<br />
		nav.onclick = this.onclick;<br />
	},<br />
	onclick: function(e) {<br />
		if ( e.target.className == 'bundle' ) {<br />
			e.target.href = e.target.href + '?name=value';<br />
		}<br />
		return true;<br />
	}<br />
}<br />
</code></p>
<p>The simplicity and elegance of this should be pretty clear, but it has a number of performance benefits as well:</p>
<ul>
<li>The less event listeners attached to a document the better. They all take up memory and in extreme circumstances can slow browsers down considerably.</li>
<li>There is much less code running on page load. One of the major issues with complex web applications is the wait on &#8216;load&#8217; for JavaScript to execute and set up the document. The two loops in the first example are nowhere to be seen in the second example.</li>
<li>&#8216;Just in time&#8217; execution. The second example does a little bit more work when the event handler is executed, but this is better than doing that work on &#8216;load&#8217; when we don&#8217;t even know if the resulting handler is going to be executed or not.</li>
<li>It&#8217;s less code. Less code means less maintenance, and less bandwidth for both your web server and your users.</li>
</ul>
<p>There&#8217;s one caveat to the above code. Getting the target element of the event is not always as simple as using <code>e.target</code>. In Internet Explorer you need to use <code>e.srcElement</code>. The easiest way of dealing with this is to use a small <code>getEventTarget</code> function. Below is what I use.</p>
<p><code><br />
function getEventTarget(e) {<br />
    var e = e || window.event;<br />
    var targ = e.target || e.srcElement;<br />
    if (targ.nodeType == 3) { // defeat Safari bug<br />
            targ = targ.parentNode;<br />
    }<br />
    return targ;<br />
}<br />
</code></p>
<p>Event delegation is a fairly well established practice when dealing with large numbers of event handlers (eg, a map with hundreds of points, all with click events attached), but in my opinion it should be the default way you go about adding and handling events. It&#8217;s a simpler, more intuitive, and more optimized way of dealing with a common pattern in client-side scripting, and it doesn&#8217;t require thousands of lines of a JavaScript library for it to be useful to you.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.andyhume.net/event-delegation-without-javascript-library/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Multimap Twitterbot</title>
		<link>http://blog.andyhume.net/multimap-twitterbot</link>
		<comments>http://blog.andyhume.net/multimap-twitterbot#comments</comments>
		<pubDate>Thu, 21 Jun 2007 23:58:19 +0000</pubDate>
		<dc:creator>ahume</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.andyhume.net/?p=206</guid>
		<description><![CDATA[A few people at Hackday presented hacks that use Twitter&#8217;s direct messaging API to interface with a third party Web Service. By far the coolest one was Colm and Richard&#8217;s that allows you to request data from eBay and Wikipedia as well as a host of useful information such as nearest cashpoints, cinemas, tubes, restaurants [...]]]></description>
			<content:encoded><![CDATA[<p>A few people at <a href="http://usabletype.com/weblog/hackday-was-some-days/">Hackday</a> presented hacks that use Twitter&#8217;s direct messaging API to interface with a third party Web Service. By far the coolest one was <a href="http://colmmcmullan.wordpress.com/2007/06/20/the-multimap-twitter-bot-what-we-did-at-hack-day/">Colm and Richard&#8217;s</a> that allows you to request data from eBay and Wikipedia as well as a host of useful information such as nearest cashpoints, cinemas, tubes, restaurants and <a href="http://www.multimap.com/twitterbot/#categories">many others</a>.</p>
<p>Want an example? How about being able to text to Twitter <code>closest atm from ec4a2dy</code>, and get back a set of walking instructions for finding the nearest cashpoint. Pretty handy I would argue.</p>
<p>Want to know if there&#8217;s anything interesting round about? Try sending <code>closest wikipedia from rome, italy</code> and that should keep you going for a bit.</p>
<h3>FireEagle</h3>
<p>The hackday bot (not currently available for public use) uses Yahoo!&#8217;s <a href="http://fireeagle.research.yahoo.com/">FireEagle</a> service to find out your current location so that you don&#8217;t have to send it to Twitter every time. This means if you can set up your GPS device or mobile to ping FireEagle your location every minute or so, you&#8217;ll never have to worry about where you are and what is around you again. You&#8217;ll simply text <code>to closest pub</code>, FireEagle will know where you are, let Multimap know so they can query their local information database and Twitter will send you back what you need. This is pretty astounding really, and I don&#8217;t know of another service right now that can offer quite the same kind of thing.</p>
<p>In my opinion FireEagle has some serious implications for the way location based services are going to work in the future, and I think what the guys built at hackday is an early prototype of what may be round the corner.</p>
<p>For added comedy value they also created a <a href="http://richardkeen.net/mm_twitterbot.mov">spoof iPhone ad</a> to show off the Twitterbot in action. Is there no end to their creative genius?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.andyhume.net/multimap-twitterbot/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hackday was some days</title>
		<link>http://blog.andyhume.net/hackday-was-some-days</link>
		<comments>http://blog.andyhume.net/hackday-was-some-days#comments</comments>
		<pubDate>Tue, 19 Jun 2007 00:00:36 +0000</pubDate>
		<dc:creator>ahume</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.andyhume.net/?p=208</guid>
		<description><![CDATA[It&#8217;s been a couple of days since hackday now, and I want to record my version of it. In summary it was the most fantastic weekend I could ever have hoped for. I had a feeling I would enjoy it, but it exceeded every expectation in every way. And it was bloody hard work. When [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been a couple of days since <a href="http://hackday.org/">hackday</a> now, and I want to record my version of it. In summary it was the most fantastic weekend I could ever have hoped for. I had a feeling I would enjoy it, but it exceeded every expectation in every way.</p>
<p>And it was bloody hard work.</p>
<p>When <a href="http://clagnut.com/">Richard</a> mentioned he had an idea for a hack that he wanted to do, I suggested we build it in <a href="http://www.djangoproject.com/">Django</a>. In hindsight that was a bit of hideous error, because it meant we didn&#8217;t have as many programmers at our disposal as we would if we&#8217;d chosen PHP. In fact, it meant we had me. And I&#8217;m not really a proper programmer. It was about 2am in the morning when I realised I might have bitten off more than I could chew, and that 2 hours was about as much sleep as I was going to get that night.</p>
<p>In the end we just about got away with it, and it allowed Rich to create a really fantastic UI and prepare a succinct presentation that really nailed the essence of what the app was all about.</p>
<p>Anyway, our hack was just one miniscule part of the whole experience. I&#8217;ve many memories and emotions from that long weekend. The incredible venue, with it&#8217;s <a href="http://www.flickr.com/photos/algo/12677765/">panoramic views of London</a>. The dark, misty atmosphere during arrival and the opening presentations. The venue being struck by lightening. <a href="http://www.flickr.com/photos/isofarro/563559636/">People sitting under umbrellas</a> as the rain poured through the open roof. Drinking Guiness with friends while watching hackers emerge from the West Hall into the foyer, dragging bean bags and laptops behind them. Lying on the floor watching Doctor Who with 300 hundred people applauding the Doctor&#8217;s blogging gag. The incredible, buzzing, crackling atmosphere of people coding through the night. <a href="http://blog.johnmckerrell.com/">John</a>, <a href="http://richardkeen.net/">Richard</a> and <a href="http://colmmcmullan.wordpress.com/">Colm</a> showing up at 10am on Sunday morning, and laughing &#8220;Have you two moved in the last 20 hours?&#8221; (<a href="http://www.flickr.com/photos/adactio/559412282/">we hadn&#8217;t</a>). The crunch last few hours before presentations when we had to cut out half of what our hack did to get something to demo. Thirty minutes before Richard&#8217;s presentation when he turned to me and said, &#8220;It doesn&#8217;t work. It just doesn&#8217;t work!&#8221;. And finally, winning the Most Useful Hack award.</p>
<p>Without getting too emotional about things, it was one hell of a weekend which will stay with me for ever.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.andyhume.net/hackday-was-some-days/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hack on</title>
		<link>http://blog.andyhume.net/hack-on</link>
		<comments>http://blog.andyhume.net/hack-on#comments</comments>
		<pubDate>Sun, 17 Jun 2007 04:48:06 +0000</pubDate>
		<dc:creator>ahume</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.andyhume.net/?p=212</guid>
		<description><![CDATA[It&#8217;s coming up to five O&#8217;Clock in the morning at Alexandra Palace. I&#8217;m still going stong to be honest, but I know I&#8217;m going to be frazzled in about 12 hours time. There&#8217;s still a fair few fellow hackers up and working, but plenty of others scattered around the floor and the walls of the [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s coming up to five O&#8217;Clock in the morning at Alexandra Palace. I&#8217;m still going stong to be honest, but I know I&#8217;m going to be frazzled in about 12 hours time.</p>
<p>There&#8217;s still a fair few fellow hackers up and working, but plenty of others scattered around the floor and the walls of the West Hall. Most trying to leverage two odd shaped bean-bags into various sleeping tools.</p>
<p>The atmosphere has been great all afternoon and evening. It was clear it was going to be a memorable day from the moment lightening struck the mast on top of the palace, accompanied by a huge explosion. The windows in the roof of the hall then proceeded to open and flood thousands of pounds of equipment with rain water. That was proceeded by a few hours of Wi-Fi free activities while BT fixed us up again.</p>
<p>Anyway, back to work for me. I&#8217;m building <em>something</em>. I&#8217;ve totally forgotten what it&#8217;s meant to do though. It&#8217;s got a database and a textfield I think. And some blue in it.</p>
<p><strong>Update:</strong> It didn&#8217;t have any blue in it (that was a weird thing going on with <a href="http://clagnut.com">Richard&#8217;s</a> Mac Book screen), but it must have had something, as it was awarded the Yahoo! Most Useful Hack Award (or something like that). That was a bit of unexpected fun at the end of a very long and inspiring two days.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.andyhume.net/hack-on/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hackday tomorrow</title>
		<link>http://blog.andyhume.net/hackday-tomorrow</link>
		<comments>http://blog.andyhume.net/hackday-tomorrow#comments</comments>
		<pubDate>Fri, 15 Jun 2007 15:08:08 +0000</pubDate>
		<dc:creator>ahume</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.andyhume.net/?p=215</guid>
		<description><![CDATA[I&#8217;ll be up at Alexandra Palace tomorrow at the BBC/Yahoo! Hackday. I&#8217;m excited about it even thought I haven&#8217;t really got any plans or ideas for things to work on. The atmosphere at this amazing venue should be pretty special, and I can&#8217;t wait to see some of the cool stuff that is going to [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ll be up at <a href="http://www.alexandrapalace.com/">Alexandra Palace</a> tomorrow at the <a href="http://www.hackday.org/">BBC/Yahoo! Hackday</a>. I&#8217;m excited about it even thought I haven&#8217;t really got any plans or ideas for things to work on. The atmosphere at this amazing venue should be pretty special, and I can&#8217;t wait to see some of the cool stuff that is going to be created over the weekend.</p>
<p>Having said that, if anyone&#8217;s got a need for some web development skillz, or in-depth knowledge of <a href="http://www.multimap.com/apidocs/">mapping API</a>s,  give me a shout. I&#8217;m probably going to have to get involved somewhere or they might just chuck me out.</p>
<p>See you there?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.andyhume.net/hackday-tomorrow/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Multimap Open API</title>
		<link>http://blog.andyhume.net/multimap-open-api</link>
		<comments>http://blog.andyhume.net/multimap-open-api#comments</comments>
		<pubDate>Wed, 30 May 2007 00:09:34 +0000</pubDate>
		<dc:creator>ahume</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.andyhume.net/?p=217</guid>
		<description><![CDATA[At the risk of going overboard with posts about maps, there&#8217;s a couple of other things that came out of Multimap this week that I want to mention. Yesterday saw the release of the Multimap Open API, a JavaScript interface to much of Multimap&#8217;s core mapping functionality, and the power behind mapping on sites such [...]]]></description>
			<content:encoded><![CDATA[<p>At the risk of going overboard with posts about maps, there&#8217;s a couple of other things that came out of Multimap this week that I want to mention.</p>
<p>Yesterday saw the release of the <a href="http://www.multimap.com/openapi/">Multimap Open API</a>, a JavaScript interface to much of Multimap&#8217;s core mapping functionality, and the power behind mapping on sites such as <a href="http://maps.yell.com">Yell.com</a>.</p>
<p>The exciting thing about this version however is that it&#8217;s available to developers for use in mash-ups and other non-commercial projects. If you want to have a play with it, go <a href="http://www.multimap.com/openapi/signup/">sign-up</a> for a key and take a look at some of the <a href="http://www.multimap.com/openapidocs/1.2/" title="Multimap Open API documentation">documentation</a>.</p>
<p>In the final piece of map related news, <a href="http://blog.johnmckerrell.com/">John McKerrell</a>, a lead engineer on the above mentioned API, has knocked together a <a href="http://blog.johnmckerrell.com/2007/05/30/maps-maps-maps-coming-soon/">neat bookmarklet</a> which allows you to embed <a href="http://www.openstreetmap.org/">Open Street Map</a> maps into the new <a href="http://www.multimap.com/maps/">Multimap website</a>. This means you can get the richness of Multimap&#8217;s geocoding, routing, and useful information search on top of the <abbr title="Open Street Map">OSM</abbr> map tiles.</p>
<p>With Multimap being a sponsor of <abbr title="Open Street Map">OSM</abbr>, whose to say you won&#8217;t see this feature embedded into the site in the near future. It would be a great way to deliver the <abbr title="Open Street Map">OSM</abbr> concept, and indeed the data, to the mainstream.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.andyhume.net/multimap-open-api/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Multimap raster maps</title>
		<link>http://blog.andyhume.net/multimap-raster-maps</link>
		<comments>http://blog.andyhume.net/multimap-raster-maps#comments</comments>
		<pubDate>Sun, 27 May 2007 00:10:56 +0000</pubDate>
		<dc:creator>ahume</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.andyhume.net/?p=219</guid>
		<description><![CDATA[One of my favourite features of the new Multimap website is the different varieties of map data you can pull into the map viewer. Rather than just one layer of rendered vector data seen on many web-based maps, Multimap allows you to select from various other data sets depending on your location. For example, if [...]]]></description>
			<content:encoded><![CDATA[<p>One of my favourite features of the new <a href="http://www.multimap.com/maps/">Multimap website</a> is the different varieties of map data you can pull into the map viewer. Rather than just one layer of rendered vector data seen on many web-based maps, Multimap allows you to select from various other data sets depending on your location.</p>
<p>For example, if you&#8217;re a born-and-bred Londoner like me, you&#8217;re probably familiar with the magnificent A-Z style maps from <a href="http://www.bartholomewmaps.com/">Collins Bartholomew</a>. These have always been available on the web from various sites, but seeing them in all their slippy glory on a high resolution monitor is a truly glorious sight.</p>
<p>My other favourite is the classic pink <a href="http://leisure.ordnancesurvey.co.uk/leisure/ItemDetails.jsp?item=os_landranger">Land Ranger OS maps</a> favoured by walkers and cyclists across Britain. Take a look at this area of the <a href="http://www.multimap.com/maps/#t=l&#038;map=54.47611,-3.10924|14|4&#038;dp=841,801">Lake District</a> and try swapping between the data types to see exactly the kind of extra detail the raster maps give you.</p>
<p>To check if there are other map data-sets available in your area you can hover over the map button at the top left of the map. If data is available a small pop-out preview will appear which you can select to change the map style. The UI&#8217;s not perfect, and there&#8217;s probably a better way to expose this feature, but we&#8217;re working on that.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.andyhume.net/multimap-raster-maps/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Presentational markup in HTML 5</title>
		<link>http://blog.andyhume.net/presentational-markup-in-html-5</link>
		<comments>http://blog.andyhume.net/presentational-markup-in-html-5#comments</comments>
		<pubDate>Sun, 06 May 2007 00:12:14 +0000</pubDate>
		<dc:creator>ahume</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.andyhume.net/?p=221</guid>
		<description><![CDATA[I&#8217;ve been contributing to the W3C HTML Working Group working on the next version of HTML. I say contributing, I&#8217;ve found it tough enough keeping up with the pure volume of mail the group generates to make much of a contribution so far. Also, a lot of the initial discussions have been around some pretty [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been contributing to the W3C <a href="http://www.w3.org/html/wg/">HTML Working Group</a> working on the next version of HTML. I say contributing, I&#8217;ve found it tough enough keeping up with the pure volume of mail the group generates to make much of a contribution so far. Also, a lot of the initial discussions have been around some pretty high-level design principles which I&#8217;m leaving to the proper experts for the moment.</p>
<p>One thought-provoking topic that I have been following closely however is the <code>&lt;indent&gt;</code> vs. <code>&lt;blockquote&gt;</code> discussion. It&#8217;s not worth going in to the specifics of that conversation here, but you can find that in the <a href="http://lists.w3.org/Archives/Public/public-html/">archives</a> if you want to follow it. What it has raised in my mind though is the question of using presentational mark-up in HTML.</p>
<p>Most of what I&#8217;ve learnt about Web Standards like XHTML and HTML teaches that mark-up is for giving structure and meaning to content, and that CSS is for presenting that content in a web browser or other environment of human consumption. However, history tells us that HTML is not used like that. The <code>&lt;blockquote&gt;</code> example is a good one &#8212; it&#8217;s regularly used to indent content in the middle of prose whether the content inside the <code>&lt;blockquote&gt;</code> element is really a blockquote at all.</p>
<p>The question is, would it be better for the Semantic Web if, instead of less knowledgeable page authors using <code>&lt;blockquote&gt;</code> incorrectly, an element like <code>&lt;indent&gt;</code> was created which allowed authors to simply indent content with no implied semantics?</p>
<p>I think most people&#8217;s reaction to this is: No, use CSS to indent the content. And that was my initial reaction as well. However, following the argument through I think I can see both sides of the argument. Why pollute the web with incorrectly used HTML when we can give authors that want it a semantic-free mechanism for indenting their content?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.andyhume.net/presentational-markup-in-html-5/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
