<?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>Barklund.org &#187; API</title>
	<atom:link href="http://www.barklund.org/blog/category/trends/mashup/api/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.barklund.org/blog</link>
	<description>work smarter when building current web trends</description>
	<lastBuildDate>Wed, 26 May 2010 09:49:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Why events suck in ActionScript 3</title>
		<link>http://www.barklund.org/blog/2010/05/07/events-suck-actionscript-3/</link>
		<comments>http://www.barklund.org/blog/2010/05/07/events-suck-actionscript-3/#comments</comments>
		<pubDate>Thu, 06 May 2010 22:04:45 +0000</pubDate>
		<dc:creator>Barklund</dc:creator>
				<category><![CDATA[API]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Trends]]></category>

		<guid isPermaLink="false">http://www.barklund.org/blog/?p=788</guid>
		<description><![CDATA[I&#8217;ve had it with events in ActionScript 3! They are annoying to structure, annoying to extend, annoying to dispatch but most importantly annoying to consume &#8211; and I consume events a lot more than write or dispatch my own. But! The idea of listening for stuff I really do like. I have some ideas about [...]


Related posts:<ol><li><a href='http://www.barklund.org/blog/2009/11/23/link-sharing-spam-facebook/' rel='bookmark' title='Permanent Link: Link sharing spam on Facebook'>Link sharing spam on Facebook</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<div id="attachment_804" class="wp-caption alignright" style="width: 336px"><a href="http://www.barklund.org/blog/wp-content/uploads/2010/05/ignoring_the_event.png"><img src="http://www.barklund.org/blog/wp-content/uploads/2010/05/ignoring_the_event.png" alt="" title="Ignoring the event" width="326" height="93" class="size-full wp-image-804" /></a><p class="wp-caption-text">I actually took this from production code!</p></div>
<p>I&#8217;ve had it with events in ActionScript 3! They are annoying to structure, annoying to extend, annoying to dispatch but most importantly annoying to consume &#8211; and I consume events a lot more than write or dispatch my own.</p>
<p>But! The idea of listening for stuff I really do like. I have some ideas about how this could be done a lot easier. Oh, and please stick around until the very end of this post.</p>
<p><span id="more-788"></span></p>
<h3 id="toc-background">Background</h3>
<p>For those who can&#8217;t remember exactly, events in AS3 are consumed by listening for certain events and passing a function, that will be called when this event occurs. The function will <strong>always</strong> be invoked with the event type, that you listen for &#8211; and only that argument will be given to the callback. You cannot define extra arguments in any way or not accept the event argument. Let&#8217;s for example listen for when the use clicks a button &#8211; which is the <code>MouseEvent.CLICK</code> event (of type <code>MouseEvent</code> of course):</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> <span style="color: #004993;">init</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
  <span style="color: #6699cc; font-weight: bold;">var</span> myButton<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Sprite</span> = <span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">Sprite</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
  ...
  myButton.<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">MouseEvent</span>.<span style="color: #004993;">CLICK</span>, buttonPressed<span style="color: #000000;">&#41;</span>;
  ...
<span style="color: #000000;">&#125;</span>
<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> buttonPressed<span style="color: #000000;">&#40;</span>me<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">MouseEvent</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
  <span style="color: #004993;">trace</span><span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;the button has been pressed, hurray&quot;</span><span style="color: #000000;">&#41;</span>;
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>We abidingly accept the <code>me:MouseEvent</code> argument even though we don&#8217;t intend to use it.</p>
<p>The event object has information about the event, about who sent it, information related to the bubbling nature of events (that very few people ever use in ActionScript 3) and additional specific attributes only relevant for specific events. For instance, if we have several buttons representing different related actions, we can examine the <code>event.target</code property to see which of the dispatcher send the event:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> selectRed<span style="color: #000000; font-weight: bold;">:</span>ColorButton;
<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> selectGreen<span style="color: #000000; font-weight: bold;">:</span>ColorButton ;
<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> selectBlue<span style="color: #000000; font-weight: bold;">:</span>ColorButton;
<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> <span style="color: #004993;">init</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
  ...
  selectRed.<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">MouseEvent</span>.<span style="color: #004993;">CLICK</span>, selectColor<span style="color: #000000;">&#41;</span>;
  selectGreen.<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">MouseEvent</span>.<span style="color: #004993;">CLICK</span>, selectColor<span style="color: #000000;">&#41;</span>;
  selectBlue.<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">MouseEvent</span>.<span style="color: #004993;">CLICK</span>, selectColor<span style="color: #000000;">&#41;</span>;
  ...
<span style="color: #000000;">&#125;</span>
<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> selectColor<span style="color: #000000;">&#40;</span>me<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">MouseEvent</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
  <span style="color: #6699cc; font-weight: bold;">var</span> <span style="color: #004993;">color</span><span style="color: #000000; font-weight: bold;">:</span>ColorButton = me.<span style="color: #004993;">target</span> <span style="color: #0033ff; font-weight: bold;">as</span> ColorButton;
  <span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight: bold;">!</span><span style="color: #004993;">color</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
    <span style="color: #0033ff; font-weight: bold;">throw</span> <span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">Error</span><span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;color selected was not actually a color&quot;</span><span style="color: #000000;">&#41;</span>;
  <span style="color: #000000;">&#125;</span>
  <span style="color: #0033ff; font-weight: bold;">switch</span> <span style="color: #000000;">&#40;</span><span style="color: #004993;">color</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
    <span style="color: #0033ff; font-weight: bold;">case</span> selectRed<span style="color: #000000; font-weight: bold;">:</span> <span style="color: #004993;">trace</span><span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;you chose a red Papa Smurf&quot;</span><span style="color: #000000;">&#41;</span>; <span style="color: #0033ff; font-weight: bold;">break</span>;
    <span style="color: #0033ff; font-weight: bold;">case</span> selectGreen<span style="color: #000000; font-weight: bold;">:</span> <span style="color: #004993;">trace</span><span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;you chose a green Papa Smurf&quot;</span><span style="color: #000000;">&#41;</span>; <span style="color: #0033ff; font-weight: bold;">break</span>;
    <span style="color: #0033ff; font-weight: bold;">case</span> selectBlue<span style="color: #000000; font-weight: bold;">:</span> <span style="color: #004993;">trace</span><span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;you chose a blue Papa Smurf&quot;</span><span style="color: #000000;">&#41;</span>; <span style="color: #0033ff; font-weight: bold;">break</span>;
  <span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>Here, we do use the <code>MouseEvent</code>-object, but we cast the target property to the type we expect it to have and then we need to check, if the cast went well. Because, technically we could have used the same function as a listener for something else somewhere else (even though we know we didn't) and thus <code>target</code> could have been something entirely different.</p>
<h3 id="toc-personal-experiences">Personal experiences</h3>
<p>I've just checked a recent, larger project with 185 (home-made) classes. In general I try to minimize my event usage, but a lot of things I have to use events for event though I don't really need them, so I ran a simple script counting how many times I had a function that took an event as an argument, and how many of these actually used the event object. The result was 121 functions accepting an event as argument (10 of those had default null values), and in only 4 of those I actually used the event argument (one of them a <code>KeyboardEvent</code>, the others were all the same home-made <code>PageEvent</code>). 83 of the events accepted were <code>MouseEvent</code>s (which is no surprise), and never was the <code>me:MouseEvent</code> variable used in the function body.</p>
<p>Then, I tested an even earlier project from before I started minimizing event usage (almost maximized it back then). It consisted of 50 (home-made) classes. It had 113 functions (a lot more per class than the above) accepting event arguments (16 of those defaulting to null) and 74 of those were <code>MouseEvent</code>s. And this time around, I used the event argument 25 times, but 18 of these usages were accessing <code>event.target</code> or <code>event.data</code> and casting it to the right class. Thus, yes I did use the event argument in some cases (22% of the time I accepted an argument), but in most of them I still had to do manual casting of the <code>event.target</code> (or <code>event.data</code>) attribute to get the type I knew I was accessing. This leaves only 7 "true" usages or about 6%. Please see the background section about why using the event object for casting only just moves the problem around and makes the code even more verbose.</p>
<h3 id="toc-dream-scenario">Dream scenario</h3>
<p>So, what would I like instead? Something intelligent, that allows me to accept the arguments I need <em>when</em> I need them. For instance, take this snippet here:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> <span style="color: #004993;">close</span><span style="color: #000000; font-weight: bold;">:</span>CloseButton;
<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> <span style="color: #004993;">init</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
  <span style="color: #004993;">close</span>.<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">MouseEvent</span>.<span style="color: #004993;">CLICK</span>, closeDialog<span style="color: #000000;">&#41;</span>;
<span style="color: #000000;">&#125;</span>
<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> closeDialog<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
  someDialog.fadeToOblivion<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>It is simple, I do not need any argument, so I do not expect one.</p>
<p>A often used situation is when you have several instances of the same type and attach the same listener to all of these, then you use the event argument's target attribute for switching on which instance was invoked and handling the result correspondingly:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> downloadLowRes<span style="color: #000000; font-weight: bold;">:</span>DownloadButton;
<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> downloadMediumRes<span style="color: #000000; font-weight: bold;">:</span>DownloadButton;
<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> downloadHighRes<span style="color: #000000; font-weight: bold;">:</span>DownloadButton;
<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> <span style="color: #004993;">init</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
  downloadLowRes.<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">MouseEvent</span>.<span style="color: #004993;">CLICK</span>, <span style="color: #004993;">download</span><span style="color: #000000;">&#41;</span>;
  downloadMediumRes.<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">MouseEvent</span>.<span style="color: #004993;">CLICK</span>, <span style="color: #004993;">download</span><span style="color: #000000;">&#41;</span>;
  downloadHighRes.<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">MouseEvent</span>.<span style="color: #004993;">CLICK</span>, <span style="color: #004993;">download</span><span style="color: #000000;">&#41;</span>;
<span style="color: #000000;">&#125;</span>
<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> <span style="color: #004993;">download</span><span style="color: #000000;">&#40;</span>db<span style="color: #000000; font-weight: bold;">:</span>DownloadButton<span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
  <span style="color: #0033ff; font-weight: bold;">switch</span> <span style="color: #000000;">&#40;</span>db<span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
    <span style="color: #0033ff; font-weight: bold;">case</span> downloadLowRes<span style="color: #000000; font-weight: bold;">:</span> <span style="color: #004993;">open</span><span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;file_360p.avi&quot;</span><span style="color: #000000;">&#41;</span>; <span style="color: #0033ff; font-weight: bold;">break</span>;
    <span style="color: #0033ff; font-weight: bold;">case</span> downloadMediumRes<span style="color: #000000; font-weight: bold;">:</span> <span style="color: #004993;">open</span><span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;file_720p.avi&quot;</span><span style="color: #000000;">&#41;</span>; <span style="color: #0033ff; font-weight: bold;">break</span>;
    <span style="color: #0033ff; font-weight: bold;">case</span> downloadHighRes<span style="color: #000000; font-weight: bold;">:</span> <span style="color: #004993;">open</span><span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;file_1080p.avi&quot;</span><span style="color: #000000;">&#41;</span>; <span style="color: #0033ff; font-weight: bold;">break</span>;
  <span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>The function expects a reference to the button clicked - not to an event, who references the button clicked, because only the actual button reference is necessary.</p>
<p>Finally, a more elaborate example of different other component listeners expecting just what they need and nothing else:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> <span style="color: #004993;">init</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
  <span style="color: #009900;">// listen for selections in a dropdown</span>
  countryDropdown.<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">Event</span>.<span style="color: #004993;">SELECT</span>, selectCountry<span style="color: #000000;">&#41;</span>;
&nbsp;
  <span style="color: #009900;">// listen for checkbox changes</span>
  acceptTermsCheckbox.<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">Event</span>.<span style="color: #004993;">CHANGE</span>, acceptTerms<span style="color: #000000;">&#41;</span>;
&nbsp;
  <span style="color: #009900;">// listen for focus changes between password input fields</span>
  passwordInput.<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">FocusEvent</span>.<span style="color: #004993;">FOCUS_OUT</span>, checkPasswords<span style="color: #000000;">&#41;</span>;
  passwordConfirmInput.<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">FocusEvent</span>.<span style="color: #004993;">FOCUS_OUT</span>, checkPasswords<span style="color: #000000;">&#41;</span>;
&nbsp;
  <span style="color: #009900;">// listen for three different radio buttons changing</span>
  languageDanish.<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">Event</span>.<span style="color: #004993;">SELECT</span>, selectLanguage<span style="color: #000000;">&#41;</span>;
  languageSwedish.<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">Event</span>.<span style="color: #004993;">SELECT</span>, selectLanguage<span style="color: #000000;">&#41;</span>;
  languageNorwegian.<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">Event</span>.<span style="color: #004993;">SELECT</span>, selectLanguage<span style="color: #000000;">&#41;</span>;
&nbsp;
  <span style="color: #009900;">// listen for submit button presses</span>
  submitButton.<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">MouseEvent</span>.<span style="color: #004993;">CLICK</span>, submit<span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> selectCountry<span style="color: #000000;">&#40;</span>country<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">String</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
  selectedCountry = country;
<span style="color: #000000;">&#125;</span>
<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> acceptTerms<span style="color: #000000;">&#40;</span>accepted<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Boolean</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
  termsAccepted = accepted;
<span style="color: #000000;">&#125;</span>
<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> checkPassword<span style="color: #000000;">&#40;</span>fe<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">FocusEvent</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
  <span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight: bold;">!</span><span style="color: #000000;">&#40;</span>fe.<span style="color: #004993;">relatedObject</span> <span style="color: #0033ff; font-weight: bold;">in</span> <span style="color: #000000;">&#91;</span>passwordInput, passwordConfirmInput<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
    <span style="color: #009900;">// focus moved away from either input field</span>
    <span style="color: #009900;">// show mismatch alert if texts are not the same</span>
    passwordMismatchAlert.<span style="color: #004993;">visible</span> = passwordInput.<span style="color: #004993;">text</span> <span style="color: #000000; font-weight: bold;">!</span>== passwordConfirmInput.<span style="color: #004993;">text</span>;
  <span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> selectLanguage<span style="color: #000000;">&#40;</span><span style="color: #004993;">language</span><span style="color: #000000; font-weight: bold;">:</span>LanguageRadioButton<span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
  <span style="color: #0033ff; font-weight: bold;">switch</span> <span style="color: #000000;">&#40;</span><span style="color: #004993;">language</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
    <span style="color: #0033ff; font-weight: bold;">case</span> languageDanish<span style="color: #000000; font-weight: bold;">:</span> <span style="color: #004993;">load</span><span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;texts_da.xml&quot;</span><span style="color: #000000;">&#41;</span>; <span style="color: #0033ff; font-weight: bold;">break</span>;
    <span style="color: #0033ff; font-weight: bold;">case</span> languageSwedish<span style="color: #000000; font-weight: bold;">:</span> <span style="color: #004993;">load</span><span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;texts_se.xml&quot;</span><span style="color: #000000;">&#41;</span>; <span style="color: #0033ff; font-weight: bold;">break</span>;
    <span style="color: #0033ff; font-weight: bold;">case</span> languageNorwegian<span style="color: #000000; font-weight: bold;">:</span> <span style="color: #004993;">load</span><span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;texts_no.xml&quot;</span><span style="color: #000000;">&#41;</span>; <span style="color: #0033ff; font-weight: bold;">break</span>;
  <span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> submit<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
  sendForm<span style="color: #000000;">&#40;</span>withParameters<span style="color: #000000;">&#41;</span>;
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>One notable example among the above is, that if an event is needed, you can always have it. I only dislike events, when I don't need them but have to accept them anyway. When I actually need it, they do come quite handy - like the <code>FocusEvent.relatedObject</code> used in the above example.<br />
<h3 id="toc-announcement">Announcement</h3>
<p>Actually, I have made the above work! It is a dirty, dirty triple-hack, but it feels quite sweet to use on both ends. I need to clean it up a lot, need to come up with a good name for it and need to benchmark it to see, that it doesn't kill performance (too much).</p>
<p>So please, stay tuned. But do not fear commenting on the above ideas anyway.</p>


<p>Related posts:<ol><li><a href='http://www.barklund.org/blog/2009/11/23/link-sharing-spam-facebook/' rel='bookmark' title='Permanent Link: Link sharing spam on Facebook'>Link sharing spam on Facebook</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.barklund.org/blog/2010/05/07/events-suck-actionscript-3/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Vimeo highly vulnerable to CSRF attacks &#8211; now fixed</title>
		<link>http://www.barklund.org/blog/2010/02/12/vimeo-vulnerable-csrf/</link>
		<comments>http://www.barklund.org/blog/2010/02/12/vimeo-vulnerable-csrf/#comments</comments>
		<pubDate>Fri, 12 Feb 2010 00:33:36 +0000</pubDate>
		<dc:creator>Barklund</dc:creator>
				<category><![CDATA[API]]></category>
		<category><![CDATA[Flash Platform]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.barklund.org/blog/?p=683</guid>
		<description><![CDATA[I recently found, that vimeo.com had a cross-domain policy, that allowed anyone to connect, which was an open invitation for CSRF attacks. I alerted them to the issue, and it has now been fixed. As has been said over and over, allow-all cross-domain policy files should never be used on domains, where users log on. [...]


Related posts:<ol><li><a href='http://www.barklund.org/blog/2009/07/15/sys-con-aral-balkan-stupidity-ignorance/' rel='bookmark' title='Permanent Link: Sys-Con once again attacks Aral Balkan with stupidity and ignorance'>Sys-Con once again attacks Aral Balkan with stupidity and ignorance</a></li>
<li><a href='http://www.barklund.org/blog/2009/11/23/link-sharing-spam-facebook/' rel='bookmark' title='Permanent Link: Link sharing spam on Facebook'>Link sharing spam on Facebook</a></li>
<li><a href='http://www.barklund.org/blog/2010/01/10/re-youtube-january-2010-idea/' rel='bookmark' title='Permanent Link: Re-Youtube &#8211; January 2010 Ideas'>Re-Youtube &#8211; January 2010 Ideas</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p> I recently found, that <a href="http://vimeo.com/">vimeo.com</a> had a cross-domain policy, that allowed anyone to connect, which was an open invitation for CSRF attacks. I alerted them to the issue, and it has now been fixed.</p>
<p><span id="more-683"></span></p>
<p>As has been said <a href="http://shiflett.org/blog/2006/sep/the-dangers-of-cross-domain-ajax-with-flash">over</a> and <a href="http://shiflett.org/blog/2009/nov/facebook-myspace-and-crossdomain.xml">over</a>, allow-all cross-domain policy files should never be used on domains, where users log on. This leaves the site open for <a href="http://en.wikipedia.org/wiki/Cross-site_request_forgery">CSRF attacks</a> from flash clients on different domains, that can load pages from the target domain utilizing the user&#8217;s automated log-in and thus the flash load&#8217;s the pages, like the user himself would. This not only allows the flash file to (without the user knowing it) load all his private information from the target site, but potentially also post data to the site, which could include updating the user&#8217;s password, email, profile or in worse circumstances add/remove content or even make purchases, if the target site has any feature like that.
<p>This has been done against large sites like Facebook, MySpace, Adobe and Youtube &#8211; the latter was ironically <a href="http://www.vimeo.com/1762861">documented via a video on Vimeo</a> by Jeremiah Grossman.</p>
<p>In Vimeo&#8217;s case, you can &#8220;only&#8221; upload videos, but an attacker could actually perform any action on the user&#8217;s behalf, that the user himself could &#8211; including changing the user&#8217;s bio, add/remove videos, comment on/like other videos etc. I made a <a href="http://barklund.org/examples/fun_with_vimeo/fun_with_vimeo.html">small, seemingly innocent page</a>, that included a hidden flash element, which first loaded the user&#8217;s info from <a href="http://vimeo.com/settings/personal">vimeo.com/settings/personal</a> and then re-posted this info back to the same page adding an extra line to the bio &#8211; namely &#8220;You have been bwned&#8221;, as it can seen on <a href="http://vimeo.com/barklund">my vimeo profil</a>e.</p>
<p>Someone at vimeo has clearly seen this demo, (<a href="http://vimeo.com/julia">Julia Quinn has indeed</a>) and now <a href="http://vimeo.com/crossdomain.xml">the cross-domain policy only allows *.vimeo.com</a> (the new file is served with a Last-Modified timestamp of <code>Thu, 11 Feb 2010 23:32:05 GMT</code>, so the change is only an hour old). The strange thing is, that if you go back via <a href="http://web.archive.org/">the Wayback Machine from archive.org</a>, you can see, that they had much better security back <a href="http://web.archive.org/web/20070224144110/http://www.vimeo.com/crossdomain.xml">in 2007</a> and <a href="http://web.archive.org/web/20080610033603/http://www.vimeo.com/crossdomain.xml">2008</a> (html render fails, but view source), so I have no idea how such a relaxed policy suddenly appeared on their site. <a href="http://74.125.77.132/search?q=cache:Kssyyl60UAUJ:www.vimeo.com/crossdomain.xml">Google&#8217;s cache still show the allow-all policy</a> as it dates back to January 20th (again, view source to see contents).</p>
<p>I found this while playing around attempting to load videos from Vimeo directly in a custom FLV-player on a different host than vimeo.com and found that this was actually possible, as all videos from their site are hosted from av.vimeo.com and this has an allow-all cross-domain policy. And this makes sense, as this domain is only used for serving videos and nothing else &#8211; no cookies or authentication info shared to this domain.</p>
<p>I haven&#8217;t heard from Vimeo yet &#8211; neither stating that they are looking at the issue nor that it has been fixed. I only post this after now seeing, that it has been fixed.</p>


<p>Related posts:<ol><li><a href='http://www.barklund.org/blog/2009/07/15/sys-con-aral-balkan-stupidity-ignorance/' rel='bookmark' title='Permanent Link: Sys-Con once again attacks Aral Balkan with stupidity and ignorance'>Sys-Con once again attacks Aral Balkan with stupidity and ignorance</a></li>
<li><a href='http://www.barklund.org/blog/2009/11/23/link-sharing-spam-facebook/' rel='bookmark' title='Permanent Link: Link sharing spam on Facebook'>Link sharing spam on Facebook</a></li>
<li><a href='http://www.barklund.org/blog/2010/01/10/re-youtube-january-2010-idea/' rel='bookmark' title='Permanent Link: Re-Youtube &#8211; January 2010 Ideas'>Re-Youtube &#8211; January 2010 Ideas</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.barklund.org/blog/2010/02/12/vimeo-vulnerable-csrf/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Turn (Closed) Content Into an API &#8211; January 2010 Ideas</title>
		<link>http://www.barklund.org/blog/2010/01/28/turn-content-into-api-january-2010-idea/</link>
		<comments>http://www.barklund.org/blog/2010/01/28/turn-content-into-api-january-2010-idea/#comments</comments>
		<pubDate>Thu, 28 Jan 2010 08:00:56 +0000</pubDate>
		<dc:creator>Barklund</dc:creator>
				<category><![CDATA[API]]></category>
		<category><![CDATA[January 2010 Ideas]]></category>
		<category><![CDATA[Online Rights]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://www.barklund.org/blog/?p=675</guid>
		<description><![CDATA[The twenty-eighth idea for my 365 social ideas is about the open web and about &#8220;forcing&#8221; classic websites to export their data. Imagine sites with lots of useful information, that is frequently updated, but is hidden away behind forms, in PDF&#8217;s or in hard-to-scrape tables. Then imagine a website, where you could provide this address, [...]


Related posts:<ol><li><a href='http://www.barklund.org/blog/2010/01/11/coordinate-proxy-january-2010-idea/' rel='bookmark' title='Permanent Link: Coordinate-Proxy &#8211; January 2010 Ideas'>Coordinate-Proxy &#8211; January 2010 Ideas</a></li>
<li><a href='http://www.barklund.org/blog/2010/01/18/open-data-january-2010-idea/' rel='bookmark' title='Permanent Link: Open Data &#8211; January 2010 Ideas'>Open Data &#8211; January 2010 Ideas</a></li>
<li><a href='http://www.barklund.org/blog/2010/01/04/social-subway-january-2010-idea/' rel='bookmark' title='Permanent Link: Social Subway &#8211; January 2010 Ideas'>Social Subway &#8211; January 2010 Ideas</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>The twenty-eighth idea for my <a href="/blog/365ideas/" title="365 Social Ideas from Barklund.org">365 social ideas</a> is about the <a href="/blog/2010/01/18/open-data-january-2010-idea/">open web</a> and about &#8220;forcing&#8221; classic websites to export their data. Imagine sites with lots of useful information, that is frequently updated, but is hidden away behind forms, in PDF&#8217;s or in hard-to-scrape tables. Then imagine a website, where you could provide this address, and give it some guidance as to how to input data in forms and how to interpret the results. And then imagine, that this website would act as a proxy with this interaction described as a simple, queryable API and then behind the scenes would fetch data from the original website.</p>
<p><span id="more-675"></span></p>
<p>There are of course a lot of legal issues, and such a service should probably obey robots.txt. And there should be a very clear opt-out possibility for websites that have been targeted in user-contributed additions &#8211; maybe even moderation before the services are publicly available. It should not be seen as an attack vector, as a proxy method for illegal purposes or anything like that, but simply as a way of &#8220;helping&#8221; free information to be used freely.</p>
<h4 id="toc-why">Why?</h4>
<p>A lot of data on the web is hidden in the so-called <a href="http://en.wikipedia.org/wiki/Deep_web">&#8220;deep web&#8221;</a> behind forms or in inaccessible parts of websites. With a service like the above-mentioned, this would suddenly not only become visible and indexable, but even queryable.</p>
<h4 id="toc-whats-next">What&#8217;s next?</h4>
<p>Do with this idea whatever you like &#8211; expand, implement, trash or forget. Just remember, that if you use it in anyway make sure to attribute me according to the Creative Commons Attribution 3.0 License, that all these <a href="/blog/365ideas" title="365 Social Ideas from Barklund.org">365 Social Ideas</a> are published under.</p>


<p>Related posts:<ol><li><a href='http://www.barklund.org/blog/2010/01/11/coordinate-proxy-january-2010-idea/' rel='bookmark' title='Permanent Link: Coordinate-Proxy &#8211; January 2010 Ideas'>Coordinate-Proxy &#8211; January 2010 Ideas</a></li>
<li><a href='http://www.barklund.org/blog/2010/01/18/open-data-january-2010-idea/' rel='bookmark' title='Permanent Link: Open Data &#8211; January 2010 Ideas'>Open Data &#8211; January 2010 Ideas</a></li>
<li><a href='http://www.barklund.org/blog/2010/01/04/social-subway-january-2010-idea/' rel='bookmark' title='Permanent Link: Social Subway &#8211; January 2010 Ideas'>Social Subway &#8211; January 2010 Ideas</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.barklund.org/blog/2010/01/28/turn-content-into-api-january-2010-idea/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Infographic Charting Service &#8211; January 2010 Ideas</title>
		<link>http://www.barklund.org/blog/2010/01/26/infographic-charting-service-january-2010-idea/</link>
		<comments>http://www.barklund.org/blog/2010/01/26/infographic-charting-service-january-2010-idea/#comments</comments>
		<pubDate>Tue, 26 Jan 2010 08:00:28 +0000</pubDate>
		<dc:creator>Barklund</dc:creator>
				<category><![CDATA[API]]></category>
		<category><![CDATA[January 2010 Ideas]]></category>
		<category><![CDATA[Trends]]></category>

		<guid isPermaLink="false">http://www.barklund.org/blog/?p=666</guid>
		<description><![CDATA[The twenty-sixth idea for my 365 social ideas is a new brand of charting service: A service designed for infographics, but with sharing, collaboration and synergy as an added side-effect. The idea is to create a site enabling users to create infographics of the simplest kind initially, but then expand this to even more complex [...]


Related posts:<ol><li><a href='http://www.barklund.org/blog/2010/01/07/app-idea-store-january-2010-idea/' rel='bookmark' title='Permanent Link: App Idea Store &#8211; January 2010 Ideas'>App Idea Store &#8211; January 2010 Ideas</a></li>
<li><a href='http://www.barklund.org/blog/2010/01/18/open-data-january-2010-idea/' rel='bookmark' title='Permanent Link: Open Data &#8211; January 2010 Ideas'>Open Data &#8211; January 2010 Ideas</a></li>
<li><a href='http://www.barklund.org/blog/2010/01/29/nyt-article-trend-charts-january-2010-idea/' rel='bookmark' title='Permanent Link: NYT Article Trend Charts &#8211; January 2010 Ideas'>NYT Article Trend Charts &#8211; January 2010 Ideas</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>The twenty-sixth idea for my <a href="/blog/365ideas/" title="365 Social Ideas from Barklund.org">365 social ideas</a> is a new brand of charting service: A service designed for infographics, but with sharing, collaboration and synergy as an added side-effect.</p>
<p><span id="more-666"></span></p>
<p>The idea is to create a site enabling users to create infographics of the simplest kind initially, but then expand this to even more complex ones. For starters, it could allow users to create tables of data defining row and column labels and then selecting icons, colors and values for cells and having this displayed as larger and smaller icons according to the values &#8211; like <a href="http://www.flickr.com/photos/25541021@N00/4100671193/sizes/o/">this chart of the &#8220;deadliest drugs&#8221;</a>. And allowing people to color-code maps of countries, cities or states according to some data would be quite simple to do as well &#8211; like <a href="http://i258.photobucket.com/albums/hh275/pizzler/Languages_of_Europe.png">this map of the origins and relationships of European languages</a>.</p>
<p>But more important than simply creating cool visualizations, each infographic has an input page. This page can only be edited by the original creator of the infographic, but it includes direct links to sources of information used. The site should use a simple url structure (<a href="http://bit.ly/pages/faq/" title="See second question">inspired by bit.ly</a>), where the short-code would give the actual image, but with a + added (like <a href="http://bit.ly/365ideas+">http://bit.ly/365ideas+</a>) it would be a link to the page describing all this background data.</p>
<p>And now comes the collaborative part: While only the creator can edit the data for the published infographic, anyone can copy the data to branch it as their own new infographic. These relationships will then also be displayed on the about page, as in &#8220;this is a spin-off of X and has Y spin-offs of its own&#8221;. Somewhat like the very nice ActionScript-programming website <a href="http://wonderfl.net">wonderfl</a>. Here you can e.g. see that <a href="http://wonderfl.net/code/d8be827191df7785f6b0b4b04c25ba9bf6f66abf">this creation of 250,000 particles</a> is a spin-off from another simulation and has itself spun off into new simulations.</p>
<p>In time, this could be extended heavily and should of course have a public API for creating infographics easily and freely. New types of infographics could be added along with more complex editors allowing you to play around with the data as you see fit. It should be free to do and should not require complex knowledge of Illustrator or Photoshop.</p>
<p>This idea about letting others built on your own ideas could actually be implemented by many sites. The new Firefox 3.6 has <a href="http://www.getpersonas.com/en-US/">&#8220;personas&#8221;</a>, which is a very light theme engine &#8211; that most importantly does not require restart! But why didn&#8217;t the developers add a very fast and quick branching mechanism? If you found a cool persona, but didn&#8217;t like the color of the top-bar &#8211; just branch it, change the top-bar color and publish as a new persona (with credit where credit is due of course linking back to the original).</p>
<h4 id="toc-why">Why?</h4>
<p>Simply: Infographics to the people! I&#8217;m not suggesting, that the creators of the coolest infographics aren&#8217;t brilliant. But they&#8217;re in the business because they both know how to find the data, how to present it and how to use the programs needed to create them. Let&#8217;s take the software knowledge part out of the equation and allow anyone with ideas and info to visualize it. And let&#8217;s do it openly and collaborate, not just publish a PNG and kill innovation.</p>
<h4 id="toc-whats-next">What&#8217;s next?</h4>
<p>Do with this idea whatever you like &#8211; expand, implement, trash or forget. Just remember, that if you use it in anyway make sure to attribute me according to the Creative Commons Attribution 3.0 License, that all these <a href="/blog/365ideas" title="365 Social Ideas from Barklund.org">365 Social Ideas</a> are published under.</p>


<p>Related posts:<ol><li><a href='http://www.barklund.org/blog/2010/01/07/app-idea-store-january-2010-idea/' rel='bookmark' title='Permanent Link: App Idea Store &#8211; January 2010 Ideas'>App Idea Store &#8211; January 2010 Ideas</a></li>
<li><a href='http://www.barklund.org/blog/2010/01/18/open-data-january-2010-idea/' rel='bookmark' title='Permanent Link: Open Data &#8211; January 2010 Ideas'>Open Data &#8211; January 2010 Ideas</a></li>
<li><a href='http://www.barklund.org/blog/2010/01/29/nyt-article-trend-charts-january-2010-idea/' rel='bookmark' title='Permanent Link: NYT Article Trend Charts &#8211; January 2010 Ideas'>NYT Article Trend Charts &#8211; January 2010 Ideas</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.barklund.org/blog/2010/01/26/infographic-charting-service-january-2010-idea/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Facebook Notes and Images for Competition Results &#8211; January 2010 Ideas</title>
		<link>http://www.barklund.org/blog/2010/01/25/facebook-notes-images-competition-january-2010-idea/</link>
		<comments>http://www.barklund.org/blog/2010/01/25/facebook-notes-images-competition-january-2010-idea/#comments</comments>
		<pubDate>Mon, 25 Jan 2010 08:00:43 +0000</pubDate>
		<dc:creator>Barklund</dc:creator>
				<category><![CDATA[API]]></category>
		<category><![CDATA[Games]]></category>
		<category><![CDATA[January 2010 Ideas]]></category>

		<guid isPermaLink="false">http://www.barklund.org/blog/?p=660</guid>
		<description><![CDATA[The twenty-fifth idea for my 365 social ideas is a small simple idea: use Facebook notes or images combined with tags to display results of games. For instance, imagine a chess game, post the result of the game as a note on the game&#8217;s page with the final board, all moves made during the game [...]


Related posts:<ol><li><a href='http://www.barklund.org/blog/2010/01/15/twitter-gaming-mechanic-january-2010-idea/' rel='bookmark' title='Permanent Link: A Twitter Gaming Mechanic &#8211; January 2010 Ideas'>A Twitter Gaming Mechanic &#8211; January 2010 Ideas</a></li>
<li><a href='http://www.barklund.org/blog/2010/01/13/game-console-api-social-connectivity-january-2010-idea/' rel='bookmark' title='Permanent Link: Game Console Progress API for Social Connectivity &#8211; January 2010 Ideas'>Game Console Progress API for Social Connectivity &#8211; January 2010 Ideas</a></li>
<li><a href='http://www.barklund.org/blog/2010/01/21/game-of-life-january-2010-idea/' rel='bookmark' title='Permanent Link: Game of Life &#8211; January 2010 Ideas'>Game of Life &#8211; January 2010 Ideas</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>The twenty-fifth idea for my <a href="/blog/365ideas/" title="365 Social Ideas from Barklund.org">365 social ideas</a> is a small simple idea: use Facebook notes or images combined with tags to display results of games. For instance, imagine a chess game, post the result of the game as a note on the game&#8217;s page with the final board, all moves made during the game and both players tagged. Or simply post the final board as an image and tag both players as well.</p>
<p><span id="more-660"></span></p>
<p>It is a very simple idea, but the idea is to use profile tagging in a new way to indicate relationships to the displayed information in a way, that the users actually feel related to this. The great thing about using tagging is, that it can be done without the user has to accept it and it will be auto-posted to his friends&#8217; news feeds. But given that it can be done without asking the user, it should only be done if it is actually relevant for the user and not done just to get a viral effect and annoy users.</p>
<h4 id="toc-why">Why?</h4>
<p>It is a new way to use the Facebook platform for viral effects. It&#8217;s quite simple and does not require a lot of programming as it uses simple, existing features.</p>
<h4 id="toc-whats-next">What&#8217;s next?</h4>
<p>Do with this idea whatever you like &#8211; expand, implement, trash or forget. Just remember, that if you use it in anyway make sure to attribute me according to the Creative Commons Attribution 3.0 License, that all these <a href="/blog/365ideas" title="365 Social Ideas from Barklund.org">365 Social Ideas</a> are published under.</p>


<p>Related posts:<ol><li><a href='http://www.barklund.org/blog/2010/01/15/twitter-gaming-mechanic-january-2010-idea/' rel='bookmark' title='Permanent Link: A Twitter Gaming Mechanic &#8211; January 2010 Ideas'>A Twitter Gaming Mechanic &#8211; January 2010 Ideas</a></li>
<li><a href='http://www.barklund.org/blog/2010/01/13/game-console-api-social-connectivity-january-2010-idea/' rel='bookmark' title='Permanent Link: Game Console Progress API for Social Connectivity &#8211; January 2010 Ideas'>Game Console Progress API for Social Connectivity &#8211; January 2010 Ideas</a></li>
<li><a href='http://www.barklund.org/blog/2010/01/21/game-of-life-january-2010-idea/' rel='bookmark' title='Permanent Link: Game of Life &#8211; January 2010 Ideas'>Game of Life &#8211; January 2010 Ideas</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.barklund.org/blog/2010/01/25/facebook-notes-images-competition-january-2010-idea/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Open Data &#8211; January 2010 Ideas</title>
		<link>http://www.barklund.org/blog/2010/01/18/open-data-january-2010-idea/</link>
		<comments>http://www.barklund.org/blog/2010/01/18/open-data-january-2010-idea/#comments</comments>
		<pubDate>Mon, 18 Jan 2010 08:00:29 +0000</pubDate>
		<dc:creator>Barklund</dc:creator>
				<category><![CDATA[API]]></category>
		<category><![CDATA[January 2010 Ideas]]></category>
		<category><![CDATA[Online Rights]]></category>

		<guid isPermaLink="false">http://www.barklund.org/blog/?p=633</guid>
		<description><![CDATA[The eighteenth idea for my 365 social ideas is a social web principle, but it is not new in any way. It is just another voice in the choir of web enthusiasts screaming for open data. However, most people scream at public institutions all over the world to open up their data for their citizens [...]


Related posts:<ol><li><a href='http://www.barklund.org/blog/2010/01/28/turn-content-into-api-january-2010-idea/' rel='bookmark' title='Permanent Link: Turn (Closed) Content Into an API &#8211; January 2010 Ideas'>Turn (Closed) Content Into an API &#8211; January 2010 Ideas</a></li>
<li><a href='http://www.barklund.org/blog/2010/01/11/coordinate-proxy-january-2010-idea/' rel='bookmark' title='Permanent Link: Coordinate-Proxy &#8211; January 2010 Ideas'>Coordinate-Proxy &#8211; January 2010 Ideas</a></li>
<li><a href='http://www.barklund.org/blog/2010/01/07/app-idea-store-january-2010-idea/' rel='bookmark' title='Permanent Link: App Idea Store &#8211; January 2010 Ideas'>App Idea Store &#8211; January 2010 Ideas</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>The eighteenth idea for my <a href="/blog/365ideas/" title="365 Social Ideas from Barklund.org">365 social ideas</a> is a social web principle, but it is not new in any way. It is just another voice in the choir of web enthusiasts screaming for open data. However, most people scream at public institutions all over the world to open up their data for their citizens to play around with. I would however like to extend this plea to corporations as well: if you have data, don&#8217;t know what to do with it and are allowed to share it, then please share it. Trust me, you&#8217;ll end up the winner in the long run, eventhough you&#8217;re giving assets away for free.</p>
<p><span id="more-633"></span></p>
<p>I could mention a few companies, that I would know have a lot of information that they aren&#8217;t sharing but have no idea what to do with. Or maybe they have thought of some small thing to do with it but miss out on the great huge possibilities it might contain. One such site is <a href="http://www.endomondo.com/login">Endomondo</a>, a very cool running (or any other moving sport) service for tracking your movement. It will gather information about who&#8217;s running where how fast etc &#8211; live! And they don&#8217;t even use it live &#8211; they only use it (currently) for calculating your distance and given you your previously run/driven routes on a map. I know <a href="http://www.microformats.dk/">a guy</a> or <a href="http://pe.ter.dk">two</a>, who would love to play around with such live data.</p>
<p>Another example is location-based games like the kind of <a href="http://foursquare.com/">foursquare</a> or <a href="http://gowalla.com/">gowalla</a>. I recently read about a larger competitor, who actually currently have more users &#8211; namely <a href="http://www.booyah.com/">mytown</a>. But they I checked it out, they have no open API and you cannot use the data you give them for anything else. And I&#8217;d rather give my location data to someone, who will allow me to re-use this data in any other fun application, that any other company might think of.</p>
<p>There are many many other examples of public and private institutions as well as small and large corporations, who have gathered really interesting data either directly or through crowd-sourcing, but have kept it to themselves. Please, share it &#8211; we will all benefit including yourselves!</p>
<h4 id="toc-why">Why?</h4>
<p>Because even though you might have thousand of employees who might be able to think up great stuff &#8211; the millions of developers world-wide can think up even more.</p>
<h4 id="toc-whats-next">What&#8217;s next?</h4>
<p>Do with this idea whatever you like &#8211; expand, implement, trash or forget. Just remember, that if you use it in anyway make sure to attribute me according to the Creative Commons Attribution 3.0 License, that all these <a href="/blog/365ideas" title="365 Social Ideas from Barklund.org">365 Social Ideas</a> are published under.</p>


<p>Related posts:<ol><li><a href='http://www.barklund.org/blog/2010/01/28/turn-content-into-api-january-2010-idea/' rel='bookmark' title='Permanent Link: Turn (Closed) Content Into an API &#8211; January 2010 Ideas'>Turn (Closed) Content Into an API &#8211; January 2010 Ideas</a></li>
<li><a href='http://www.barklund.org/blog/2010/01/11/coordinate-proxy-january-2010-idea/' rel='bookmark' title='Permanent Link: Coordinate-Proxy &#8211; January 2010 Ideas'>Coordinate-Proxy &#8211; January 2010 Ideas</a></li>
<li><a href='http://www.barklund.org/blog/2010/01/07/app-idea-store-january-2010-idea/' rel='bookmark' title='Permanent Link: App Idea Store &#8211; January 2010 Ideas'>App Idea Store &#8211; January 2010 Ideas</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.barklund.org/blog/2010/01/18/open-data-january-2010-idea/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Twitter Gaming Mechanic &#8211; January 2010 Ideas</title>
		<link>http://www.barklund.org/blog/2010/01/15/twitter-gaming-mechanic-january-2010-idea/</link>
		<comments>http://www.barklund.org/blog/2010/01/15/twitter-gaming-mechanic-january-2010-idea/#comments</comments>
		<pubDate>Fri, 15 Jan 2010 08:00:42 +0000</pubDate>
		<dc:creator>Barklund</dc:creator>
				<category><![CDATA[API]]></category>
		<category><![CDATA[Games]]></category>
		<category><![CDATA[January 2010 Ideas]]></category>

		<guid isPermaLink="false">http://www.barklund.org/blog/?p=610</guid>
		<description><![CDATA[The fifteenth idea for my 365 social ideas is about bringing classic games to Twitter in a quite simple, straight-forward way. The same mechanic can be used for simple games like Rock-Paper-Scissor or more complex turn-based board games like Monopoly, Chess or similar. But before actually taking about the idea, I might as well address [...]


Related posts:<ol><li><a href='http://www.barklund.org/blog/2010/01/17/helping-via-gaming-january-2010-idea/' rel='bookmark' title='Permanent Link: Helping via Gaming &#8211; January 2010 Ideas'>Helping via Gaming &#8211; January 2010 Ideas</a></li>
<li><a href='http://www.barklund.org/blog/2010/01/01/twitter-follow-organizer-january-2010-idea/' rel='bookmark' title='Permanent Link: Twitter Follow Organizer &#8211; January 2010 Ideas'>Twitter Follow Organizer &#8211; January 2010 Ideas</a></li>
<li><a href='http://www.barklund.org/blog/2010/01/25/facebook-notes-images-competition-january-2010-idea/' rel='bookmark' title='Permanent Link: Facebook Notes and Images for Competition Results &#8211; January 2010 Ideas'>Facebook Notes and Images for Competition Results &#8211; January 2010 Ideas</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>The fifteenth idea for my <a href="/blog/365ideas/" title="365 Social Ideas from Barklund.org">365 social ideas</a> is about bringing classic games to Twitter in a quite simple, straight-forward way. The same mechanic can be used for simple games like Rock-Paper-Scissor or more complex turn-based board games like Monopoly, Chess or similar.</p>
<p><span id="more-610"></span></p>
<p>But before actually taking about the idea, I might as well address the major concern many will respond with: Why even bring it to Twitter? And the short answer is, that is where many people spend a lot of time, so why not? (answering questions with questions is frowned upon, I know). Just like RSS-feeds are a great way of getting the news out and an easy way to follow what happens from small or large publishers, RSS has now been almost completely replaced with Twitter feeds and Facebook page statuses. And in that way, many external non-private interactions will be transferred to where people already are instead of other places, that users must also visit.</p>
<p>The idea is simple, have a central game master, that all participants must follow (to give the game master the possibility to direct message the participants), and then simply start the game by mentioning the game master, the other participants and the type of game. The game master will then mention all participants in return along with a game-specific hashtag, like #chess6f1G. If the game includes some private communications, this will be done in direct messages (like the faces of cards or chosen secret actions), but otherwise it will be done by the participants directly by simply tweeting what they do and add the game-specific hashtag. Every time any player does something, the game master replies with the current status as well as a link to an external site, where the current result/board can be seen.</p>
<p>If the game was Rock-Paper-Scissor for example, the game master starts the next round in a public tweet to all participants, the individual participants direct message the game master with their move, and when all moves are in, the game master announces the result, and then potentially starts the next round for the remaining participants. If the game was chess however, the players would simply tweet their moves publicly, and after each move, that game master will notify the opponent, that it is his move and provide a link to the current board. And if the game was Texas Hold&#8217;em No Limit Poker, the message flow would be different, but related.</p>
<h4 id="toc-why">Why?</h4>
<p>Gaming is always fun, and casual games in which you can excel over your friends with nothing at stake is a popular time-waster on many social networks &#8211; but not on Twitter due to the limited interface possibilities. With the above idea, simple or complex gaming could easily be introduced on twitter.</p>
<h4 id="toc-whats-next">What&#8217;s next?</h4>
<p>Do with this idea whatever you like &#8211; expand, implement, trash or forget. Just remember, that if you use it in anyway make sure to attribute me according to the Creative Commons Attribution 3.0 License, that all these <a href="/blog/365ideas" title="365 Social Ideas from Barklund.org">365 Social Ideas</a> are published under.</p>


<p>Related posts:<ol><li><a href='http://www.barklund.org/blog/2010/01/17/helping-via-gaming-january-2010-idea/' rel='bookmark' title='Permanent Link: Helping via Gaming &#8211; January 2010 Ideas'>Helping via Gaming &#8211; January 2010 Ideas</a></li>
<li><a href='http://www.barklund.org/blog/2010/01/01/twitter-follow-organizer-january-2010-idea/' rel='bookmark' title='Permanent Link: Twitter Follow Organizer &#8211; January 2010 Ideas'>Twitter Follow Organizer &#8211; January 2010 Ideas</a></li>
<li><a href='http://www.barklund.org/blog/2010/01/25/facebook-notes-images-competition-january-2010-idea/' rel='bookmark' title='Permanent Link: Facebook Notes and Images for Competition Results &#8211; January 2010 Ideas'>Facebook Notes and Images for Competition Results &#8211; January 2010 Ideas</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.barklund.org/blog/2010/01/15/twitter-gaming-mechanic-january-2010-idea/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Game Console Progress API for Social Connectivity &#8211; January 2010 Ideas</title>
		<link>http://www.barklund.org/blog/2010/01/13/game-console-api-social-connectivity-january-2010-idea/</link>
		<comments>http://www.barklund.org/blog/2010/01/13/game-console-api-social-connectivity-january-2010-idea/#comments</comments>
		<pubDate>Wed, 13 Jan 2010 08:00:11 +0000</pubDate>
		<dc:creator>Barklund</dc:creator>
				<category><![CDATA[API]]></category>
		<category><![CDATA[Games]]></category>
		<category><![CDATA[January 2010 Ideas]]></category>

		<guid isPermaLink="false">http://www.barklund.org/blog/?p=605</guid>
		<description><![CDATA[The thirteenth idea for my 365 social ideas is about adding social connectivity to console games. But not straightforwardly, as in asking the developer of the Assassins Creed 3 to automatically tweet when you get a trophy on your PS3 (this will probably come soon, but is pretty boring). No, it should be possible to [...]


Related posts:<ol><li><a href='http://www.barklund.org/blog/2010/01/21/game-of-life-january-2010-idea/' rel='bookmark' title='Permanent Link: Game of Life &#8211; January 2010 Ideas'>Game of Life &#8211; January 2010 Ideas</a></li>
<li><a href='http://www.barklund.org/blog/2010/01/15/twitter-gaming-mechanic-january-2010-idea/' rel='bookmark' title='Permanent Link: A Twitter Gaming Mechanic &#8211; January 2010 Ideas'>A Twitter Gaming Mechanic &#8211; January 2010 Ideas</a></li>
<li><a href='http://www.barklund.org/blog/2010/01/17/helping-via-gaming-january-2010-idea/' rel='bookmark' title='Permanent Link: Helping via Gaming &#8211; January 2010 Ideas'>Helping via Gaming &#8211; January 2010 Ideas</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>The thirteenth idea for my <a href="/blog/365ideas/" title="365 Social Ideas from Barklund.org">365 social ideas</a> is about adding social connectivity to console games. But not straightforwardly, as in asking the developer of the Assassins Creed 3 to automatically tweet when you get a trophy on your PS3 (this will probably come soon, but is pretty boring). No, it should be possible to do some form of ping/trackback system, in which all games can &#8220;ping&#8221; your progress to any gaming progress ping recipients. And what happens with this ping is then out of the hands of the actual game. One obvious game progress ping recipient is a twitter bridge, that will tweet it as explained, but by building such a general system, it can be used for anything anyone else can think of, because you simply build a new website, that can receive pings and ask users to enter the url of your website in your game console&#8217;s settings.</p>
<p><span id="more-605"></span></p>
<p>I of course know it isn&#8217;t trivial to introduce things into gaming platforms, they are pretty tight and does not have to listen that much to community. But social connectivity will be coming, and I just hope it is an open model like the above describe instead of static &#8220;connections&#8221; that the developer decided would be good for you.</p>
<h4 id="toc-why">Why?</h4>
<p>Gaming consoles will exist for a very long time to come, and many will spend a lot of time on them. Most consoles are online by now, so why not combine the user&#8217;s online life with his gaming life in an open way? Something like this will come very soon, so why not get out there and be the first?</p>
<h4 id="toc-whats-next">What&#8217;s next?</h4>
<p>Do with this idea whatever you like &#8211; expand, implement, trash or forget. Just remember, that if you use it in anyway make sure to attribute me according to the Creative Commons Attribution 3.0 License, that all these <a href="/blog/365ideas" title="365 Social Ideas from Barklund.org">365 Social Ideas</a> are published under.</p>


<p>Related posts:<ol><li><a href='http://www.barklund.org/blog/2010/01/21/game-of-life-january-2010-idea/' rel='bookmark' title='Permanent Link: Game of Life &#8211; January 2010 Ideas'>Game of Life &#8211; January 2010 Ideas</a></li>
<li><a href='http://www.barklund.org/blog/2010/01/15/twitter-gaming-mechanic-january-2010-idea/' rel='bookmark' title='Permanent Link: A Twitter Gaming Mechanic &#8211; January 2010 Ideas'>A Twitter Gaming Mechanic &#8211; January 2010 Ideas</a></li>
<li><a href='http://www.barklund.org/blog/2010/01/17/helping-via-gaming-january-2010-idea/' rel='bookmark' title='Permanent Link: Helping via Gaming &#8211; January 2010 Ideas'>Helping via Gaming &#8211; January 2010 Ideas</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.barklund.org/blog/2010/01/13/game-console-api-social-connectivity-january-2010-idea/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Swell Wave &#8211; January 2010 Ideas</title>
		<link>http://www.barklund.org/blog/2010/01/12/swell-wave-january-2010-idea/</link>
		<comments>http://www.barklund.org/blog/2010/01/12/swell-wave-january-2010-idea/#comments</comments>
		<pubDate>Tue, 12 Jan 2010 08:00:28 +0000</pubDate>
		<dc:creator>Barklund</dc:creator>
				<category><![CDATA[API]]></category>
		<category><![CDATA[Google Wave]]></category>
		<category><![CDATA[January 2010 Ideas]]></category>

		<guid isPermaLink="false">http://www.barklund.org/blog/?p=587</guid>
		<description><![CDATA[The twelfth idea for my 365 social ideas is about Google Wave: Create a wave actor (a robot), that will create a nice, static, easily-printable, exportable view of the wave in it&#8217;s current state. Swell Waves are perfect, stable waves &#8211; and Swell Wave is thus a stable (but static) version of Google Wave Google [...]


Related posts:<ol><li><a href='http://www.barklund.org/blog/2010/01/02/offline-news-aggregator-january-2010-idea/' rel='bookmark' title='Permanent Link: Offline News Aggregator &#8211; January 2010 Ideas'>Offline News Aggregator &#8211; January 2010 Ideas</a></li>
<li><a href='http://www.barklund.org/blog/2010/01/23/google-docs-application-january-2010-idea/' rel='bookmark' title='Permanent Link: Google Docs Application &#8211; January 2010 Ideas'>Google Docs Application &#8211; January 2010 Ideas</a></li>
<li><a href='http://www.barklund.org/blog/2010/01/04/social-subway-january-2010-idea/' rel='bookmark' title='Permanent Link: Social Subway &#8211; January 2010 Ideas'>Social Subway &#8211; January 2010 Ideas</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>The twelfth idea for my <a href="/blog/365ideas/" title="365 Social Ideas from Barklund.org">365 social ideas</a> is about <a href="https://wave.google.com/wave/" title="The biggest online hype of 2009: Google Wave">Google Wave</a>: Create a wave actor (a robot), that will create a nice, static, easily-printable, exportable view of the wave in it&#8217;s current state. Swell Waves are perfect, stable waves &#8211; and Swell Wave is thus a stable (but static) version of Google Wave</p>
<p><span id="more-587"></span></p>
<p>Google Wave is actually really nice. It is wonderful for collaborations and for chatting many persons. E.g. starting with a document like a brief, a concept or a pitch pasted into the wave, and then just expand and comment on everything a really delve into those interesting parts, trash-talk the bad parts, point out what needs to be clarified, and so on. But, it is very heavy, it does not print very well and you cannot in an easy way share the result with someone else (e.g. convert it to a pdf or link to a certain version of it).</p>
<p>If you created a robot, that when invited into a wave, and asked about it would provide you with a secure link to a static, flat version of the current contents of the wave. From this link, you should be able to easily share it with others, download as pdf and so on.</p>
<h4 id="toc-why">Why?</h4>
<p>Google Wave is too heavy for many users &#8211; especially with very large waves where the collaborative, synergetic, creative juices really are flowing. Many times I&#8217;ve wanted to copy the current contents of a wave to a Word-document to store it in a more accessible way, but have so far managed to fight the urge. With a Swell Wave, this is now possible.</p>
<h4 id="toc-whats-next">What&#8217;s next?</h4>
<p>Do with this idea whatever you like &#8211; expand, implement, trash or forget. Just remember, that if you use it in anyway make sure to attribute me according to the Creative Commons Attribution 3.0 License, that all these <a href="/blog/365ideas" title="365 Social Ideas from Barklund.org">365 Social Ideas</a> are published under.</p>


<p>Related posts:<ol><li><a href='http://www.barklund.org/blog/2010/01/02/offline-news-aggregator-january-2010-idea/' rel='bookmark' title='Permanent Link: Offline News Aggregator &#8211; January 2010 Ideas'>Offline News Aggregator &#8211; January 2010 Ideas</a></li>
<li><a href='http://www.barklund.org/blog/2010/01/23/google-docs-application-january-2010-idea/' rel='bookmark' title='Permanent Link: Google Docs Application &#8211; January 2010 Ideas'>Google Docs Application &#8211; January 2010 Ideas</a></li>
<li><a href='http://www.barklund.org/blog/2010/01/04/social-subway-january-2010-idea/' rel='bookmark' title='Permanent Link: Social Subway &#8211; January 2010 Ideas'>Social Subway &#8211; January 2010 Ideas</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.barklund.org/blog/2010/01/12/swell-wave-january-2010-idea/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Coordinate-Proxy &#8211; January 2010 Ideas</title>
		<link>http://www.barklund.org/blog/2010/01/11/coordinate-proxy-january-2010-idea/</link>
		<comments>http://www.barklund.org/blog/2010/01/11/coordinate-proxy-january-2010-idea/#comments</comments>
		<pubDate>Mon, 11 Jan 2010 08:00:14 +0000</pubDate>
		<dc:creator>Barklund</dc:creator>
				<category><![CDATA[API]]></category>
		<category><![CDATA[January 2010 Ideas]]></category>
		<category><![CDATA[Mashup]]></category>

		<guid isPermaLink="false">http://www.barklund.org/blog/?p=586</guid>
		<description><![CDATA[The eleventh idea for my 365 social ideas is another mobile application: An application relaying current position of users to services requiring them. The business model is, that lot&#8217;s of websites, competitions and campaigns would like to be able to track their users somehow for some purpose, but if it is just a small campaign [...]


Related posts:<ol><li><a href='http://www.barklund.org/blog/2010/01/18/open-data-january-2010-idea/' rel='bookmark' title='Permanent Link: Open Data &#8211; January 2010 Ideas'>Open Data &#8211; January 2010 Ideas</a></li>
<li><a href='http://www.barklund.org/blog/2010/01/03/audio-based-gps-navigator-january-2010-idea/' rel='bookmark' title='Permanent Link: Audio-based GPS Navigator &#8211; January 2010 Ideas'>Audio-based GPS Navigator &#8211; January 2010 Ideas</a></li>
<li><a href='http://www.barklund.org/blog/2010/01/20/interest-groups-foursquare-january-2010-idea/' rel='bookmark' title='Permanent Link: Interest Groups on Foursquare &#8211; January 2010 Ideas'>Interest Groups on Foursquare &#8211; January 2010 Ideas</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>The eleventh idea for my <a href="/blog/365ideas/" title="365 Social Ideas from Barklund.org">365 social ideas</a> is another mobile application: An application relaying current position of users to services requiring them. The business model is, that lot&#8217;s of websites, competitions and campaigns would like to be able to track their users somehow for some purpose, but if it is just a small campaign or just a funny little gimmick, no-one would bother first making 5 different mobile applications for the different mobile platforms. So instead, they urge their user to download this Coordinate Proxy application from their respective app store, which is free, and then they enter the campaign name (and maybe password if closed) and now they can start relaying information about where they are to the service provider.</p>
<p><span id="more-586"></span></p>
<p>Imagine creating a dating website (yes, it is kind of 2005-ish, but they can still make money) and wanting to add some kind of foursquare-like integration with dating spots around town and if you check-in to certain spots, you will be notified about who is present. Or imagine creating a new campaign for some big brand where you every day have a competition where the first person to be at a certain location wins a price. Or image creating a website for geo-artists, allowing people to create paintings via their routes traveled (yes, that is a small bonus idea, might be expanded later in it&#8217;s own post). All these ideas are pretty hard to implement, if you want to target all of your target audience equipped with GPS-enabled smart-phones.</p>
<p>As explained, the business model should be between the application creator and service providers needing location tracking. It could be free to track up to say 5 users, but if more than 5 users should be able to be tracked and their positional data forwarded to your service, some payment model should be used. Users should not directly be burdened with this payment (but this could happen between the user and the service provider of course, if location-based tracking is part of a premium package or similar). All kinds of different licenses coudl be used depending on how much and how precise tracking is needed for how many users.</p>
<p>The API provided by the application backend to service providers should be thorough, fast and achieve the expected goals. It should be possible to listen for both real-time, callback-based or digested information as well as give feedback directly back to the users of the application. And it should be possible for the user to have several simultaneously running trackings enabled &#8211; e.g. if the user participates in both the dating foursquare and the brand competition mentioned earlier.</p>
<h4 id="toc-why">Why?</h4>
<p>Having lots of users with mobile phones with the ability to report the location is fine, but having to create an application just to create the carrier is simply too much of a hassle. With one application providing a nice consistent (maybe even customizable) interface across GPS-equipped mobile phones along with a decent API, service providers would have a much lower entrance barrier to make their services location-based. And making location-integrated games and campaigns would be similarly easy.</p>
<h4 id="toc-whats-next">What&#8217;s next?</h4>
<p>Do with this idea whatever you like &#8211; expand, implement, trash or forget. Just remember, that if you use it in anyway make sure to attribute me according to the Creative Commons Attribution 3.0 License, that all these <a href="/blog/365ideas" title="365 Social Ideas from Barklund.org">365 Social Ideas</a> are published under.</p>


<p>Related posts:<ol><li><a href='http://www.barklund.org/blog/2010/01/18/open-data-january-2010-idea/' rel='bookmark' title='Permanent Link: Open Data &#8211; January 2010 Ideas'>Open Data &#8211; January 2010 Ideas</a></li>
<li><a href='http://www.barklund.org/blog/2010/01/03/audio-based-gps-navigator-january-2010-idea/' rel='bookmark' title='Permanent Link: Audio-based GPS Navigator &#8211; January 2010 Ideas'>Audio-based GPS Navigator &#8211; January 2010 Ideas</a></li>
<li><a href='http://www.barklund.org/blog/2010/01/20/interest-groups-foursquare-january-2010-idea/' rel='bookmark' title='Permanent Link: Interest Groups on Foursquare &#8211; January 2010 Ideas'>Interest Groups on Foursquare &#8211; January 2010 Ideas</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.barklund.org/blog/2010/01/11/coordinate-proxy-january-2010-idea/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
