<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
    <channel>
        <title>Sarven Capadisli</title>
        <description>I am Sarven Capadisli, and this website contains a collection of my thoughts and interests.</description>
        <language>en-ca</language>
        <copyright>Copyright 2012 Sarven Capadisli</copyright>
        <link>http://csarven.ca/</link>
        <webMaster>info&#64;csarven&#46;ca (Sarven Capadisli)</webMaster>

        <item>
            <title>Souvenirs from Lisbon</title>
            <pubDate>Tue, 21 Feb 2012 12:00:00</pubDate>
            <description>
                &#60;h1 class=&#34;entry-title&#34;&#62;Souvenirs from Lisbon&#60;/h1&#62;

&#60;div class=&#34;entry-summary&#34;&#62;
    &#60;p&#62;Following are two short stories about the two items that I&#38;#8217;ve brought back with me from my trip to Portugal during 2011-11. These events are the result of my regular wandering around. It is true that I often don&#38;#8217;t know where I am, but do enjoy getting lost nevertheless. A Linked Life &#38;#8211; pun intended, see under the hood.&#60;/p&#62;
&#60;/div&#62;

&#60;div class=&#34;entry-content&#34; xmlns:gr=&#34;http://purl.org/goodrelations/v1#&#34; xmlns:mo=&#34;http://purl.org/ontology/mo/&#34; xmlns:frbr=&#34;http://purl.org/vocab/frbr/core#&#34;&#62;
    &#60;div about=&#34;#lenin-in-the-office&#34; typeof=&#34;cal:Vevent&#34; id=&#34;lenin-in-the-office&#34;&#62;
        &#60;h2 property=&#34;cal:summary&#34;&#62;Lenin in the office&#60;/h2&#62;
        &#60;span property=&#34;cal:dtstart&#34; content=&#34;2011-11-22&#34; datatype=&#34;xsd:date&#34;&#62;&#60;/span&#62;
        &#60;span property=&#34;cal:dtend&#34; content=&#34;2011-11-22&#34; datatype=&#34;xsd:date&#34;&#62;&#60;/span&#62;

        &#60;div property=&#34;cal:description&#34;&#62;
            &#60;p&#62;After checking &#60;a href=&#34;http://en.wikipedia.org/wiki/Castle_of_S%C3%A3o_Jorge&#34;&#62;Castle of S&#38;#227;o Jorge&#60;/a&#62; out, I walked around the hilly neighbourhood. As I was taking a photo of the entrance of a broken down, abandoned building, a person walks right by me, and gives me a quick look that practically said &#38;#8220;why on earth are you taking a photo of a crummy entrance?&#38;#8221;. As she walked towards the inner door, I ask her if she lives there. She smiles, shakes her head, and tells me that she is an archeologist, and that they are actually preserving that
            &#60;span rel=&#34;cal:location&#34;&#62;
                &#60;span about=&#34;[_:GeoRuaDoRecolhimento]&#34;&#62;site,
                    &#60;span rel=&#34;foaf:based_near v:adr&#34;&#62;
                        &#60;span typeof=&#34;wgs:Point v:Address&#34;&#62;
                            &#60;span property=&#34;wgs:lat&#34; content=&#34;38.712753&#34; datatype=&#34;xsd:float&#34;&#62;&#60;/span&#62;
                            &#60;span property=&#34;wgs:long&#34; content=&#34;-9.132257&#34; datatype=&#34;xsd:float&#34;&#62;&#60;/span&#62;
                            &#60;span property=&#34;v:street-address&#34;  content=&#34;Rua do Recolhimento&#34;&#62;&#60;/span&#62;
                            &#60;span property=&#34;rdfs:label v:locality&#34; xml:lang=&#34;pt&#34; content=&#34;Lisboa&#34;&#62;&#60;/span&#62;
                            &#60;span property=&#34;v:country-name&#34; xml:lang=&#34;pt&#34; content=&#34;Portugal&#34;&#62;&#60;/span&#62;
                        &#60;/span&#62;
                    &#60;/span&#62;
                &#60;/span&#62;
            &#60;/span&#62; once they finish gathering necessary data. &#60;span about=&#34;[_:RitaTheArchaeologist]&#34; typeof=&#34;foaf:Person v:VCard&#34;&#62;Rita, the &#60;span rel=&#34;v:title&#34; resource=&#34;http://dbpedia.org/resource/Archaeology&#34;&#62;archeologist&#60;/span&#62;&#60;/span&#62;, invites me in to show what they are up to inside. I accept the challenge without giving it a second thought. With a few walled turns, we walk in to the main garden. Construction work is everywhere; ditches, old toys, garbage, tools, you name it. After showing me around and giving me some background information on what they were doing, she tells me that she had to get back to digging, but if I wanted, I could stick around while they worked.&#60;/p&#62;

            &#60;p about=&#34;http://csarven.ca/#i&#34; rev=&#34;foaf:maker dcterms:creator&#34;&#62;&#60;img typeof=&#34;foaf:Image&#34; property=&#34;dcterms:title&#34; src=&#34;http://csarven.ca/media/images/articles/2-b66df2cdc8db17ecae8f20abb77053588b3b42e1.jpg&#34; content=&#34;Rita the archeologist and her team digging&#34; alt=&#34;Rita the archeologist and her team digging&#34; width=&#34;640&#34; height=&#34;480&#34;/&#62;&#60;/p&#62;

            &#60;p&#62;Apparently, they were trying to get a better understanding of the construction of the site, primarily to see whether it was built on top of another older structure that might be of interest to them. They dig places up, mark them using a site coordinate system, and record their findings. Naturally, I mentioned URIs (non-tech speak: unique identifiers to refer to things on the Web) during that conversation, and how it could be useful to their work (). But I don&#38;#8217;t think I was convincing enough, nor was it that important.&#60;/p&#62;

            &#60;p&#62;The room in which they were digging belonged to a &#60;span about=&#34;[_:Carpenter]&#34; typeof=&#34;foaf:Person v:VCard&#34;&#62;&#60;span rel=&#34;foaf:interest&#34; href=&#34;http://en.wikipedia.org/wiki/Marxism&#34;&#62;Marxist&#60;/span&#62;-&#60;span rel=&#34;foaf:interest&#34; href=&#34;http://en.wikipedia.org/wiki/Communism&#34;&#62;Communist&#60;/span&#62; &#60;span rel=&#34;foaf:interest v:role&#34; resource=&#34;http://dbpedia.org/resource/Carpentry&#34;&#62;carpenter&#60;/span&#62;&#60;/span&#62;, whom was most likely quiet about his political views in Lisbon back in early last century. The carpenter had a poster of &#60;a about=&#34;http://dbpedia.org/resource/Vladimir_Lenin&#34; rel=&#34;foaf:depiction&#34; resource=&#34;[_:PhotoOfLeninsPoster]&#34; href=&#34;http://en.wikipedia.org/wiki/Vladimir_Lenin&#34;&#62;Lenin&#60;/a&#62; on one of the cabinet doors. As I was doing my own little documentation of the whole event, Rita suggested that I should take it as a souvenir. I figured that was a good idea because, it was old, had a story behind it, and since I never have souvenirs from places, I had no objection to this particular one.&#60;/p&#62;

            &#60;p about=&#34;http://csarven.ca/#i&#34; rel=&#34;mo:possess_item&#34;&#62;&#60;span about=&#34;[_:LeninsPoster]&#34; typeof=&#34;frbr:Item&#34;&#62;&#60;span rel=&#34;foaf:img foaf:depiction&#34;&#62;&#60;img about=&#34;[_:PhotoOfLeninsPoster]&#34; typeof=&#34;foaf:Image&#34; property=&#34;dcterms:title&#34; src=&#34;http://csarven.ca/media/images/articles/2-dcb8876b60c11b1c6af64c5b3d11eecd1d7edf67.jpg&#34; content=&#34;A poster of Lenin from early 20th century&#34; alt=&#34;A poster of Lenin from early 20th century&#34; width=&#34;640&#34; height=&#34;480&#34; rel=&#34;foaf:maker dcterms:creator&#34; resource=&#34;http://csarven.ca/#i&#34;/&#62;&#60;/span&#62;&#60;/span&#62;&#60;/p&#62;

            &#60;p&#62;Now I have this poster by my desk. I don&#38;#8217;t have a political interest in this, but I guess I&#38;#8217;ll leave it there for fun until someone tells me to put it down, or higher up.&#60;/p&#62;
        &#60;/div&#62;
    &#60;/div&#62;

    &#60;div about=&#34;#stool-to-saudade&#34; typeof=&#34;cal:Vevent&#34; id=&#34;stool-to-saudade&#34;&#62;
        &#60;h2 property=&#34;cal:summary&#34;&#62;Chair to &#60;span xmlns:lang=&#34;pt&#34; title=&#34;Portuguese for &#39;longing&#39; in English&#34;&#62;saudade&#60;/span&#62;&#60;/h2&#62;
        &#60;span property=&#34;cal:dtstart&#34; content=&#34;2011-11-26&#34; datatype=&#34;xsd:date&#34;&#62;&#60;/span&#62;
        &#60;span property=&#34;cal:dtend&#34; content=&#34;2011-11-27&#34; datatype=&#34;xsd:date&#34;&#62;&#60;/span&#62;

        &#60;div property=&#34;cal:description&#34;&#62;
            &#60;p&#62;I walked past a colourful store. Paused, woke myself up, then walked backwards (it may have been a moonwalk), and entered &#60;span rel=&#34;cal:location&#34;&#62;
                &#60;span about=&#34;[_:BCT]&#34; typeof=&#34;gr:BusinessEntity&#34;&#62;
                    &#60;a property=&#34;gr:legalName&#34; rel=&#34;foaf:homepage&#34; href=&#34;http://www.bct.pt/&#34;&#62;BCT&#60;/a&#62; (a &#60;span  about=&#34;[_:BCT]&#34;&#62;&#60;span property=&#34;gr:category&#34;&#62;design&#60;/span&#62;&#60;/span&#62; store) 
                    &#60;span rel=&#34;foaf:based_near v:adr&#34;&#62;
                        &#60;span typeof=&#34;wgs:Point v:Address&#34;&#62;
                            &#60;span property=&#34;wgs:lat&#34; content=&#34;38.717146&#34; datatype=&#34;xsd:float&#34;&#62;&#60;/span&#62;
                            &#60;span property=&#34;wgs:long&#34; content=&#34;-9.149120&#34; datatype=&#34;xsd:float&#34;&#62;&#60;/span&#62;
                            &#60;span property=&#34;v:street-address&#34;  content=&#34;Pra&#38;#231;a do Pr&#38;#237;ncipe Real 21&#34;&#62;&#60;/span&#62;
                            &#60;span property=&#34;rdfs:label v:locality&#34; xml:lang=&#34;pt&#34; content=&#34;Lisboa&#34;&#62;&#60;/span&#62;
                            &#60;span property=&#34;v:country-name&#34; xml:lang=&#34;pt&#34; content=&#34;Portugal&#34;&#62;&#60;/span&#62;
                        &#60;/span&#62;
                    &#60;/span&#62;
                    &#60;span rel=&#34;foaf:mbox&#34; resource=&#34;mailto:info&#38;#64;bct&#38;#46;pt&#34;&#62;&#60;/span&#62;
                &#60;/span&#62;
            &#60;/span&#62;. Being a hobbyist user experience design critic, I&#38;#8217;ve predicted that this was going to be time well spent. It turned out that they were hosting part of the 2011 &#60;a href=&#34;http://www.experimentadesign.pt/&#34;&#62;Experimental Design&#60;/a&#62; exhibition. Jackpot.&#60;/p&#62;

            &#60;p&#62;They carried a variety of objects, which by in large was interesting, except a particular set of furniture which stood out for me from the rest. 
            &#60;span about=&#34;[_:CUTFurniture]&#34; typeof=&#34;gr:BusinessEntity&#34;&#62;
                &#60;a property=&#34;gr:legalName&#34; rel=&#34;foaf:homepage&#34; href=&#34;http://cutfurniture.com/&#34;&#62;Cut Furniture&#60;/a&#62;
                &#60;span rel=&#34;foaf:maker&#34; resource=&#34;[_:MarianaBettencourtCostaESilva]&#34;&#62;&#60;/span&#62;
                &#60;span property=&#34;gr:category&#34; content=&#34;Product Design&#34;&#62;&#60;/span&#62;
            &#60;/span&#62; was designed to be stable, and reduce production waste. As I was taking a few photos of it, &#60;span about=&#34;[_:MarianaBettencourtCostaESilva]&#34; typeof=&#34;foaf:Person v:VCard&#34;&#62;&#60;a rel=&#34;foaf:homepage&#34; href=&#34;http://marianacostaesilva.blogspot.com/&#34;&#62;Mariana Bettencourt Costa e Silva&#60;/a&#62;, its &#60;span rel=&#34;v:title&#34;&#62;designer&#60;/span&#62;&#60;/span&#62;, approached me and asked whether I was interested in seeing a demonstration on how the pieces are put together. I gave a no brainer response to that as I also had questions for her. We had a nice design geek-out, and soon enough I wanted to get a &#60;span about=&#34;http://csarven.ca/#i&#34; rel=&#34;mo:possess_item&#34;&#62;&#60;span about=&#34;[_:CUTstool]&#34; typeof=&#34;gr:Offering&#34;&#62;&#60;a property=&#34;gr:name&#34; rel=&#34;foaf:homepage&#34; href=&#34;http://cutfurniture.com/stool&#34;&#62;CUT stool&#60;/a&#62;&#60;span rev=&#34;gr:offers&#34; resource=&#34;[_:CUTFurniture]&#34;&#62;&#60;/span&#62;&#60;/span&#62;&#60;/span&#62; She went ahead to cut me up a fresh stool. &#38;#8220;How cool is that&#38;#8221;, I said to myself.&#60;/p&#62;

            &#60;p about=&#34;http://csarven.ca/#i&#34; rev=&#34;foaf:maker dcterms:creator&#34;&#62;&#60;img resource=&#34;[_:PhotoOfMariana]&#34; typeof=&#34;foaf:Image&#34; property=&#34;dcterms:title&#34; src=&#34;http://csarven.ca/media/images/articles/2-04c202cc8c6cd2e480e14d5ca3c8036fa3e1f4c6.jpg&#34; content=&#34;Mariana cutting a Cut Furniture stool&#34; alt=&#34;Mariana cutting a Cut Furniture stool&#34; width=&#34;640&#34; height=&#34;480&#34;/&#62;&#60;/p&#62;

            &#60;p&#62;&#60;span about=&#34;[_:MarianaBettencourtCostaESilva]&#34; rel=&#34;foaf:knows&#34;&#62;She introduced me to her friends &#60;span about=&#34;[_:PaulaLomelino]&#34; typeof=&#34;foaf:Person v:VCard&#34;&#62;&#60;span rel=&#34;foaf:name&#34;&#62;Paula&#60;/span&#62; (&#60;span rel=&#34;v:role&#34;&#62;designer&#60;/span&#62; / &#60;span rel=&#34;v:role&#34;&#62;teacher&#60;/span&#62;),&#60;/span&#62; and &#60;span about=&#34;[_:RitaMelo]&#34; typeof=&#34;foaf:Person v:VCard&#34;&#62;&#60;a property=&#34;foaf:name&#34; rel=&#34;foaf:homepage&#34; href=&#34;http://blindesign-socially-creative.blogspot.com/&#34;&#62;Rita&#60;/a&#62; (&#60;span rel=&#34;v:role&#34; resource=&#34;http://dbpedia.org/resource/Social_design&#34;&#62;social intervention designer&#60;/span&#62;)&#60;/span&#62;&#60;/span&#62; whom were also wandering around in the store. They invited me over to their friend&#38;#8217;s place, and told me that that&#38;#8217;s rather spontaneous on their part because Portuguese don&#38;#8217;t normally invite strangers on first encounter. I&#38;#8217;ve indirectly experienced this without knowing, when I was unable to hitchhike under a heavy rain in &#60;a href=&#34;http://en.wikipedia.org/wiki/Cascais&#34;&#62;Cascais&#60;/a&#62;. I figured that I was obligated to go along with chaos, hence I followed them with a huge smile. We grabbed some pizza and wine on the way to the house party. Rita, Paula and myself had such good vibe together that we hung out the next day until I had to take my flight later that day.&#60;/p&#62;

            &#60;p about=&#34;http://csarven.ca/#i&#34; rev=&#34;foaf:maker dcterms:creator&#34;&#62;&#60;img resource=&#34;[_:RitaAndPaulaWalking]&#34; typeof=&#34;foaf:Image&#34; property=&#34;dcterms:title&#34; src=&#34;http://csarven.ca/media/images/articles/2-b7a3ac18828df11dfa64440abc6224c5bc849a7f.jpg&#34; content=&#34;Rita and Paula walking down a hill&#34; alt=&#34;Rita and Paula walking down a hill&#34; width=&#34;640&#34; height=&#34;480&#34;/&#62;&#60;/p&#62;

            &#60;p&#62;Back to the stool. What I like about it is that it has only four components with a simple, aesthetically pleasing design. I figured this was a nice item to bring back (hindsight; because of the unfolding of the events). Above all, it was probably the only thing that I was able to carry in my backpack.&#60;/p&#62;

            &#60;p about=&#34;[_:CUTstool]&#34; typeof=&#34;frbr:Item&#34;&#62;&#60;span rel=&#34;foaf:img foaf:depiction&#34;&#62;&#60;img about=&#34;[_:CUTstoolByCorribRiverGalwayIreland]&#34; typeof=&#34;foaf:Image&#34; property=&#34;dcterms:title&#34; src=&#34;http://csarven.ca/media/images/articles/2-33d6862f969677fd7d6cea1059754a6571e8ec69.jpg&#34; content=&#34;The Cut Furniture stool by the Corrib river in Galway, Ireland&#34; alt=&#34;The Cut Furniture stool by the Corrib river in Galway, Ireland&#34; width=&#34;640&#34; height=&#34;480&#34; rel=&#34;foaf:maker dcterms:creator&#34; resource=&#34;http://csarven.ca/#i&#34;/&#62;&#60;/span&#62;&#60;/p&#62;

            &#60;p&#62;When I decided to get it, I didn&#38;#8217;t have an exact use for it in mind, other than the obvious sitting, until I brought it into my bedroom and had it sit there for a few days. Nowadays, every morning, I sit on this stool, put on my shoes and tie&#38;#8217;em up before I leave the house. I think this is the perfect use I have for it at this time because I enjoy the simplicity of that momentary experience.&#60;/p&#62;
        &#60;/div&#62;
    &#60;/div&#62;
&#60;/div&#62;
&#60;div class=&#34;extra&#34;&#62;
    &#60;span about=&#34;http://csarven.ca/#i&#34;&#62;
        &#60;span rel=&#34;foaf:knows&#34; resource=&#34;[_:RitaTheArchaeologist]&#34;&#62;&#60;/span&#62;
        &#60;span rel=&#34;foaf:knows&#34; resource=&#34;[_:RitaMelo]&#34;&#62;&#60;/span&#62;
        &#60;span rel=&#34;foaf:knows&#34; resource=&#34;[_:PaulaLomelino]&#34;&#62;&#60;/span&#62;
    &#60;/span&#62;
    &#60;span about=&#34;[_:RitaMelo]&#34;&#62;
        &#60;span rel=&#34;foaf:knows&#34; resource=&#34;[_:MarianaBettencourtCostaESilva]&#34;&#62;&#60;/span&#62;
        &#60;span rel=&#34;foaf:knows&#34; resource=&#34;[_:PaulaLomelino]&#34;&#62;&#60;/span&#62;
        &#60;span rel=&#34;foaf:knows&#34; resource=&#34;http://csarven.ca/#i&#34;&#62;&#60;/span&#62;
    &#60;/span&#62;
    &#60;span about=&#34;[_:PaulaLomelino]&#34;&#62;
        &#60;span rel=&#34;foaf:knows&#34; resource=&#34;[_:MarianaBettencourtCostaESilva]&#34;&#62;&#60;/span&#62;
        &#60;span rel=&#34;foaf:knows&#34; resource=&#34;[_:RitaMelo]&#34;&#62;&#60;/span&#62;
        &#60;span rel=&#34;foaf:knows&#34; resource=&#34;http://csarven.ca/#i&#34;&#62;&#60;/span&#62;
    &#60;/span&#62;
&#60;/div&#62;
                [&lt;a href=&quot;http://csarven.ca/souvenirs-from-lisbon#comment_write&quot;&gt;Leave a comment&lt;/a&gt;]
            </description>
            <guid>http://csarven.ca/souvenirs-from-lisbon</guid>
            
        </item>
    
        <item>
            <title>Mobile device not found</title>
            <pubDate>Sat, 05 Nov 2011 08:00:00</pubDate>
            <description>
                &#60;h1 class=&#34;entry-title&#34;&#62;What is this magical mobile device you speak of?&#60;/h1&#62;

&#60;div class=&#34;entry-content&#34;&#62;
&#60;p&#62;From time to time, some people are rather surprised to hear me tell them that I don&#39;t own and use a mobile device like a cellular/smart phone.&#60;/p&#62;

&#60;p&#62;I do acknowledge the advantages of having one. And, there are times I&#39;m compelled to get myself one of these devices. But something holds me back, or at least I postpone the idea by telling myself that, I have managed fine up to now. Maybe I&#39;ll get one in the future. I usually leave it at that.&#60;/p&#62;

&#60;p&#62;Here are my main reasons:&#60;/p&#62;

&#60;dl&#62;
    &#60;dt id=&#34;travel-light&#34;&#62;I like to travel light&#60;/dt&#62;
    &#60;dd&#62;Minimizing weight and not constantly carrying this item, lets me stay flexible and agile. It also helps a great deal when I have to run away from dogs that shoot bees from their mouth when they bark, and cops as I hop over fences.&#60;/dd&#62;
    &#60;dt id=&#34;no-tracking&#34;&#62;I don&#39;t want to be tracked by anyone&#60;/dt&#62;
    &#60;dd&#62;This is my version of the offline mode in the real-world. Not to mention that the secret men in black can&#39;t easily find me.&#60;/dd&#62;
    &#60;dt id=&#34;now&#34;&#62;I want to feel detached and focus on the now&#60;/dt&#62;
    &#60;dd&#62;When I&#39;m out there, I have the opportunity to fully focus my senses on what&#39;s in front of me. It makes me feel like a plain and simple human being.&#60;/dd&#62;
&#60;/dl&#62;

&#60;p&#62;These combined, manifests a minor personal philosophy for me. Perhaps one day I will join the rest of humanity and its sorcery, when the other reasons outweigh mine.&#60;/p&#62;

&#60;p&#62;&#60;q cite=&#34;http://www.imdb.com/title/tt0109686/quotes?qt=qt0383416&#34; title=&#34;Llyod from Dumb &#38;#38; Dumber&#34;&#62;Alright. Well, see ya later!&#60;/q&#62;&#60;/p&#62;
&#60;/div&#62;
                [&lt;a href=&quot;http://csarven.ca/mobile-device-not-found#comment_write&quot;&gt;Leave a comment&lt;/a&gt;]
            </description>
            <guid>http://csarven.ca/mobile-device-not-found</guid>
            
        </item>
    
        <item>
            <title>How-to create a Linked Data site</title>
            <pubDate>Thu, 03 Feb 2011 08:00:00</pubDate>
            <description>
                &#60;h1 class=&#34;entry-title&#34;&#62;A how-to guide for creating a Linked Data site&#60;/h1&#62;
&#60;div class=&#34;entry-content&#34;&#62;
&#60;p&#62;&#38;#8220;That sounds fantastic&#38;#8221; you say, &#38;#8220;..but how do I create a Linked Data site?&#38;#8221;&#60;/p&#62;

&#60;p&#62;In this article, I will try to address this by walking you through the whole process: from zero to look at my linked data bling. Well, at least one way of going at it. I will conveniently dodge the question of answering what constitutes a &#60;a href=&#34;http://en.wikipedia.org/wiki/Linked_Data&#34;&#62;Linked Data&#60;/a&#62; site, which technologies are involved, or how things are ought to be built.&#60;/p&#62;

&#60;p&#62;For our purposes, we will assume that you have a basic understanding of the RDF data model, have seen a few triple statements in one of the serializations, know what SPARQL is for, can read some PHP and HTML code, not too shy in the Linux (Ubuntu/Debian as far as these examples go) command line, and have Apache and PHP ready to go in your environment.&#60;/p&#62;

&#60;p&#62; Unfortunately there are lots of steps at the moment, but, I will do my best to make it painless. Bare with the Linked Data community as improvements are made on a daily basis. With that out of the way, let&#38;#8217;s dive in.&#60;/p&#62;

&#60;h2 id=&#34;what-is-on-the-menu&#34;&#62;What&#38;#8217;s on the menu?&#60;/h2&#62;
&#60;ul&#62;
    &#60;li&#62;Setup a SPARQL server to store and query our data, and import RDF triples into that store&#60;/li&#62;
    &#60;li&#62;Install a bunch of tools which will interact with the queried data&#60;/li&#62;
    &#60;li&#62;Create templates to output stuff from our RDF store&#60;/li&#62;
&#60;/ul&#62;

&#60;h2 id=&#34;setup-fuseki&#34;&#62;Setting up Fuseki&#60;/h2&#62;

&#60;p&#62;We will use &#60;a href=&#34;http://openjena.org/wiki/Fuseki&#34;&#62;Fuseki&#60;/a&#62; as our SPARQL server. If you wish to use a different server (see also &#60;a href=&#34;http://esw.w3.org/SparqlImplementations#Query_Engines&#34;&#62;SPARQL Query Engines&#60;/a&#62;), you can skip this part of the how-to. Before we get Fuseki, let&#38;#8217;s make sure the essentials to run it are in place:&#60;/p&#62;
&#60;pre&#62;
sudo apt-get install maven2
sudo apt-get install ruby
sudo apt-get install subversion
&#60;/pre&#62;

&#60;p&#62;And, now, Fuseki:&#60;/p&#62;
&#60;pre&#62;
sudo svn co https://svn.apache.org/repos/asf/incubator/jena/Jena2/Fuseki/trunk /usr/lib/fuseki
cd /usr/lib/fuseki
sudo mvn clean package
&#60;/pre&#62;

&#60;p&#62;A minor note here: if you prefer, you can use the &#60;a href=&#34;http://www.openjena.org/repo-dev/org/openjena/fuseki/&#34;&#62;official Fuseki builds&#60;/a&#62; instead.&#60;/p&#62;

&#60;p&#62;At this point, we&#38;#8217;ll configure the way we want to run Fuseki. For instance, if we want to do &#60;code&#62;DESCRIBE&#60;/code&#62; queries for resources as subject and object, there is a class that does that for us. So, let&#38;#8217;s copy it over to our source directory:&#60;/p&#62;
&#60;pre&#62;
sudo cp src-dev/dev/BackwardForwardDescribeFactory.java src/main/java/org/openjena/fuseki/
&#60;/pre&#62;

&#60;p&#62;Update the namespace to use &#60;code&#62;org.openjena.fuseki&#60;/code&#62; instead of &#60;code&#62;dev&#60;/code&#62; for package at &#60;code&#62;/usr/lib/fuseki/src/main/java/org/openjena/fuseki/BackwardForwardDescribeFactory.java&#60;/code&#62;:&#60;/p&#62;
&#60;pre&#62;
package org.openjena.fuseki;
&#60;/pre&#62;

&#60;p&#62;We have one more change to do, and that&#39;s in &#60;code&#62;/usr/lib/fuseki/tdb2.ttl&#60;/code&#62;. Configuring TDB settings for the Fuseki server. In here, we use the same namespace that we used earlier i.e., &#60;code&#62;org.openjena.fuseki&#60;/code&#62; for &#60;code&#62;BackwardForwardDescribeFactory&#60;/code&#62;. Additionally, we can uncomment &#60;code&#62;tdb:unionDefaultGraph true ;&#60;/code&#62; to use all graphs in the dataset as one, default graph. We can of course always refer to graphs individually.&#60;/p&#62;
&#60;pre&#62;
[] ja:loadClass &#34;com.hp.hpl.jena.tdb.TDB&#34; .
[] ja:loadClass &#34;org.openjena.fuseki.BackwardForwardDescribeFactory&#34; .

tdb:DatasetTDB  rdfs:subClassOf  ja:RDFDataset .
tdb:GraphTDB    rdfs:subClassOf  ja:Model .

&#38;lt;#dataset&#38;gt; rdf:type tdb:DatasetTDB ;
    tdb:location &#34;DB&#34; ;
    tdb:unionDefaultGraph true .
&#60;/pre&#62;

&#60;p&#62;A minor note here about the dataset name. It is currently set to &#60;code&#62;dataset&#60;/code&#62; by default, but you can change this easily from here.&#60;/p&#62;


&#60;p&#62;Let&#38;#8217;s factor-in our changes by rebuilding:&#60;/p&#62;
&#60;pre&#62;
sudo mvn install
&#60;/pre&#62;


&#60;p&#62;By default, Fuseki starts in read only mode:&#60;/p&#62;
&#60;pre&#62;
sudo ./fuseki-server --desc tdb2.ttl /dataset
&#60;/pre&#62;

&#60;p&#62;This is good because if we make our SPARQL endpoint public, we have one less worry about access controls. Whenever we need to update (write), we can simply restart the server by adding in the &#60;code&#62;--update&#60;/code&#62; option. By the way, the server runs on &#60;code&#62;http://localhost:3030/&#60;/code&#62; by default.&#60;/p&#62;


&#60;p&#62;Some quick tests to make sure we got everything up and running okay. Let&#38;#8217;s import some RDF triples into store.&#60;/p&#62;
&#60;pre&#62;
sudo ./s-put --verbose http://localhost:3030/dataset/data default books.ttl
&#60;/pre&#62;

&#60;p&#62;That simply imports a Turtle file named &#60;code&#62;books.ttl&#60;/code&#62; with triples to &#60;code&#62;default&#60;/code&#62; graph into dataset named &#60;code&#62;dataset&#60;/code&#62;. Remember that every time we put triples into store with the same graph name, it will first delete the existing graph before inserting the new one.&#60;/p&#62;

&#60;p&#62;A simple query to see the triples we&#38;#8217;ve just imported:&#60;/p&#62;
&#60;pre&#62;
sudo ./s-query --service http://localhost:3030/dataset/query &#39;SELECT * WHERE {?s ?p ?o .}&#39;
&#60;/pre&#62;

&#60;p&#62;Note here that the service has the SPARQL endpoint URI at &#60;code&#62;http://localhost:3030/dataset/query&#60;/code&#62;. If you wish to offer a public SPARQL endpoint e.g., &#60;samp&#62;http://example.org/sparql&#60;/samp&#62;, then you might want to use a reverse proxy in Apache.&#60;/p&#62;

&#60;p&#62;And now we can clear the default graph:&#60;/p&#62;
&#60;pre&#62;
sudo ./s-update --service http://localhost:3030/dataset/update &#39;CLEAR default&#39;
&#60;/pre&#62;

&#60;p&#62;A little note here about the system architecture that Fuseki runs on. Fuseki uses &#60;a href=&#34;http://openjena.org/wiki/TDB&#34;&#62;TDB&#60;/a&#62; (which handles the RDF storage and query) out of the box, but it could be configured to use &#60;a href=&#34;http://openjena.org/wiki/SDB&#34;&#62;SDB&#60;/a&#62; as well. This is not something you have to worry about right now unless you have particular performance needs you need to address. For the time being, just know that TDB performs well if you are doing a lot of reads.&#60;/p&#62;

&#60;p&#62;Even though TDB can run on both 32-bit and 64-bit Java Virtual Machines, 64-bit is highly recommended with minimum 1GB of RAM for reasonable performance. More memory certainly helps Java especially during SPARQL Updates (writes) as opposed to queries (reads). For large dataset importing, I recommend upping the Java max memory to at least 3GB even if it is temporarily during importing.&#60;/p&#62;

&#60;p&#62;If you have a large dataset (like greater than 100k triples), and if you want to perform &#60;code&#62;DESCRIBE&#60;/code&#62; queries in both directions (resource as subject we well as object) then try to run Fuseki on a 64-bit machine. For anything small-scale like running it for a personal blog or just testing on your local machine, 32-bit with 1GB of RAM is sufficient &#38;#8211; &#60;em&#62;famous last words&#60;/em&#62;.&#60;/p&#62;

&#60;p&#62;By default, Fuseki server (&#60;code&#62;fuseki-server&#60;/code&#62;) runs Java with &#60;code&#62;-Xmx1200M&#60;/code&#62;. Simply use &#60;code&#62;-Xmx3000M&#60;/code&#62; instead if you want to assign 3GB of RAM.&#60;/p&#62;


&#60;p&#62;Logging requests to Fuseki server is done through Apache&#38;#8217;s log4j. There should be a &#60;code&#62;log4j.properties&#60;/code&#62; file at the root of your Fuseki install.&#60;/p&#62;


&#60;p&#62;Here is a log configuration that I use in &#60;code&#62;log4j.properties&#60;/code&#62;:&#60;/p&#62;
&#60;pre&#62;
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=query.log
log4j.appender.R.MaxFileSize=100KB
log4j.appender.R.MaxBackupIndex=10
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}] %-5p %-20c{1} :: %m%n
&#60;/pre&#62;

&#60;p&#62;and the &#60;code&#62;fuseki-server&#60;/code&#62; would contain:&#60;/p&#62;
&#60;pre&#62;
exec java -Xmx3048m -Dlog4j.configuration=file:log4j.properties -jar &#34;$JAR&#34; &#34;$@&#34;
&#60;/pre&#62;

&#60;p&#62;Remember to always stop the Fuseki server before doing any updates.&#60;/p&#62;

&#60;p&#62;Alright, so, are you all Fusekied out? Good. Me too. Let&#38;#8217;s move on to something else.&#60;/p&#62;



&#60;h2 id=&#34;setup-linked-data-pages&#34;&#62;Setting up Linked Data Pages&#60;/h2&#62;

&#60;p&#62;Again, let&#38;#8217;s make sure the essentials are set up in order to grab &#60;a href=&#34;http://code.google.com/p/moriarty/&#34;&#62;Moriarty&#60;/a&#62;, &#60;a href=&#34;http://code.google.com/p/paget/&#34;&#62;Paget&#60;/a&#62;, &#60;a href=&#34;https://github.com/semsol/arc2&#34;&#62;ARC2&#60;/a&#62;, and &#60;a href=&#34;https://github.com/csarven/linked-data-pages&#34;&#62;Linked Data Pages&#60;/a&#62;:&#60;/p&#62;
&#60;pre&#62;
sudo apt-get install git
&#60;/pre&#62;

&#60;p&#62;You can place the libraries anywhere you like, but I find it convenient to have it all under &#60;code&#62;/var/www/lib/&#60;/code&#62;. The Linked Data Pages package is what we&#38;#8217;ll work with and it requires the following libraries:&#60;/p&#62;
&#60;pre&#62;
cd /var/www/
svn checkout http://moriarty.googlecode.com/svn/trunk/ lib/moriarty
svn checkout http://paget.googlecode.com/svn/branches/2.0/ lib/paget
git clone git://github.com/semsol/arc2.git lib/arc2
&#60;/pre&#62;

&#60;p&#62;And now we can grab the main framework for our site:&#60;/p&#62;
&#60;pre&#62;
git clone git://github.com/csarven/linked-data-pages.git lib/linked-data-pages
&#60;/pre&#62;


&#60;p&#62;Until some of the issues are fixed in Moriarty and Paget, we&#38;#8217;ll copy over the fixes in this package:&#60;/p&#62;
&#60;pre&#62;
cp -R lib/linked-data-pages/patches/moriarty/* lib/moriarty/
cp -R lib/linked-data-pages/patches/paget/* lib/paget/
&#60;/pre&#62;


&#60;p&#62;In this how-to we have used Fuseki as our SPARQL server, however, as mentioned earlier, the Linked Data Pages framework can use any other for its baseline dataset. Therefore, you can hook up a local or a remote SPARQL endpoint for it to work.&#60;/p&#62;


&#60;h2 id=&#34;setup-site&#34;&#62;Setting up our site&#60;/h2&#62;

&#60;p&#62;At this point we&#38;#8217;ll assume that you have a site enabled at &#60;code&#62;/var/www/site/&#60;/code&#62;. But, just to make sure you avoid running into problems with your server not permitting access, use a simple configuration like the following in your &#60;code&#62;/etc/apache2/sites-available/site.conf&#60;/code&#62;:&#60;/p&#62;

&#60;pre&#62;
&#38;lt;VirtualHost *:80&#38;gt;
    ServerName site
    ServerAlias *.site

    DocumentRoot /var/www/site/
    &#38;lt;Directory /var/www/site&#38;gt;
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        Allow from all
    &#38;lt;/Directory&#38;gt;
&#38;lt;/Virtualhost&#38;gt;
&#60;/pre&#62;

&#60;p&#62;Enable the Apache rewrite module:&#60;/p&#62;
&#60;pre&#62;
a2enmod rewrite
&#60;/pre&#62;

&#60;p&#62;Install the cURL library for PHP:&#60;/p&#62;
&#60;pre&#62;
sudo apt-get install php5-curl
&#60;/pre&#62;

&#60;p&#62;The Linked Data Pages package comes with an installation script to setup the directories and SPARQL endpoint URI. We&#38;#8217;ll copy that file over and go from there.&#60;/p&#62;

&#60;pre&#62;
cp /var/www/lib/linked-data-pages/install.php /var/www/site/
&#60;/pre&#62;

&#60;p&#62;We need to make sure that this installation script (temporarily) has write access to the site directory:&#60;/p&#62;

&#60;pre&#62;
chmod a+w /var/www/site
&#60;/pre&#62;

&#60;p&#62;Now we simply load &#60;code&#62;http://site/install.php&#60;/code&#62; (replace &#60;code&#62;site&#60;/code&#62; with whatever host is pointing to &#60;code&#62;/var/www/site/&#60;/code&#62;) in our browser. Enter the form values that correspond to the locations where we installed the libraries earlier. If you went ahead with the defaults in this how-to, then the following is what we want:&#60;/p&#62;

&#60;pre&#62;
Site:     /var/www/site/
LDP:      /var/www/lib/linked-data-pages/
Paget:    /var/www/lib/paget/
Moriarty: /var/www/lib/moriarty/
ARC2:     /var/www/lib/arc2/

SPARQL Endpoint: http://localhost:3030/dataset/query
&#60;/pre&#62;

&#60;p&#62;That is it! When you submit this form, you should be ready to go. If you now load http://site/ in your browser, you should see the default homepage. If you have your host set to something other than &#60;code&#62;site&#60;/code&#62;, then we need to revisit &#60;code&#62;/var/www/site/config.php&#60;/code&#62; and change the value at:&#60;/p&#62;

&#60;pre&#62;
$config[&#39;site&#39;][&#39;server&#39;] = &#39;site&#39;;
&#60;/pre&#62;

&#60;p&#62;Since &#60;samp&#62;site&#60;/samp&#62; corresponds to &#60;code&#62;http://site&#60;/code&#62;.&#60;/p&#62;

&#60;p&#62;While we are here, we can update the following as well:&#60;/p&#62;

&#60;pre&#62;
$config[&#39;site&#39;][&#39;name&#39;] = &#39;My Linked Data site&#39;;
&#60;/pre&#62;

&#60;p&#62;That simply sets the name of the site as it appears in page title, address etc.&#60;/p&#62;

&#60;p&#62;The following is used to set the path of our site if it is somewhere other than base e.g., &#60;samp&#62;/foo&#60;/samp&#62; in &#60;code&#62;http://site/foo&#60;/code&#62;.&#60;/p&#62;
&#60;pre&#62;
$config[&#39;site&#39;][&#39;path&#39;] = &#39;&#39;;
&#60;/pre&#62;

&#60;p&#62;We can set the theme here too, where &#60;samp&#62;default&#60;/samp&#62; points to &#60;code&#62;/var/www/site/theme/default&#60;/code&#62;:&#60;/p&#62;
&#60;pre&#62;
$config[&#39;site&#39;][&#39;theme&#39;] = &#39;default&#39;;
&#60;/pre&#62;

&#60;p&#62;If you have your own theme, simply copy over your theme files under a directory in &#60;code&#62;/var/www/www/theme/&#60;/code&#62;.&#60;/p&#62;

&#60;p&#62;And finally, we can specify the site logo file, where &#60;samp&#62;logo_latc.png&#60;/samp&#62; is at &#60;code&#62;/var/www/site/theme/default/images/logo_latc.png&#60;/code&#62;&#60;/p&#62;
&#60;pre&#62;
$config[&#39;site&#39;][&#39;logo&#39;] = &#39;logo_latc.png&#39;;
&#60;/pre&#62;


&#60;h2 id=&#34;create-linked-data-pages&#34;&#62;Creating templates&#60;/h2&#62;

&#60;p&#62;We can finally get down to doing cool stuff. Let&#38;#8217;s say we want to create a template that renders a FOAF profile of a person. We&#38;#8217;ll first import the RDF data into our store, create a query to get it out, and finally create a template where we can process the data and render it back out to the user.&#60;/p&#62;

&#60;p&#62;We&#38;#8217;ll place the following in &#60;code&#62;/usr/lib/fuseki/people.ttl&#60;/code&#62;:&#60;/p&#62;
&#60;pre&#62;
@prefix rdf: &#38;lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#&#38;gt; .
@prefix foaf: &#38;lt;http://xmlns.com/foaf/0.1/&#38;gt; .

&#38;lt;http://csarven.ca/#i&#38;gt;
    rdf:type foaf:Person ;
    foaf:homepage &#38;lt;http://csarven.ca/&#38;gt; ;
    foaf:interest &#38;lt;http://en.wikipedia.org/wiki/Design&#38;gt; ;
    foaf:knows &#38;lt;http://richard.cyganiak.de/#me&#38;gt; .
&#60;/pre&#62;

&#60;p&#62;We can now start Fuseki in update mode:&#60;/p&#62;
&#60;pre&#62;
sudo ./fuseki-server --update --desc tdb2.ttl /dataset
&#60;/pre&#62;

&#60;p&#62;And, finally, let&#38;#8217;s import the Turtle file:&#60;/p&#62;
&#60;pre&#62;
/usr/lib/fuseki/./s-put --verbose http://localhost:3030/dataset/data http://site/graph/people people.ttl
&#60;/pre&#62;

&#60;p&#62;Note here that &#60;code&#62;http://site/graph/people&#60;/code&#62; is the name of the graph where we&#38;#8217;ve put our people data. Note also that since the default graph is the union of all named graphs, we don&#38;#8217;t need to use &#60;code&#62;GRAPH &#38;lt;http://site/graph/people&#38;gt;&#60;/code&#62; in our SPARQL queries if we don&#38;#8217;t want to.&#60;/p&#62;

&#60;p&#62;If you would like to use different names for your datasets, simply update &#60;code&#62;tdb2.ttl&#60;/code&#62; and run the fuseki server using that dataset name.&#60;/p&#62;

&#60;p&#62;It is now time to create a template where we can process this data. Before we do that however, it is important to give an overview for managing entities. This frameworks uses entity sets, by providing unique ids to identify each set. Each entity set contains the following information:&#60;/p&#62;
&#60;dl&#62;
    &#60;dt&#62;Path&#60;/dt&#62;
    &#60;dd&#62;Path value is used to do URI pattern matching in order to identify which entity set to initiate.&#60;/dd&#62;
    &#60;dt&#62;Query&#60;/dt&#62;
    &#60;dd&#62;Query value is sent directly to the SPARQL endpoint based on entity path match.&#60;/dd&#62;
    &#60;dt&#62;Template&#60;/dt&#62;
    &#60;dd&#62;Template values specifies the template to load based on entity path match.&#60;/dd&#62;
&#60;/dl&#62;

&#60;p&#62;Let&#38;#8217;s start by writing our SPARQL query, and for that we&#38;#8217;ll head over to &#60;code&#62;/var/www/site/config.php&#60;/code&#62; and add the following:&#60;/p&#62;

&#60;pre&#62;
$config[&#39;sparql_query&#39;][&#39;people&#39;] = &#34;
    CONSTRUCT {
        ?s ?p ?o .
    }
    WHERE {
        GRAPH &#38;lt;http://site/graph/people&#38;gt; {
            ?s ?p ?o .
        }
    }
&#34;;
&#60;/pre&#62;

&#60;p&#62;This is our SPARQL query with key &#60;code&#62;people&#60;/code&#62;. All we are doing here is constructing an RDF graph result of all the triples in named graph &#60;code&#62;http://site/graph/people&#60;/code&#62;. Now, we&#38;#8217;ll tie this id to our entity set id &#60;code&#62;site_people&#60;/code&#62; query:&#60;/p&#62;

&#60;pre&#62;
$config[&#39;entity&#39;][&#39;site_people&#39;][&#39;query&#39;] = &#39;people&#39;;
&#60;/pre&#62;

&#60;p&#62;Similarly, we set the URI path where everything will be initiated when we visit &#60;code&#62;http://site/people&#60;/code&#62;:&#60;/p&#62;

&#60;pre&#62;
$config[&#39;entity&#39;][&#39;site_people&#39;][&#39;path&#39;] = &#39;/people&#39;;
&#60;/pre&#62;

&#60;p&#62;And finally, we assign the template we want to render:&#60;/p&#62;

&#60;pre&#62;
$config[&#39;entity&#39;][&#39;site_people&#39;][&#39;template&#39;] = &#39;page.people.html&#39;;
&#60;/pre&#62;

&#60;p&#62;Now, let&#38;#8217;s create our template at &#60;code&#62;/var/www/site/templates/page.people.html&#60;/code&#62;.&#60;/p&#62;

&#60;pre&#62;
&#38;lt;?php
require_once SITE_DIR . &#39;templates/html.html&#39;;
require_once SITE_DIR . &#39;templates/head.html&#39;;
?&#38;gt;
    &#38;lt;/head&#38;gt;
    &#38;lt;body id=&#34;&#38;lt;?php echo $entitySetId; ?&#38;gt;&#34;&#38;gt;
        &#38;lt;div id=&#34;wrap&#34;&#38;gt;
&#38;lt;?php require_once SITE_DIR . &#39;templates/header.html&#39;; ?&#38;gt;
            &#38;lt;div id=&#34;core&#34;&#38;gt;
                &#38;lt;div id=&#34;content&#34;&#38;gt;
                    &#38;lt;h1&#38;gt;This page is about &#38;lt;a href=&#34;http://csarven.ca&#38;lt;?php e($resource_uri);?&#38;gt;&#34;&#38;gt;&#38;lt;?php e($title);?&#38;gt;&#38;lt;/a&#38;gt;&#38;lt;/h1&#38;gt;
                    &#38;lt;div id=&#34;content_inner&#34;&#38;gt;
                        &#38;lt;div id=&#34;resource_data&#34;&#38;gt;

&#38;lt;?php $triples = $this-&#38;gt;getTriples(&#39;http://csarven.ca/#i&#39;); ?&#38;gt;
                            &#38;lt;table&#38;gt;
                                    &#38;lt;tbody&#38;gt;
&#38;lt;?php
    foreach($triples as $s =&#38;gt; $po) {
        foreach($po as $p =&#38;gt; $o) {
            echo &#34;\n&#34;.&#39;&#38;lt;tr&#38;gt;&#38;lt;td&#38;gt;&#39;.$s.&#39;&#38;lt;/td&#38;gt;&#38;lt;td&#38;gt;&#39;.$p.&#39;&#38;lt;/td&#38;gt;&#38;lt;td&#38;gt;&#39;.$o[0][&#39;value&#39;].&#39;&#38;lt;/td&#38;gt;&#38;lt;/tr&#38;gt;&#39;;
        }
    }
?&#38;gt;
                                    &#38;lt;/tbody&#38;gt;
                            &#38;lt;/table&#38;gt;
                        &#38;lt;/div&#38;gt;
                    &#38;lt;/div&#38;gt;
                &#38;lt;/div&#38;gt;
            &#38;lt;/div&#38;gt;
&#38;lt;?php require_once SITE_DIR . &#39;templates/footer.html&#39;; ?&#38;gt;
        &#38;lt;/div&#38;gt;
&#38;lt;?php require_once SITE_DIR . &#39;templates/foot.html&#39;; ?&#38;gt;
&#60;/pre&#62;

&#60;p&#62;This is a pretty simple template which we can reuse. It is simply rendering the resulting triples in a table. The most noteworthy line here is:&#60;/p&#62;

&#60;pre&#62;
$triples = $this-&#62;getTriples(&#39;http://csarven.ca/#i&#39;);
&#60;/pre&#62;

&#60;p&#62;The &#60;code&#62;getTriples&#60;/code&#62; function gets all the triples for us from our SPARQL query result and we place it in a multi-dimensional array. In this example, we are getting all the triples with subject &#60;code&#62;http://csarven.ca/#i&#60;/code&#62;. It should give us the same triples we&#38;#8217;ve imported into our RDF store. But we could also get other triples that match the pattern for parameters (subject, property, object) e.g.,&#60;/p&#62;

&#60;pre&#62;
$this-&#62;getTriples(&#39;http://csarven.ca/#i&#39;, &#39;http://xmlns.com/foaf/0.1/knows&#39;);
&#60;/pre&#62;

&#60;p&#62;That would get us all the triples with subject &#60;code&#62;http://csarven.ca/#i&#60;/code&#62; and property &#60;code&#62;http://xmlns.com/foaf/0.1/knows&#60;/code&#62;. An alias to this is the &#60;code&#62;getValue&#60;/code&#62; function where we can use qnames for the property position:&#60;/p&#62;
&#60;pre&#62;
$this-&#62;getValue(&#39;http://csarven.ca/#i&#39;, &#39;foaf:knows&#39;);
&#60;/pre&#62;

&#60;p&#62;You can define more qnames in &#60;code&#62;$config[&#39;prefixes&#39;]&#60;/code&#62; at &#60;code&#62;/var/www/site/config.php&#60;/code&#62;. See also &#60;code&#62;/var/www/lib/linked-data-pages/README&#60;/code&#62; for more uses of &#60;code&#62;getTriples&#60;/code&#62; like wildcards.&#60;/p&#62;

&#60;p&#62;For complex templating, that is, if you&#38;#8217;d like to do more data processing with PHP, you can dive into the &#60;code&#62;SITE_Template&#60;/code&#62; class in &#60;code&#62;/var/www/classes/SITE_Template.php&#60;/code&#62; instead of creating your functions directly inside HTML templates. The functions in here can be called directly from your templates.&#60;/p&#62;


&#60;h2 id=&#34;conclusions&#34;&#62;Conclusions&#60;/h2&#62;

&#60;p&#62;If you have made it this far, congratulations! But don&#39;t stop here, take your site even further by building useful interactions for your consumers. Consider the following items:&#60;/p&#62;

&#60;ul&#62;
    &#60;li&#62;Create a &#60;a href=&#34;http://www.w3.org/2001/sw/interest/void/&#34; title=&#34;voiD vocabulary&#34;&#62;voiD&#60;/a&#62; file to describe your Linked Datasets.&#60;/li&#62;
    &#60;li&#62;Create applications that makes use of your data.&#60;/li&#62;
    &#60;li&#62;Create data visualisations to help your users to get insights into the data that you are publishing.&#60;/li&#62;
&#60;/ul&#62;

&#60;p&#62;The setup outlined in this article is currently used at &#60;a href=&#34;http://data-gov.ie/&#34;&#62;DataGovIE&#60;/a&#62;; see also &#60;a href=&#34;https://github.com/data-gov-ie/data-gov.ie&#34;&#62;github repository&#60;/a&#62;. One of the goals of Linked Data Pages is to have a framework where a &#60;em&#62;Linked Data&#60;/em&#62; site can be created with minimal &#38;#8220;development&#38;#8221; work. This framework relies heavily on Paget, which in return relies heavily on Moriarty and ARC2. Even though Paget has some quirks, with Moriarty and ARC2, it worked out quite well and got me at least 80% of the way there. There are probably a few more things I could iron out (i.e., fix bugs, not reinvent) once I address the finer details of Paget and Moriarty. Here is my to-do list for Linked Data Pages:&#60;/p&#62;
&#60;ul&#62;
    &#60;li&#62;An additional administration user interface for site configuration, instead of having to edit config files directly.&#60;/li&#62;
    &#60;li&#62;Improve templating by adding more common functions.&#60;/li&#62;
    &#60;li&#62;Integration of data visualisations for common data dimensions.&#60;/li&#62;
&#60;/ul&#62;

&#60;p&#62;Let&#39;s wrap this up here. All feedback are most welcome. Let me know how all this works out for you, especially if you would like me to clarify anything further. Happy Linking and stuff =)&#60;/p&#62;

&#60;/div&#62;
                [&lt;a href=&quot;http://csarven.ca/how-to-create-a-linked-data-site#comment_write&quot;&gt;Leave a comment&lt;/a&gt;]
            </description>
            <guid>http://csarven.ca/how-to-create-a-linked-data-site</guid>
            
        </item>
    
        <item>
            <title>My path to DERI, Galway</title>
            <pubDate>Mon, 01 Nov 2010 11:11:11</pubDate>
            <description>
                &#60;h1 class=&#34;entry-title&#34;&#62;Path to DERI&#60;/h1&#62;

&#60;div class=&#34;entry-content&#34;&#62;
    &#60;p class=&#34;preamble&#34;&#62;This is an article about my life in the past year.&#60;/p&#62;

    &#60;p&#62;Currently: writing from Schiphol airport, Netherlands. I am on my way back to Montreal from Galway.&#60;/p&#62;

    &#60;p&#62;I&#38;#8217;m going to press rewind for a moment:&#60;/p&#62;

    &#60;p&#62;A little over half a year ago, I left &#60;a rel=&#34;external&#34; href=&#34;http://status.net/&#34;&#62;StatusNet Inc.&#60;/a&#62;, a startup company that I was part of from the very beginning (flagship site: &#60;a rel=&#34;external&#34; href=&#34;http://identi.ca&#34;&#62;Identi.ca&#60;/a&#62;). It has grand goals: to offer a product and services that would let &#60;del&#62;users&#60;/del&#62; &#60;ins&#62;people&#60;/ins&#62; take part (i.e., status updates) in an open Web environment. This is an integral part of Web&#38;#8217;s ecosystem, so, I joined this team as an user experience designer to contribute my small share.&#60;/p&#62;

    &#60;p&#62;I had the privilege to work with a team that believed in what we were trying to accomplish, had the energy and the smarts to make it so. That, super rocked. After a variety of valuable experiences from both internal and external to the company, I have decided to move on as I had other itches to take care of.&#60;/p&#62;

    &#60;p&#62;The itches: I wanted to widen my knowledge on a daily basis, contribute towards the global Semantic Web (or one pragmatic manifestation; Linked Data) vision, and push my abilities fully.&#60;/p&#62;

    &#60;p&#62;I did not exactly have a well laid out plan, so, I&#38;#8217;ve decided to take time off to read, travel, explore possibilities in other domains of my interests, and just be lazy in order to realign myself. This was necessary for me in order to push myself forward, otherwise there was distraction at every corner.&#60;/p&#62;

    &#60;p&#62;I started to look at an initial (narrow) list of organizations that might help me get there. I ruled out places which didn&#38;#8217;t match some of my core philosophies at this time. Nothing overwhelmingly stood out.&#60;/p&#62;

    &#60;p&#62;I&#38;#8217;ve considered getting back to the academia. After all, it would ensure learning, and change my work environment. Unfortunately, I was disappointed to see that neither &#60;a rel=&#34;external&#34; href=&#34;http://www.mcgill.ca/&#34;&#62;McGill University&#60;/a&#62; or &#60;a rel=&#34;external&#34; href=&#34;http://concordia.ca/&#34;&#62;Concordia University&#60;/a&#62; in Montreal offered graduate opportunities in the Semantic Web area. I didn&#38;#8217;t want to relocate to another city for a graduate degree in this field since the idea of contributing to the Semantic Web was not tied to academia. So, I was back at where I started.&#60;/p&#62;

    &#60;p&#62;Two or so months later, a random variable was introduced to my quest: &#60;a rel=&#34;external&#34; href=&#34;http://www.deri.ie/about/team/member/michael_hausenblas/&#34;&#62;Michael Hausenblas&#60;/a&#62;, after finding out about my status, asked me to join his team at &#60;a rel=&#34;external&#34; href=&#34;http://deri.org/&#34;&#62;Digital Enterprise Research Institute&#60;/a&#62; (&#60;dfn&#62;&#60;abbr title=&#34;Digital Enterprise Research Institute&#34;&#62;DERI&#60;/abbr&#62;&#60;/dfn&#62;) Galway, Ireland. DERI is world&#38;#8217;s largest research institute for semantic web research (aside: my radar was faulty as I did not broaden my search). So, naturally, I had a simultaneous &#38;#8220;&#60;a rel=&#34;external&#34; href=&#34;http://www.imdb.com/title/tt0133093/quotes?qt0324257&#34;&#62;Whoa&#60;/a&#62;&#38;#8221; and &#38;#8220;&#60;a rel=&#34;external&#34; href=&#34;http://en.wikipedia.org/wiki/The_Ren_%26_Stimpy_Show#Happy.2C_Happy.2C_Joy.2C_Joy&#34;&#62;Happy Happy Joy Joy&#60;/a&#62;&#38;#8221; moment. Needless to say, this was the best of both worlds: &#60;em&#62;real-world&#60;/em&#62; work to make a difference and academics.&#60;/p&#62;

    &#60;p&#62;We&#38;#8217;ve agreed to start my fellowship beginning October (2010-10-01). I will kick-off my Masters in Applied Science now. In a year, I will consider pursuing a Ph.D.&#60;/p&#62;

    &#60;p&#62;As that was a few months ahead, I was now a bit more relaxed about my situation. I did indeed went on to take care of the other parts of my taking time off. I was in The Netherlands between 2009-09 and 2010-08, so, I&#38;#8217;ve kept at discovering other great things the country had to offer. By the way, The Netherlands and I are a match made in heaven. And, checked a few other locations in Europe. Read, read, read. Played around with code.&#60;/p&#62;

    &#60;p&#62;Six months off worked well for me. I was totally re-energized. But, I&#38;#8217;ll be honest here: this was something I had not done before and quite a few times along the way I was wondering whether I&#38;#8217;ve made the right decisions. Going from total work involvement to nothing was a drastic change. Sometimes I felt lazy, because I was not producing something tangible for the world to see.&#60;/p&#62;

    &#60;p&#62;Currently: writing from somewhere over the Atlantic ocean, probably not too far from the land.&#60;/p&#62;

    &#60;p&#62;Coming back to DERI: a month alone at DERI, Galway let me discover reading groups; talks by invited experts; ability to walk up to anyone and learn about their particular area; invaluable colleagues like &#60;span about=&#34;http://csarven.ca/#i&#34;&#62;&#60;a rel=&#34;foaf:knows&#34; href=&#34;http://sw-app.org/mic.xhtml#i&#34;&#62;Michael Hausenblas&#60;/a&#62;, &#60;a rel=&#34;foaf:knows&#34; href=&#34;http://richard.cyganiak.de/#me&#34;&#62;Richard Cyganiak&#60;/a&#62;, and &#60;a rel=&#34;foaf:knows&#34; href=&#34;http://www.deri.ie/about/team/member/giovanni_tummarello/#me&#34;&#62;Giovanni Tummarello&#60;/a&#62;&#60;/span&#62; whom helped a great deal getting me adjusted; table football challenges (I have a lot to improve before I&#38;#8217;m a notable challenger to average DERIan); relaxed hours; regular life outside DERI stuff.&#60;/p&#62;

    &#60;p&#62;That&#38;#8217;s an instant win in my book.&#60;/p&#62;

    &#60;p&#62;I am delighted to join the DERI team as a linked data researcher in the &#60;a rel=&#34;external&#34; href=&#34;http://linkeddata.deri.ie/&#34;&#62;Linked Data Research Centre&#60;/a&#62; (&#60;dfn&#62;&#60;abbr title=&#34;Linked Data Research Centre&#34;&#62;LiDRC&#60;/abbr&#62;&#60;/dfn&#62;). I don&#38;#8217;t have a thesis topic yet, however, given the nature of the projects that I&#38;#8217;m involved in I&#38;#8217;m confident that something &#38;#252;ber-cool will crystallize.&#60;/p&#62;

    &#60;p&#62;A minor note as to why I&#38;#8217;m back to Montreal: For the time being, my partner &#60;span about=&#34;http://csarven.ca/#i&#34;&#62;&#60;a rel=&#34;foaf:knows extrenal&#34; href=&#34;http://brigitteschuster.com/#i&#34;&#62;Brigitte Schuster&#60;/a&#62;&#60;/span&#62; and I have to sort out our living logistics. We hope to move to Galway soon (in 2011). I will continue to work from here.&#60;/p&#62;

    &#60;p&#62;That is all.&#60;/p&#62;
&#60;/div&#62;
                [&lt;a href=&quot;http://csarven.ca/path-to-deri#comment_write&quot;&gt;Leave a comment&lt;/a&gt;]
            </description>
            <guid>http://csarven.ca/path-to-deri</guid>
            
        </item>
    
        <item>
            <title>One plus one equals three or more, and our experience</title>
            <pubDate>Sat, 23 Jan 2010 14:30:00</pubDate>
            <description>
                &#60;h1 class=&#34;entry-title&#34;&#62;One plus one equals three or more&#60;/h1&#62;
&#60;div class=&#34;entry-content&#34;&#62;
    &#60;p&#62;I have originally came across &#38;#8220;1 + 1 = 3 or more&#38;#8221; from &#60;a href=&#34;http://www.edwardtufte.com/&#34; rel=&#34;external&#34;&#62;Edward Tufte&#60;/a&#62;&#38;#8217;s &#60;em&#62;&#60;a href=&#34;http://www.edwardtufte.com/tufte/books_ei&#34; rel=&#34;external&#34;&#62;Envisioning Information&#60;/a&#62;&#60;/em&#62;. The following is my understanding and how it relates to some of the core concepts that I subscribe to in design.&#60;/p&#62;

    &#60;p&#62;Consider these two black lines: &#60;span class=&#34;example&#34;&#62;=&#60;/span&#62;&#60;/p&#62;

    &#60;p&#62;We see two objects from those lines. But, a third object, the whitespace, emerges in between. The whitespace is also known as the negative space (closer the lines to one another, greater the impact).&#60;/p&#62;

    &#60;p&#62;Now, consider these two different lines, one over another: &#60;span class=&#34;example&#34;&#62;+&#60;/span&#62;&#60;/p&#62;

    &#60;p&#62;We see either two long lines or four short lines. We also see four white squares (or triangles) at the edges.&#60;/p&#62;

    &#60;p&#62;Negative or empty space is everywhere; type design, relationship of objects, role of silence in music, empty space in architecture. It can be helpful or harmful.&#60;/p&#62;

    &#60;p&#62;When it comes to designing interfaces or writing code, my general approach is to add things only when necessary, until I reach the right balance.&#60;/p&#62;

    &#60;p&#62;In contrast, some designers prefer to remove things from their design until they reach an intended result.&#60;/p&#62;

    &#60;p&#62;One approach is not better than the other; after all, we do both whenever we need to. However, I think, addition, as opposed to subtraction, reflects our everyday life experiences. That is, we usually do things on a need to do basis, due to the restrictions imposed by our physical limitations in the environment.&#60;/p&#62;

    &#60;p&#62;This approach tells me to stick to a general guideline:&#60;/p&#62;
    &#60;ul&#62;
        &#60;li&#62;Take care of the number of things happening in the design. In other words, minimize the viewer&#38;#8217;s (or user&#38;#8217;s) &#60;a href=&#34;http://en.wikipedia.org/wiki/Cognitive_load&#34; rel=&#34;external&#34;&#62;cognitive load&#60;/a&#62;. The eye needs to rest as much as possible.&#60;/li&#62;

        &#60;li&#62;Add, when you must.&#60;/li&#62;

        &#60;li&#62;Ensure that structure does not compete with content.&#60;/li&#62;
    &#60;/ul&#62;

    &#60;p&#62;Related concepts that might interest you:&#60;/p&#62;
    &#60;ul&#62;
        &#60;li&#62;&#60;a href=&#34;http://en.wikipedia.org/wiki/Minimalism&#34; rel=&#34;external&#34;&#62;Minimalism&#60;/a&#62;&#60;/li&#62;
        &#60;li&#62;&#60;a href=&#34;http://en.wikipedia.org/wiki/Causality&#34; rel=&#34;external&#34;&#62;Causality&#60;/a&#62;&#60;/li&#62;
        &#60;li&#62;&#60;a href=&#34;http://en.wikipedia.org/wiki/Gestalt_psychology&#34; rel=&#34;external&#34;&#62;Gestalt psychology&#60;/a&#62;&#60;/li&#62;
        &#60;li&#62;&#60;a href=&#34;http://en.wikipedia.org/wiki/Psychosocial&#34; rel=&#34;external&#34;&#62;Psychological development&#60;/a&#62;&#60;/li&#62;
        &#60;li&#62;&#60;a href=&#34;http://en.wikipedia.org/wiki/Axiom&#34; rel=&#34;external&#34;&#62;Axioms&#60;/a&#62;&#60;/li&#62;
        &#60;li&#62;&#60;a href=&#34;http://en.wikipedia.org/wiki/Mu_%28negative%29&#34; rel=&#34;external&#34;&#62;Mu&#60;/a&#62; (at Wikipedia) and &#60;a href=&#34;http://csarven.ca/mu&#34;&#62;mu&#60;/a&#62; (on this site)&#60;/li&#62;
    &#60;/ul&#62;
&#60;/div&#62;
                [&lt;a href=&quot;http://csarven.ca/one-plus-one-equals-three-or-more#comment_write&quot;&gt;Leave a comment&lt;/a&gt;]
            </description>
            <guid>http://csarven.ca/one-plus-one-equals-three-or-more</guid>
            
        </item>
    
        <item>
            <title>Philosophy of city walking and life</title>
            <pubDate>Tue, 24 Feb 2009 19:00:00</pubDate>
            <description>
                &#60;h1 class=&#34;entry-title&#34;&#62;Mapping city walking to a way of living&#60;/h1&#62;
&#60;div class=&#34;entry-content&#34;&#62;
    &#60;p class=&#34;entry-summary&#34;&#62;I will illustrate my version of walking in a city when I go from point A to point B. I believe that by following this guideline, you can get to places a little quicker than any random method. I believe that this is a good average case model. My outline will presume that the walker will obey the city traffic bi-laws (e.g., no &#60;a href=&#34;http://en.wikipedia.org/wiki/Jaywalking&#34;&#62;Jaywalking&#60;/a&#62;) and general safety.&#60;/p&#62;

    &#60;h2&#62;The concept is pretty straight forward&#60;/h2&#62;

    &#60;ul&#62;
        &#60;li&#62;Minimise your wait times at intersections&#60;/li&#62;
        &#60;li&#62;Keep your options open&#60;/li&#62;
        &#60;li&#62;Don&#39;t be greedy&#60;/li&#62;
    &#60;/ul&#62;

&#60;pre&#62;
              Y
              ^
              ^
    G &#38;gt;&#38;gt; H &#38;gt;&#38;gt; I
    ^    ^    ^
    ^    ^    ^
    D &#38;gt;&#38;gt; E &#38;gt;&#38;gt; F
    ^    ^    ^
    ^    ^    ^
    A &#38;gt;&#38;gt; B &#38;gt;&#38;gt; C
    ^
    ^
    X
&#60;/pre&#62;

    &#60;h2&#62;Here is the guide&#60;/h2&#62;

    &#60;ul&#62;
        &#60;li&#62;
            &#60;p&#62;While keeping the general direction of your destination in mind, always walk in the same direction until there is an obstruction (e.g., traffic light). Only change your direction if you reach an intersection and have to wait for the walk sign to turn. For example, if you are walking on X and want to get to Y, then keep walking straight i.e., A-&#62;D-&#62;G. If you are at A, and can&#39;t go to D yet because of the light, don&#39;t wait for it, instead, go to B.&#60;/p&#62;
            &#60;p&#62;Seems obvious right? Well, stick to that rule at all times.&#60;/p&#62;
        &#60;/li&#62;

        &#60;li&#62;
            &#60;p&#62;While the first rule sets the basis for action, the real reason for it is as follows: any unnecessary change of direction, costs an optional path that could have been taken. For instance, sometimes we are at A but might want to wait for B to be available instead of crossing D. If you take B, then D and G are no longer available. Similarly, Jaywalking (taking the hypotenuse) only appears to be efficient locally, but not necessarily globally, hence, avoid it to retain possible paths later on. We sometimes do this because of external reasons; the physics of the environment or personal choice; path preference.&#60;/p&#62;
            &#60;p&#62;Not throwing away possible paths allows us to make use of them later on.&#60;/p&#62;
        &#60;/li&#62;

        &#60;li&#62;
            &#60;p&#62;Given that some of us do not really walk like robots (no offence to robots), and that when we arrive at an intersection we generally either take a chance, try to beat the light or wait for it. In this case, waiting a little bit and then switching directions is better because beating the light does not necessarily improve things globally, perhaps only locally. We can let go of some of those seconds and take a safer path that is at our disposal.&#60;/p&#62;
            &#60;p&#62;So, stay cool.&#60;/p&#62;
        &#60;/li&#62;
    &#60;/ul&#62;

    &#60;p&#62;Besides the pleasure of efficient city walking, where is the life philosophy in this, right? Here is how I map these rules to a way of living:&#60;/p&#62;

    &#60;ul&#62;
        &#60;li&#62;&#60;p&#62;Be always on the move; both physically and mentally. Don&#39;t get stuck on mundane things that life throws at you. Explore, experience and escape from the loop.&#60;/p&#62;&#60;/li&#62;

        &#60;li&#62;&#60;p&#62;Keep your eyes open and look for opportunities at every turn. Respect other people&#39;s options and conform when you have to. Having various ways to get to your destination, desires and goals should give us a taste of freedom. The idea is to avoid or better handle things that sets a limit to our lives. Of course, one can only presume that open choice is a good thing. It is your call.&#60;/p&#62;&#60;/li&#62;

        &#60;li&#62;&#60;p&#62;There comes a time where we need to know for ourselves that what we have is sufficient to keep us happy. The more we run after that extra sense of perfection the more we are likely to exhaust ourselves, and miss the forest for the trees. We need to pause to enjoy what we already have.&#60;/p&#62;&#60;/li&#62;
    &#60;/ul&#62;

    &#60;h2&#62;About this article&#60;/h2&#62;
    &#60;ul&#62;
        &#60;li&#62;&#60;p&#62;Granted not all cities have rectangular blocks. Curved paths would be a lot more complex to calculate but the idea would remain the same.&#60;/p&#62;&#60;/li&#62;
        &#60;li&#62;&#60;p&#62;I do not know if this is mathematically sound (perhaps you can check that out). I am going with the feel for now.&#60;/p&#62;&#60;/li&#62;
        &#60;li&#62;&#60;p&#62;Walking with another person is always more enjoyable but not necessarily faster. So, keep your family and friends close unless you really have to do your own thing.&#60;/p&#62;&#60;/li&#62;
    &#60;/ul&#62;
&#60;/div&#62;
                [&lt;a href=&quot;http://csarven.ca/philosophy-of-city-walking-and-life#comment_write&quot;&gt;Leave a comment&lt;/a&gt;]
            </description>
            <guid>http://csarven.ca/philosophy-of-city-walking-and-life</guid>
            
        </item>
    
        <item>
            <title>How to reply back to coloured HTML emails</title>
            <pubDate>Tue, 02 Sep 2008 15:10:00</pubDate>
            <description>
                &#60;h1 class=&#34;entry-title&#34;&#62;My responses to your email are in white&#60;/h1&#62;
&#60;div class=&#34;entry-content&#34;&#62;
	&#60;p&#62;Oh the inevitable &#60;a href=&#34;http://csarven.ca/communication-protocols#cp-email&#34;&#62;headaches with email&#60;/a&#62; and how people use email to communicate.&#60;/p&#62;
	
	&#60;p&#62;Every once in a while, we get one of those emails where the reply starts off with something like &#60;q&#62;My responses are below in red&#60;/q&#62;. Now that is just super-fantastic, if:&#60;/p&#62;
	&#60;ul&#62;
		&#60;li&#62;the receiver is not colour blind&#60;/li&#62;
		&#60;li&#62;the receiver&#39;s email client supports text/html&#60;/li&#62;
		&#60;li&#62;the receiver&#39;s device supports colours&#60;/li&#62;
	&#60;/ul&#62;
	
	&#60;p&#62;Thinking about replying back with a clever response to this absurdity?&#60;/p&#62;
	&#60;pre&#62;
	Hi Jane,
	
	My responses are in white:
	
	&#60;span style=&#34;color:#fff;&#34;&#62;Please avoid using HTML in your emails!&#60;/span&#62;
	&#60;/pre&#62;
	
	&#60;p&#62;Okay, so, you can highlight the text area and manage to figure out the text, but, you get the idea and hopefully the point is made :)&#60;/p&#62;
	
	&#60;p&#62;Happy un-emailing.&#60;/p&#62;
&#60;/div&#62;
                [&lt;a href=&quot;http://csarven.ca/my-responses-are-in-white#comment_write&quot;&gt;Leave a comment&lt;/a&gt;]
            </description>
            <guid>http://csarven.ca/my-responses-are-in-white</guid>
            
        </item>
    
        <item>
            <title>Front-end developer or integrator role: technical assessment</title>
            <pubDate>Tue, 19 Aug 2008 09:30:00</pubDate>
            <description>
                &#60;h1 class=&#34;entry-title&#34;&#62;Defining a Web front-end developer (integrator) role&#60;/h1&#62;
&#60;div class=&#34;entry-content&#34;&#62;
	&#60;p&#62;Each organisation would have a different set of requirements for an integrator or a front-end developer role. In this article I will outline the technical aspects only. Here is a sample job description which I think reflects this role:&#60;/p&#62;

	&#60;h2&#62;Technical qualifications&#60;/h2&#62;
	&#60;ul&#62;
		&#60;li&#62;Able to write semantic markup using HTML 4.01 Strict Doctype&#60;/li&#62;
		&#60;li&#62;Knowledge of DOM Scripting&#60;/li&#62;
		&#60;li&#62;Knowledge of CSS and cross-browser issues&#60;/li&#62; 
	&#60;/ul&#62;

	&#60;h2&#62;Responsibilities&#60;/h2&#62;
	&#60;ul&#62;
		&#60;li&#62;Implement Web user interface and interaction elements based on screen designs, wireframes, flowcharts and other documentation&#60;/li&#62;
		&#60;li&#62;Integrate front and backend components&#60;/li&#62;
		&#60;li&#62;Extract applicable screen design components from mockups&#60;/li&#62;
		&#60;li&#62;Create proof of concepts&#60;/li&#62;
	&#60;/ul&#62;

	&#60;h2&#62;Nice to haves&#60;/h2&#62;
	&#60;ul&#62;
		&#60;li&#62;Experience with image editing software&#60;/li&#62;
		&#60;li&#62;Understanding knowledge of HTTP&#60;/li&#62;
		&#60;li&#62;Familiarity with a &#60;a href=&#34;http://en.wikipedia.org/wiki/LAMP_(software_bundle)&#34; title=&#34;Read about Linux Apache MySQL PHP software bundle at Wikipedia&#34;&#62;LAMP&#60;/a&#62; environment&#60;/li&#62;
		&#60;li&#62;Knowledge of OOP concepts&#60;/li&#62;
		&#60;li&#62;Experience in XML/XSL&#60;/li&#62;
		&#60;li&#62;Knowledge of microformats&#60;/li&#62;
		&#60;li&#62;Familiarity with templating engines and CMS&#60;/li&#62;
		&#60;li&#62;Familiarity with Wiki software&#60;/li&#62;
		&#60;li&#62;Familiarity with revision control&#60;/li&#62;
		&#60;li&#62;Good understanding of content&#60;/li&#62;
		&#60;li&#62;Knowledge of accessibility&#60;/li&#62;
	&#60;/ul&#62;

	&#60;h2&#62;Sample (easy) interview questions&#60;/h2&#62;
	&#60;ul&#62;
		&#60;li&#62;What&#39;s the difference between HTML and XHTML?&#60;/li&#62;
		&#60;li&#62;What&#39;s UTF-8?&#60;/li&#62;
		&#60;li&#62;What&#39;s the &#60;code&#62;address&#60;/code&#62; element for?&#60;/li&#62;
		&#60;li&#62;What&#39;s the difference between PNG8 and GIF format?&#60;/li&#62;
		&#60;li&#62;What&#39;s HTTP 301?&#60;/li&#62;
		&#60;li&#62;How do you calculate a selector&#39;s specificity?&#60;/li&#62;
		&#60;li&#62;What&#39;s JSON?&#60;/li&#62;
		&#60;li&#62;What&#39;s progressive enhancement?&#60;/li&#62;
	&#60;/ul&#62;

	&#60;p&#62;Can you think of any useful questions that are not overly technical &#38;#8212; on the code level &#38;#8212; but would be able to let you assess an applicant&#39;s knowledge?&#60;/p&#62;
&#60;/div&#62;
                [&lt;a href=&quot;http://csarven.ca/front-end-developer-integrator#comment_write&quot;&gt;Leave a comment&lt;/a&gt;]
            </description>
            <guid>http://csarven.ca/front-end-developer-integrator</guid>
            
        </item>
    
        <item>
            <title>Communication Protocols</title>
            <pubDate>Mon, 18 Aug 2008 08:17:00</pubDate>
            <description>
                &#60;h1 class=&#34;entry-title&#34;&#62;Communicating efficiently and effectively by using the right protocols&#60;/h1&#62;
&#60;p class=&#34;datetimestamp&#34;&#62;Updated: &#60;abbr title=&#34;2011-01-11T19:34:00-05:00&#34; class=&#34;updated&#34;&#62;2011-01-11&#60;/abbr&#62;&#60;/p&#62;
&#60;div class=&#34;entry-content&#34;&#62;
    &#60;p&#62;Given various communication mediums, we can break any task down into its smaller components where each bit of data can then be dealt with using a particular protocol.&#60;/p&#62; 
    &#60;p&#62;I think that by putting some thought into the ways we communicate, we can be more efficient in what we do. That is, spending less time wrestling with the tools and focusing more on the messages. If one tries to complete a task and faces unnecessary obstacles which appears to be due to the inefficiency of the tool(s) in use, then it would be beneficial to reconsider the tool(s) to complete that same task.&#60;/p&#62;
    &#60;p&#62;By briefly defining the following, I hope that some of these communication protocols will shed some light to those that are not entirely familiar with them and hence allow them to communicate more efficiently with others.&#60;/p&#62;

    &#60;dl&#62;
        &#60;dt id=&#34;cp-irc&#34;&#62;Internet Relay Chat (&#60;dfn&#62;&#60;abbr title=&#34;Internet Relay Chat&#34;&#62;IRC&#60;/abbr&#62;&#60;/dfn&#62;)&#60;/dt&#62; 
        &#60;dd&#62;Ideal (See: &#60;a href=&#34;http://csarven.ca/irc-social-network&#34; title=&#34;Read more about IRC as a social networking platform&#34;&#62;IRC is a social networking platform&#60;/a&#62;)&#60;/dd&#62;
        &#60;dd&#62;Real-time one-to-many communication (e.g., &#60;a href=&#34;http://freenode.net/&#34; title=&#34;freenode Chat Network&#34;&#62;freenode&#60;/a&#62;)&#60;/dd&#62;
        &#60;dd&#62;Conversations can be logged and accessed via URL for future use&#60;/dd&#62;
        &#60;dd&#62;Ability to use channels on virtually any topic to communicate with others&#60;/dd&#62;

        &#60;dt id=&#34;cp-im&#34;&#62;Instant Messaging (&#60;dfn&#62;&#60;abbr title=&#34;Instant Messaging&#34;&#62;IM&#60;/abbr&#62;&#60;/dfn&#62;)&#60;/dt&#62;
        &#60;dd&#62;Real-time one-to-many communication (e.g., &#60;a href=&#34;http://en.wikipedia.org/wiki/XMPP&#34; title=&#34;Read more about Extensible Messaging and Presence Protocol on Wikipedia&#34;&#62;XMPP&#60;/a&#62;)&#60;/dd&#62;
        &#60;dd&#62;Similar to IRC but video and audio conversations are more common through the clients&#60;/dd&#62;

        &#60;dt id=&#34;cp-feeds&#34;&#62;Web feeds&#60;/dt&#62;
        &#60;dd&#62;Allows subscription to any content (See &#60;a href=&#34;http://en.wikipedia.org/wiki/RSS&#34; title=&#34;Read more about RSS at Wikipedia&#34;&#62;RSS&#60;/a&#62; or &#60;a href=&#34;http://en.wikipedia.org/wiki/Atom_(standard)&#34; title=&#34;Read more about Atom Syndication format at Wikipedia&#34;&#62;Atom&#60;/a&#62; formats&#60;/dd&#62;
        &#60;dd&#62;Various data resources can be pulled (e.g., Wiki updates, Blog posts)&#60;/dd&#62;

        &#60;dt id=&#34;cp-wiki&#34;&#62;Wikis&#60;/dt&#62;
        &#60;dd&#62;Collaborative knowledge dump (e.g., Wikipedia)&#60;/dd&#62;
        &#60;dd&#62;Centralised documentation with history (i.e., changes to entries)&#60;/dd&#62;

        &#60;dt id=&#34;cp-status-updates&#34;&#62;Status updates (Microblogging)&#60;/dt&#62;
        &#60;dd&#62;Public or private brief notices (e.g., &#60;a href=&#34;http://identi.ca&#34; title=&#34;Site of identica&#34;&#62;identi.ca&#60;/a&#62;)&#60;/dd&#62;
        &#60;dd&#62;Updates from users can be made using various protocols (e.g., IM, &#60;a href=&#34;http://en.wikipedia.org/wiki/SMS&#34; title=&#34;Read more about Short Message Service on Wikipedia&#34;&#62;SMS&#60;/a&#62; texting)&#60;/dd&#62;
        &#60;dd&#62;Information can be accessed through a URI&#60;/dd&#62;
        &#60;dd&#62;Notices can be subscribed using feeds&#60;/dd&#62;

        &#60;dt id=&#34;cp-pastebin&#34;&#62;Pastebins&#60;/dt&#62;
        &#60;dd&#62;Quick dump locations for data which can be accessed through a URI&#60;/dd&#62; 

        &#60;dt id=&#34;cp-in-person&#34;&#62;In person&#60;/dt&#62;
        &#60;dd&#62;All good when coffee or beer is involved ;)&#60;/dd&#62;
        &#60;dd&#62;Lot&#39;s of information can be transmitted simultaneously (e.g., pheromones, hands, body posture and facial expression)&#60;/dd&#62;
        &#60;dd&#62;Professional group meetings may be redundant and costly, but may also be good for improving the quality of communication between members&#60;/dd&#62;

        &#60;dt id=&#34;cp-video&#34;&#62;Digital video meetings (or conversations)&#60;/dt&#62;
        &#60;dd&#62;Similar to in person but with less quality&#60;/dd&#62;
        &#60;dd&#62;Can be archived&#60;/dd&#62;

        &#60;dt id=&#34;cp-email&#34;&#62;Email&#60;/dt&#62;
        &#60;dd&#62;Unnecessary cognitive load and doesn&#39;t scale well. (See Tantek&#39;s &#60;a href=&#34;http://tantek.com/log/2008/02.html#d19t2359&#34; title=&#34;Tantek &#38;#231;elik&#39;s article: Three Human Interface Hypotheses Update: Email is Efail&#34;&#62;Email is Efail&#60;/a&#62;)&#60;/dd&#62;
        &#60;dd&#62;Indexing and searching past messages is an unpleasant experience&#60;/dd&#62;
        &#60;dt id=&#34;cp-telephone&#34;&#62;Telephone&#60;/dt&#62;
        &#60;dd&#62;Effective but can be unnecessarily time consuming&#60;/dd&#62;
        &#60;dd&#62;Audio quality varies&#60;/dd&#62;
        &#60;dd&#62;Although there is nothing like hearing an old friend&#39;s or family member&#39;s voice&#60;/dd&#62;

        &#60;dt id=&#34;cp-radio&#34;&#62;Radio&#60;/dt&#62;
        &#60;dd&#62;One-way transmission (from sender)&#60;/dd&#62;
        &#60;dd&#62;Can be recorded, however, indexing and searching information is not simple&#60;/dd&#62;

        &#60;dt id=&#34;cp-smoke-signals&#34;&#62;Smoke signals&#60;/dt&#62;
        &#60;dd&#62;Time consuming (requires natural resources and human power)&#60;/dd&#62;
        &#60;dd&#62;May be inaccurate given the complexity of information&#60;/dd&#62;
        &#60;dd&#62;Visible from great distances&#60;/dd&#62;
        &#60;dd&#62;Perhaps environmentally unfriendly if everyone were to communicate this way today&#60;/dd&#62;

        &#60;dt id=&#34;cp-message-in-a-bottle&#34;&#62;Message in a bottle&#60;/dt&#62;
        &#60;dd&#62;Destination of the message is usually dependent on geography&#60;/dd&#62;
        &#60;dd&#62;Receiver may be anyone&#60;/dd&#62;

        &#60;dt id=&#34;cp-morse-code&#34;&#62;Morse code&#60;/dt&#62;
        &#60;dd&#62;Not dependant on the medium (information can be sent using various methods)&#60;/dd&#62;
        &#60;dd&#62;Requires training and experience to transmit accurately and efficiently.&#60;/dd&#62;

        &#60;dt id=&#34;cp-photographs&#34;&#62;Photographs&#60;/dt&#62;
        &#60;dd&#62;Non-verbal&#60;/dd&#62;
        &#60;dd&#62;Able to invoke various emotions&#60;/dd&#62;

        &#60;dt id=&#34;cp-telepathy&#34;&#62;Telepathy&#60;/dt&#62;
        &#60;dd&#62;Still known as a paranormal phenomenon&#60;/dd&#62;

        &#60;dt id=&#34;cp-audio&#34;&#62;Digital audio meetings (or conversations)&#60;/dt&#62;
        &#60;dd&#62;Similar to telephone&#60;/dd&#62;

        &#60;dt id=&#34;cp-voice-mail&#34;&#62;Voice-mail&#60;/dt&#62;
        &#60;dd&#62;Time consuming from both ends (i.e., sender, receiver)&#60;/dd&#62;
        &#60;dd&#62;Can&#39;t index, search (unless there is voice recognition)&#60;/dd&#62;
        
        &#60;dt id=&#34;cp-paper&#34;&#62;Paper&#60;/dt&#62;
        &#60;dd&#62;Becoming more environmentally unfriendly with ink (e.g., snail-mail)&#60;/dd&#62;
        &#60;dd&#62;Too slow&#60;/dd&#62; 
        &#60;dd&#62;Archiving consumes time, space&#60;/dd&#62;
        &#60;dd&#62;Can&#39;t index or search easily&#60;/dd&#62;
        &#60;dd&#62;Good for authenticated documents (although can be forged)&#60;/dd&#62;

        &#60;dt id=&#34;cp-fax&#34;&#62;Fax&#60;/dt&#62;
        &#60;dd&#62;Similar to paper,  but requires telecommunications&#60;/dd&#62;
    &#60;/dl&#62;
    &#60;div id=&#34;references-and-resources&#34;&#62;
        &#60;h2&#62;Notes&#60;/h2&#62;
        &#60;p class=&#34;note&#34;&#62;This document is inspired by Tantek&#39;s &#60;a href=&#34;http://tantek.pbwiki.com/CommunicationProtocols&#34;&#62;Communication Protocols&#60;/a&#62; and my ongoing frustration (lack of good experience) with inefficient ways of communicating digitally.&#60;/p&#62;
    &#60;/div&#62;
&#60;/div&#62;
                [&lt;a href=&quot;http://csarven.ca/communication-protocols#comment_write&quot;&gt;Leave a comment&lt;/a&gt;]
            </description>
            <guid>http://csarven.ca/communication-protocols</guid>
            
        </item>
    
        <item>
            <title>Microformats: misconceptions, problems and solutions</title>
            <pubDate>Tue, 20 May 2008 02:45:00</pubDate>
            <description>
                &#60;h1 class=&#34;entry-title&#34;&#62;Microformats: Moving along with the evolution of the Web&#60;/h1&#62;

&#60;div class=&#34;entry-summary&#34;&#62;
    &#60;p&#62;The intention of this article is to address some of the common arguments (or misconceptions) about microformats my colleagues have made on &#60;abbr title=&#34;Internet Relay Chat&#34;&#62;IRC&#60;/abbr&#62;, &#60;abbr title=&#34;Instant Messaging&#34;&#62;IM&#60;/abbr&#62;, blogs, and alternatives which I&#39;ve heard in conferences and at water coolers.&#60;/p&#62;
&#60;/div&#62;

&#60;div class=&#34;entry-content&#34;&#62;
    &#60;h2 id=&#34;problem_complexity&#34;&#62;Problem complexity&#60;/h2&#62;
    &#60;p&#62;How many Web sites can you point at random that has valid and &#60;a href=&#34;http://csarven.ca/html-overview&#34; title=&#34;Read more on the purpose of HTML&#34;&#62;proper markup&#60;/a&#62;? Consider the complexity that goes into producing a proper Web document (i.e., (X)(HT)ML). Microformats works quite well into the equation that it can solve a greater portion of the common problems, namely the &#34;semantic web&#34; using the widely adapted standards on existing documents.&#60;/p&#62;
    
    &#60;p&#62;We have the opportunity to boot-strap our existing data with microformats however. We can use (h)&#60;abbr title=&#34;Gleaning Resource Descriptions from Dialects of Languages&#34;&#62;GRDDL&#60;/abbr&#62; for instance to transform a microformated (X)HTML document into RDF(a). If and when the uppercase &#34;Semantic Web&#34; is here (in fully functional order and with all the bells and whistles with &#34;usable&#34;, &#34;human friendly&#34; applications and tools both for the publishers and end-users) then we can push our existing data forward. Going from HTML (semantically unmarked data) to RDF (which is actually solving a different problem) is pretty much impossible unless we do a lot of heavy text-mining and run heuristic algorithms: not necessarily the best way to tackle the problem right now if you ask me.&#60;/p&#62;
    
    &#60;h2 id=&#34;natural_language_processing&#34;&#62;Natural language processing&#60;/h2&#62;
    &#60;p&#62;In the case of &#60;abbr title=&#34;Natural Language Processing&#34;&#62;NLP&#60;/abbr&#62;, this is still quite complex today because we are bound to the limitations of a) our knowledge on solving &#60;abbr title=&#34;non-polynomial&#34;&#62;NP&#60;/abbr&#62; problems b) digital computing. When quantum computing becomes available at a level where we can ask a computer for instance to give a summary of an article, we will no longer need to worry as much as we do now about the machines struggling to understand the data bits. The problem is still quite complex since machines need to be fed extra information for context. Understanding humour, sarcasm, irony, and variety of emotions to name a few is necessary for a machine to get to the real context of the information and to go beyond the literal meaning.&#60;/p&#62;

    &#60;h2 id=&#34;not_a_revolution&#34;&#62;Not a revolution&#60;/h2&#62;
    &#60;p&#62;Microformats is not a new language and it is not meant to replace existing formats. It simply allows us to have an (X)HTML document that can be multi-purpose by reusing existing formats.&#60;/p&#62;
    
    &#60;h2 id=&#34;reusing_names&#34;&#62;Reusing names&#60;/h2&#62;
    &#60;p&#62;If we have to use a className for an article title, what would make more sense: a) &#34;entry-title&#34; b) &#34;my_title&#34; c) &#34;foo&#34; d) ? The fact is that it is required (for the sake of the argument) and the benefit is that we have &#60;em&#62;a way&#60;/em&#62; to identify that article title in the document. How is that in any way a problem for the humans or the machines? Is &#34;my_title&#34; any more useful to the human then &#34;entry-title&#34; ? We are killing two birds with one stone here by reusing an existing standard: whether it is vCard, Atom, geo or ISO 8601 etc.&#60;/p&#62;
    
    &#60;h2 id=&#34;free_markup&#34;&#62;Free markup&#60;/h2&#62;
    &#60;p&#62;Microformats is not tied up to any markup (one of the goals) other then a few exceptions as far as parsing is concerned, however, that is always subject to change in light of a better way of solving a particular problem. So you can take an un-semantic markup and it can still contain microformats in which a script can retrieve those identifiable components.&#60;/p&#62;
    
    &#60;h2 id=&#34;compound_formats&#34;&#62;Elemental and compound formats&#60;/h2&#62;
    &#60;p&#62;Microformats also allows us to reuse a single instance of data for multiple formats. Several class-name-patterns can be combined to represent the data in different contexts (e.g., &#34;fn&#34;, &#34;summary&#34; for hCard and hCalendar). How is keeping track of a vCard file, Atom/RSS file separately any better for the user? The point is to define it once and have the opportunity to reuse: a common good practice in computing disciplines.&#60;/p&#62;

    &#60;h2 id=&#34;real_cases&#34;&#62;Real cases&#60;/h2&#62;    
    &#60;p&#62;Keep in mind that microformats is not intended to solve all our problems. In fact, even if it tried, it can&#39;t. But it get us 80% of the way, or at least based on the problems it sees fit to solve. (X)HTML has its limitations. The point is to solve our most common patterns and problems. Always keep the amount of work really goes into implementation in real-world cases in perspective and weigh out the pros and cons for what is to be solved.&#60;/p&#62;

    &#60;h2 id=&#34;verbose_code&#34;&#62;Verbose code&#60;/h2&#62;
    &#60;p&#62;&#60;q&#62;What about code bloat?&#60;/q&#62; people ask. There is a compromise to be made here because in order for microformats parsing to work in some cases it needs to follow the specified hierarchy of name patterns. This of course requires us to use a structure that may require us to use extra containers then we really need to. This is not necessarily a bad thing depending on how minimal one wishes to write their (X)HTML. Keep in mind that using minimal (unique) markup forces us to write redundant or hard to scale code. Since common patterns occur, it makes sense to &#60;a href=&#34;http://csarven.ca/html-minimal-verbose&#34; title=&#34;Read more on different HTML writing approaches&#34;&#62;define templates on a granular level&#60;/a&#62; in order to reuse them in various places.&#60;/p&#62;
    
    &#60;h2 id=&#34;public_data&#34;&#62;Public data&#60;/h2&#62;
    &#60;p&#62;Another common worry, objection or criticism has to do with making data easily parsable by &#34;bad&#34; people. This will always be the case for any format that is not encrypted or accessible by a script. Having said that, technologies can always be used for good and bad and they are designed to aid some human need in the end. The whole premise of the Web and how it took off as it did is because of the fact that we made data easily accessible by humans; &#60;em&#62;textual markup for the win&#60;/em&#62;. Microformats emphasises only marking up visible information for humans. If it is not intended to be retrievable then it would make more sense not to make it public from the very beginning. If an email address is intended to be read (without having to look at the source code) then that email address can be optionally marked and be available for the scripts. In any case, the information is already there and can be retrieved by a fully committed script regardless of any &#60;a href=&#34;http://csarven.ca/hiding-email-addresses&#34; title=&#34;Read more on hiding email addresses from the source code&#34;&#62;tricks to fool email harvesters&#60;/a&#62;. We are able to set licensing terms (e.g., creative commons) on the data that we share; it helps the reader understand their rights with the information and what they are allowed to do with it.&#60;/p&#62;
    
    &#60;h2 id=&#34;internationalisation&#34;&#62;Internationalisation&#60;/h2&#62;
    &#60;p&#62;Solving the &#60;abbr title=&#34;Internationalisation&#34;&#62;i18n&#60;/abbr&#62; issues is beyond the scope of what microformats is trying do. Simply, if a standard (i.e., vCard&#39;s &#34;tel&#34;) can address localisation better, then it would be easier for microformats to embrace them.&#60;/p&#62;

    &#60;h2 id=&#34;accessibility&#34;&#62;Accessibility&#60;/h2&#62;
    &#60;p&#62;This is a big can of worms on its own but I will just say this which I believe puts us back on perspective: Accessibility applies to everyone. Essentially we want to reach most humans as possible and continue to improve on that.&#60;/p&#62;    

    &#60;h2 id=&#34;progress&#34;&#62;Progress&#60;/h2&#62;
    &#60;p&#62;Microformats is part of the natural evolution of the Web. Simply there is a need for it and the solution is reasonable enough to adapt to.&#60;/p&#62;

    &#60;div id=&#34;references-and-resources&#34;&#62;    
        &#60;h2&#62;References and resources (and good reads)&#60;/h2&#62;
        &#60;ul&#62;
            &#60;li&#62;&#60;a href=&#34;http://microformats.org/wiki&#34; rel=&#34;external&#34;&#62;microformats wiki&#60;/a&#62;&#60;/li&#62;
            &#60;li&#62;&#60;a href=&#34;http://www.w3.org/2006/07/SWD/wiki/hGRDDL_Example&#34; rel=&#34;external&#34;&#62;hGRDDL Example&#60;/a&#62;&#60;/li&#62;
            &#60;li&#62;&#60;a href=&#34;http://evan.prodromou.name/RDFa_vs_microformats&#34; title=&#34;Read Evan&#39;s RDFa vs microformats post&#34;&#62;RDFa vs microformats&#60;/a&#62; by &#60;a href=&#34;http://evan.prodromou.name&#34; rel=&#34;contact met friend colleague external&#34;&#62;Evan Prodromou&#60;/a&#62;&#60;/li&#62;
        &#60;/ul&#62;
    &#60;/div&#62;
&#60;/div&#62;
                [&lt;a href=&quot;http://csarven.ca/microformats-misconceptions#comment_write&quot;&gt;Leave a comment&lt;/a&gt;]
            </description>
            <guid>http://csarven.ca/microformats-misconceptions</guid>
            
        </item>
    
    </channel>
</rss>

