<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>Semantic Wave</title>
    <link rel="alternate" type="text/html" href="http://www.semanticwave.com/blog/" />
    <link rel="self" type="application/atom+xml" href="http://www.semanticwave.com/blog/atom.xml" />
    <id>tag:www.semanticwave.com,2010-05-23:/blog//1</id>
    <updated>2010-06-27T20:53:44Z</updated>
    <subtitle>News feeds and commentary maintained by semantic web developer Jamie Pitts.</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type 4.3-en</generator>

<entry>
    <title>Three Days in Columbus: YAPC 2010 - Day 2</title>
    <link rel="alternate" type="text/html" href="http://www.semanticwave.com/blog/archives/2010/06/yapc-2010-part-2.tt" />
    <id>tag:www.semanticwave.com,2010:/blog//1.333</id>

    <published>2010-06-27T19:05:24Z</published>
    <updated>2010-06-27T20:53:44Z</updated>

    <summary>My second day began with a Damian Conway talk about perl6. Here are tidbits from that and other talks: perl6 allows you to define new language constructs and modify current ones. Damian Conway walked us through some conversions of his current perl5 modules to perl6 that demonstrated this in full. I was completely tripping out for at least 30 minutes after the end of that session. You can use an apostrophe in a module name for effect because this is what :: used to be called. Hence, ACME::Don&apos;t. perl6 needs a CPAN, or whatever they are going to call it. Samy demonstrated how to build packet sniffers, ARP spoofers, and other useful utilities in perl... without depending on any c libraries. All who attended his talk bore gleeful looks of mischief as they walked out. George Lakoff pointed out that we should should be saying that &quot;perl is alive&quot; (instead of negating a frame). Mr. Lakoff makes a good point, but the lame &quot;perl is dead&quot; frame is so widely believed that it can be effectively countered with direct force. Perl needs marketing. Actually, CPAN needs marketing....</summary>
    <author>
        <name>Jamie Pitts</name>
        <uri>http://www.semanticwave.com/</uri>
    </author>
    
        <category term="Perl" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="perl" label="perl" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.semanticwave.com/blog/">
        <![CDATA[<p>My second day began with a Damian Conway talk about perl6. Here are tidbits from that and other talks:</p>

<ul>

<p><li>perl6 allows you to define new language constructs and modify current ones. Damian Conway walked us through some conversions of his current perl5 modules to perl6 that demonstrated this in full. I was completely tripping out for at least 30 minutes after the end of that session.</li></p>

<p><li>You can use an apostrophe in a module name for effect because this is what :: used to be called. Hence, <a href="http://search.cpan.org/~dconway/Acme-Don-t/t.pm">ACME::Don't</a>.</li></p>

<p><li>perl6 needs a CPAN, or whatever they are going to call it.</li></p>

<p><li>Samy <a href="http://yapc2010.com/yn2010/talk/2752">demonstrated</a> how to build packet sniffers, ARP spoofers, and other useful utilities in perl... without depending on any c libraries. All who attended his talk bore gleeful looks of mischief as they walked out.</li></p>

<p><li>George Lakoff pointed out that we should should be saying that "perl is alive" (instead of <a href="http://blog.timbunce.org/2008/03/08/perl-myths/">negating a frame</a>). Mr. Lakoff makes a good point, but the lame "perl is dead" frame is so widely believed that it can be effectively countered with direct force.</li></p>

<p><li>Perl needs marketing. Actually, CPAN needs marketing.</li></p>

</ul>]]>
        
    </content>
</entry>

<entry>
    <title>Three Days in Columbus: YAPC 2010 - Day 1</title>
    <link rel="alternate" type="text/html" href="http://www.semanticwave.com/blog/archives/2010/06/yapc-2010-part-1.tt" />
    <id>tag:www.semanticwave.com,2010:/blog//1.332</id>

    <published>2010-06-24T02:37:03Z</published>
    <updated>2010-06-27T20:39:37Z</updated>

    <summary>Columbus, Ohio is a college town that reminds me a lot Nashville, Tennessee where I spent Summers growing up. Like my childhood Summers, YAPC 2010 was a learning experience. And the beer was good, thanks to the generosity of fellow perl mongers! I went to a lot of talks and found out many interesting things. Here are some tidbits: Tatsuhiko Miyagawa&apos;s starman web server has lots of potential in the high-performance space. Installing your cpan modules in your home dir using local::lib is gaining acceptance. Why did we ever need to talk to the sysadmins to do perl dev? Doh, I should have built my mega API project using Catalyst::Controller::DBIC::API CPAN development is a lot easier now with Dist::Zilla. It uses a set of configurations and plugins to version, pack, and upload your module to CPAN. perl5 is brimming with new features, and so is cpan. A few of my favorites: defined-or operator: $age //= 100method signaturesMOOSE and MOOSE roles, among the most perlish things to happen to perl, yet I first started using dependency injection in java and ruby perl6 rocks today&apos;s perl5 and cpan are a good way to learn perl6. Human processing: don&apos;t over-engineer something that can be done by an hour of repetitive work using the world&apos;s best computer. DBIx::Connector looks like a nice alternative Apache::DBI except that it does not require a mod_perl container. It does not cache the connection, just makes sure that it is available. Ok, well, that was day one. I&apos;ll add more tomorrow......</summary>
    <author>
        <name>Jamie Pitts</name>
        <uri>http://www.semanticwave.com/</uri>
    </author>
    
        <category term="Perl" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="perl" label="perl" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.semanticwave.com/blog/">
        <![CDATA[<p>Columbus, Ohio is a college town that reminds me a lot Nashville, Tennessee where I spent Summers growing up. Like my childhood Summers, <a href="http://yapc2010.com/yn2010/">YAPC 2010</a> was a learning experience. And the beer was good, thanks to the generosity of fellow perl mongers!</p>

<p>I went to a lot of talks and found out many interesting things. Here are some tidbits:</p>

<ul>
<li>Tatsuhiko Miyagawa's <a href="http://search.cpan.org/~miyagawa/Starman/lib/Starman.pm">starman</a> web server has lots of potential in the high-performance space.</li>

<p><li>Installing your cpan modules in your home dir using <a href="http://search.cpan.org/~getty/local-lib/lib/local/lib.pm">local::lib</a> is gaining acceptance. Why did we ever need to talk to the sysadmins to do perl dev?</li></p>

<p><li>Doh, I should have built my mega API project using <a href="http://search.cpan.org/dist/Catalyst-Controller-DBIC-API/">Catalyst::Controller::DBIC::API</a></li></p>

<p><li>CPAN development is a lot easier now with <a href="http://search.cpan.org/dist/Dist-Zilla/">Dist::Zilla</a>. It uses a set of configurations and plugins to version, pack, and upload your module to CPAN.</li></p>

<p><li>perl5 is brimming with new features, and so is cpan. A few of my favorites:</li><br />
<ul><li><a href="http://perldoc.perl.org/perlop.html#C-style-Logical-Defined-Or">defined-or</a> operator: $age //= 100</li><li><a href="http://search.cpan.org/dist/Method-Signatures-Simple/lib/Method/Signatures/Simple.pm">method signatures</a></li><li><a href="http://search.cpan.org/~doy/Moose/lib/Moose.pm">MOOSE</a> and <a href="http://search.cpan.org/~doy/Moose/lib/Moose/Role.pm">MOOSE roles</a>, among the most perlish things to happen to perl, yet I first started using dependency injection in java and ruby</li></ul></p>

<p><li>perl6 rocks</li></p>

<p><li>today's perl5 and cpan are a good way to learn perl6.</li></p>

<p><li>Human processing: don't over-engineer something that can be done by an hour of repetitive work using the world's best computer.</li></p>

<p><li><a href="http://search.cpan.org/dist/DBIx-Connector/lib/DBIx/Connector.pm">DBIx::Connector</a> looks like a nice alternative Apache::DBI except that it does not require a mod_perl container. It does not cache the connection, just makes sure that it is available.</li></p>

</ul>

<p>Ok, well, that was day one. I'll add more tomorrow...</p>]]>
        
    </content>
</entry>

<entry>
    <title>Why we should call them &quot;postmodern databases&quot;</title>
    <link rel="alternate" type="text/html" href="http://www.semanticwave.com/blog/archives/2010/06/postmodern-databases.tt" />
    <id>tag:www.semanticwave.com,2010:/blog//1.331</id>

    <published>2010-06-14T03:05:49Z</published>
    <updated>2010-06-15T03:43:36Z</updated>

    <summary>After many years developing applications on mysql, oracle, and postgres, I recently decided to cast aside my biases against high-performance, weakly-consistent data stores and delve into CouchDB and its illustrious ilk. I am excited by the prospect of flexibility and high-availability. This type of database has been begging for a name ever since BerkeleyDB reigned. It probably should refer to what it is (and not what it isn&apos;t). so out the window we should throw the term &quot;nosql&quot;. Following that should be &quot;structured storage&quot;, which does not fully differentiate it from a relational database. On our march to O&apos;rielly conferences, blog posts, and constant twitterings we should guide the terminology for clarity and for posterity. After all, we don&apos;t want another AJAX or Web 2.0 on our key-flattened fingertips. So, what is a clear way to refer to a database that favors availability over integrity? I just read an account of a talk at Southeast Linux Fest in which Richard Hipp referred to them as &quot;postmodern databases.&quot; Which is a great way to put it. When I hear this in my mind, I laugh because I am reminded of Baudrillard&apos;s Simulacra and Simulation. According to Baudrillard&apos;s way of looking at things, we are so deep in simulation that we no longer even know what is original, or even what original is. The postmodern database is the appropriate technology for our age of mutability and interconnectedness, a world in which our need to instantaneously connect to each other and to connect to our knowledge is more important than &quot;properly&quot; categorizing and extracting meaning. We can always write processes later on to cull postmodern data and diligently pack it into something &quot;tried and true&quot;. Meanwhile, real people have seemingly figured everything out....</summary>
    <author>
        <name>Jamie Pitts</name>
        <uri>http://www.semanticwave.com/</uri>
    </author>
    
        <category term="Databases" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Ideas" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Trends" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="databases" label="databases" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="nosql" label="nosql" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="postmod" label="postmod" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="relational" label="relational" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.semanticwave.com/blog/">
        <![CDATA[<p>After many years developing applications on mysql, oracle, and postgres, I recently decided to cast aside my biases against <a href="http://en.wikipedia.org/wiki/NoSQL">high-performance, weakly-consistent data stores</a> and delve into <a href="http://couchdb.apache.org/">CouchDB</a> and its illustrious ilk. I am excited by the prospect of flexibility and high-availability.</p>

<p>This type of database has been begging for a name ever since BerkeleyDB reigned. It probably should refer to what it is (and not what it isn't). so out the window we should throw the term "nosql". Following that should be "<a href="http://en.wikipedia.org/wiki/Structured_storage">structured storage</a>", which does not fully differentiate it from a relational database. On our march to O'rielly conferences, blog posts, and constant twitterings we should guide the terminology for clarity and for posterity. </p>

<p>After all, we don't want another AJAX or Web 2.0 on our key-flattened fingertips.</p>

<p>So, what is a clear way to refer to a database that favors availability over integrity? I just read an <a href="http://www.xaprb.com/blog/2010/06/12/postmodern-databases/">account of a talk at Southeast Linux Fest</a> in which <a href="http://www.hwaci.com/drh/">Richard Hipp</a> referred to them as "postmodern databases."</p>

<p>Which is a great way to put it. When I hear this in my mind, I laugh because I am reminded of Baudrillard's <a href="http://en.wikipedia.org/wiki/Simulacra_and_Simulation">Simulacra and Simulation</a>. According to Baudrillard's way of looking at things, we are so deep in simulation that we no longer even know what is original, or even what original is. </p>

<p>The postmodern database is the appropriate technology for our age of mutability and interconnectedness, a world in which our need to instantaneously connect to each other and to connect to our knowledge is more important than "properly" categorizing and extracting meaning.</p>

<p>We can always write processes later on to cull postmodern data and diligently pack it into something "tried and true". </p>

<p>Meanwhile, real people have seemingly figured everything out.</p>]]>
        
    </content>
</entry>

<entry>
    <title>Perl Upgrade to Semantic Wave</title>
    <link rel="alternate" type="text/html" href="http://www.semanticwave.com/blog/archives/2010/06/perl-upgrade-to-1.tt" />
    <id>tag:localhost,2010:/blog//1.329</id>

    <published>2010-06-03T03:05:15Z</published>
    <updated>2010-06-03T03:25:37Z</updated>

    <summary>I just upgraded Semantic Wave to use a more recent version of Movable Type, and also folded in some Catalyst/DBIx::Class integration. This means that there will be no more serving of MT output using JSP pages, although apache will continue to respect old links ending in jsp. These subtle changes should put me in much better form for the upcoming YAPC 2010!...</summary>
    <author>
        <name>Jamie Pitts</name>
        <uri>http://www.semanticwave.com/</uri>
    </author>
    
        <category term="Perl" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="catalyst" label="catalyst" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="dbic" label="dbic" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perl" label="perl" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.semanticwave.com/blog/">
        <![CDATA[<p>I just upgraded Semantic Wave to use a more recent version of Movable Type, and also folded in some Catalyst/DBIx::Class integration. This means that there will be no more serving of MT output using JSP pages, although apache will continue to respect old links ending in jsp.</p>

<p>These subtle changes should put me in much better form for the upcoming <a href="http://yapc2010.com/yn2010/">YAPC 2010</a>!</p>]]>
        
    </content>
</entry>

<entry>
    <title>Build Your Own Document Viewer</title>
    <link rel="alternate" type="text/html" href="http://www.semanticwave.com/blog/archives/2010/01/build-your-own.tt" />
    <id>tag:www.semanticwave.com,2010:/blog//1.326</id>

    <published>2010-01-03T17:37:19Z</published>
    <updated>2010-06-03T03:26:57Z</updated>

    <summary>Eric Blue posted a write-up about a document viewer that he built in order to provide convenient access to the various formats in his knowledge manager project. Document Browser is based on FlexPaper and, on the server-side, employs various open source conversion utils....</summary>
    <author>
        <name>Jamie Pitts</name>
        <uri>http://www.semanticwave.com/</uri>
    </author>
    
        <category term="Projects" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="flash" label="flash" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="knowledgemanagement" label="knowledge management" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="pdf" label="pdf" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.semanticwave.com/blog/">
        <![CDATA[<p>Eric Blue posted a <a href="http://eric-blue.com/2010/01/03/how-to-create-your-own-personal-document-viewer-like-scribd-or-google-books/">write-up</a> about a document viewer that he built in order to provide convenient access to the various formats in his <a href="http://eric-blue.com/my-projects/personal-memex/">knowledge manager project</a>. Document Browser is based on <a href="http://www.devaldi.com/?page_id=260">FlexPaper</a> and, on the server-side, employs various open source conversion utils.</p>]]>
        
    </content>
</entry>

<entry>
    <title>local-openid: OpenID Authentication Only When I Need It</title>
    <link rel="alternate" type="text/html" href="http://www.semanticwave.com/blog/archives/2009/04/localopenid-ope.tt" />
    <id>tag:www.semanticwave.com,2009:/blog//1.325</id>

    <published>2009-04-05T22:43:28Z</published>
    <updated>2010-06-03T03:27:07Z</updated>

    <summary>Eric Wong has whipped up a ruby demo of a very interesting idea: when you need to authenticate, fire up your own &quot;99.9% downtime&quot; OpenID server for the duration of the transaction, and then shut it down....</summary>
    <author>
        <name>Jamie Pitts</name>
        <uri>http://www.semanticwave.com/</uri>
    </author>
    
        <category term="Projects" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Social Software" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="openid" label="openid" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ruby" label="ruby" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.semanticwave.com/blog/">
        <![CDATA[<p>Eric Wong has whipped up a <a href="http://git.bogomips.org/cgit/local-openid.git">ruby demo</a> of <a href="http://bogomips.org/local-openid/">a very interesting idea</a>: when you need to authenticate, fire up your own "99.9% downtime" OpenID server for the duration of the transaction, and then shut it down.</p>]]>
        
    </content>
</entry>

<entry>
    <title>Rapping About Proper HTML</title>
    <link rel="alternate" type="text/html" href="http://www.semanticwave.com/blog/archives/2008/04/rapping-about-p.tt" />
    <id>tag:www.semanticwave.com,2008:/blog//1.318</id>

    <published>2008-04-29T06:56:45Z</published>
    <updated>2008-04-29T07:13:07Z</updated>

    <summary>The Poetic Prophet may also be known as The SEO Rapper, but his Design Coding rap contains a lot of good advice for an HTML/CSS designer. All we have to do now is convince him to rap about RDFa! ...title everything including links and images don&apos;t use italics, use emphasis don&apos;t use bold, please use strong if you use bold that&apos;s old and wrong when you use CSS, you page will load quicker client satisfied like they eating on a snicker they stuck on your page like you made it with a sticker and then they convert now that&apos;s the real kicker make you a lil richer, your site a lil slicker design and code right man I hope you get the picture... Source: Design Coding Spotter: ROFLCon Sleeper Hits Session....</summary>
    <author>
        <name>Jamie Pitts</name>
        <uri>http://www.semanticwave.com/</uri>
    </author>
    
        <category term="Development" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="html" label="html" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="rap" label="rap" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.semanticwave.com/blog/">
        <![CDATA[<p><a href="http://moserious.wordpress.com/">The Poetic Prophet</a> may also be known as The SEO Rapper, but his <a href="http://www.youtube.com/watch?v=a0qMe7Z3EYg">Design Coding</a> rap contains a lot of good advice for an HTML/CSS designer. </p>

<p>All we have to do now is convince him to rap about RDFa!</p>

<p><object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/a0qMe7Z3EYg&hl=en"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/a0qMe7Z3EYg&hl=en" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"></embed></object></p>

<blockquote>
...title everything including links and images<br/>
don't use italics, use emphasis<br/>
don't use bold, please use strong<br/>
if you use bold that's old and wrong<br/>
when you use CSS, you page will load quicker<br/>
client satisfied like they eating on a snicker<br/>
they stuck on your page like you made it with a sticker<br/>
and then they convert now that's the real kicker<br/>
make you a lil richer, your site a lil slicker<br/>
design and code right man I hope you get the picture...<br/>

<p>Source: <a href="http://www.youtube.com/watch?v=a0qMe7Z3EYg">Design Coding</a></blockquote></p>

<p>Spotter: <a href="http://roflcon.org/2008/04/28/sleeper-hits-session-the-playlist/">ROFLCon Sleeper Hits Session</a>.</p>]]>
        
    </content>
</entry>

<entry>
    <title>Looking for the Mouse</title>
    <link rel="alternate" type="text/html" href="http://www.semanticwave.com/blog/archives/2008/04/looking-for-the.tt" />
    <id>tag:www.semanticwave.com,2008:/blog//1.317</id>

    <published>2008-04-27T18:59:23Z</published>
    <updated>2008-04-27T19:21:56Z</updated>

    <summary>Gin, Television, and Social Surplus by Clay Shirky has me riveted. I&apos;ve been reading essays about post-television culture since Alvin Toffler keeled me over half-way through my senior year in high school, but Shirky&apos;s write-up of his 2008 Web 2.0 Conference speech is among the best. The Internet-connected population watches roughly a trillion hours of TV a year. That&apos;s about five times the size of the annual U.S. consumption. One per cent of that is 10,000 Wikipedia projects per year worth of participation. I think that&apos;s going to be a big deal. Don&apos;t you? Source: Gin, Television, and Social Surplus While this hopeful logic echoes the &quot;1% of a billion people&quot; fallacy, the immense amount of work directed at projects such as wikipedia attests to huge reserves of untapped intellectual energy. We&apos;re going to need it....</summary>
    <author>
        <name>Jamie Pitts</name>
        <uri>http://www.semanticwave.com/</uri>
    </author>
    
        <category term="Thinking Out Loud" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="culture" label="culture" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="television" label="television" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="wikipedia" label="wikipedia" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.semanticwave.com/blog/">
        <![CDATA[<p><a href="http://www.herecomeseverybody.org/2008/04/looking-for-the-mouse.html">Gin, Television, and Social Surplus</a> by Clay Shirky has me riveted. I've been reading essays about post-television culture since Alvin Toffler keeled me over half-way through my senior year in high school, but Shirky's write-up of his 2008 Web 2.0 Conference speech is among the best.</p>

<blockquote>The Internet-connected population watches roughly a trillion hours of TV a year. That's about five times the size of the annual U.S. consumption. One per cent of that  is 10,000 Wikipedia projects per year worth of participation. 

<p>I think that's going to be a big deal. Don't you?</p>

<p>Source: <a href="http://www.herecomeseverybody.org/2008/04/looking-for-the-mouse.html">Gin, Television, and Social Surplus</a></blockquote></p>

<p>While this hopeful logic echoes the "1% of a billion people" fallacy, the immense amount of work directed at projects such as wikipedia attests to huge reserves of untapped intellectual energy. </p>

<p>We're going to need it.</p>]]>
        
    </content>
</entry>

<entry>
    <title>I Just Installed God On My Mac</title>
    <link rel="alternate" type="text/html" href="http://www.semanticwave.com/blog/archives/2008/03/i-just-installe.tt" />
    <id>tag:www.semanticwave.com,2008:/blog//1.316</id>

    <published>2008-03-30T18:15:08Z</published>
    <updated>2008-03-30T19:05:53Z</updated>

    <summary>sudo gem install god I feel as if a line has been crossed and I am not even religious. Isn&apos;t it sheer gumption to name process monitoring software after Him? Whatever the answer is, I look forward to giving it a trial run. The documentation is hilarious and is sure to bring this project a lot of attention. Need to watch a script that doesn&apos;t have built in daemonization? No problem! God will daemonize and keep track of your process for you. Source: god.rubyforge.org Spotter: Simon Willison....</summary>
    <author>
        <name>Jamie Pitts</name>
        <uri>http://www.semanticwave.com/</uri>
    </author>
    
        <category term="Projects" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="opensource" label="opensource" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ruby" label="ruby" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="sysadmin" label="sysadmin" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.semanticwave.com/blog/">
        <![CDATA[<blockquote>sudo gem install god</blockquote>

<p>I feel as if a line has been crossed and I am not even religious. Isn't it sheer gumption to name <a href="http://god.rubyforge.org/">process monitoring software</a> after Him? Whatever the answer is, I look forward to giving it a trial run.</p>

<p>The documentation is hilarious and is sure to bring this project a lot of attention.</p>

<blockquote>Need to watch a script that doesn't have built in daemonization? No problem! God will daemonize and keep track of your process for you.

<p>Source: <a href="http://god.rubyforge.org/">god.rubyforge.org</a></blockquote></p>

<p>Spotter: <a href="http://simonwillison.net/2008/Mar/29/god/">Simon Willison</a>.</p>]]>
        
    </content>
</entry>

<entry>
    <title>Some Very Good Advice for Jerry Yang</title>
    <link rel="alternate" type="text/html" href="http://www.semanticwave.com/blog/archives/2008/02/some-very-good.tt" />
    <id>tag:www.semanticwave.com,2008:/blog//1.314</id>

    <published>2008-02-08T03:01:15Z</published>
    <updated>2008-02-08T03:28:36Z</updated>

    <summary>&quot;98 Billion Dollars. Not including flickr.&quot; Although this video may have been made in jest, Jerry Yang could learn a lot from this Israeli entrepreneur. It all boils down to maximizing value. Yahoo has failed to communicate that Microsoft&apos;s bid is too low, and this makes them look (and feel) weaker. So do the cuddly emails to employees. When Steve Ballmer gets into the ring, it is time to fight - especially if you&apos;re going to be working for him in a few months....</summary>
    <author>
        <name>Jamie Pitts</name>
        <uri>http://www.semanticwave.com/</uri>
    </author>
    
        <category term="Business" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="business" label="business" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="microsoft" label="microsoft" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="yahoomerger" label="yahoo. merger" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.semanticwave.com/blog/">
        <![CDATA[<p><a href="http://www.5min.com/Video/How-to-negotiate---Tips-for-Yahoo-5794173">"98 Billion Dollars. Not including flickr."</a></p>

<p><object width='425' height='345' id='FiveminPlayer'><param name='allowfullscreen' value='true'/><param name='allowScriptAccess' value='always'/><param name='movie' value='http://www.5min.com/Embeded/5794173/'/><embed src='http://www.5min.com/Embeded/5794173/' type='application/x-shockwave-flash' width='425' height='345' allowfullscreen='true' allowScriptAccess='always'></embed></object></p>

<p>Although this video may have been made in jest, Jerry Yang could learn a lot from this Israeli entrepreneur. It all boils down to maximizing value. Yahoo has failed to communicate that Microsoft's bid is too low, and this makes them look (and feel) weaker.</p>

<p>So do the cuddly emails to employees. </p>

<p>When Steve Ballmer gets into the ring, it is time to fight - especially if you're going to be working for him in a few months.</p>]]>
        
    </content>
</entry>

<entry>
    <title>The Meaning Of A Tag</title>
    <link rel="alternate" type="text/html" href="http://www.semanticwave.com/blog/archives/2008/01/the-meaning-of.tt" />
    <id>tag:www.semanticwave.com,2008:/blog//1.309</id>

    <published>2008-01-22T04:14:19Z</published>
    <updated>2008-01-22T05:25:14Z</updated>

    <summary><![CDATA[I am very excited about the MOAT Project, an effort to map user-generated tags to the semantic web. This is a super-important effort as web site operators often might want to utilize and contribute to the semantic web but cannot invest too much valuable brain power into doing so. It also helps with the marketing of meaningful tagging, that there is more to be had from tags than simply tallying them up like votes for bad candidates. Here is an example of how to assert two different meanings for a tag: &lt;moat:Tag rdf:about=&quot;http://tags.moat-project.org/tag/paris&quot;&gt; &lt;moat:name&gt;&lt;![CDATA[paris]]&gt;&lt;/moat:name&gt; &lt;moat:hasMeaning&gt; &lt;moat:Meaning&gt; &lt;moat:meaningURI rdf:resource=&quot;http://sws.geonames.org/2988507/&quot;/&gt; &lt;foaf:maker rdf:resource=&quot;http://example.org/user/foaf/1&quot;/&gt; &lt;/moat:Meaning&gt; &lt;/moat:has_meaning&gt; &lt;moat:hasMeaning&gt; &lt;moat:Meaning&gt; &lt;moat:meaningURI rdf:resource=&quot;http://sws.geonames.org/4402452/&quot;/&gt; &lt;foaf:maker rdf:resource=&quot;http://example.org/user/bob/foaf&quot;/&gt; &lt;foaf:maker rdf:resource=&quot;http://somwhere.net/myblog/foaf.rdf#me&quot;/&gt; &lt;/moat:Meaning&gt; &lt;/moat:has_meaning&gt; &lt;/moat:Tag&gt; Source: MOAT ontology I have always believed that site operators and end-users should interact with the semantic web in a seamless, familiar manner. What MOAT must be answered with is UI that encourages meaningful tagging. In its current state, though, tagging appears to have hit an innovation plateau because it is difficult for users to add more than shallow, impressionistic meaning to a subject. There is enough in tagging to generate interesting visualizations such as tag clouds and (of course) to improve the findability of site resources. But there needs to be a way to add one more dimension to the subject-tag relationship. Two recent experiments that I have developed in meaningful tagging are to be found in the Memecat and Listgasm projects. In order to add the third "predicate" dimension to the tagging of a subject, I provide cues as to what the tagging context is when a user enters tags. To allow for creativity, we chose to allow the users to freely enter whatever tag they wished, but still provide "object" suggestions. On the storage side, each user assertion is stored as a triple: the item, the predicate, and the tag entered by a user. When entering a tag to "keep" a list item in Listgasm, the user is presented with a dropdown of suggested tags. The same approach is used to "lose" a list item, which represents a different predicate for the same subject. In Memecat, a video meme is similarly tagged for pattern, culture, and what it contains. A major benefit to the tagging and storage approach used in these projects is to allow a user to not only tag different aspects of an item, but to also enter more than one tag in doing so. What I haven't yet done is connect the data that we've collected in these projects to the semantic web. MOAT could be the best way to quickly do this....]]></summary>
    <author>
        <name>Jamie Pitts</name>
        <uri>http://www.semanticwave.com/</uri>
    </author>
    
        <category term="Projects" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="listgasm" label="listgasm" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="memecat" label="memecat" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="tagging" label="tagging" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.semanticwave.com/blog/">
        <![CDATA[<p>I am very excited about the <a href="http://moat-project.org">MOAT Project</a>, an effort to map user-generated tags to the semantic web. This is a super-important effort as web site operators often might want to utilize and contribute to the semantic web but cannot invest too much valuable brain power into doing so. It also helps with the marketing of meaningful tagging, that there is more to be had from tags than simply tallying them up like votes for bad candidates.</p>

<p>Here is an example of how to assert two different meanings for a tag:</p>

<blockquote><pre>
&lt;moat:Tag rdf:about=&quot;http://tags.moat-project.org/tag/paris&quot;&gt;
&lt;moat:name&gt;&lt;![CDATA[paris]]&gt;&lt;/moat:name&gt;
  &lt;moat:hasMeaning&gt;
    &lt;moat:Meaning&gt;
      &lt;moat:meaningURI rdf:resource=&quot;http://sws.geonames.org/2988507/&quot;/&gt;
      &lt;foaf:maker rdf:resource=&quot;http://example.org/user/foaf/1&quot;/&gt;
    &lt;/moat:Meaning&gt;
  &lt;/moat:has_meaning&gt;
  &lt;moat:hasMeaning&gt;
    &lt;moat:Meaning&gt;
      &lt;moat:meaningURI rdf:resource=&quot;http://sws.geonames.org/4402452/&quot;/&gt;
      &lt;foaf:maker rdf:resource=&quot;http://example.org/user/bob/foaf&quot;/&gt;
      &lt;foaf:maker rdf:resource=&quot;http://somwhere.net/myblog/foaf.rdf#me&quot;/&gt;
    &lt;/moat:Meaning&gt;
  &lt;/moat:has_meaning&gt;
&lt;/moat:Tag&gt;</pre>

<p>Source: <a href="http://moat-project.org/ontology">MOAT ontology</a></blockquote></p>

<p>I have always believed that site operators and end-users should interact with the semantic web in a seamless, familiar manner. What MOAT must be answered with is UI that encourages meaningful tagging. In its current state, though, tagging appears to have hit an innovation plateau because it is difficult for users to add more than shallow, impressionistic meaning to a subject. There is enough in tagging to generate interesting visualizations such as tag clouds and (of course) to improve the findability of site resources. But there needs to be a way to add one more dimension to the subject-tag relationship.</p>

<p>Two recent experiments that I have developed in meaningful tagging are to be found in the <a href="http://www.memecat.com">Memecat</a> and <a href="http://listgasm.com">Listgasm</a> projects.</p>

<p>In order to add the third "predicate" dimension to the tagging of a subject, I provide cues as to what the tagging context is when a user enters tags. To allow for creativity, we chose to allow the users to freely enter whatever tag they wished, but still provide "object" suggestions. On the storage side, each user assertion is stored as a triple: the item, the predicate, and the tag entered by a user. </p>

<p>When entering a tag to "keep" a <a href="http://listgasm.com/lists/the_most_eligible_world_leaders">list item</a> in <a href="http://listgasm.com">Listgasm</a>, the user is presented with a dropdown of suggested tags. The same approach is used to "lose" a list item, which represents a different predicate for the same subject. In <a href="http://www.memecat.com">Memecat</a>, a video <a href="http://www.memecat.com/memes/lego_jumpstyle">meme</a> is similarly tagged for pattern, culture, and what it contains. A major benefit to the tagging and storage approach used in these projects is to allow a user to not only tag different aspects of an item, but to also enter more than one tag in doing so.</p>

<p>What I haven't yet done is connect the data that we've collected in these projects to the semantic web. <a href="http://moat-project.org">MOAT</a> could be the best way to quickly do this. </p>]]>
        
    </content>
</entry>

<entry>
    <title>Hashtags</title>
    <link rel="alternate" type="text/html" href="http://www.semanticwave.com/blog/archives/2008/01/hashtags.tt" />
    <id>tag:www.semanticwave.com,2008:/blog//1.303</id>

    <published>2008-01-01T20:16:58Z</published>
    <updated>2008-01-01T20:56:33Z</updated>

    <summary>Hashtags is an effort to add loose metadata to twitterings. Currently, users are referred-to with a preceding &quot;@&quot; in Twitter messages. In the case of hashtags, a twitterer &quot;follows&quot; the Hashtags user and then tags words by prefixing them with a &quot;#&quot;. This keyword is then tracked by hashtags.org. This could get messy as hashtags participants are already placing the &quot;#&quot; in front of too many words that they deem relevant. Perhaps hashtaggers should only place their metadata at the end of the twittering so as not to interfere with the human-readable part of the message. More ideas for metadata in short messages: - hashtags could encourage participants to use a set of common prefixes and then connect their community into the greater semweb. - comma-delimited tags after the &quot;#&quot; - generate threads of related twitterings using a &quot;re:&quot; and a keyword Spotter: Everything Is Miscellaneous...</summary>
    <author>
        <name>Jamie Pitts</name>
        <uri>http://www.semanticwave.com/</uri>
    </author>
    
        <category term="Twitter" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="hashtags" label="hashtags" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="twitter" label="twitter" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.semanticwave.com/blog/">
        <![CDATA[<p><a href="http://hashtags.org/">Hashtags</a> is an effort to add loose metadata to twitterings. Currently, users are referred-to with a preceding "@" in <a href="http://twitter.com">Twitter</a> messages. In the case of hashtags, a twitterer "follows" the <a href="http://twitter.com/hashtags/">Hashtags user</a> and then tags words by prefixing them with a "#". This keyword is then tracked by hashtags.org.</p>

<p>This could get messy as hashtags participants are already placing the "#" in front of too many words that they deem relevant. Perhaps hashtaggers should only place their metadata at the end of the twittering so as not to interfere with the human-readable part of the message. </p>

<p>More ideas for metadata in short messages:<br />
- hashtags could encourage participants to use a set of common prefixes and then connect their community into the greater semweb.<br />
- comma-delimited tags after the "#"<br />
- generate threads of related twitterings using a "re:" and a keyword</p>

<p>Spotter: <a href="http://www.everythingismiscellaneous.com/2007/12/24/hashtags-making-sense-of-twitter/">Everything Is Miscellaneous</a> </p>]]>
        
    </content>
</entry>

<entry>
    <title>Harold&apos;s OpenSocial Exploit</title>
    <link rel="alternate" type="text/html" href="http://www.semanticwave.com/blog/archives/2007/11/harolds-opensoc.tt" />
    <id>tag:www.semanticwave.com,2007:/blog//1.293</id>

    <published>2007-11-03T15:50:39Z</published>
    <updated>2007-11-03T16:45:48Z</updated>

    <summary>Harold the Rebel has demonstrated how an OpenSocial gadget can run rampant in its container. Because Ning is executing his gadget&apos;s code in an iframe that they served up, his widget is able to access window.top.document. As Ning is serving his gadget via proxy, Harold could have initially submitted an innocent version of the widget and then changed it later on. Ning obviously will start to parse incoming gadgets for malicious code as will every social software service using OpenSocial. Unfortunately, the gadgets XML format does not use namespaces identified by URIs, much less a widely recognized way to refer to the document author and other essential metadata. As a gadget is essentially a working html document, it should follow all of the conventions of one. These oversights essentially leave OpenSocial gadgets &quot;disconnected&quot; from the emerging data web, increasing the difficulty of forming of a reliable and open web of trust around them....</summary>
    <author>
        <name>Jamie Pitts</name>
        <uri>http://www.semanticwave.com/</uri>
    </author>
    
        <category term="Social Software" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="exploit" label="exploit" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="opensocial" label="opensocial" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="socialsoftware" label="socialsoftware" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.semanticwave.com/blog/">
        <![CDATA[<p>Harold the Rebel has <a href="http://www.haroldtherebel.com/2007/11/03/peer-prescience/">demonstrated</a> how an OpenSocial gadget can <a href="http://berlinetta1492.ning.com/profile/WittgensteinRe">run rampant</a> in its container. Because Ning is executing his gadget's code in an iframe that they served up, his widget is able to access window.top.document. As Ning is serving his gadget via proxy, Harold could have initially submitted an innocent version of the widget and then changed it later on.</p>

<p>Ning obviously will start to parse incoming gadgets for malicious code as will every social software service using <a href="http://code.google.com/apis/opensocial/">OpenSocial</a>.</p>

<p>Unfortunately, the <a href="http://code.google.com/apis/gadgets/docs/reference.html#XML_Ref">gadgets XML format</a> does not use namespaces identified by URIs, much less a widely recognized way to refer to the document author and other essential metadata. As a gadget is essentially a working html document, it should follow all of the conventions of one. These oversights essentially leave OpenSocial gadgets "disconnected" from the emerging data web, increasing the difficulty of forming of a reliable and open web of trust around them.</p>]]>
        
    </content>
</entry>

<entry>
    <title>Getting a Handle on OpenSocial Gadgets</title>
    <link rel="alternate" type="text/html" href="http://www.semanticwave.com/blog/archives/2007/11/getting-a-handl.tt" />
    <id>tag:www.semanticwave.com,2007:/blog//1.292</id>

    <published>2007-11-03T00:39:52Z</published>
    <updated>2007-11-03T08:39:18Z</updated>

    <summary><![CDATA[Kudos to Danny for exposing and then mitigating the ugliness of OpenSocial's PersonKind! In spite of all the positive feelings I have about the intentions of OpenSocial, I think that I'll take aim at its shortcomings as well. My goal is to start building a way to be able to embed an app into some of these early-adopter communities. Looking over the Javascript API's Developer's Guide it appears as if I am required to use the Google Gadget API to be able to embed. I hope that this is not the only way to do it, because the gadgets are not very pretty. This gadgets XML format that is about to be very, very widely used to embed web apps is seriously begging for an organized standardization effort. It looks like something that I half-put together in 1999. For starters, no XSD or XML namespaces are to be found. The xml description and the examples listed throughout the gadgets documentation do not even encourage developers to indicate what sort of XML a passerby is looking at, much less what version of the gadget format it represents. Should a developer (much less an automated process) come across a gadget in the wild, he would have work a while to figure out what the document is and what its elements are used for. I can momentarily find it in my heart to sympathize with a developer who would choose to skip the XSD creation for something used in a very isolated capacity. But it is absolutely a requirement for a format that is going to be used... just about everywhere! The lack of clarity in the gadget XML format is not worth the bits conserved or the apparent simplicity for less-experienced developers. &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?&gt; &lt;Module&gt; &lt;ModulePrefs title=&quot;List Friends Example&quot;&gt; &lt;Require feature=&quot;opensocial-0.5&quot;/&gt; &lt;/ModulePrefs&gt; &lt;Content type=&quot;html&quot;&gt; &lt;![CDATA[ &lt;script type=&quot;text/javascript&quot;&gt; /*Request for friend information when the page loads.*/ function getData() { document.getElementById('message').innerHTML = 'Requesting friends...'; var req = opensocial.newDataRequest(); req.add(req.newFetchPersonRequest('VIEWER'), 'viewer'); req.add(req.newFetchPeopleRequest ('VIEWER_FRIENDS'), 'viewerFriends'); req.send(onLoadFriends); }; /* Parses the response and generates html to list the friends */ function onLoadFriends(dataResponse) { var viewer = dataResponse.get('viewer').getData(); var html = 'Friends of ' + viewer.getDisplayName(); html += ':&lt;br&gt;&lt;ul&gt;'; var viewerFriends = dataResponse.get('viewerFriends').getData(); viewerFriends.each(function(person) { html += '&lt;li&gt;' + person.getDisplayName() + '&lt;/li&gt;'; }); html += '&lt;/ul&gt;'; document.getElementById('message').innerHTML = html; }; _IG_RegisterOnloadHandler(getData); &lt;/script&gt; &lt;div id=&quot;message&quot;&gt; &lt;/div&gt; ]]&gt; &lt;/Content&gt; &lt;/Module&gt; Source: OpenSocial: List Friends Example The ModulePrefs, aside from preferences and "Require" dependencies, is used to store metadata for a gadget, including title, author, author_email, and so on (see the XML below). This is beyond silly and gives OpenSocial implementers many reasons to say: we can do better. One big picture question that is begging to be asked is whether it is realistic or not to expect MySpace, SixApart, and the dozens of other competing communities to fully implement all of the functionality that appears in this API? This is quite a lot of cooperation to expect from everyone involved and I suspect that the various gadget container implementations will begin to remind us of the brower wars of the late 1990s. Except that this time there isn't an objective party like the W3C in the center of the field. Not yet, anyhow. Back to creating my OpenSocial UI, the simplest way to display something using one of these gadgets is to supply a url which the javacript of the container app will use to load the external content. This is how the DogstarRadio embed works: &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?&gt; &lt;Module&gt; &lt;ModulePrefs title=&quot;Now Playing on SIRIUS&quot; height=&quot;60&quot; width=&quot;250&quot; description=&quot;Displays what is currently playing on Sirius Satellite Radio using data from DogstarRadio.com&quot; author=&quot;DogstarRadio.com&quot; author_email=&quot;schedule@dogstarradio.com&quot; title_url=&quot;http://www.DogstarRadio.com&quot; screenshot=&quot;http://www.DogstarRadio.com/images/now_playing_gadget_screenshot.png&quot; thumbnail=&quot;http://www.DogstarRadio.com/images/now_playing_gadget_thumbnail.png&quot; &gt; &lt;Require feature=&quot;opensocial-0.5&quot;/&gt; &lt;/ModulePrefs&gt; &lt;Content type=&quot;url&quot; href=&quot;http://www.dogstarradio.com/sirius_display.php?size=gadget&quot;&gt; &lt;/Content&gt; &lt;/Module&gt; Source: Ning's OpenSocial Gadgets Directory Appropriately, there is a size=iphone for this URL. Seeing this, I wonder what the HTTP_USER_AGENT for the XHR client would look like to my embeddable app. I suppose that I could just create a separate controller for all embeddable functionality and then send an initial call to my hosted app containing metadata about the OpenSocial container and embedding member. To accomplish this I can use the Remote Content APIs, a means to supply the embedding app and its OpenSocial hooks with data returned from the external app. This is one of the most interesting parts of the system. Of course it might also be the most dangerous. While these methods will encourage more javascript code and UI to be placed into the horrid Module XML, I expect them to be a boon to developers stumped by browser cross-domain security restictions....]]></summary>
    <author>
        <name>Jamie Pitts</name>
        <uri>http://www.semanticwave.com/</uri>
    </author>
    
        <category term="Social Software" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="apis" label="apis" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="javascript" label="javascript" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="opensocial" label="opensocial" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.semanticwave.com/blog/">
        <![CDATA[<p>Kudos to Danny for <a href="http://dannyayers.com/2007/11/02/open-social">exposing</a> and then <a href="http://dannyayers.com/2007/11/03/when-in-rome">mitigating</a> the ugliness of OpenSocial's <a href="http://code.google.com/apis/opensocial/docs/gdata/people/reference.html#Elements">PersonKind</a>! </p>

<p>In spite of all the positive feelings I have about the intentions of <a href="http://code.google.com/apis/opensocial/">OpenSocial</a>, I think that I'll take aim at its shortcomings as well.</p>

<p>My goal is to start building a way to be able to embed an app into some of these early-adopter communities. Looking over the Javascript API's <a href="http://code.google.com/apis/opensocial/docs/javascript/index.html">Developer's Guide</a> it appears as if I am required to use the <a href="http://code.google.com/apis/gadgets/">Google Gadget API</a> to be able to embed. </p>

<p>I hope that this is not the only way to do it, because the gadgets are not very pretty. This <a href="http://code.google.com/apis/gadgets/docs/reference.html#XML_Ref">gadgets XML format</a> that is about to be very, very widely used to embed web apps is seriously begging for an organized standardization effort. It looks like something that I half-put together in 1999. For starters, no XSD or XML namespaces are to be found. The xml description and the examples listed throughout the <a href="http://code.google.com/apis/gadgets/docs/reference.html">gadgets documentation</a> do not even encourage developers to indicate what sort of XML a passerby is looking at, much less what version of the gadget format it represents. Should a developer (much less an automated process) come across a gadget in the wild, he would have work a while to figure out what the document is and what its elements are used for.</p>

<p>I can momentarily find it in my heart to sympathize with a developer who would choose to skip the XSD creation for something used in a very isolated capacity.  But it is absolutely a requirement for a format that is going to be used... just about everywhere! The lack of clarity in the gadget XML format is not worth the bits conserved or the apparent simplicity for less-experienced developers.</p>

<blockquote><pre>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?&gt;
&lt;Module&gt;
 &lt;ModulePrefs title=&quot;List Friends Example&quot;&gt;
   &lt;Require feature=&quot;opensocial-0.5&quot;/&gt;
 &lt;/ModulePrefs&gt;
 &lt;Content type=&quot;html&quot;&gt;

<p> &lt;![CDATA[</p>

<p> &lt;script type=&quot;text/javascript&quot;&gt;</p>

<p> /*Request for friend information when the page loads.*/<br />
  function getData() {<br />
    document.getElementById('message').innerHTML = 'Requesting friends...';<br />
    var req = opensocial.newDataRequest();<br />
    req.add(req.newFetchPersonRequest('VIEWER'), 'viewer');<br />
    req.add(req.newFetchPeopleRequest ('VIEWER_FRIENDS'), 'viewerFriends');<br />
    req.send(onLoadFriends);<br />
  };</p>

<p> /* Parses the response and generates html to list the friends */<br />
  function onLoadFriends(dataResponse) {<br />
    var viewer = dataResponse.get('viewer').getData();<br />
    var html = 'Friends of ' + viewer.getDisplayName(); <br />
    html += ':&lt;br&gt;&lt;ul&gt;';<br />
    var viewerFriends = dataResponse.get('viewerFriends').getData();<br />
    viewerFriends.each(function(person) {<br />
      html += '&lt;li&gt;' + person.getDisplayName() + '&lt;/li&gt;';<br />
    });<br />
    html += '&lt;/ul&gt;';<br />
    document.getElementById('message').innerHTML = html;<br />
  };<br />
  _IG_RegisterOnloadHandler(getData);</p>

<p>  &lt;/script&gt;<br />
  &lt;div id=&quot;message&quot;&gt; &lt;/div&gt;<br />
  ]]&gt;<br />
  &lt;/Content&gt;<br />
&lt;/Module&gt;</pre></p>

<p>Source: <a href="http://code.google.com/apis/opensocial/docs/javascript/index.html#ListFriends_Intro">OpenSocial: List Friends Example</a></blockquote></p>

<p>The ModulePrefs, aside from preferences and "Require" dependencies, is used to store metadata for a gadget, including title, author, author_email, and so on (see the XML below). This is beyond silly and gives OpenSocial implementers many reasons to say: we can do better.</p>

<p>One big picture question that is begging to be asked is whether it is realistic or not to expect MySpace, SixApart, and the dozens of other competing communities to fully implement all of the functionality that appears in this <a href="http://code.google.com/apis/gadgets/">API</a>? This is quite a lot of cooperation to expect from everyone involved and I suspect that the various gadget container implementations will begin to remind us of the brower wars of the late 1990s. </p>

<p>Except that this time there isn't an objective party like the W3C in the center of the field. Not yet, anyhow. </p>

<p>Back to creating my OpenSocial UI, the simplest way to display something using one of these gadgets is to supply a url which the javacript of the container app will use to load the external content. This is how the  <a href="http://www.dogstarradio.com/now_playing_opensocial.xml">DogstarRadio embed</a> works:</p>

<blockquote><pre>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?&gt; 
&lt;Module&gt;
  &lt;ModulePrefs 
    title=&quot;Now Playing on SIRIUS&quot;
    height=&quot;60&quot;
    width=&quot;250&quot;
    description=&quot;Displays what is currently playing on Sirius Satellite Radio using data from DogstarRadio.com&quot;
    author=&quot;DogstarRadio.com&quot;
    author_email=&quot;schedule@dogstarradio.com&quot;
    title_url=&quot;http://www.DogstarRadio.com&quot;
    screenshot=&quot;http://www.DogstarRadio.com/images/now_playing_gadget_screenshot.png&quot;
    thumbnail=&quot;http://www.DogstarRadio.com/images/now_playing_gadget_thumbnail.png&quot;
    &gt;
    &lt;Require feature=&quot;opensocial-0.5&quot;/&gt;
  &lt;/ModulePrefs&gt;
  <b>&lt;Content type=&quot;url&quot; href=&quot;http://www.dogstarradio.com/sirius_display.php?size=gadget&quot;&gt;
  &lt;/Content&gt;</b>
&lt;/Module&gt;</pre> 

<p>Source: <a href="http://opensocial.ning.com/">Ning's OpenSocial Gadgets Directory</a></blockquote></p>

<p>Appropriately, there is a <a href="http://www.dogstarradio.com/sirius_display.php?size=iphone">size=iphone</a> for this URL. Seeing this, I wonder what the HTTP_USER_AGENT for the XHR client would look like to my embeddable app. I suppose that I could just create a separate controller for all embeddable functionality and then send an initial call to my hosted app containing metadata about the OpenSocial container and embedding member.</p>

<p>To accomplish this I can use the <a href="http://code.google.com/apis/gadgets/docs/remote-content.html">Remote Content APIs</a>, a means to supply the embedding app and its OpenSocial hooks with data returned from the external app. This is one of the most interesting parts of the system. Of course it might also be the most dangerous. </p>

<p>While these methods will encourage more javascript code and UI to be placed into the horrid Module XML, I expect them to be a boon to developers stumped by browser cross-domain security restictions. </p>]]>
        
    </content>
</entry>

<entry>
    <title>The Future of Software Development</title>
    <link rel="alternate" type="text/html" href="http://www.semanticwave.com/blog/archives/2007/10/the-future-of-s.tt" />
    <id>tag:www.semanticwave.com,2007:/blog//1.287</id>

    <published>2007-10-17T00:17:41Z</published>
    <updated>2007-10-17T01:51:53Z</updated>

    <summary>While this article is insightful and very well-presented, the title and the premise are begging for a cheesy echo effect. I cannot wave this agile software development flag with much enthusiasm. All I see in agile development is a clutter of terminology describing well-worn improvements to the waterfall approach. These would include: decreasing the amount of functionality in the end product, increasing communications among the players, and reducing drag through better tools and processes. The only thing missing from agile is an admission that it is simply a faster waterfall. Why affix a new name to something as elementary as &quot;faster&quot;? Is it meant to clear out mental cruft? Is it the fact that the software development community suffers from a constant case of newism? Whatever the reason, I think that it is &quot;inter-perception&quot; that is doing most of the changing in our community. During the grand ball of trend-calling and over-investing, the real pace of invention may have only advanced incrementally, perhaps only getting us half-way to the next true leap: a microprocessor, a home computer, a desktop, a web... a cloud. The true leaps are what this game is all about. In the charged atmosphere of a perceived revolution, people take more risks, do more work, and, importantly, enthusiastically drink each other&apos;s yummy, grape-flavored drinks. How else can you get all of this cooperative and creative effort that literally builds out the stage to support a really heavy technological shift? So while I may make fun of the the artificial colors and flavors of things like &quot;social&quot;, &quot;agile&quot;, &quot;2.0&quot;, &quot;push&quot;, they are essential to the real game at play. And tasty, too....</summary>
    <author>
        <name>Jamie Pitts</name>
        <uri>http://www.semanticwave.com/</uri>
    </author>
    
        <category term="Development" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="agile" label="agile" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="softwaredevelopment" label="software development" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="trends" label="trends" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="web20" label="web 2.0" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.semanticwave.com/blog/">
        <![CDATA[<p>While <a href="http://www.readwriteweb.com/archives/the_future_of_software_development.php">this article</a> is insightful and very well-presented, the title and the premise are begging for a cheesy echo effect. </p>

<p>I cannot wave this agile software development flag with much enthusiasm. All I see in agile development is a clutter of terminology describing well-worn improvements to the waterfall approach. These would include: decreasing the amount of functionality in the end product, increasing communications among the players, and reducing drag through better tools and processes. The only thing missing from agile is an admission that it is simply a faster waterfall.</p>

<p>Why affix a new name to something as elementary as "faster"? Is it meant to clear out mental cruft? Is it the fact that the software development community suffers from a constant case of newism?</p>

<p>Whatever the reason, I think that it is "inter-perception" that is doing most of the changing in our community. During the grand ball of trend-calling and over-investing, the real pace of invention may have only advanced incrementally, perhaps only getting us half-way to the next true leap: a microprocessor, a home computer, a desktop, a web... a cloud. </p>

<p>The true leaps are what this game is all about. In the charged atmosphere of a perceived revolution, people take more risks, do more work, and, importantly, enthusiastically drink each other's yummy, grape-flavored drinks. How else can you get all of this cooperative and creative effort that literally builds out the stage to support a really heavy technological shift? </p>

<p>So while I may make fun of the the artificial colors and flavors of things like "social", "agile", "2.0", "push", they are essential to the real game at play. And tasty, too.</p>]]>
        
    </content>
</entry>

</feed>

