<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4026990065801972115</id><updated>2011-08-05T10:03:38.455-07:00</updated><title type='text'>Emotional Data</title><subtitle type='html'>If you torture numbers long enough, they will tell you anything &lt;a href="http://content.nejm.org/cgi/content/short/329/16/1196"&gt;[*]&lt;/a&gt;</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://emotionaldata.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4026990065801972115/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://emotionaldata.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>julia</name><uri>http://www.blogger.com/profile/01392807429136720814</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>2</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4026990065801972115.post-972520277567148981</id><published>2010-04-14T20:23:00.000-07:00</published><updated>2010-04-15T01:08:44.294-07:00</updated><title type='text'>Hello Python Threads</title><content type='html'>I am looking for something new.&lt;br /&gt;&lt;br /&gt;Java and I are going through a relationship crisis, in fact we are considering divorce. She has kept me awake for nights, talking a lot, saying not much. Broken promises, nerves on edge, where has the initial joy gone?  &lt;a href="http://misko.hevery.com/2010/04/07/move-over-java-i-have-fallen-in-love-with-javascript/"&gt;Outside&lt;/a&gt; &lt;a href="http://blog.fefe.de/?ts=b5546b0c"&gt;people&lt;/a&gt; I respect have warned me.&lt;br /&gt;&lt;br /&gt;So last week I caught up again with a long gone lover. Her name is &lt;a href="http://www.python.org/"&gt;Python&lt;/a&gt;. It turned out the chemistry is still strong between us. She's now got a VIP membership at &lt;a href="http://code.google.com/appengine/"&gt;AppEngine&lt;/a&gt;, which made her even more attractive. She is a  well-loved, public person and yet some things seam mysterious about her. Here a first little detail I figured out with &lt;a href="http://www.wellho.net/solutions/python-python-threads-a-first-example.html"&gt;some&lt;/a&gt; &lt;a href="http://www.prasannatech.net/2008/08/introduction-to-thread-programming.html"&gt;help&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Understanding by example - Python's threads:&lt;br /&gt;Dispatch 4 threads, the first one running the longest with non-busy waiting for completion.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Source code:&lt;/b&gt;&lt;br /&gt;&lt;div class="syntax"&gt;&lt;pre&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;time&lt;/span&gt; &lt;br /&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;threading&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Thread&lt;/span&gt; &lt;br /&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;MyThread&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Thread&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;br /&gt;    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;__init__&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;seconds&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;br /&gt;        &lt;span class="n"&gt;Thread&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;br /&gt;        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;id&lt;/span&gt; &lt;br /&gt;        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;seconds&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;seconds&lt;/span&gt; &lt;br /&gt;    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;br /&gt;        &lt;span class="k"&gt;print&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;Start running thread&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;with seconds&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;seconds&lt;/span&gt;       &lt;br /&gt;        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;A&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;B&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;C&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;br /&gt;            &lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sleep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;seconds&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;br /&gt;            &lt;span class="k"&gt;print&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;thread&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;at&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt; &lt;br /&gt;        &lt;span class="k"&gt;print&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;Exit running thread&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;with seconds&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;seconds&lt;/span&gt;      &lt;br /&gt; &lt;br /&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;__name__&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;__main__&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;br /&gt;    &lt;span class="n"&gt;myThreads&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt; &lt;br /&gt;    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="nb"&gt;id&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;br /&gt;        &lt;span class="c"&gt;#thread 0 runs slowest, thread 3 runs fastest&lt;/span&gt; &lt;br /&gt;        &lt;span class="n"&gt;seconds&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nb"&gt;id&lt;/span&gt; &lt;br /&gt;        &lt;span class="n"&gt;t&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;MyThread&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;seconds&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;br /&gt;        &lt;span class="n"&gt;myThreads&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;br /&gt;        &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;start&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;br /&gt; &lt;br /&gt;    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;myThread&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;myThreads&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;br /&gt;        &lt;span class="n"&gt;myThread&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;join&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;br /&gt;        &lt;span class="k"&gt;print&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;Done. &amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;myThread&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt; &lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Output:&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;Start running thread 0 with sleep 4&lt;br /&gt;Start running thread 1 with sleep 3&lt;br /&gt;Start running thread 2 with sleep 2&lt;br /&gt;Start running thread 3 with sleep 1&lt;br /&gt;thread 3 at A&lt;br /&gt;thread 2 at A&lt;br /&gt;thread 3 at B&lt;br /&gt;thread 1 at A&lt;br /&gt;thread 3 at C&lt;br /&gt;Exit running thread 3 with sleep 1&lt;br /&gt;thread 0 at A&lt;br /&gt;thread 2 at B&lt;br /&gt;thread 1 at B&lt;br /&gt;thread 2 at C&lt;br /&gt;Exit running thread 2 with sleep 2&lt;br /&gt;thread 0 at B&lt;br /&gt;thread 1 at C&lt;br /&gt;Exit running thread 1 with sleep 3&lt;br /&gt;thread 0 at C&lt;br /&gt;Exit running thread 0 with sleep 4&lt;br /&gt;Done. 0&lt;br /&gt;Done. 1&lt;br /&gt;Done. 2&lt;br /&gt;Done. 3&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4026990065801972115-972520277567148981?l=emotionaldata.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emotionaldata.blogspot.com/feeds/972520277567148981/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://emotionaldata.blogspot.com/2010/04/hello-python-threads.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4026990065801972115/posts/default/972520277567148981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4026990065801972115/posts/default/972520277567148981'/><link rel='alternate' type='text/html' href='http://emotionaldata.blogspot.com/2010/04/hello-python-threads.html' title='Hello Python Threads'/><author><name>julia</name><uri>http://www.blogger.com/profile/01392807429136720814</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4026990065801972115.post-2726303975590177347</id><published>2009-11-12T15:47:00.000-08:00</published><updated>2010-04-15T01:23:55.435-07:00</updated><title type='text'>Mashup Write-up</title><content type='html'>&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;It's been an intense week of cooking code. I have entered the result, the &lt;/span&gt;&lt;a href="http://mashupaustralia.org/mashups/nsw-crime-map/"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;NSW Crime Map&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;, in the &lt;/span&gt;&lt;a href="http://mashupaustralia.org/"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;MashupAustralia Contest&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;. This data visualisation web page is my contribution to the Government 2.0 movement.&lt;/span&gt;&lt;/div&gt;&lt;a href="http://1.bp.blogspot.com/_u43gaYZm1E0/SvznXxoP5vI/AAAAAAAAAo8/aXCVPj4LdkY/s1600-h/liquidmap_screenshot.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5403448048582911730" src="http://1.bp.blogspot.com/_u43gaYZm1E0/SvznXxoP5vI/AAAAAAAAAo8/aXCVPj4LdkY/s320/liquidmap_screenshot.png" style="cursor: hand; cursor: pointer; display: block; height: 281px; margin: 0px auto 10px; text-align: center; width: 320px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;First and foremost a big thank you to &lt;/span&gt;&lt;a href="http://www.jasonstrachan.net/"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Jason&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt; for his invaluable help on design and user experience questions!&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Gov 2.0&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Do you feel the buzz? It is the hum of changing times.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Especially in the IT industry. New startups mushroom everywhere, a lot of them target crowd sourcing, leveraging communities and platforms. Others deal with communication, cloud computing, and mobile apps. More than ever before, each voice has got an opportunity to be heard and to enhance democracy.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;NSW Crime Map&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Data isn't only for analysts. If it is presented appropriately, data is for everyone. Why would only experts be interested in crime incidences?&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;The &lt;/span&gt;&lt;a href="http://liquidmap.appspot.com/"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;NSW Crime Map&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt; is intended to be easily comprehensible and visually engaging. It is meant to invite to dig further.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;The concept is simple. The NSW Crime Map is a one page web application with a reduced feature set. Less is more.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Growing and shrinking bubbles represent crime rate change. Press the play button, zoom-in on the map, click on bubbles, zoom into the time line chart, skip back and forward in time. Compare different crimes. Have a play.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;The NSW Crime Map tells a few stories: liquor offences have steadily increased over time, robbery is particular prominent in urban areas, recorded driving offences have climbed drastically between November and December 2000. I wonder why?&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Under the hood&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;The web application has been created with the Google Web Toolkit, using Google Maps and the Google Visualization API. It is hosted on the Appengine. Thank you Google for making all of this soooo easy.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;The source code is available under the Apache License - 2.0. Warning: this is proof-of-concept/meet-the-deadline code. It is ugly.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;I used the following data source:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://data.australia.gov.au/365"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;NSW Crime Data&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.abs.gov.au/websitedbs/D3310114.nsf/home/Census+data"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Census 2006 data&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://betaworks.abs.gov.au/Betaworks/Betaworks.nsf/projects/mapping/KML_Parser_Two/NSW_SLA08.kml"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;NSW LGA boundaries KML - ABS&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.tallyroom.com.au/maps"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;NSW LGA boundaries KML - The Tally Room&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;The experience&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Half of the effort went into getting data into the right shape.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Scripting, spreadsheets, copy-paste, data bases. Processing the KML data for regional boundaries was particularly difficult. At least I know about &lt;/span&gt;&lt;a href="http://code.google.com/apis/maps/documentation/polylinealgorithm.html"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;polyline encoding&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt; and the &lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Douglas-Peuker algorithm&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt; now. Maybe my next project is going to be an online KML size reducer and a polyline encoding utility. Or a Polygon merger?&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;The raw crime data manipulation was tricky, too. It was a bootstrapping problem: On one side it is necessary to aggregate data to understand what you want, on the other side you need to know what you want before you can aggregate data. &lt;/span&gt;&lt;a href="http://www.spacetimeresearch.com/"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Space-Time Researches&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt; SuperSTAR software came in handy. I also owe my skills in data visualisation and web app building to this company. Thank you Space-Time I love this field.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Stay tuned for more emotional data.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4026990065801972115-2726303975590177347?l=emotionaldata.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emotionaldata.blogspot.com/feeds/2726303975590177347/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://emotionaldata.blogspot.com/2009/11/mashup-write-up.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4026990065801972115/posts/default/2726303975590177347'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4026990065801972115/posts/default/2726303975590177347'/><link rel='alternate' type='text/html' href='http://emotionaldata.blogspot.com/2009/11/mashup-write-up.html' title='Mashup Write-up'/><author><name>julia</name><uri>http://www.blogger.com/profile/01392807429136720814</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_u43gaYZm1E0/SvznXxoP5vI/AAAAAAAAAo8/aXCVPj4LdkY/s72-c/liquidmap_screenshot.png' height='72' width='72'/><thr:total>1</thr:total></entry></feed>
