I was at the Clean & Green Hackathon over bits of the weekend, organised by NEA and run by the good guys from Newton Circus. Since this is Singapore, I figured that most of the people attending it would gravitate towards making fairly predictable, conventional mobile app or social media / community sites or data visualisation, or to just go about gamifying everything. And… this is exactly what happened there, it was all like LET’S GAMIFY RECYCLING! or LET’S GAMIFY FREECYCLING! or how about LET’S GAMIFY CYCLING! etc etc. I’m sure we’ve all heard that one before.
Whilst I love seeing the energy and passion that people have for building things at hackathons (and that’s the reason I go to them), I feel like sometimes a lot of this energy is not always directed efficiently into making new things and trying hard to think of new ideas. At any rate, I could also have made a version of App-o-tron for generating random ideas for a green app and then we could have given this list to people for them to work on. I noticed that phrases such as “green technologies” and “sustainability” and “we want to leverage on NFC” were practically overused, and to be honest even if the app can be described as “smart” and “scalable”, in the end it probably also contributes to the current saturation of unnecessary information. I mean, do we really need an app for everything? Do we need yet another social media app to share more things with each other all the time? Do we really want to read all the tweets automatically generated from our electrical appliances and power switches and storm drains? But then again, I know I am hardly one to talk about having practical objectives. In any case, I had already decided that my goal was not to build an app but simply to see which was the most interesting dataset provided, and to set about finding an unusual use for it.
I noticed NEA had provided a dataset of feedback on food hygiene which had not previously been released. It could not be not confirmed whether any or all these entries had been previously substantiated or not, and precise location data had been removed the entries – which was probably for the better, because no one wants to create a mass food hygiene panic (which is actually probably the state you will be in, after you read all the entries one by one, whether or not they are true). The litany of horrors go on and on and on, almost 10,000 entries of terrifying food-related atrocities. It is hard to tell whether they are all true, or merely one-off accidental food contamination incidents. Let’s face it but when in the face of random rage and being called on to be witnesses, Singaporeans sometimes lose objectivity, or the ability to describe something adequately. Sometimes the feedback entry was a compendium of a list of possible places where they might have contracted food poisoning, which isn’t very useful data either. For this dataset of user-submitted feedback, here was really no way of finding out how reliable the reportage truly was.
However, I still like this idea of these reports being significant points of data which might, as a whole, still point to something about each area. A high incidence of reports could mean that those places had a lot of food places and thus a lot of people eating there in general, or it could also mean that more people were having unhappy or unpleasant times there.
One of NEA’s feedback categories was a category titled “Strange taste”. It seemed that a number of people had described their food as strange possibly because of this somewhat suggestive category title. But, strange is not very specific. It could mean many things. There was no way I could find out who had been the person who lodged the feedback, so I would never be able to know precisely how strange it was, or in what manner.
Another dataset from Cleanlah included a set of cleanliness complaints with images. These were even more curious, because looking at these pictures was looking into an abyss of uncanny-ness. It was not always clear what we were supposed to be looking at. Amongst some of the obvious pictures of litter and dead rats were some ordinary pictures of normal, everyday scenes. But what was wrong with it? Were we supposed to search for the one thing that was amiss in the picture? Why had these photos been submitted? Did the person really mean to submit this picture of an empty corner? Why is that middle-aged man standing alone in a field? It was all a mystery!
So I wondered, what if we only looked for the strange, mysterious complaints?
So I began by stripping out all the fields except ones with vague words such as “strange”, “weird” and “funny”. After cleaning up the data and adding “Singapore” to the end of the street names, I opened a blank spreadsheet in Google Docs, and then imported my excel file to the Google Spreadsheet.
To Geocode it on your own (simplest method): set up Geo for Google Docs by going to Tools > Script Editor, paste mapbox.js into code.gs, rename code project as Geo, and then refresh your spreadsheet – you should see Geo appear as an option next to Tools. Now you can select the fields with the addresses you want to geocode. It will generate three new columns – geo_latitude, geo_longitude, and geo_accuracy. The last field (geo_accuracy) seems to describes whether its a primary/secondary/tertiary/trunk road or public building/retail/residential/house/mall/station.
Since this was to be a fixed set of data, I converted it to an xml (for my ease of use) and with my very limited vegetable powers of php, this is what I came up with:
<?php $doc = new DOMDocument(); $doc->load( 'csv/strangefood.xml' );
$entries = $doc->getElementsByTagName( “row” );
$totalentries = $doc->getElementsByTagName(‘row’)->length;
$randtotalentries = rand(1, $totalentries);
$randcamera = rand(0, 359);
$Dates = $doc->getElementsByTagName( “date” );
$Date = $Dates->item($randtotalentries)->nodeValue;
$Titles = $doc->getElementsByTagName( “description” );
$Title = $Titles->item($randtotalentries)->nodeValue;
$Lats = $doc->getElementsByTagName( “lat” );
$Lat = $Lats->item($randtotalentries)->nodeValue;
$Lons = $doc->getElementsByTagName( “lon” );
$Lon = $Lons->item($randtotalentries)->nodeValue;
echo “<img src=http://maps.googleapis.com/maps/api/streetview?size=640×480&location=$Lat,$Lon&fov=90&heading=$randcamera&pitch=10&sensor=false>”;
echo “<div id=’strangelabel’>Date: $Date ($Lon, $Lat) <br /> <div id=’strangedescription’>$Title</div></div>”;
Why a google street view image? Because I think it compounds the uncanny, uneasy feeling by showing you a quotidian, everyday Singapore street scene. You’re imbued with the knowledge that somewhere close to that location, you know someone has eaten something very, very strange – but you don’t know what, you just know it was strange enough for them to want to tell someone else about it.