<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Schadenfreude &#187; plugins</title>
	<atom:link href="http://www.ralree.com/tag/plugins/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ralree.com</link>
	<description>Malicious enjoyment derived from observing someone else's misfortune</description>
	<lastBuildDate>Sun, 28 Feb 2010 04:18:37 +0000</lastBuildDate>
	
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Tracking my workouts on cool charts</title>
		<link>http://www.ralree.com/2007/11/06/tracking-my-workouts-on-cool-charts/</link>
		<comments>http://www.ralree.com/2007/11/06/tracking-my-workouts-on-cool-charts/#comments</comments>
		<pubDate>Tue, 06 Nov 2007 05:15:00 +0000</pubDate>
		<dc:creator>Erik</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[charts]]></category>
		<category><![CDATA[exercise]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[graphs]]></category>
		<category><![CDATA[health]]></category>
		<category><![CDATA[mephisto]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[plugins]]></category>

		<guid isPermaLink="false">http://www.ralree.info/2007/11/17/tracking-my-workouts-on-cool-charts</guid>
		<description><![CDATA[
I decided today that I wanted to track my calories burned per day on a nice line graph.  I did it, and I think I will continue.  The total is automatically calculated by the PHP data source.  This was made using my Mephisto Plugin for Open Flash Charts.
]]></description>
			<content:encoded><![CDATA[<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="660" height="300" id="graph46523" align="middle"><param name="allowScriptAccess" value="always" /><param name="movie" value="/open-flash-chart.swf?width=660 &amp;height=300 &amp;data=%2Fcharts%2F2007-11-06-workouts.php" /><param name="quality" value="high" /><param name="bgcolor" value="#FFFFFF" /><embed src="/open-flash-chart.swf?width=660&amp;height=300&amp;data=%2Fcharts%2F2007-11-06-workouts.php" quality="high" bgcolor="#FFFFFF" width="660" height="300" name="open-flash-chart" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /></object></p>
<p>I decided today that I wanted to track my calories burned per day on a nice line graph.  I did it, and I think I will continue.  The total is automatically calculated by the PHP data source.  This was made using my <a href="http://ralree.info/2007/10/22/flash-chart-testing">Mephisto Plugin for Open Flash Charts</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ralree.com/2007/11/06/tracking-my-workouts-on-cool-charts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Mephisto Post Pinger List</title>
		<link>http://www.ralree.com/2007/10/06/new-mephisto-post-pinger-list/</link>
		<comments>http://www.ralree.com/2007/10/06/new-mephisto-post-pinger-list/#comments</comments>
		<pubDate>Sat, 06 Oct 2007 17:06:00 +0000</pubDate>
		<dc:creator>Erik</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[mephisto]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://www.ralree.info/2007/10/13/new-mephisto-post-pinger-list</guid>
		<description><![CDATA[Today I found a nice ping list for Wordpress.  I decided to put it into my copy of the Mephisto Post Pinger plugin.  I&#8217;m not sure if it works yet, but this post will give it a good test. 
            
Today I [...]]]></description>
			<content:encoded><![CDATA[<p>Today I found a nice <a href="http://www.kpebiz.com/archives/top-89-ping-list-for-pinging-on-wordpress/">ping list</a> for Wordpress.  I decided to put it into my copy of the <a href="http://hasno.info/2006/11/11/mephisto-plugins">Mephisto Post Pinger plugin</a>.  I&#8217;m not sure if it works yet, but this post will give it a good test. </p>
<p>            <span id="more-3916"></span></p>
<p>Today I found a nice <a href="http://www.kpebiz.com/archives/top-89-ping-list-for-pinging-on-wordpress/">ping list</a> for Wordpress.  I decided to put it into my copy of the <a href="http://hasno.info/2006/11/11/mephisto-plugins">Mephisto Post Pinger plugin</a>.  I&#8217;m not sure if it works yet, but this post will give it a good test. </p>
<p>You can get the <a href="http://ralree.info/assets/2007/10/6/config.rb">file</a>, or just use this:</p>
<pre><code>
ArticlePingObserver::SERVICES = [

  { :url =&gt; "http://rpc.pingomatic.com/", :type =&gt; :xmlrpc },

  { :url =&gt; "http://rpc.weblogs.com/pingSiteForm", :type =&gt; :rest },

  { :url =&gt; "http://pingomatic.com/ping/", :type =&gt; :weblogs_get, :extras =&gt; [ "chk_weblogscom=on&#038;chk_blogs=on&#038;chk_technorati=on&#038;chk_feedburner=on&#038;chk_syndic8=on&#038;chk_newsgator=on&#038;chk_feedster=on&#038;chk_myyahoo=on&#038;chk_pubsubcom=on&#038;chk_blogdigger=on&#038;chk_blogrolling=on&#038;chk_blogstreet=on&#038;chk_moreover=on&#038;chk_weblogalot=on&#038;chk_icerocket=on&#038;chk_newsisfree=on&#038;chk_topicexchange=on" ] },

  { :url =&gt; "http://rpc.technorati.com/rpc/ping", :type =&gt; :xmlrpc },

  { :url =&gt; "http://ping.syndic8.com/xmlrpc.php", :type =&gt; :xmlrpc },

  { :url =&gt; "http://rpc.icerocket.com:10080", :type =&gt; :xmlrpc },

  { :url =&gt; "http://rubycorner.com/ping/xmlrpc/e49ac4608c88606f75486e6da3da34de6527622a", :type =&gt; :xmlrpc, :category =&gt; 'ruby' },

  { :url =&gt; "http://rubylicio.us/ping/xmlrpc", :type =&gt; :xmlrpc, :category =&gt; 'ruby' },

  { :url =&gt; "http://1470.net/api/ping", :type =&gt; :xmlrpc },

  { :url =&gt; "http://www.a2b.cc/setloc/bp.a2b", :type =&gt; :xmlrpc },

  { :url =&gt; "http://api.feedster.com/ping", :type =&gt; :xmlrpc },

  { :url =&gt; "http://api.moreover.com/RPC2", :type =&gt; :xmlrpc },

  { :url =&gt; "http://api.moreover.com/ping", :type =&gt; :xmlrpc },

  { :url =&gt; "http://api.my.yahoo.com/RPC2", :type =&gt; :xmlrpc },

  { :url =&gt; "http://api.my.yahoo.com/rss/ping", :type =&gt; :xmlrpc },

  { :url =&gt; "http://www.bitacoles.net/ping.php", :type =&gt; :xmlrpc },

  { :url =&gt; "http://bitacoras.net/ping", :type =&gt; :xmlrpc },

  { :url =&gt; "http://blogdb.jp/xmlrpc", :type =&gt; :xmlrpc },

  { :url =&gt; "http://www.blogdigger.com/RPC2", :type =&gt; :xmlrpc },

  { :url =&gt; "http://blogmatcher.com/u.php", :type =&gt; :xmlrpc },

  { :url =&gt; "http://www.blogoole.com/ping/", :type =&gt; :xmlrpc },

  { :url =&gt; "http://www.blogoon.net/ping/", :type =&gt; :xmlrpc },

  { :url =&gt; "http://www.blogpeople.net/servlet/weblogUpdates", :type =&gt; :xmlrpc },

  { :url =&gt; "http://www.blogroots.com/tb_populi.blog?id=1", :type =&gt; :xmlrpc },

  { :url =&gt; "http://www.blogshares.com/rpc.php", :type =&gt; :xmlrpc },

  { :url =&gt; "http://www.blogsnow.com/ping", :type =&gt; :xmlrpc },

  { :url =&gt; "http://www.blogstreet.com/xrbin/xmlrpc.cgi", :type =&gt; :xmlrpc },

  { :url =&gt; "http://blog.goo.ne.jp/XMLRPC", :type =&gt; :xmlrpc },

  { :url =&gt; "http://bulkfeeds.net/rpc", :type =&gt; :xmlrpc },

  { :url =&gt; "http://coreblog.org/ping/", :type =&gt; :xmlrpc },

  { :url =&gt; "http://www.lasermemory.com/lsrpc/", :type =&gt; :xmlrpc },

  { :url =&gt; "http://mod-pubsub.org/kn_apps/blogchatt", :type =&gt; :xmlrpc },

  { :url =&gt; "http://www.mod-pubsub.org/kn_apps/blogchatter/ping.php", :type =&gt; :xmlrpc },

  { :url =&gt; "http://www.newsisfree.com/xmlrpctest.php", :type =&gt; :xmlrpc },

  { :url =&gt; "http://ping.amagle.com/", :type =&gt; :xmlrpc },

  { :url =&gt; "http://ping.bitacoras.com", :type =&gt; :xmlrpc },

  { :url =&gt; "http://ping.blo.gs/", :type =&gt; :xmlrpc },

  { :url =&gt; "http://ping.bloggers.jp/rpc/", :type =&gt; :xmlrpc },

  { :url =&gt; "http://ping.blogmura.jp/rpc/", :type =&gt; :xmlrpc },

  { :url =&gt; "http://ping.cocolog-nifty.com/xmlrpc", :type =&gt; :xmlrpc },

  { :url =&gt; "http://ping.exblog.jp/xmlrpc", :type =&gt; :xmlrpc },

  { :url =&gt; "http://ping.feedburner.com", :type =&gt; :xmlrpc },

  { :url =&gt; "http://ping.myblog.jp", :type =&gt; :xmlrpc },

  { :url =&gt; "http://ping.rootblog.com/rpc.php", :type =&gt; :xmlrpc },

  { :url =&gt; "http://ping.weblogalot.com/rpc.php", :type =&gt; :xmlrpc },

  { :url =&gt; "http://ping.weblogs.se/", :type =&gt; :xmlrpc },

  { :url =&gt; "http://pingoat.com/goat/RPC2", :type =&gt; :xmlrpc },

  { :url =&gt; "http://www.popdex.com/addsite.php", :type =&gt; :xmlrpc },

  { :url =&gt; "http://rcs.datashed.net/RPC2/", :type =&gt; :xmlrpc },

  { :url =&gt; "http://rpc.blogbuzzmachine.com/RPC2", :type =&gt; :xmlrpc },

  { :url =&gt; "http://rpc.blogrolling.com/pinger/", :type =&gt; :xmlrpc },

  { :url =&gt; "http://rpc.weblogs.com/RPC2", :type =&gt; :xmlrpc },

  { :url =&gt; "http://www.snipsnap.org/RPC2", :type =&gt; :xmlrpc },

  { :url =&gt; "http://trackback.bakeinu.jp/bakeping.php", :type =&gt; :xmlrpc },

  { :url =&gt; "http://topicexchange.com/RPC2", :type =&gt; :xmlrpc },

  { :url =&gt; "http://www.weblogues.com/RPC/", :type =&gt; :xmlrpc },

  { :url =&gt; "http://xping.pubsub.com/ping/", :type =&gt; :xmlrpc },

  { :url =&gt; "http://xmlrpc.blogg.de/", :type =&gt; :xmlrpc },

]

</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://www.ralree.com/2007/10/06/new-mephisto-post-pinger-list/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Flash Video Player for Mephisto</title>
		<link>http://www.ralree.com/2007/08/13/flash-video-player-for-mephisto/</link>
		<comments>http://www.ralree.com/2007/08/13/flash-video-player-for-mephisto/#comments</comments>
		<pubDate>Mon, 13 Aug 2007 02:50:00 +0000</pubDate>
		<dc:creator>Erik</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[alex]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[mephisto]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://www.ralree.info/2007/10/13/flash-video-player-for-mephisto</guid>
		<description><![CDATA[So I made this awesome filter for Mephisto that allows you to easily embed flash videos in your post.  May require tweaking if using a non-standard URL root.

It&#8217;s as simple as this:

&#60;macro:flash&#62;/assets/2007/8/13/party.flv&#60;/macro:flash&#62;

Or, you can make it complicated:

&#60;macro:flash width="640" height="480"&#62;/assets/2007/8/13/party.flv&#60;/macro:flash&#62;

Which ends up like this:

Installation
Install it from your mephisto directory:

./script/plugin install -x https://modzer0.cs.uaf.edu/repos/hank/code/rails/mephisto/filtered_column_flash_video

Voila! Firebreathing!
]]></description>
			<content:encoded><![CDATA[<p>So I made this awesome filter for Mephisto that allows you to easily embed flash videos in your post.  May require tweaking if using a non-standard URL root.</p>
<p><embed src="/flash_player/flvplayer.swf" width="400" height="400" type="application/x-shockwave-flash"    pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="file=/assets/2007/8/13/party.flv&#038;displayheight=400&#038;displaywidth=400"/></p>
<p>It&#8217;s as simple as this:</p>
<pre><code>
&lt;macro:flash&gt;/assets/2007/8/13/party.flv&lt;/macro:flash&gt;
</code></pre>
<p>Or, you can make it complicated:</p>
<pre><code>
&lt;macro:flash width="640" height="480"&gt;/assets/2007/8/13/party.flv&lt;/macro:flash&gt;
</code></pre>
<p>Which ends up like this:<br />
<embed src="/flash_player/flvplayer.swf" width="640" height="480" type="application/x-shockwave-flash"    pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="file=/assets/2007/8/13/party.flv&#038;displayheight=480&#038;displaywidth=640"/></p>
<h1>Installation</h1>
<p>Install it from your mephisto directory:</p>
<pre><code>
./script/plugin install -x https://modzer0.cs.uaf.edu/repos/hank/code/rails/mephisto/filtered_column_flash_video
</code></pre>
<p><strong>Voila!</strong> Firebreathing!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ralree.com/2007/08/13/flash-video-player-for-mephisto/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>FireGPG &#8211; GnuPG in Firefox&#8217;s Gmail!</title>
		<link>http://www.ralree.com/2007/04/04/firegpg-gnupg-in-firefox-s-gmail/</link>
		<comments>http://www.ralree.com/2007/04/04/firegpg-gnupg-in-firefox-s-gmail/#comments</comments>
		<pubDate>Wed, 04 Apr 2007 11:27:00 +0000</pubDate>
		<dc:creator>Erik</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[gmail]]></category>
		<category><![CDATA[gpg]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[plugins]]></category>

		<guid isPermaLink="false">http://www.ralree.info/2007/10/13/firegpg-gnupg-in-firefox-s-gmail</guid>
		<description><![CDATA[OK &#8211; a little history.  I wanted to write this extension some time ago, but couldn&#8217;t figure out how to make it work.  Apparently, someone has spent the time to find out, and now I have to tear apart the code to find out how they did this.  Anyway, this allows you [...]]]></description>
			<content:encoded><![CDATA[<p>OK &#8211; a little history.  I wanted to write this extension some time ago, but couldn&#8217;t figure out how to make it work.  Apparently, someone has spent the time to find out, and now I have to tear apart the code to find out how they did this.  Anyway, this allows you to sign and encrypt any text in Firefox using GPG.  It rocks.  You can use the options dialog to select the private key to use.  It also has support for GMail integration using little buttons instead of the right-click menu which is always available.  Here&#8217;s a preview:</p>
<p><img src="/images/firegpg.jpg" alt="FireGPG in action"/></p>
<h2><a href="http://firegpg.tuxfamily.org/">Get FireGPG Here NOW!</a></h2>
]]></content:encoded>
			<wfw:commentRss>http://www.ralree.com/2007/04/04/firegpg-gnupg-in-firefox-s-gmail/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mephisto Comment Notification Mod</title>
		<link>http://www.ralree.com/2007/03/19/mephisto-comment-notification-mod/</link>
		<comments>http://www.ralree.com/2007/03/19/mephisto-comment-notification-mod/#comments</comments>
		<pubDate>Mon, 19 Mar 2007 19:35:00 +0000</pubDate>
		<dc:creator>Erik</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[mephisto]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://www.ralree.info/2007/10/13/mephisto-comment-notification-mod</guid>
		<description><![CDATA[I wanted to be able to click a link in my email to see the comment it talked about.  So, I modified Luke Redpath&#8217;s Comment Notification Plugin to give that to me.  First, I had to do some script/console action:

&#62;&#62; s = Site.find_first
=&#62; #&#60;Site:0xb747e014 @attributes={"current_theme_path"=&#62;"wibbish-mephisto",#...
#...
&#62;&#62; s.host='www.ralree.info'
=&#62; "www.ralree.info"
&#62;&#62; s.save
=&#62; true
&#62;&#62; quit

Next, I did a [...]]]></description>
			<content:encoded><![CDATA[<p>I wanted to be able to click a link in my email to see the comment it talked about.  So, I modified <a href="http://hasno.info/2006/11/11/mephisto-plugins">Luke Redpath&#8217;s Comment Notification Plugin</a> to give that to me.  First, I had to do some <code>script/console</code> action:</p>
<pre><code>
&gt;&gt; s = Site.find_first
=&gt; #&lt;Site:0xb747e014 @attributes={"current_theme_path"=&gt;"wibbish-mephisto",#...
#...
&gt;&gt; s.host='www.ralree.info'
=&gt; "www.ralree.info"
&gt;&gt; s.save
=&gt; true
&gt;&gt; quit
</code></pre>
<p>Next, I did a small model modification:</p>
<pre><code>
# app/models/article.rb, in the public section
  def full_external_link
    ["http://", site.host, full_permalink].join("")
  end
</code></pre>
<p>And a slight test:</p>
<pre><code>
Loading production environment.
&gt;&gt; Article.find_first.full_external_link
=&gt; "http://www.ralree.info/2006/5/21/first-post-what-to-say"
</code></pre>
<p><strong>Perfect!</strong></p>
<p>Then, I just modified the view for the email a bit:</p>
<pre><code>
# vendor/plugins/mephisto_comment_notification/lib/views/
# comment_notifier/comment_notification.rhtml
A new comment has been posted on your blog for the article '&lt;%= @comment.article.title %&gt;' by &lt;%= @comment.author %&gt; (&lt;%= @comment.author_email %&gt;):
&lt;%= @comment.article.full_external_link %&gt;

The commenter IP address is &lt;%= @comment.author_ip %&gt;.

Here is the comment that was posted:

"&lt;%= @comment.body %&gt;"

This notification was sent using the Mephisto Comment notification plugin by Luke Redpath.

http://opensource.agileevolved.com/svn/root/rails_plugins/mephisto_comment_notification/trunk

Modified awesomely by Erik Gregg (http://www.ralree.info)
</code></pre>
<p>And it&#8217;s magic!  It totally works!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ralree.com/2007/03/19/mephisto-comment-notification-mod/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fixing Mephisto Post Pinger Plugin</title>
		<link>http://www.ralree.com/2007/03/02/fixing-mephisto-post-pinger-plugin/</link>
		<comments>http://www.ralree.com/2007/03/02/fixing-mephisto-post-pinger-plugin/#comments</comments>
		<pubDate>Fri, 02 Mar 2007 17:56:00 +0000</pubDate>
		<dc:creator>Erik</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[fix]]></category>
		<category><![CDATA[mephisto]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://www.ralree.info/2007/10/13/fixing-mephisto-post-pinger-plugin</guid>
		<description><![CDATA[I wanted some places to get pinged when I posted.  I used the mephisto_post_ping plugin, I simply changed the directory structure and class definition around:
Directory Structure

./lib/article_ping_observer.rb
./lib/mephisto_plugins/post_ping.rb
./lib/config.rb
./README
./init.rb

File Changes
init.rb



# $Id$
require 'mephisto_plugins/post_ping'
ActiveRecord::Base.observers &#60;&#60; :article_ping_observer



plugin.rb



module Mephisto
  module Plugins
    class PostPinger &#60; Mephisto::Plugin
      author 'Mark Guzman'
     [...]]]></description>
			<content:encoded><![CDATA[<p>I wanted some places to get pinged when I posted.  I used the <a href="http://hasno.info/2006/11/11/mephisto-plugins"><code>mephisto_post_ping</code></a> plugin, I simply changed the directory structure and class definition around:</p>
<h2>Directory Structure</h2>
<pre><code>
./lib/article_ping_observer.rb
./lib/mephisto_plugins/post_ping.rb
./lib/config.rb
./README
./init.rb
</code></pre>
<h2>File Changes</h2>
<h3>init.rb</h3>
<div class="CodeRay">
<div class="code">
<pre><code>
<span class="c"># $Id$</span>
require <span class="s"><span class="dl">'</span><span class="k">mephisto_plugins/post_ping</span><span class="dl">'</span></span>
<span class="co">ActiveRecord</span>::<span class="co">Base</span>.observers &lt;&lt; <span class="sy">:article_ping_observer</span>
</code></pre>
</div>
</div>
<h3>plugin.rb</h3>
<div class="CodeRay">
<div class="code">
<pre><code>
<span class="r">module</span> <span class="cl">Mephisto</span>
  <span class="r">module</span> <span class="cl">Plugins</span>
    <span class="r">class</span> <span class="cl">PostPinger</span> &lt; <span class="co">Mephisto</span>::<span class="co">Plugin</span>
      author <span class="s"><span class="dl">'</span><span class="k">Mark Guzman</span><span class="dl">'</span></span>
      version <span class="s"><span class="dl">'</span><span class="k">$Rev: 82 $</span><span class="dl">'</span></span>.gsub( <span class="s"><span class="dl">&quot;</span><span class="k">Rev: </span><span class="dl">&quot;</span></span>, <span class="s"><span class="dl">&quot;</span><span class="dl">&quot;</span></span> )
      notes <span class="s"><span class="dl">&quot;</span><span class="k">Send Weblogs Pings when articles are published</span><span class="dl">&quot;</span></span>
      homepage <span class="s"><span class="dl">&quot;</span><span class="k">http://hasno.info/2006/11/11/mephisto-plugins</span><span class="dl">&quot;</span></span>

      <span class="r">class</span> <span class="cl">Schema</span> &lt; <span class="co">ActiveRecord</span>::<span class="co">Migration</span>
        <span class="r">def</span> <span class="pc">self</span>.install
        <span class="r">end</span>

        <span class="r">def</span> <span class="pc">self</span>.uninstall
        <span class="r">end</span>
      <span class="r">end</span>

    <span class="r">end</span>
  <span class="r">end</span>
<span class="r">end</span>
</code></pre>
</div>
</div>
<p>That&#8217;s all I changed.  This is my first post since the change, so I&#8217;ll see if it works.  If not, at least Mephisto doesn&#8217;t blow up on startup.</p>
<h2>Results</h2>
<p>Well,</p>
<pre><code>
unable to send xmlrpc weblog ping -&gt; http://www.ralree.info
unable to send xmlrpc weblog ping -&gt; http://www.ralree.info
unable to send xmlrpc weblog ping -&gt; http://www.ralree.info
unable to send xmlrpc weblog ping -&gt; http://www.ralree.info
</code></pre>
<p>Seems like a couple might have worked.  I&#8217;ll keep working on it.  But, at least it gets called.</p>
<p><img src="http://ralree.info/assets/2007/3/2/pinger_plugin.png" alt="RubyCorner worked!"/></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ralree.com/2007/03/02/fixing-mephisto-post-pinger-plugin/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How to make a Mephisto Plugin</title>
		<link>http://www.ralree.com/2007/02/26/how-to-make-a-mephisto-plugin/</link>
		<comments>http://www.ralree.com/2007/02/26/how-to-make-a-mephisto-plugin/#comments</comments>
		<pubDate>Mon, 26 Feb 2007 00:29:00 +0000</pubDate>
		<dc:creator>Erik</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[mephisto]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.ralree.info/2007/10/13/how-to-make-a-mephisto-plugin</guid>
		<description><![CDATA[So, I figured I might as well provide a quick tutorial on how to make Mephisto Plugins currently.  Many of the old plugins are broken, so there needs to be a resurgence of plugin development.  Here&#8217;s the basic structure of the Tag Cloud plugin:

mephisto_tag_cloud
 - init.rb README
 - lib
   - mephisto_plugins
 [...]]]></description>
			<content:encoded><![CDATA[<p>So, I figured I might as well provide a quick tutorial on how to make Mephisto Plugins currently.  Many of the old plugins are broken, so there needs to be a resurgence of plugin development.  Here&#8217;s the basic structure of the <a href="/2007/2/25/mephisto-tag-cloud-plugin">Tag Cloud plugin</a>:</p>
<pre><code>
mephisto_tag_cloud
 - init.rb README
 - lib
   - mephisto_plugins
     - tag_cloud.rb
</code></pre>
<p>As you can see, the structure is very simple.  Here&#8217;s my code for <strong>init.rb</strong></p>
<div class="CodeRay">
<div class="code">
<pre><code>
<span class="co">Liquid</span>::<span class="co">Template</span>.register_filter(<span class="co">MephistoPlugins</span>::<span class="co">TagCloud</span>)
</code></pre>
</div>
</div>
<p>That&#8217;s it!  No <code>require</code> or anything!  Next, I edited <strong>lib/mephisto_plugins/tag_cloud.rb</strong>:</p>
<div class="CodeRay">
<div class="code">
<pre><code>
<span class="r">module</span> <span class="cl">MephistoPlugins</span>
  <span class="r">module</span> <span class="cl">TagCloud</span>
    <span class="r">def</span> <span class="fu">size_tag</span>(tag, largest = <span class="i">2</span>)
      size = (<span class="co">Tag</span>.find_by_name(tag).taggings(<span class="pc">true</span>).length + <span class="i">18</span>).to_f / <span class="i">18</span>
      size = largest <span class="r">if</span> size &gt; largest
      <span class="s"><span class="dl">&quot;</span><span class="k">&lt;span style='font-size: </span><span class="il"><span class="dl">#{</span>size<span class="dl">}</span></span><span class="k">em'&gt;&lt;a href='/tags/</span><span class="il"><span class="dl">#{</span>tag<span class="dl">}</span></span><span class="k">'&gt;</span><span class="il"><span class="dl">#{</span>tag<span class="dl">}</span></span><span class="k">&lt;/a&gt;&lt;/span&gt;</span><span class="dl">&quot;</span></span>
    <span class="r">end</span>
  <span class="r">end</span>
<span class="r">end</span>
</code></pre>
</div>
</div>
<p>Holy crap that barely any code at all!  So, the moral of the story is that it&#8217;s very easy to make the plugins once you figure out what to do.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ralree.com/2007/02/26/how-to-make-a-mephisto-plugin/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Mephisto Tag Cloud Plugin</title>
		<link>http://www.ralree.com/2007/02/25/mephisto-tag-cloud-plugin/</link>
		<comments>http://www.ralree.com/2007/02/25/mephisto-tag-cloud-plugin/#comments</comments>
		<pubDate>Sun, 25 Feb 2007 11:15:00 +0000</pubDate>
		<dc:creator>Erik</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[liquid]]></category>
		<category><![CDATA[mephisto]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://www.ralree.info/2007/10/20/mephisto-tag-cloud-plugin</guid>
		<description><![CDATA[Because the French one disappeared off the face of the earth, I took it upon myself to make a tag cloud Liquid plugin.  Here&#8217;s the scoop.  I downloaded Rick&#8217;s MeasureMap Plugin and went to town converting it.
Add this to your sidebar in your liquid template of choice:

{% for tag in site.tags %}
  [...]]]></description>
			<content:encoded><![CDATA[<p>Because the French one disappeared off the face of the earth, I took it upon myself to make a tag cloud Liquid plugin.  Here&#8217;s the scoop.  I downloaded <a href="http://mephisto.stikipad.com/help/show/Liquid+Plugins">Rick&#8217;s MeasureMap Plugin</a> and went to town converting it.</p>
<p>Add this to your sidebar in your liquid template of choice:</p>
<pre><code>
{% for tag in site.tags %}
  {{ tag | size_tag }}
{% endfor %}
</code></pre>
<p>And you should have some awesome tag_cloud action.  You can specify an upper limit as well:</p>
<pre><code>
{{ tag | size_tag: 3 }}
</code></pre>
<p>That code allows for up to <strong>4em</strong> font size.  I don&#8217;t recommend this because it&#8217;s ludicrous.  The default upper limit is <strong>2em</strong>, which makes the font size range between <strong>1em</strong> and <strong>2em</strong>.  Suggestions are welcome.</p>
<p>Get it here:</p>
<pre><code>
svn co https://modzer0.cs.uaf.edu/repos/hank/code/rails/mephisto/mephisto_tag_cloud
</code></pre>
<p>Or install it like this:</p>
<pre><code>
./script/plugin install https://modzer0.cs.uaf.edu/repos/hank/code/rails/mephisto/mephisto_tag_cloud
</code></pre>
<p>Works for me &#8211; let me know if you have any difficulties.</p>
<h2>Update: French one re-appears!</h2>
<p>Well, <a href="http://boldr.stikipad.com/notes/show/HomePage">he&#8217;s back</a>.  It was down a while back.  You can see his version <a href="http://svn.boldr.net/mephisto/plugins/trunk/mephisto_tag_cloud/">here</a>.  I like mine better. :P</p>
<h2>Update: Better <code>SELECT</code> Statement</h2>
<p>Thanks to <a href="http://seaofclouds.com/">Todd</a> for pointing out that the tags were applying to not only published articles, but drafts as well, which produced false tag counts.  He also pointed out that they were applying to revisions, which was unacceptable.  I think I fixed the problems using some straight up SQL:</p>
<div class="CodeRay">
<div class="code">
<pre><code>
    <span class="r">def</span> <span class="fu">size_tag</span>(tag, largest = <span class="i">2</span>, smallest = <span class="fl">0.5</span>)
      number = <span class="co">ActiveRecord</span>::<span class="co">Base</span>.count_by_sql(
        [<span class="s"><span class="dl">&quot;</span><span class="k">SELECT COUNT(*) FROM taggings,
            tags, contents WHERE
            tags.name = ? AND taggings.tag_id = tags.id
            AND contents.id = taggings.taggable_id
            AND contents.published_at IS NOT NULL;</span><span class="dl">&quot;</span></span>, tag])
      size = sprintf(<span class="s"><span class="dl">&quot;</span><span class="k">%0.2f</span><span class="dl">&quot;</span></span>, number.to_f / <span class="i">5</span>)
      size = size.to_f &gt; largest ? largest : size.to_f &lt; smallest ? smallest : size
</code></pre>
</div>
</div>
<p>This is simple &#8211; I&#8217;m just adding some conditions that filter unpublished articles and revisions (which I don&#8217;t think actually appear in the <strong>contents</strong> table anyway).  In a test, the <strong>linux</strong> tag returned <b>35</b> results the old way, <b>34</b> without the checking of <strong>published_id</strong>, and <b>33</b> as it is above.  I think it&#8217;s filtering, but Todd will have to confirm this.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ralree.com/2007/02/25/mephisto-tag-cloud-plugin/feed/</wfw:commentRss>
		<slash:comments>37</slash:comments>
		</item>
		<item>
		<title>XKCD Typo Sidebar</title>
		<link>http://www.ralree.com/2007/01/28/xkcd-typo-sidebar/</link>
		<comments>http://www.ralree.com/2007/01/28/xkcd-typo-sidebar/#comments</comments>
		<pubDate>Sun, 28 Jan 2007 01:09:25 +0000</pubDate>
		<dc:creator>Erik</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[sidebar]]></category>
		<category><![CDATA[typo]]></category>

		<guid isPermaLink="false">http://www.ralree.info/2007/10/13/xkcd-typo-sidebar</guid>
		<description><![CDATA[I made a sweet sidebar today that I&#8217;ve been wanting to make for a long time.  I usually forget to head over to XKCD, so I wanted a way to have the newest images staring me in the face all the time.  Now, thanks to the magic of RSS, they&#8217;re right in front [...]]]></description>
			<content:encoded><![CDATA[<p>I made a sweet sidebar today that I&#8217;ve been wanting to make for a long time.  I usually forget to head over to <a href="http://www.xkcd.com">XKCD</a>, so I wanted a way to have the newest images staring me in the face all the time.  Now, thanks to the magic of RSS, they&#8217;re right in front of me.  They are lightboxed, so I have the newest comics and their captions available to me without even leaving my own site.  How homey.  To get the sidebar (works in Typo svn rev. 1246, which is my crusty old checkout), do this wherever your plugins are kept:</p>
<pre><code>
svn co http://modzer0.cs.uaf.edu/repos/hank/code/ruby/typo/xkcd_sidebar/
</code></pre>
<p>Horray!  A sidebar is born.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ralree.com/2007/01/28/xkcd-typo-sidebar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Graticule: Geocoding on Rails</title>
		<link>http://www.ralree.com/2007/01/26/graticule-geocoding-on-rails/</link>
		<comments>http://www.ralree.com/2007/01/26/graticule-geocoding-on-rails/#comments</comments>
		<pubDate>Fri, 26 Jan 2007 16:30:17 +0000</pubDate>
		<dc:creator>Erik</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[gis]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://www.ralree.info/2007/10/13/graticule-geocoding-on-rails</guid>
		<description><![CDATA[I&#8217;ve been using Graticule for geocoding in a Rails project at work, and I decided I needed to make some changes.  So, I turned the Graticule gem into a plugin.  It&#8217;s available here:

./script/plugin install -x https://modzer0.cs.uaf.edu/repos/hank/code/ruby/graticule_plugin

It&#8217;s as simple as that.  Then just jam this into your environment and change it accordingly:

GEOCODERS = [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been using Graticule for geocoding in a Rails project at work, and I decided I needed to make some changes.  So, I turned the Graticule gem into a plugin.  It&#8217;s available here:</p>
<pre><code>
./script/plugin install -x https://modzer0.cs.uaf.edu/repos/hank/code/ruby/graticule_plugin
</code></pre>
<p>It&#8217;s as simple as that.  Then just jam this into your environment and change it accordingly:</p>
<pre><code>
GEOCODERS = [
  Graticule.service(:google).new('google_key'),
  Graticule.service(:yahoo).new('yahoo_key'),
  Graticule::GeocoderUsGeocoder.new,
  Graticule::MetaCartaGeocoder.new
]
</code></pre>
<p>Then you can just perform looping on <strong>GEOCODERS</strong> to do your queries on every site.<br />
There&#8217;s also some other changes you can do to catch <strong>Graticule::AddressError</strong>, but I won&#8217;t go into those here.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ralree.com/2007/01/26/graticule-geocoding-on-rails/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.419 seconds -->
