<?xml version="1.0" encoding="UTF-8"?>
<feed xml:lang="en-US" xmlns="http://www.w3.org/2005/Atom">
  <title>Semantosoph - Home</title>
  <id>tag:semantosoph.net,2010:mephisto/</id>
  <generator uri="http://mephistoblog.com" version="0.8.0">Mephisto Drax</generator>
  <link href="http://semantosoph.net/feed/atom.xml" rel="self" type="application/atom+xml"/>
  <link href="http://semantosoph.net/" rel="alternate" type="text/html"/>
  <updated>2010-02-20T15:55:42Z</updated>
  <entry xml:base="http://semantosoph.net/">
    <author>
      <name>semantosoph</name>
    </author>
    <id>tag:semantosoph.net,2010-02-20:598</id>
    <published>2010-02-20T15:54:00Z</published>
    <updated>2010-02-20T15:55:42Z</updated>
    <category term="Code"/>
    <category term="github"/>
    <category term="mephisto"/>
    <category term="plugin"/>
    <category term="rails"/>
    <category term="ruby"/>
    <link href="http://semantosoph.net/2010/2/20/display-google-calendars-on-your-mephisto-blog" rel="alternate" type="text/html"/>
    <title>Display Google Calendars on your Mephisto Blog</title>
<content type="html">
            &lt;p&gt;This plugin provides a liquid filter for the &lt;a href=&quot;http://mephistoblog.com/&quot;&gt;mephisto blog engine&lt;/a&gt; for inclusion of &lt;a href=&quot;https://www.google.com/calendar&quot;&gt;calendars&lt;/a&gt; hosted by Google.&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;Installation&lt;/strong&gt;&lt;/p&gt;


	&lt;p&gt;Installation takes three simple steps.&lt;/p&gt;


	&lt;ol&gt;
	&lt;li&gt;Run &#8216;gem install runt&#8217;&lt;/li&gt;
		&lt;li&gt;&lt;a href=&quot;http://github.com/semantosoph/mephisto_google_calendar_plugin&quot;&gt;Download the Plugin from Github&lt;/a&gt; and put it into your vendor/plugins folder.&lt;/li&gt;
		&lt;li&gt;Restart your server.&lt;/li&gt;
	&lt;/ol&gt;


	&lt;p&gt;&lt;strong&gt;Usage&lt;/strong&gt;&lt;/p&gt;


	&lt;p&gt;This plugin offers you a liquid filter. You may call this filter from every liquid template. Provide the liquid filter call with the private url of your calendars ical file. The number at the end specifies the number of items you may get. Example:&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;{{ 'https://www.google.com/calendar/ical/your.user.name/private-xxxxxxxxxxxxxxxxxxxxxxxxxxxxx/basic.ics' | gcal_shortlist, 7 }}&lt;/code&gt;&lt;/pre&gt;
          </content>  </entry>
  <entry xml:base="http://semantosoph.net/">
    <author>
      <name>semantosoph</name>
    </author>
    <id>tag:semantosoph.net,2010-02-15:594</id>
    <published>2010-02-15T12:43:00Z</published>
    <updated>2010-02-15T12:43:38Z</updated>
    <category term="augmented reality"/>
    <category term="bing"/>
    <category term="search engine"/>
    <link href="http://semantosoph.net/2010/2/15/augmented-bing-maps" rel="alternate" type="text/html"/>
    <title>Augmented Bing Maps</title>
<content type="html">
            &lt;p&gt;The video of Microsoft&#8217;s Bing Maps augmented reality demo at the &lt;span class=&quot;caps&quot;&gt;TED&lt;/span&gt; conference last week shows how they integrate Flickr imagery, indoor panoramas, Worldwide Telescope and even live videos to allow a really impressive time travel for certain places.&lt;/p&gt;


&lt;div&gt;
 &lt;/div&gt;

	&lt;p&gt;&#8220;We see this space, three-dimensional environment as being a canvas on which all sorts of applications can play out,&#8221; said Bing Maps&#8217; Blaise Aguera y Arcas.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://semantosoph.net/">
    <author>
      <name>semantosoph</name>
    </author>
    <id>tag:semantosoph.net,2010-01-28:585</id>
    <published>2010-01-28T20:18:00Z</published>
    <updated>2010-02-01T09:52:22Z</updated>
    <category term="Code"/>
    <category term="github"/>
    <category term="mephisto"/>
    <category term="plugin"/>
    <category term="rails"/>
    <category term="ruby"/>
    <link href="http://semantosoph.net/2010/1/28/a-userlogin-plugin-for-mephisto-8-2" rel="alternate" type="text/html"/>
    <title>A userlogin plugin for mephisto 0.8.2</title>
<content type="html">
            &lt;p&gt;&lt;a href=&quot;http://github.com/semantosoph/mephisto_userlogin_plugin&quot;&gt;This little plugin&lt;/a&gt; provides you with a protected area for your users on your &lt;a href=&quot;http://mephistoblog.com/&quot;&gt;mephisto blog&lt;/a&gt;. Its built to use engines 
compatible mephisto available in the mephisto version 8.2.&lt;/p&gt;


	&lt;p&gt;To install this plugin, run:&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;script/generate plugin_migration
rake db:migrate RAILS_ENV=production&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;This will make some changes to your production database and will expose a new Userlogin tab to your Mephisto administration interface. From there you can create new userlogins. When creating new userlogins provide a username and a password (Attention! This is designed for ease of use and easy remebering. The passwords are &lt;span class=&quot;caps&quot;&gt;NOT ENCRYPTED&lt;/span&gt;! Don&#8217;t use this for really important stuff) along with some sites you like to provide inside of the protected area.&lt;/p&gt;


	&lt;p&gt;You need to create a liquid template for every site you list as protected. So, if you list &lt;em&gt;&#8220;family_gallery&#8221;&lt;/em&gt; as a protected site, you need to create a template called &lt;em&gt;&#8220;family_gallery.liquid&#8221;&lt;/em&gt;. This page will be available at &lt;em&gt;http://yoursite.com/protected/family_galery&lt;/em&gt;. The page &lt;em&gt;http://yoursite.com/protected&lt;/em&gt; will show a login form (if not logged in) or the conten of &lt;em&gt;&#8220;protected_index.liquid&#8221;&lt;/em&gt; (otherwise).&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://semantosoph.net/">
    <author>
      <name>semantosoph</name>
    </author>
    <id>tag:semantosoph.net,2009-11-19:584</id>
    <published>2009-11-19T16:29:00Z</published>
    <updated>2009-11-19T16:31:17Z</updated>
    <category term="Code"/>
    <category term="madness"/>
    <category term="ruby"/>
    <link href="http://semantosoph.net/2009/11/19/ambiguity-madness" rel="alternate" type="text/html"/>
    <title>Ambiguity madness</title>
<content type="html">
            &lt;p&gt;Coding in hastiness combined with a limited vocabulary late at night will certainly result in comprehension difficulties at the very next morning:&lt;/p&gt;


&lt;pre&gt;&lt;code class=&quot;ruby&quot;&gt;&amp;lt;%= &quot;#{t(&quot;role.role&quot;)}&quot; %&gt;: &amp;lt;%= &quot;#{t(&quot;role.&quot;+role.role)}&quot; %&gt;&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Kids, don&#8217;t try this at home.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://semantosoph.net/">
    <author>
      <name>semantosoph</name>
    </author>
    <id>tag:semantosoph.net,2009-11-05:575</id>
    <published>2009-11-05T11:36:00Z</published>
    <updated>2009-11-05T11:37:20Z</updated>
    <category term="Semantics"/>
    <category term="linked data"/>
    <category term="owl"/>
    <category term="rdf"/>
    <category term="semantic web"/>
    <link href="http://semantosoph.net/2009/11/5/inference-on-the-semantic-web" rel="alternate" type="text/html"/>
    <title>Inference on the Semantic Web</title>
<content type="html">
            &lt;p&gt;This is a very informative slideshare on inference and the power of the &lt;a href=&quot;http://en.wikipedia.org/wiki/Semantic_Web&quot;&gt;Semantic Web&lt;/a&gt;. To emphasize the potential of the Semantic Web, &lt;a href=&quot;http://intelligentweb.tistory.com/&quot;&gt;Myungjin Lee&lt;/a&gt; used &lt;span class=&quot;caps&quot;&gt;RDF&lt;/span&gt; and &lt;span class=&quot;caps&quot;&gt;OWL&lt;/span&gt; constructs to represent the statements of his slides. Very impressive, though.&lt;/p&gt;


&lt;div&gt;&lt;a href=&quot;http://www.slideshare.net/onlyjiny/inference-on-the-semantic-web&quot; title=&quot;Inference on the Semantic Web&quot;&gt;Inference on the Semantic Web&lt;/a&gt;&lt;div&gt;View more &lt;a href=&quot;http://www.slideshare.net/&quot;&gt;presentations&lt;/a&gt; from &lt;a href=&quot;http://www.slideshare.net/onlyjiny&quot;&gt;Myungjin Lee&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;
          </content>  </entry>
  <entry xml:base="http://semantosoph.net/">
    <author>
      <name>semantosoph</name>
    </author>
    <id>tag:semantosoph.net,2009-11-03:573</id>
    <published>2009-11-03T23:01:00Z</published>
    <updated>2009-11-03T22:54:42Z</updated>
    <category term="Code"/>
    <category term="how-to"/>
    <category term="mephisto"/>
    <link href="http://semantosoph.net/2009/11/3/sections-and-pagination-in-mephisto-0-8-2" rel="alternate" type="text/html"/>
    <title>Sections and Pagination in Mephisto 0.8.2</title>
<content type="html">
            &lt;p&gt;It is wildly known and even somewhat accepted, that the pagination mechanism of Mephisto 0.8.2 is very buggy and non-functional. However, paging blog posts is a feature that kills a blog engine if it does not work. Fortunately, James of &lt;a href=&quot;http://railstalk.com&quot;&gt;Rails Talk&lt;/a&gt; wrote a &lt;a href=&quot;http://railstalk.com/2009/8/12/setting-up-mephisto-articles-pagination&quot;&gt;nice tutorial&lt;/a&gt; for bringing up paging again. His description is easy done and works well, as long as you have only one section, the mandatory &lt;em&gt;Home&lt;/em&gt; section.&lt;/p&gt;


	&lt;p&gt;However, blogs with multiple sections (like this one) faced a strange problem with doubled section names in URLs. A workaround with separate &lt;span class=&quot;caps&quot;&gt;URL&lt;/span&gt; helpers for each section &lt;a href=&quot;http://gist.github.com/177100&quot;&gt;exists&lt;/a&gt;, but is utterly unhandy. After some investigation it turns out, that a small change to the original tutorial solves the whole section difficulty. The original instruction was to add the following to &lt;em&gt;mephisto_paged_article_list/lib/paged_article_list/link_helpers.rb&lt;/em&gt;:&lt;/p&gt;


&lt;pre&gt;&lt;code class=&quot;ruby&quot;&gt;def path_for( path_info, page_number )
  return path_info[:path] + &quot;/page/&quot; + page_number.to_s
end&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Now, when using this with multiple sections, &lt;em&gt;path_info[:path]&lt;/em&gt; contains the name of the current section (or nothing, if the section is &lt;em&gt;Home&lt;/em&gt;). Moreover, the produced path is a relative path, so that the returned string will be appended to the base &lt;span class=&quot;caps&quot;&gt;URL&lt;/span&gt; that already contains the section name as the last part. This is where the doubled section names come from. To remove this behaviour, we need to change the code a little bit:&lt;/p&gt;


&lt;pre&gt;&lt;code class=&quot;ruby&quot;&gt;def path_for( path_info, page_number )
  path = path_info[:path] + '/page/' + page_number.to_s
  path_info[:path].blank? ? path : '/' + path
end&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;With this code, we assemble the path the same way, but precede it with a &#8217;/&#8217; whenever the section name is not empty. This gives us a non-relative &lt;span class=&quot;caps&quot;&gt;URL&lt;/span&gt; without the doubled section name and thus correct pagination URLs for all sections.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://semantosoph.net/">
    <author>
      <name>semantosoph</name>
    </author>
    <id>tag:semantosoph.net,2009-11-03:568</id>
    <published>2009-11-03T21:16:00Z</published>
    <updated>2009-11-03T22:45:38Z</updated>
    <category term="Semantics"/>
    <category term="html5"/>
    <category term="semantic web"/>
    <link href="http://semantosoph.net/2009/11/3/html5-and-semantics" rel="alternate" type="text/html"/>
    <title>HTML5 and Semantics</title>
<content type="html">
            &lt;p&gt;If you ever did a web project that featured dated entries, like articles in a blog, you may have typed something like&lt;/p&gt;


&lt;pre&gt;&lt;code class=&quot;html&quot;&gt;&lt;div&gt;
  &lt;ul&gt;
    &lt;li&gt;Home&lt;/li&gt;
    &lt;li&gt;Link 1&lt;/li&gt;
    &lt;li&gt;Link 2&lt;/li&gt;
    &lt;li&gt;Link 3&lt;/li&gt;
  &lt;/ul&gt;
&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;and&lt;/p&gt;


&lt;pre&gt;&lt;code class=&quot;html&quot;&gt;&lt;span class=&quot;publication-date&quot;&gt;2009-11-03&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Now, this is higly understandable for any developer and for most of your users, but not for crawlers and the like. As this is the central issue in the field of the semantic web, there are already some solutions that address this problem. You could, for example, enhance your code with semantic markup like &lt;a href=&quot;http://semantosoph.net/2009/5/15/google-accepts-rdfa-and-microformat&quot;&gt;RDFa or microformats&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;But then, that may be overkill. Why not just use the possibilities that come with the shiny new &lt;a href=&quot;http://dev.w3.org/html5/html-author/&quot;&gt;&lt;span class=&quot;caps&quot;&gt;HTML5&lt;/span&gt;&lt;/a&gt;? Most of the modern browsers &lt;a href=&quot;http://diveintohtml5.org/detect.html&quot;&gt;already support&lt;/a&gt; at least some of the new features. Features, in this case, are new &lt;a href=&quot;http://www.ibm.com/developerworks/library/x-html5/?ca=dgr-lnxw01NewHTML&quot;&gt;text-level semantic tags&lt;/a&gt; that allow a lightweight semantic annotation of content. With the use of these new tags, our first example would read:&lt;/p&gt;


&lt;pre&gt;&lt;code class=&quot;html&quot;&gt;
  &lt;ul&gt;
    &lt;li&gt;Home&lt;/li&gt;
    &lt;li&gt;Link 1&lt;/li&gt;
    &lt;li&gt;Link 2&lt;/li&gt;
    &lt;li&gt;Link 3&lt;/li&gt;
  &lt;/ul&gt;
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;This enables screen readers, mostly used by people with limited sight, to jump directly to the sites menu and allow a quick navigation. Even more fun comes with the second example:&lt;/p&gt;


&lt;pre&gt;&lt;code class=&quot;html&quot;&gt;2009-11-03&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;This promotes the human readable string to a full machine readable timestamp that tells every crawler/browser/whatever the publication date of the embracing document.&lt;/p&gt;


	&lt;p&gt;If you want to learn more about these two and all the other cool new tags, please have a look at &lt;a href=&quot;http://diveintohtml5.org/&quot;&gt;Dive into &lt;span class=&quot;caps&quot;&gt;HTML5&lt;/span&gt;&lt;/a&gt;, a clearly structured and neatly designed publication by the great &lt;a href=&quot;http://diveintomark.org&quot;&gt;Mark Pilgrim&lt;/a&gt;.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://semantosoph.net/">
    <author>
      <name>semantosoph</name>
    </author>
    <id>tag:semantosoph.net,2009-11-02:189</id>
    <published>2009-11-02T13:41:00Z</published>
    <updated>2009-11-02T13:43:56Z</updated>
    <category term="Semantics"/>
    <category term="gtm"/>
    <category term="ontology"/>
    <category term="semantic web"/>
    <category term="topic maps"/>
    <link href="http://semantosoph.net/2009/11/2/martian-notation-for-topic-maps" rel="alternate" type="text/html"/>
    <title>Martian Notation for Topic Maps</title>
<content type="html">
            &lt;p&gt;Many people tend to understand structures much better when they are properly visualized. So it comes to no surprise that there were some proposals for a Graphical Topic Map notation (&lt;a href=&quot;http://www.topicmapslab.de/glossary/GTM&quot;&gt;&lt;span class=&quot;caps&quot;&gt;GTM&lt;/span&gt;&lt;/a&gt;) made in the past. The guys from &lt;a href=&quot;http://musicdna.info&quot;&gt;musicDNA&lt;/a&gt; recently stepped into the spotlight with their &lt;a href=&quot;http://www.topicmapslab.de/publications/topic_map_martin_notation&quot;&gt;latest publication&lt;/a&gt; that illustrates Topic Maps by using a Martian as example. Unsurprisingly, they call it &lt;a href=&quot;http://cd.tp/TMMN/&quot;&gt;Topic Map Martian Notation&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://semantosoph.net/">
    <author>
      <name>semantosoph</name>
    </author>
    <id>tag:semantosoph.net,2009-11-01:100</id>
    <published>2009-11-01T11:42:00Z</published>
    <updated>2009-11-02T13:44:57Z</updated>
    <category term="Semantics"/>
    <category term="tmra"/>
    <category term="topic maps lab"/>
    <link href="http://semantosoph.net/2009/11/1/topic-maps-lab-moves" rel="alternate" type="text/html"/>
    <title>Topic Maps Lab moves</title>
<content type="html">
            &lt;p&gt;In the past days, the Topic Maps Lab has moved in different ways. First of all, we had to leave our own 9th floor offices in downtown and moved to the ground floor of the computer science department building. The new offices have a sgnificant lack of look-out but give us much shorter paths to the rest of the department. Fotos will follow, but don&#8217;t expect something spectacular.&lt;/p&gt;


	&lt;p&gt;Aside from moving geographically, we constantly move forward to &lt;span class=&quot;caps&quot;&gt;TMRA 2009&lt;/span&gt;. With only ten days to go, the conference organization and proceedings are moving towards completion. I, for my part, finished the proceedings on last thursday and will rouse the print office on tuesday, so you all will have a freshly printed proceedings book in your conference package.&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;NB:&lt;/strong&gt; If you are coming to &lt;span class=&quot;caps&quot;&gt;TMRA 2009&lt;/span&gt; and are in need of getting something to eat (beyond the great conference catering), I strongly recommend a visit at the newly opened &lt;a href=&quot;http://www.vapiano.com&quot;&gt;Vapiano Restaurant&lt;/a&gt; in &lt;a href=&quot;http://www.vapiano.de/locations/index.php?lang=us&amp;amp;sub=del1&quot;&gt;downtown Leipzig&lt;/a&gt;. They serve great italian food, freshly made before your eyes with fair prizes.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://semantosoph.net/">
    <author>
      <name>semantosoph</name>
    </author>
    <id>tag:semantosoph.net,2009-09-29:38</id>
    <published>2009-09-29T08:40:00Z</published>
    <updated>2009-11-01T22:09:59Z</updated>
    <category term="Circumstance"/>
    <category term="cat content"/>
    <link href="http://semantosoph.net/2009/9/29/simon-s-cat-hot-spot" rel="alternate" type="text/html"/>
    <title>Simon's cat: Hot Spot</title>
<content type="html">
            &lt;p&gt;A demanding cat goes to great lengths in order to warm up and become the centre of attention.&lt;/p&gt;



          </content>  </entry>
  <entry xml:base="http://semantosoph.net/">
    <author>
      <name>semantosoph</name>
    </author>
    <id>tag:semantosoph.net,2009-08-02:34</id>
    <published>2009-08-02T11:10:00Z</published>
    <updated>2009-11-03T20:25:15Z</updated>
    <category term="Circumstance"/>
    <category term="cat content"/>
    <link href="http://semantosoph.net/2009/8/2/simons-cat-the-fly-guy" rel="alternate" type="text/html"/>
    <title>Simon's Cat: The Fly Guy</title>
<content type="html">
            &lt;p&gt;The cat is back. &lt;a href=&quot;http://simonscat.com&quot;&gt;Simon Tofields&lt;/a&gt; lates masterpiece pictures a scene that every cat owner is familiar with. A playful cat and an agile fly is always good for some wrecking.&lt;/p&gt;



          </content>  </entry>
  <entry xml:base="http://semantosoph.net/">
    <author>
      <name>semantosoph</name>
    </author>
    <id>tag:semantosoph.net,2009-08-01:32</id>
    <published>2009-08-01T07:00:00Z</published>
    <updated>2009-11-01T11:05:10Z</updated>
    <category term="Code"/>
    <category term="how-to"/>
    <category term="mephisto"/>
    <category term="plugin"/>
    <category term="rails"/>
    <category term="ruby"/>
    <link href="http://semantosoph.net/2009/8/1/howto-write-your-own-plugin-for-mephisto" rel="alternate" type="text/html"/>
    <title>Howto write your own plugin for mephisto</title>
<content type="html">
            &lt;p&gt;On my crusade on gaining more insight into &lt;a href=&quot;http://mephistoblog.com&quot;&gt;mephisto&lt;/a&gt;, I felt it would be helpful to see how this plugin thingy works. I found, that writing your own mephisto plugin is not as hard as you would think. In fact, it is real easy. Start with generating the plugin skeleton.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;# ruby script/generate plugin NameOfYourPlugin&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Now, define your method inside &lt;em&gt;lib/name_of_your_plugin.rb&lt;/em&gt;.&lt;/p&gt;


&lt;pre&gt;&lt;code class=&quot;ruby&quot;&gt;module NameOfYourPlugin

  def link_to_something_strange(object_to_yield)
    url =  'http://example.com/api?'
    url += &quot;id=#{object_to_yield['some_attribute']}&quot; 
    content_tag :a, 'foobar', :href =&gt; url
  end
end&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;After that, open &lt;em&gt;init.rb&lt;/em&gt; and paste in the following:&lt;/p&gt;


&lt;pre&gt;&lt;code class=&quot;ruby&quot;&gt;require 'name_of_your_plugin'
Liquid::Template.register_filter NameOfYourPlugin&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;The first line is the standard registration you need for every rails plugin. The second line registers whatever method you defined as a global liquid filter. If you like to add another filter, just put the method inside &lt;em&gt;lib/name_of_your_plugin.rb&lt;/em&gt; and it will be automagically registered.&lt;/p&gt;


	&lt;p&gt;The last step is to include your fresh filter into the liquid template.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;{{ object_to_yield | link_to_something_strange }}&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;That&#8217;s all folks. Really. Be sure to check the &lt;a href=&quot;http://semantosoph.net/2009/7/31/a-gravatar-plugin-for-mephisto&quot;&gt;first fruit&lt;/a&gt; of this new gained insights.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://semantosoph.net/">
    <author>
      <name>semantosoph</name>
    </author>
    <id>tag:semantosoph.net,2009-07-31:33</id>
    <published>2009-07-31T07:00:00Z</published>
    <updated>2009-11-01T11:05:21Z</updated>
    <category term="Code"/>
    <category term="gravatar"/>
    <category term="mephisto"/>
    <category term="plugin"/>
    <category term="rails"/>
    <category term="ruby"/>
    <link href="http://semantosoph.net/2009/7/31/a-gravatar-plugin-for-mephisto" rel="alternate" type="text/html"/>
    <title>A gravatar plugin for mephisto</title>
<content type="html">
            &lt;p&gt;Although the mephisto blog system contains a possibility to display a gravatar for a specific comment, I decided to do my own gravatar plugin, because I wanted to display gravatars not just on comments. You can download the first version from &lt;a href=&quot;http://github.com/semantosoph/mephisto-gravatar-plugin/tree/master&quot;&gt;GitHub&lt;/a&gt;.&lt;/p&gt;


	&lt;h3&gt;Installation&lt;/h3&gt;


	&lt;p&gt;Installation is real simple. Just download it and put it into your vendor/plugins folder. After that, restart your server.&lt;/p&gt;


	&lt;h3&gt;Options&lt;/h3&gt;


	&lt;p&gt;You may configure the following options in lib/mephisto_gravatar_plugin.rb:&lt;/p&gt;


&lt;pre&gt;&lt;code class=&quot;ruby&quot;&gt;default = 'identicon'&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;The guys at gravatar.com offer you &lt;a href=&quot;http://en.gravatar.com/site/implement/url&quot;&gt;three default avatars&lt;/a&gt;, in case there is no gravatar associated with that email address. Correct values for would be &lt;em&gt;identicon&lt;/em&gt;, &lt;em&gt;monsterid&lt;/em&gt; and &lt;em&gt;wavatar&lt;/em&gt;.&lt;/p&gt;


&lt;pre&gt;&lt;code class=&quot;ruby&quot;&gt;rating = 'pg'&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;As you may know, all gravatars include a rating, done by the holder of the email. This &lt;a href=&quot;http://en.wikipedia.org/wiki/Motion_picture_rating_system#United_States&quot;&gt;rating&lt;/a&gt; may be one of the following: &lt;em&gt;g, pg, r&lt;/em&gt; or &lt;em&gt;x&lt;/em&gt;. To get only the gravatars you want, set the correct rating.&lt;/p&gt;


	&lt;h3&gt;Usage&lt;/h3&gt;


You can stuff any email into the filter, in order to get its gravatar. Sample usages:
&lt;pre&gt;&lt;code&gt;{{ article.author.email | get_gravatar }}
{{ comment.author_email | get_gravatar, 30 }}&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Note the object independence. An email address is all you need. You may deliver the desired size as an option to the filter. Leaving that out brings up the standard size of 80&#215;80px.&lt;/p&gt;


	&lt;p&gt;There is still work to do. I think about pre-caching all gravatars for the registered bloggers. But that is subject to later exploration.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://semantosoph.net/">
    <author>
      <name>semantosoph</name>
    </author>
    <id>tag:semantosoph.net,2009-07-29:26</id>
    <published>2009-07-29T18:56:00Z</published>
    <updated>2009-11-01T11:05:33Z</updated>
    <category term="Code"/>
    <category term="github"/>
    <category term="plugin"/>
    <category term="rails"/>
    <category term="weekly calendar"/>
    <link href="http://semantosoph.net/2009/7/29/a-weekly-calendar-for-rails" rel="alternate" type="text/html"/>
    <title>A weekly calendar plugin for rails</title>
<content type="html">
            &lt;p&gt;Something that bugged me with its non-existence in the past was a rails plugin that would display a weekly calendar, while being highly configurable. And by saying highly configurable, I mean it should have options for its look, its operation and, beyond that, it should accept any kind of data to display. As there was no such plugin, I did it myself. So today, I proudly present you the &lt;a href=&quot;http://github.com/semantosoph/weekly_schedule&quot;&gt;weekly_schedule plugin for rails&lt;/a&gt;.&lt;/p&gt;


	&lt;h3&gt;Installing&lt;/h3&gt;


	&lt;p&gt;This plugin is really easy to install. Just &lt;a href=&quot;http://github.com/semantosoph/weekly_schedule/tree/master&quot;&gt;download it from GitHub&lt;/a&gt; and place it into the &lt;em&gt;vendor/plugins&lt;/em&gt; directory.&lt;/p&gt;


	&lt;h3&gt;Usage&lt;/h3&gt;


The simplest possible call in your code would be
&lt;pre&gt;&lt;code class=&quot;ruby&quot;&gt;schedule()&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;which generates  a plain calendar (which can then be customized using &lt;span class=&quot;caps&quot;&gt;CSS&lt;/span&gt;) for the current week. However, this may be customized in a variety of ways&#8212;changing the default &lt;span class=&quot;caps&quot;&gt;CSS&lt;/span&gt; classes, populating the individual day entries with appointments, and so on. Generating a calendar that shows the whole christmas week 2009, starting from monday, would require the following call:&lt;/p&gt;


&lt;pre&gt;&lt;code class=&quot;ruby&quot;&gt;schedule(:day =&gt; Date.civil(2009, 12, 25), :first_day_of_week =&gt; 1)&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;A more typical use case for schedules is to show what happening today or the very next time. The following code generates a calendar that always starts with today:&lt;/p&gt;


&lt;pre&gt;&lt;code class=&quot;ruby&quot;&gt;schedule(:first_day_of_week =&gt; Date.today.cwday)&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;A more convenient variant of this is the following:&lt;/p&gt;


&lt;pre&gt;&lt;code class=&quot;ruby&quot;&gt;schedule(:first_day_of_week =&gt; Date.today.cwday - 3)&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;This calendar starts three days earlier and therefore keeps today right in the middle of the display&lt;/p&gt;


	&lt;h3&gt;Options&lt;/h3&gt;


	&lt;p&gt;As I said earlier in this post, I wanted this plugin to be as customizable as possible. So it is now packed with different options for the &lt;span class=&quot;caps&quot;&gt;CSS&lt;/span&gt; classes:&lt;/p&gt;


&lt;pre&gt;&lt;code class=&quot;ruby&quot;&gt;:table_class
:month_name_class
:day_name_class
:day_class&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;An additional &#8216;weekend&#8217; class is applied to weekend days.&lt;/p&gt;


	&lt;p&gt;The following options are available for customizing the behaviour of the calendar:&lt;/p&gt;


&lt;pre&gt;&lt;code class=&quot;ruby&quot;&gt;:day&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;This option specifies the day, whose week shall be displayed. Defaults to Date.today&lt;/p&gt;


&lt;pre&gt;&lt;code class=&quot;ruby&quot;&gt;:abbrev&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;This option specifies how the day names should be abbreviated. Use (0..2) for the first three letters, (0..0) for the first, and (0..-1) for the entire name.&lt;/p&gt;


&lt;pre&gt;&lt;code class=&quot;ruby&quot;&gt;:first_day_of_week&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;This renders a calendar starting on a specific weekday. Use 1 for Monday up to 7 for Sunday. This option applies only if :only_workdays is set to false.&lt;/p&gt;


&lt;pre&gt;&lt;code class=&quot;ruby&quot;&gt;:show_today&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Highlights today on the calendar using the &lt;span class=&quot;caps&quot;&gt;CSS&lt;/span&gt; class &#8216;today&#8217;. Defaults to true.&lt;/p&gt;


&lt;pre&gt;&lt;code class=&quot;ruby&quot;&gt;:only_workdays&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Turns off weekend display. Defaults to false. When turned on, the value of :first_day_of_week is fixed to 1 (monday). If :day is a saturday or sunday, the &lt;em&gt;following&lt;/em&gt; week is shown.&lt;/p&gt;


&lt;pre&gt;&lt;code class=&quot;ruby&quot;&gt;:show&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Now, this gives us a hint where to search for info to show and is handed over to details(). Defaults to nil (showing no info).&lt;/p&gt;


	&lt;h3&gt;A word about details()&lt;/h3&gt;


	&lt;p&gt;This function evaluates if something is given in in the :show option. The following should give you a rough idea how this may be useful. Imagine, you&#8217;ve given @this_weeks_appointments as an array via the :show option. The value in date is the currently processed day as a Date object.&lt;/p&gt;


&lt;pre&gt;&lt;code class=&quot;ruby&quot;&gt;def details(date, options)
    if options[:show]
      appointments = options[:show].select{|a| a.date == date}.sort_by{|t| t.time}
      appointments.map{|a| &quot;#{a.time} #{a.place}&quot;}
  else
    'Nothing to do today'
  end
end&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Feel free to download the plugin from &lt;a href=&quot;http://github.com/semantosoph/weekly_schedule/tree/master&quot;&gt;GitHub&lt;/a&gt;. If you have some comment or a great idea, please let me know.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://semantosoph.net/">
    <author>
      <name>semantosoph</name>
    </author>
    <id>tag:semantosoph.net,2009-07-19:25</id>
    <published>2009-07-19T12:52:00Z</published>
    <updated>2009-11-05T11:37:50Z</updated>
    <category term="Semantics"/>
    <category term="linked data"/>
    <category term="rdf"/>
    <category term="semantic web"/>
    <link href="http://semantosoph.net/2009/7/19/the-semantic-web-landscape-2009" rel="alternate" type="text/html"/>
    <title>The Semantic Web Landscape 2009</title>
<content type="html">
            &lt;p&gt;Long time no post. Learning for exams keeps me busy. But while learning, I found this neat presentation that was created by &lt;a href=&quot;http://www.thefigtrees.net/&quot;&gt;Lee Feigenbaum&lt;/a&gt; of &lt;a href=&quot;http://www.cambridgesemantics.com/&quot;&gt;Cambridge Semantics&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;These slides were originally a tutorial presented for the &lt;span class=&quot;caps&quot;&gt;SIG&lt;/span&gt; preceding the May 2009 meeting of the &lt;a href=&quot;http://www.prismforum.org/&quot;&gt;&lt;span class=&quot;caps&quot;&gt;PRISM&lt;/span&gt; Forum&lt;/a&gt;. They attempt to give a survey of the technologies, tools, and state of the world with respect to the Semantic Web as of the first half of 2009. You may note the complete absence of topic maps, which clearly says, that more topic maps evangelization is needed.&lt;/p&gt;


&lt;div&gt;&lt;a href=&quot;http://www.slideshare.net/LeeFeigenbaum/semantic-web-landscape-2009&quot; title=&quot;Semantic Web Landscape 2009&quot;&gt;Semantic Web Landscape 2009&lt;/a&gt;&lt;div&gt;View more &lt;a href=&quot;http://www.slideshare.net/&quot;&gt;presentations&lt;/a&gt; from &lt;a href=&quot;http://www.slideshare.net/LeeFeigenbaum&quot;&gt;LeeFeigenbaum&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;
          </content>  </entry>
</feed>
