<?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>apassant.net</title>
	<atom:link href="http://apassant.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://apassant.net</link>
	<description>geek. researcher. hacker. entrepreneur.</description>
	<lastBuildDate>Mon, 20 Feb 2012 16:31:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Easy &#8220;copy and paste&#8221; from the Web to LaTeX with SPARQL</title>
		<link>http://apassant.net/2012/02/20/easy-copy-and-paste-from-the-web-to-latex-with-sparql/</link>
		<comments>http://apassant.net/2012/02/20/easy-copy-and-paste-from-the-web-to-latex-with-sparql/#comments</comments>
		<pubDate>Mon, 20 Feb 2012 15:48:28 +0000</pubDate>
		<dc:creator>terraces</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[latex]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[microformats]]></category>
		<category><![CDATA[rdfa]]></category>
		<category><![CDATA[resume]]></category>
		<category><![CDATA[sparql]]></category>

		<guid isPermaLink="false">http://apassant.net/?p=361</guid>
		<description><![CDATA[One thing I like about the Web is that content can be distributed, but still easily referenced and integrated using URIs. One this I don&#8217;t like about moving content from]]></description>
			<content:encoded><![CDATA[<p>One thing I like about the Web is that content can be distributed, but still easily referenced and integrated using <a href="http://www.w3.org/TR/webarch/#uri-benefits">URIs</a>. One this I don&#8217;t like about moving content from the Web to the desktop is copy and paste (actually, I also hate this when moving / syncing from one service to another).</p>
<p>Let&#8217;s take the example of my resume. I generally update my <a href="http://www.linkedin.com/in/apassant">LinkedIn profile</a>, but almost never the &#8220;desktop version&#8221; (LaTeX or doc) of my CV. So, when the time comes to forward an up-to-date resume in PDF, I used to copy and paste content from my LinkedIn. But wait, I also need to add my publications (even though <a href="http://www.bibtex.org/">bibtex</a> makes the integration easy), the list of my <a href="/committees">research activities</a> and <a href="/talks">talks</a>, etc.</p>
<p>So, I&#8217;ve build <a href="https://github.com/terraces/sparqltex">sparqlTeX</a> - a LaTeX class / python script to easily embed SPARQL results into TeX files. Using it, one can directly integrate data from SPARQL endpoints, from <a href="http://rdfa.info">RDFa</a>-enabled content (such as the previous talk pages), but also from any <a href="http://microformats.org">microformatted</a> page (any Linkedin profile as they&#8217;re using <a href="http://microformats.org/wiki/hresume">hResume</a>) into a LaTeX document. For the last one, I&#8217;m using <a href="http://any23.org">any23</a> to convert such data into RDF (actually, any23 is used for any file-based query as it extracts RDF from HTML pages even if they&#8217;re not W3C-valid)</p>
<p>The scripts are available on <a href="https://github.com/terraces/sparqltex">github/sparqltex</a>. They require <a href="http://librdf.org/rasqal/roqet.html">roquet</a>, and the <a href="http://sparql-wrapper.sourceforge.net/">SPARQLWrapper</a> lib if you want to query remote endpoints. That&#8217;s a simple on-demand hack, so corner cases and complex structures are probably not managed directly, but feel free to clone the code, update (and push it back), this is public domain.</p>
<p>Here&#8217;s the kind of output that it generates, as you can see it&#8217;s synced with my <a href="http://linkedin.com/in/apassant">LinkedIn</a> profile or <a href="http://apassant.net/talks">talk</a> pages. And you can obviously also use hyperlinks in the templates, bringing the Web back to your resume !</p>
<div id="attachment_363" class="wp-caption aligncenter" style="width: 610px"><a href="http://apassant.net/wp-content/uploads/2012/02/resume-work.png"><img class="size-full wp-image-363" title="resume-work" src="http://apassant.net/wp-content/uploads/2012/02/resume-work.png" alt="" width="600" height="255" /></a><p class="wp-caption-text">Work section of my resume from LinkedIn to LaTeX through RDF+SPARQL</p></div>
<div id="attachment_362" class="wp-caption aligncenter" style="width: 610px"><a href="http://apassant.net/wp-content/uploads/2012/02/resume-talks.png"><img class="size-full wp-image-362" title="resume-talks" src="http://apassant.net/wp-content/uploads/2012/02/resume-talks.png" alt="" width="600" height="255" /></a><p class="wp-caption-text">Talks section of my resume from RDFa-enabled content to LaTeX with SPARQL</p></div>
]]></content:encoded>
			<wfw:commentRss>http://apassant.net/2012/02/20/easy-copy-and-paste-from-the-web-to-latex-with-sparql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SeatTrip &#8211; concert listing for your next trip (or &#8220;seatwave meets tripit&#8221;)</title>
		<link>http://apassant.net/2012/02/13/seattrip-concert-listing-for-your-next-trip-or-seatwave-meets-tripit/</link>
		<comments>http://apassant.net/2012/02/13/seattrip-concert-listing-for-your-next-trip-or-seatwave-meets-tripit/#comments</comments>
		<pubDate>Mon, 13 Feb 2012 01:12:30 +0000</pubDate>
		<dc:creator>terraces</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[concerts]]></category>
		<category><![CDATA[musichackday]]></category>
		<category><![CDATA[seatwave]]></category>
		<category><![CDATA[seevl]]></category>
		<category><![CDATA[sendgrid]]></category>
		<category><![CDATA[tripit]]></category>

		<guid isPermaLink="false">http://apassant.net/?p=282</guid>
		<description><![CDATA[Another week-end, another MusicHackDay. This time, I&#8217;ve tried to new APIs: seatwave &#8211; that just launched few days and that gives access to a wide range of events, including (obviously)]]></description>
			<content:encoded><![CDATA[<p>Another week-end, another <a href="http://sf.musichackday.org/2012/">MusicHackDay</a>. This time, I&#8217;ve tried to new APIs:</p>
<ul>
<li><a href="http://seatwave.com">seatwave</a> &#8211; that just launched few days and that gives access to a wide range of events, including (obviously) concerts. Search by location, time-frame, venue (including coordinates!), and redirect to seatwave website to get event tickets. Interestingly, they do rev-share if some tickets are bought in one&#8217;s app using their API.</li>
<li><a href="http://sendgrid.com">SendGrid</a> &#8211; cloud-based e-mail services. Sending mails, but also &#8211; the most interesting part &#8211; receiving ones and parsing them. Simply configure a MX, a callback URL, and parse any incoming e-mail, including header, content and attachements &#8211; all in a REST-ful way</li>
</ul>
<p>So, with those 2 APIs in mind, I&#8217;ve build <a href="http://wiki.musichackday.org/index.php?title=SeatTrip">SeatTrip</a> &#8211; it&#8217;s like seatwave meets <a href="http://tripit.com">tripit</a>. Send your plane ticket by e-mail, and get a listing of events that will happen in the area a few minutes later.</p>
<p>Sending a AerLingus ticket about a trip to London, I got the following e-mail in my inbox a few minutes later. First, a featured artist. I&#8217;m using our own <a href="http://seevl.net">seevl</a> data to identify the featured artist using its meta-data, and display her/his biography.</p>
<div id="attachment_287" class="wp-caption aligncenter" style="width: 590px"><a href="http://apassant.net/wp-content/uploads/2012/02/seattrip-featured1.png"><img class="size-full wp-image-287" title="seattrip-featured" src="http://apassant.net/wp-content/uploads/2012/02/seattrip-featured1.png" alt="" width="580" height="395" /></a><p class="wp-caption-text">Featured artist for your next trip!</p></div>
<p>Then, the listing of all concerts for the city at that time.</p>
<div id="attachment_288" class="wp-caption aligncenter" style="width: 590px"><a href="http://apassant.net/wp-content/uploads/2012/02/seattrip-listing1.png"><img class="size-full wp-image-288" title="seattrip-listing" src="http://apassant.net/wp-content/uploads/2012/02/seattrip-listing1.png" alt="" width="580" height="369" /></a><p class="wp-caption-text">All concerts happening during your trip</p></div>
<p>For each event, it provide additional information from the seatwave API. First, it features a Google Map link to the venue (useful to buy your hotel nearby!).</p>
<div id="attachment_289" class="wp-caption aligncenter" style="width: 590px"><a href="http://apassant.net/wp-content/uploads/2012/02/seattrip-map1.png"><img class="size-full wp-image-289" title="seattrip-map" src="http://apassant.net/wp-content/uploads/2012/02/seattrip-map1.png" alt="" width="580" height="300" /></a><p class="wp-caption-text">Use GoogleMap to display the venue map</p></div>
<p>Also, it links to the seatwave website so that you can directly book your concert &#8211; and lists the number of remaining tickets if the show is almost sold-out!</p>
<div id="attachment_286" class="wp-caption aligncenter" style="width: 590px"><a href="http://apassant.net/wp-content/uploads/2012/02/seattrip-buy1.png"><img class="size-full wp-image-286" title="seattrip-buy" src="http://apassant.net/wp-content/uploads/2012/02/seattrip-buy1.png" alt="" width="580" height="368" /></a><p class="wp-caption-text">Buy tickets from the seatwave website</p></div>
<p>Here&#8217;s now the fun part, about how this hack works:</p>
<ul>
<li>First, once the e-mail is sent to an address mapped to SendGrip API &#8211; a PHP script extracts the location and the timeframe of the trip from the e-mail. The extraction if airline-specific, and so far the hack works only on AerLingus ticket (however, an abstraction layer allows to easily create new wrappers &#8211; a similar <a href="http://www.quora.com/How-does-Tripit-parse-emails">strategy as used in TripIt</a>).</li>
<li>Then, the seatwave API is used to get the list of all events in the area for that period, including all events details.</li>
<li>Once we have the events, seevl is used to identify the featured artist from the list of available concerts.</li>
<li>Finally, the e-mail id rendered in HTML, and send via SendGrid.</li>
</ul>
<p>It takes around 2 minutes to do the whole processing, check this short video to see it in action. Note that I changed the trip date as that was an old trip ticket for which seatwave didn&#8217;t get any data, and that the video has been cut to avoid the delay of receiving the e-mail with the listing.</p>
<p><iframe src="http://player.vimeo.com/video/37059664?title=0&amp;byline=0&amp;portrait=0" frameborder="0" width="600" height="435"></iframe></p>
<p>Also, don&#8217;t forget to check this impressive list of <a href="http://wiki.musichackday.org/index.php?title=SF_2012_Hacks">62 hacks</a> - especially <a href="http://wiki.musichackday.org/index.php?title=Buddhafy">Buddhafy</a> (mind-control for Spotify !) and <a href="http://concert2021.com/">Concerts2021</a> &#8211; the future of live gigs (or not, thanksfully <img src='http://apassant.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  !</p>
]]></content:encoded>
			<wfw:commentRss>http://apassant.net/2012/02/13/seattrip-concert-listing-for-your-next-trip-or-seatwave-meets-tripit/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Mixture &#8211; real-word music-discovery</title>
		<link>http://apassant.net/2012/02/08/mixture-real-word-music-discovery/</link>
		<comments>http://apassant.net/2012/02/08/mixture-real-word-music-discovery/#comments</comments>
		<pubDate>Wed, 08 Feb 2012 02:34:55 +0000</pubDate>
		<dc:creator>terraces</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[IoT]]></category>
		<category><![CDATA[midem]]></category>
		<category><![CDATA[musicdiscovery]]></category>
		<category><![CDATA[musichackday]]></category>
		<category><![CDATA[rdio]]></category>
		<category><![CDATA[seevl]]></category>
		<category><![CDATA[webdoc]]></category>

		<guid isPermaLink="false">http://apassant.net/?p=274</guid>
		<description><![CDATA[MIDEM HackDay was &#8211; as expected &#8211; a wonderful event, where 18 hacks have been built over the week-end (screenshots on this MIDEM blog post). In particular, I&#8217;d give my thumbs-up for Tourrent - helping bands to set-up]]></description>
			<content:encoded><![CDATA[<p><a href="http://cannes.musichackday.org/2012">MIDEM HackDay</a> was &#8211; as expected &#8211; a wonderful event, where <a href="http://wiki.musichackday.org/index.php?title=MIDEM_Hack_Day_2012_Hacks">18 hacks</a> have been built over the week-end (screenshots on this <a href="http://blog.midem.com/2012/01/midem-hack-day-the-hacks-unveiled/">MIDEM blog post</a>).</p>
<p>In particular, I&#8217;d give my thumbs-up for <a href="http://tourrents.benfields.net/">Tourrent</a> - helping bands to set-up their next tours based on Torrent downloads of their tracks, <a href="http://flatdrop.heroku.com">FlatDrop</a> - Micropayments for Soundcloud tracks, and <a href="http://vimeo.com/35880738">Badgify</a> - audioscrobbler meets <a href="http://www.arduino.cc">Arduino</a>.</p>
<p>Together with <a href="http://ian.mckellar.org">Ian</a> from <a href="http://rd.io">rd.io</a> and Guillaume from <a href="http://webdoc.com">Webdoc</a>, we&#8217;ve worked on a new music discovery approach, leveraging real-world data. Various 4-square hacks enabling geolocation-based discovery have been build on previous MHD, so we&#8217;ve decided to take another route: take a picture of anything, and play the songs that reference this thing. Whether it&#8217;s a <a href="http://apassant.net/2012/01/29/midem-hackday-teasing/">bottle</a>, some <a href="http://www.youtube.com/watch?v=3B0Y3LUqr1Q">brown sugar</a>, or a <a href="http://www.youtube.com/watch?v=KwIe_sjKeAY">house</a>.</p>
<p>So here&#8217;s <a href="http://mixtureapp.com">Mixture</a>, a simple hack / proof-of-concept of the approach, combining APIs from <a href="http://iqengines.com">IQ Engines</a> (image recognition &#8211; give it a try if you&#8217;re looking for something similar, even though queries can be a bit slow), <a href="http://musixmatch.com">musiXmatch</a> (lyrics identification), <a href="http://rd.io">rd.io</a> (music streaming) and <a href="http://seevl.net">seevl</a> (artist data). It may still be buggy (we&#8217;ll work on it) and some APIs have a daily-rate limit that could block the application, but you should be able to get the overall idea!</p>
]]></content:encoded>
			<wfw:commentRss>http://apassant.net/2012/02/08/mixture-real-word-music-discovery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MIDEM HackDay teasing</title>
		<link>http://apassant.net/2012/01/29/midem-hackday-teasing/</link>
		<comments>http://apassant.net/2012/01/29/midem-hackday-teasing/#comments</comments>
		<pubDate>Sun, 29 Jan 2012 10:44:19 +0000</pubDate>
		<dc:creator>terraces</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[AR]]></category>
		<category><![CDATA[midem]]></category>
		<category><![CDATA[music]]></category>
		<category><![CDATA[musichackday]]></category>

		<guid isPermaLink="false">http://apassant.net/?p=266</guid>
		<description><![CDATA[When music meets the real world. It&#8217;s gonna be awesome. &#160;]]></description>
			<content:encoded><![CDATA[<p>When music meets the real world. It&#8217;s gonna be awesome.</p>
<p><a href="http://apassant.net/wp-content/uploads/2012/01/screen-shot-2012-01-29-at-11-31-051.png"><img class="aligncenter size-full wp-image-267" title="mixture" src="http://apassant.net/wp-content/uploads/2012/01/screen-shot-2012-01-29-at-11-31-051.png" alt="" width="365" height="197" /></a></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://apassant.net/2012/01/29/midem-hackday-teasing/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>About JSON-LD and Content-Negotiation</title>
		<link>http://apassant.net/2012/01/22/about-json-ld-and-content-negotiation/</link>
		<comments>http://apassant.net/2012/01/22/about-json-ld-and-content-negotiation/#comments</comments>
		<pubDate>Sun, 22 Jan 2012 10:51:45 +0000</pubDate>
		<dc:creator>terraces</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[content negotiation]]></category>
		<category><![CDATA[ontology]]></category>

		<guid isPermaLink="false">http://terraces.wordpress.com/?p=246</guid>
		<description><![CDATA[NB: This post was originally written on blog.seevl.net - I crosspost it here now as I&#8217;m starting to blog here again, and I think that&#8217;s definitely an approach and a data-serialisation]]></description>
			<content:encoded><![CDATA[<p><em><strong>NB: This post was originally written on <a href="http://blog.seevl.net">blog.seevl.net</a> - I crosspost it here now as I&#8217;m starting to blog here again, and I think that&#8217;s definitely an approach and a data-serialisation worth using.</strong></em></p>
<p>I wanted to write about our use of <a href="http://en.wikipedia.org/wiki/Content_negotiation">Content-Negotiation</a> for a long time, and as we recently switched to <a href="http://json-ld.org">JSON-LD</a> as the unique format to represent our data, I decided to talk about both in this blog post.</p>
<p>As you may know (or can guess when checking the <a href="http://seevl.net/team">team page</a>), we have been involved in efforts around the <a href="http://www.w3.org/2001/sw/">Semantic Web</a> and <a href="http://linkeddata.org">Linked Data</a> for many years, and are big fans of the graph model that these technologies offer. It&#8217;s flexible, it&#8217;s agile, and it&#8217;s a straightforward way to integrate and mash-up data from different sources. But when it comes to providing this data back to developers, things are more complex. One could chose to offer <a href="http://www.w3.org/TR/REC-rdf-syntax/">RDF/XML</a> or <a href="http://www.w3.org/TR/turtle/">Turtle</a>, but that generally requires a new skillset. Why ? Because most platforms provide JSON, and developers are consequently more used to this than to other formats. Check in particular <a href="http://www.slideshare.net/jmusser/j-musser-semtechjun2011">these recent stats</a> (slide 22-24) from a talk that <a href="http://twitter.com/johnmusser">John Musser</a> (<a href="http://www.programmableweb.com/">ProgrammableWeb</a>) gave at <a href="http://semtech2011.semanticweb.com/">SemTech</a> this year.</p>
<p>So, we decided to use <a href="http://json-ld.org">JSON-LD</a> for our data, after an initial home-grown JSON-modeling, that was not that far from the current <a href="http://json-ld.org/spec/latest/">JSON-LD spec</a>. One thing I particularly like is that it enables to send &#8220;objects&#8221; over the wire rather than as a set of triples. For instance, consider this representation of facts about <a href="http://data.seevl.net/entity/pzkVnsbP#id">the Beatles</a>:</p>
<pre>{
    "@context": {
        "collaborated_with": "http://purl.org/ontology/mo/collaborated_with",
        "id": "http://purl.org/dc/terms/identifier",
        "origin": "http://purl.org/ontology/mo/origin",
        "prefLabel": "http://www.w3.org/2004/02/skos/core#prefLabel",
        "uri": "@subject"
    },
    "collaborated_with": [
        {
            "id": "hSmwe4Dq",
            "prefLabel": "The Quarrymen",
            "uri": "http://data.seevl.net/entity/hSmwe4Dq#id"
        }
    ],
    "origin": [
        {
            "id": "px6UYEPh",
            "prefLabel": "England",
            "uri": "http://data.seevl.net/entity/px6UYEPh#id"
        },
        {
            "id": "xMgUSM9b",
            "prefLabel": "Liverpool",
            "uri": "http://data.seevl.net/entity/xMgUSM9b#id"
        }
    ],
    "prefLabel": "The Beatles",
    "uri": "http://data.seevl.net/entity/pzkVnsbP#id"
}</pre>
<p>If you are used to JSON, you probably understand with no additional effort, and can use any <a href="http://json.org">JSON toolkit</a> to parse it. If you are aware of the <a href="http://www.w3.org/DesignIssues/LinkedData.html">Linked Data principles</a>, you directly see that every entity has its own URI, that can also be accessed to get more infos about it. And if you care about triples, you can use a JSON-LD parser or the <a href="http://json-ld.org/playground/">public playground</a>, that will understand the <a href="http://json-ld.org/spec/latest/#the-context">@context</a> values to translate this JSON-LD feed into raw triples (using <a href="http://musicontology.com">MO</a> and <a href="http://www.w3.org/2004/02/skos/">SKOS</a> here). Clearly, the best of both worlds.</p>
<p>Then, <a href="http://en.wikipedia.org/wiki/Content_negotiation">Content-negotiation</a>. When using a website and then deciding to develop around it,  I am often frustrated by the need to learn new URLs, new paths, new parameters. Why the hell humans and machines should have different way to access the same data, albeit in different formats ? This is exactly why we rely on Content-negotiation on <a href="http://data.seevl.net">data.seevl.net</a>. By default, every page is rendered as HTML, but if you ask for JSON, you&#8217;ll get a JSON-LD representation of the same entity, separated into different &#8220;slices&#8221; (infos, link, facts, topics and related artists, as detailed on <a href="http://developers.seevl.net">our dev zone</a>). No need to learn new URIs, no additional paramaters. Just tell us you want JSON, and we&#8217;ll serve you what you need !</p>
<pre>curl http://data.seevl.net/entity/?prefLabel=beatles
-H "Accept: application/json" -H "X_APP_ID: 1c55b80a"
-H "X_APP_KEY:65e7fbe154e8cee6c1704a9358dd8939"</pre>
<div>Of course, we still want users to authenticate and gather metrics about data usage, but content-negotiation (versus a separate api.mydomain.org) does not prevent this at all. We are using <a href="http://3scale.com">3scale</a> and as opposed to most API-enabler, they do not proxy the API calls. This means that we can simply implement content-negotiation from our side (using our existing URIs), and just call them when authenticating and reporting metrics.</div>
<div>Overall, this combination of Content-negotiation and JSON-LD works like this (plus some other usual suspects such as <a href="http://djangoproject.org">Django</a>, <a href="http://memcached.org">memcached</a>, <a href="http://httpd.apache.org/">Apache</a>, <a href="https://www.varnish-cache.org/">Varnish</a> and <a href="http://virtuoso.openlinksw.com/">Virtuoso</a> - all on <a href="http://aws.amazon.com/">AWS</a>)</div>
<div>
<div id="attachment_6585553670" class="wp-caption aligncenter" style="width: 541px"><a href="http://seevl.files.wordpress.com/2011/08/conneg-jsonld.png"><img class="size-full wp-image-6585553670 " title="conneg-jsonld" src="http://seevl.files.wordpress.com/2011/08/conneg-jsonld.png" alt="Content-negotiation + JSON-LD" width="531" height="389" /></a><p class="wp-caption-text">Content-negotiation + JSON-LD</p></div>
</div>
<div>To conclude this post, there are two things that really matter here:</div>
<div>
<ul>
<li>First, <strong>WYSIWYM</strong> &#8211; What You See Is What You Mean. Using JSON-LD, we provide a view of our data directly mapped to our underlying model &#8211; in a simple JSON format. This helps to understand of how data is represented and how one can query it later (for example, &#8220;reversing&#8221; the previous representation to get a list of <a href="http://data.seevl.net/entity/?origin=xMgUSM9b">bands originated from Liverpool</a>)</li>
<li>Then, <strong>we save costs</strong>. By implementing a Content-negotiation strategy, we have a single layer to maintain between users (humans and machines) and our data. That largely simplifies the deployment process, and minimises overhead. Also, every new feature is immediately available from both side with no added cost.</li>
</ul>
<div>Enjoy a Web designed both for humans and machines. Enjoy a Web of Data.</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://apassant.net/2012/01/22/about-json-ld-and-content-negotiation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JSON-LD &#8211; JavaScript Object Notation for Linking Data</title>
		<link>http://apassant.net/2012/01/17/json-ld-javascript-object-notation-for-linking-data/</link>
		<comments>http://apassant.net/2012/01/17/json-ld-javascript-object-notation-for-linking-data/#comments</comments>
		<pubDate>Tue, 17 Jan 2012 20:19:00 +0000</pubDate>
		<dc:creator>terraces</dc:creator>
				<category><![CDATA[link]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[linkeddata]]></category>
		<category><![CDATA[rdf]]></category>
		<category><![CDATA[semanticweb]]></category>

		<guid isPermaLink="false">http://blog.apassant.net/post/16018956806</guid>
		<description><![CDATA[JSON-LD &#8211; JavaScript Object Notation for Linking Data The best of both worlds.]]></description>
			<content:encoded><![CDATA[<p><a href="http://json-ld.org/">JSON-LD &#8211; JavaScript Object Notation for Linking Data</a>
<p>The best of both worlds.</p>
]]></content:encoded>
			<wfw:commentRss>http://apassant.net/2012/01/17/json-ld-javascript-object-notation-for-linking-data/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Timeout for HTML5 localStorage</title>
		<link>http://apassant.net/2012/01/16/timeout-for-html5-localstorage/</link>
		<comments>http://apassant.net/2012/01/16/timeout-for-html5-localstorage/#comments</comments>
		<pubDate>Tue, 17 Jan 2012 00:36:39 +0000</pubDate>
		<dc:creator>terraces</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[localstorage]]></category>

		<guid isPermaLink="false">http://blog.apassant.net/post/15978979528</guid>
		<description><![CDATA[HTML5 localStorage is a nice way to store data on the client side. However, when using it to cache remote API calls, you may want to purge it from time]]></description>
			<content:encoded><![CDATA[<p><a href="http://dev.w3.org/html5/webstorage/">HTML5 localStorage</a> is a nice way to store data on the client side. However, when using it to cache <a href="http://blog.seevl.net/2011/08/18/about-json-ld-and-content-negotiation/">remote API calls</a>, you may want to purge it from time to time. As per its spec, there&#8217;s no way to automatically set-up a timeOut, so here&#8217;s a tiny bit of <a href="http://jquery.org">jQuery</a> that does the job:</p>
<pre>var hours = 24; // Reset when storage is more than 24hours
var now = new Date().getTime();
var setupTime = localStorage.getItem('setupTime');
if (setupTime == null) {
    localStorage.setItem('setupTime', now)
} else {
    if(now-setupTime &gt; hours*60*60*1000) {
        localStorage.clear()
        localStorage.setItem('setupTime', now);
    }
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://apassant.net/2012/01/16/timeout-for-html5-localstorage/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Back to blogging</title>
		<link>http://apassant.net/2012/01/16/back-to-blogging/</link>
		<comments>http://apassant.net/2012/01/16/back-to-blogging/#comments</comments>
		<pubDate>Tue, 17 Jan 2012 00:03:00 +0000</pubDate>
		<dc:creator>terraces</dc:creator>
				<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://blog.apassant.net/post/15976955643</guid>
		<description><![CDATA[Well, not really, even though I should find a way to restore all the posts of my previous blog somewhere on that domain. I&#8217;ve setup this Tumblr for random notes,]]></description>
			<content:encoded><![CDATA[<p>Well, not really, even though I should find a way to restore all the posts of my previous blog somewhere on that domain.</p>
<p>I&#8217;ve setup this Tumblr for random notes, pics, etc. and a few longer posts. Yet, I guess that most of the blogging side will be on <a href="http://blog.seevl.net">http://blog.seevl.net</a> &#8211; both from the tech and the business side, discussing what we&#8217;re building over there in the music and data space. I&#8217;ll try to link them &#8211; or crosspost some bits and pieces &#8211; from here.</p>
]]></content:encoded>
			<wfw:commentRss>http://apassant.net/2012/01/16/back-to-blogging/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Internships positions: Web Engineering and BizDev</title>
		<link>http://apassant.net/2011/04/05/internships-positions-web-engineering-and-bizdev/</link>
		<comments>http://apassant.net/2011/04/05/internships-positions-web-engineering-and-bizdev/#comments</comments>
		<pubDate>Tue, 05 Apr 2011 19:33:21 +0000</pubDate>
		<dc:creator>terraces</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[jobs]]></category>
		<category><![CDATA[seevl]]></category>
		<category><![CDATA[semanticweb]]></category>

		<guid isPermaLink="false">http://blog.apassant.net/post/16115747497</guid>
		<description><![CDATA[Originally posted on blog.seevl.net, and probably also relevant for the readers of this website or planetrdf. You’re passionate about music? Want to join a team working on state-of-the-art Linked Data,]]></description>
			<content:encoded><![CDATA[<p>Originally posted on <a href="http://blog.seevl.net">blog.seevl.net</a>, and probably also relevant for the readers of this website or planetrdf.</p>
<p>
You’re passionate about music? Want to join a team working on state-of-the-art Linked Data, Social Semantic Web and NoSQL technologies? Want to work with third-party services to let them know what they can do with our data? Let’s join the team! We are currently looking for interns on Web Engineering and Business Development. The internships last between three and six months and are based in Galway, Ireland.</p>
<p><b>About Us</b></p>
<p>Seevl provides a new way to explore the cultural and musical universe of your favorite artists, and lets you discover new ones by understanding how they are connected. We are a spin-out of the Digital Enterprise Research Institute (DERI), at the National University or Ireland, Galway. DERI is the world’s largest Semantic Web research institute, and Seevl brings together several years of R&amp;D on the Semantic Web, Linked Data, Social Web and Web Science areas.</p>
<p><b>About You</b></p>
<p>You are passionate about Music, Social Web and Linked Data technologies. You think that the Web could be a better place for music discovery if data was more integrated, structured and interlinked &#8211; and also more open. You want to investigate the related engineering or business development challenges.</p>
<p><b>Required Skills</b></p>
<ul>
<li>Good written and oral communication</li>
<li>Motivation, autonomy and self-organisation</li>
<li>Ongoing appetite for knowledge</li>
<li>Good musical knowledge, whatever the style is</li>
</ul>
<p><b>Additional Skills for the Engineering Position</b></p>
<ul>
<li>Python, Django, HTML, Javascript</li>
<li>RDF(S), Linked Data, APIs, REST architectures</li>
</ul>
<p><b>Additional Skills for the BizDev Position</b></p>
<ul>
<li>Knowledge of the Music and / or Web industries</li>
<li>Interest in Open Source / Open Data and related business models</li>
</ul>
<p><b>Benefits</b></p>
<ul>
<li>The opportunity to work on exciting and emerging Web standards and to integrate Music and technology in a brand-new product</li>
<li>A stimulating, dynamic and multi-cultural workplace combined with a spin-out environment, having strong ties with world-class researchers</li>
<li>Flexible working hours and free coffee</li>
</ul>
<p><b>Want to apply?</b></p>
<p>Great. Please send us your resume (or LinkedIn profile), a short statement on why you are interested and some links to your blog and Twitter account to jobs[AT]seevl.net. For the engineering position, please send a link to your github account (or equivalent).</p>
]]></content:encoded>
			<wfw:commentRss>http://apassant.net/2011/04/05/internships-positions-web-engineering-and-bizdev/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Postdoc position in DERI on real-time data-integration and recommendations for the Social Semantic Web</title>
		<link>http://apassant.net/2011/01/14/postdoc-position-in-deri-on-real-time-data-integration-and-recommendations-for-the-social-semantic-web/</link>
		<comments>http://apassant.net/2011/01/14/postdoc-position-in-deri-on-real-time-data-integration-and-recommendations-for-the-social-semantic-web/#comments</comments>
		<pubDate>Fri, 14 Jan 2011 09:05:23 +0000</pubDate>
		<dc:creator>terraces</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[deri]]></category>
		<category><![CDATA[semanticweb]]></category>
		<category><![CDATA[social web]]></category>

		<guid isPermaLink="false">http://blog.apassant.net/post/16115747671</guid>
		<description><![CDATA[Position Description The DERI Social Software Unit and the Unit for Information Mining and Retrieval invite applications for an applied research postdoctoral position for 14 months on real-time data-integration and]]></description>
			<content:encoded><![CDATA[<p><b>Position Description</b></p>
<p>The DERI Social Software Unit and the Unit for Information Mining and Retrieval invite applications for an applied research postdoctoral position for 14 months on real-time data-integration and recommendations for the Social Semantic Web, in the context of the ADVANSSE proposal funded by Cisco systems. The position is expected to start on the 1st of February.</p>
<p><b>Requirements</b></p>
<p>Candidates should have a PhD degree in a relevant field of study, e.g. Social Web, Semantic Web, recommendation systems, Web engineering, etc.<br />
The position is for a fixed period of 14 months with the possibility of extension, depending on successful acquisition of project funding in which the selected candidate will be expected to actively participate during his time in DERI. The selected candidate should be able to combine formal scientific work, published in top-class conferences and journals, with application-oriented research and development (proof-of-concept).</p>
<p><b>Essential skills</b></p>
<ul>
<li>A PhD, typically in a computing-related discipline, with a strong applied component</li>
<li>A record of published research in the aforementioned domains</li>
<li>Research experience on the Social Web, Semantic Web, recommender systems and Web engineering</li>
<li>An ability to work in an interdisciplinary team</li>
<li>An ability to comfortably combine research with applied work</li>
<li>An ability to develop and manage their own research agenda</li>
<li>Commitment to deliver on project milestones</li>
<li>Experience in software development</li>
</ul>
<p><b>Desirable skills</b></p>
<ul>
<li>Knowledge of standardisation work</li>
<li>Industry experience</li>
<li>Experience in the preparation of research grant proposals</li>
<li>Experience in student supervision</li>
</ul>
<p><b>Informal Inquiries</b></p>
<p>For informal enquiries about this post please contact Dr. Alexandre Passant alexandre.passant AT deri.org and Dr. Conor Hayes conor.hayes AT deri.org</p>
<p><b>Position Applications</b></p>
<p>Interested candidates should send a detailed CV, a one page statement describing their research interests, experience and suitability for this position, and the names and addresses of two referees.<br />
Applications may be sent, in a single PDF file, to alexandre.passant AT deri.org</p>
]]></content:encoded>
			<wfw:commentRss>http://apassant.net/2011/01/14/postdoc-position-in-deri-on-real-time-data-integration-and-recommendations-for-the-social-semantic-web/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

