<?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>Simulacre</title>
	<atom:link href="http://simulacre.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://simulacre.org</link>
	<description>Javascript &#38; Japan</description>
	<lastBuildDate>Sun, 07 Mar 2010 16:23:09 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Back In Time: Time Machine for Ubuntu Linux</title>
		<link>http://simulacre.org/back-in-time-time-machine-for-ubuntu-linux/</link>
		<comments>http://simulacre.org/back-in-time-time-machine-for-ubuntu-linux/#comments</comments>
		<pubDate>Sun, 07 Mar 2010 14:31:09 +0000</pubDate>
		<dc:creator>Caleb</dc:creator>
				<category><![CDATA[Disaster Recovery]]></category>
		<category><![CDATA[Infrastructure]]></category>
		<category><![CDATA[back in time]]></category>
		<category><![CDATA[backintime]]></category>
		<category><![CDATA[snapshots]]></category>
		<category><![CDATA[time machine]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://simulacre.org/?p=136</guid>
		<description><![CDATA[Back In Time is a great GUI that reproduces the most important OSX Time Machine features: simple graphical configuration and snapshot backups. The current version (0.9.26) is, unfortunately, broken if you want to back up an entire installation. There is a fix, but the developer has not released it yet. Applying the fix yourself is, [<a href="http://simulacre.org/back-in-time-time-machine-for-ubuntu-linux/">.....</a>]]]></description>
			<content:encoded><![CDATA[<p><a href="http://backintime.le-web.org/">Back In Time</a> is a great GUI that reproduces the most important OSX Time Machine features: simple graphical configuration and snapshot backups. The current version (0.9.26) is, unfortunately, broken if you want to back up an entire installation. There is a fix, but the developer has not released it yet. Applying the fix yourself is, fortunately, very easy.</p>
<p>Follow the directions below to install Back In Time for Ubuntu and backup your entire drive.</p>
<p><span id="more-136"></span></p>
<h3>Install Back In Time</h3>
<ul>
<li>Add the following line to your apt sources file (/etc/apt/sources.list)
<pre class="shell">
deb http://le-web.org/repository stable main
</pre>
</li>
<li>Add the GPG key information:
<pre class="shell">
clc@lurr:~$	wget http://le-web.org/repository/le-web.key
clc@lurr:~$	sudo apt-key add le-web.key
</pre>
</li>
<li>
Install the backintime application for Gnome</p>
<pre class="shell">
clc@lurr:~$	sudo apt-get update
clc@lurr:~$	sudo apt-get install backintime-common backintime-gnome
</pre>
</li>
</ul>
<p>Now the default installation of Back In Time should be installed. You can stop here, but if you want to back up your entire drive starting from the root (&#8220;/&#8221;), you&#8217;ll need to install a patch.</p>
<h3>Download and Install the Patch</h3>
<pre class="shell">
clc@lurr:~$ wget http://launchpadlibrarian.net/35340108/snapshots.py.patch
	--2010-03-07 12:28:39--  http://launchpadlibrarian.net/35340108/snapshots.py.patch
	Resolving launchpadlibrarian.net... 91.189.89.228, 91.189.89.229
	Connecting to launchpadlibrarian.net|91.189.89.228|:80... connected.
	HTTP request sent, awaiting response... 200 OK
	Length: 431 [text/plain]
	Saving to: `snapshots.py.patch'

	100%[===================================================>] 431      --.-K/s   in 0s      

	2010-03-07 12:28:40 (13.9 MB/s) - `snapshots.py.patch' saved [431/431]

clc@lurr:~$ sudo patch /usr/share/backintime/common/snapshots.py snapshots.py.patch
	patching file /usr/share/backintime/common/snapshots.py
</pre>
<p>Easy as pie.</p>
<p>Now launch backintime-gnome (assuming your are not using KDE) and configure it.</p>
<h3>Configure Back In Time</h3>
<pre class="shell">
clc@lurr:~$ sudo backintime-gnome
</pre>
<p>Configure where you want the snapshots stored and how often.<br /><img src="http://c5.simulacre.org/blog/images/backintime/general.png"></p>
<p class="push top">Tell backintime which directories you want to save. I&#8217;m going for my entire drive starting from the root (&#8220;/&#8221;). <br /><img src="http://c5.simulacre.org/blog/images/backintime/include.png"></p>
<p class="push top">Make sure to tell backintime not to backup special directories as well as the directory you use to store the snapshots. Mine&#8217;s under /mnt/backup, so excluding /mnt will get the job done.<img src="http://c5.simulacre.org/blog/images/backintime/exclude.png"></p>
<h3>Running as Root</h3>
<p>If you want to backup your entire drive you&#8217;ll need backintime to run as root from root&#8217;s crontab. If you run backintime-gnome using sudo from the command line the config file for backintime won&#8217;t be saved in root&#8217;s .config directory though. When cron calls backintime it will look for the config and won&#8217;t find it, so you should create a link to the config file in root&#8217;s home directory.</p>
<pre class="shell">
clc@lurr:~$ sudo ln -s ~/.config/backintime/config /home/root/.config/backintime/config
</pre>
</p>
<h3>Debugging Back In Time</h3>
<p>By default the output from Back In Time will be logged to /var/log/syslog. If your snapshots are not being saved as you expect check the syslog log.</p>
<pre class="shell">
clc@lurr:~$ tail -f /var/log/syslog
</pre>
<p>I was stymied me for a bit when the cron daemon didn&#8217;t seem to be actually running backintime as it should. A quick tail of /var/log/auth.log pointed out that the root account&#8217;s password was expired.</p>
<pre class="shell">
clc@lurr:~$ tail -f /var/log/auth.log
</pre>
<h3>Optional: Configure Dedicated Logging</h3>
<p>By default Back In Time will log its progress to /var/log/syslog. That of course means that every time it runs there will be changes to filesystem, therefore, every time it runs it will need to take a snapshot.</p>
<p>You can configure rsyslogd to push Back In Time&#8217;s logs to a dedicated file and then include that file in the exclude list.</p>
<ul>
<li>Create and edit /etc/rsyslog.d/40-backintime.conf
<pre class="shell">
clc@lurr:~$ vim /etc/rsyslog.d/40-backintime.conf
</pre>
</li>
<li>Add the following lines
<pre class="shell">
	if $programname == 'backintime' then /var/log/backintime.log
	if $programname == 'backintime' then ~
</pre>
</li>
<li>Restart rsyslogd:
<pre class="shell">
clc@lurr:~$ sudo service rsyslog restart
</pre>
</li>
</ul>
<h3>Important Note</h3>
<p>As of today, March 7th, 2010, the public release of Back In Time (<a href="http://backintime.le-web.org/download/backintime/backintime-0.9.26_src.tar.gz">v0.9.26</a>) has not been updated to correctly handle taking a snapshot of an entire Ubuntu installation starting from the root directory (&#8220;/&#8221;). The instructions above are a quick guide for how to correct the issue. Check the <a href="http://backintime.le-web.org/download_page/">Back In Time download page</a> for the latest version of the application as the public release may have been updated.</p>
<h3>Further Reading</h3>
<p>See the<a href="http://lifehacker.com/5212899/back-in-time-does-full-linux-backups-in-one-click"> April 15th, 2009 LifeHacker article</a> for a rundown of the features of Back in Time.</p>
]]></content:encoded>
			<wfw:commentRss>http://simulacre.org/back-in-time-time-machine-for-ubuntu-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Create a 2GB RAM disk in OSX</title>
		<link>http://simulacre.org/create-a-2gb-ram-disk-in-osx/</link>
		<comments>http://simulacre.org/create-a-2gb-ram-disk-in-osx/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 04:01:21 +0000</pubDate>
		<dc:creator>Caleb</dc:creator>
				<category><![CDATA[Infrastructure]]></category>
		<category><![CDATA[snippets]]></category>
		<category><![CDATA[OSX]]></category>
		<category><![CDATA[ram disk]]></category>
		<category><![CDATA[sectors]]></category>

		<guid isPermaLink="false">http://simulacre.org/?p=133</guid>
		<description><![CDATA[
diskutil erasevolume HFS+ "ramdisk" `hdiutil attach -nomount ram://4194304`

The only variable is the number of sectors. Calculate it by (size in MB) * 2048
]]></description>
			<content:encoded><![CDATA[<pre class="shell">
diskutil erasevolume HFS+ "ramdisk" `hdiutil attach -nomount ram://4194304`
</pre>
<p>The only variable is the number of sectors. Calculate it by (size in MB) * 2048</p>
]]></content:encoded>
			<wfw:commentRss>http://simulacre.org/create-a-2gb-ram-disk-in-osx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Valentine Choco</title>
		<link>http://simulacre.org/valentine-choco/</link>
		<comments>http://simulacre.org/valentine-choco/#comments</comments>
		<pubDate>Sun, 14 Feb 2010 15:22:07 +0000</pubDate>
		<dc:creator>Caleb</dc:creator>
				<category><![CDATA[Japan]]></category>
		<category><![CDATA[choco]]></category>
		<category><![CDATA[chocolate]]></category>
		<category><![CDATA[valentines day]]></category>
		<category><![CDATA[zoology]]></category>

		<guid isPermaLink="false">http://simulacre.org/?p=129</guid>
		<description><![CDATA[
Yoshiko completely surprised me this Valentine&#8217;s Day with an insane Zoology Chocolate Chimpanzee and two cans of chocolate laced beer. Now I have to find a way to top her for White Day



    

Figuring out how to eat him without melting chocolate all over my hands and face is only slightly harder [<a href="http://simulacre.org/valentine-choco/">.....</a>]]]></description>
			<content:encoded><![CDATA[<p><a href="http://farm5.static.flickr.com/4017/4356459266_43064a732f.jpg"><img class="alignnone" title="Choco Monkey Valentine's Present" src="http://farm5.static.flickr.com/4017/4356459266_43064a732f_m.jpg" alt="Choco Monkey" width="180" height="240" style="float:left; margin:0 5px 10px 0" /></a></p>
<p>Yoshiko completely surprised me this Valentine&#8217;s Day with an insane Zoology Chocolate Chimpanzee and two cans of chocolate laced beer. Now I have to find a way to top her for <a href="http://en.wikipedia.org/wiki/White_Day">White Day</a></p>
</p>
<p style="clear:both;"><span id="more-129"></span></p>
<p style="float:left; margin:0 5px 10px 0">
    <a href="http://farm3.static.flickr.com/2804/4355713517_06582cd49f.jpg"><img class="alignnone" title="Two Monkeys" src="http://farm3.static.flickr.com/2804/4355713517_06582cd49f_m.jpg" alt="Me and my choco monkey" width="184" height="240" /></a>
</p>
<p>Figuring out how to eat him without melting chocolate all over my hands and face is only slightly harder than sitting through a Japanese driver&#8217;s license renewal class.</p>
<p>I guess I could cut him up with a knife, but that wouldn&#8217;t be nearly as much fun as eating him bit by bit.</p>
<p style="clear:both;">
]]></content:encoded>
			<wfw:commentRss>http://simulacre.org/valentine-choco/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Add Twitter Widgets to a Page Dynamically</title>
		<link>http://simulacre.org/add-twitter-widgets-to-a-page-dynamically/</link>
		<comments>http://simulacre.org/add-twitter-widgets-to-a-page-dynamically/#comments</comments>
		<pubDate>Fri, 12 Feb 2010 14:59:56 +0000</pubDate>
		<dc:creator>Caleb</dc:creator>
				<category><![CDATA[snippets]]></category>
		<category><![CDATA[repetitive tasks]]></category>
		<category><![CDATA[twidget]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[widgets]]></category>

		<guid isPermaLink="false">http://simulacre.org/?p=127</guid>
		<description><![CDATA[I love it when clean and consistent HTML markup combines with simple Javascript to effortlessly execute repetitive tasks. It takes me right back to Data Structures class in college.

Good data structures lead to good algorithms.


Take a look at my Twidget demo. Notice how there are six different Twitter widgets in the demo. 
Manually instantiating a [<a href="http://simulacre.org/add-twitter-widgets-to-a-page-dynamically/">.....</a>]]]></description>
			<content:encoded><![CDATA[<p>I love it when clean and consistent HTML markup combines with simple Javascript to effortlessly execute repetitive tasks. It takes me right back to Data Structures class in college.</p>
<blockquote class="below">
<p>Good data structures lead to good algorithms.</p>
</blockquote>
<p><a href="/twidget/"><img src="http://c5.simulacre.org/images/twidget/stackofTwidgets_banner_200x100.png" style="float:left; margin-right:7px; margin-bottom:3em;" /></a></p>
<p>Take a look at my <a href="/twidget/">Twidget demo</a>. Notice how there are six different Twitter widgets in the demo. </p>
<p class="push top" style="clear: both;"><strong>Manually instantiating a Twidget object for each would have been seriously repetitive; not to mention a pain.</strong></p>
<pre escaped="true" class="js">
new Twidget({user:"calebcrane", element: "calebcrane-tweets",
              onRequest : function(){ $("calebcrane-twidget").spin() },
              onComplete: function(){ $("calebcrane-twidget").unspin(); },
              onCancel: function(){ $("calebcrane-twidget").unspin(); }
         });

//... repeated 5 times with different user names ...
</pre>
<p>Not only would it be a pain now, but what if I wanted to change their behavior in the future? If I didn&#8217;t want to use Spinner any longer, but use Slider to transition the tweets into the page, I&#8217;d have to change <em>each and every single one</em>.</p>
<p>I could, of course, auto generate the Javascript code on the backend, but that will put more load on my server.</p>
<p>Isn&#8217;t one of the great pieces of the recent JavaScript renaissance the ability to distribute processing costs to clients?</p>
<p class="push top">Imagine, if for some reason, I wanted to create a page with hundreds of Twidgets &#8230; *yuck*</p>
<p>Well, the easiest thing to do is use the consistent markup of each of those widget DIVs along with their IDs to construct the Twidget objects.</p>
<pre escaped="true" class="html">
&lt;div class="twidget" id="calebcrane-twidget"&gt;
    &lt;div class="border"&gt;
       &lt;div class="center inner"&gt;
           &lt;h3&gt;Caleb Crane&lt;/h3&gt;
           &lt;a href="http://www.twitter.com/calebcrane"&gt;&lt;img src="http://c5.simulacre.org/images/twitter0a.png" /&gt;&lt;/a&gt;
           &lt;div class="tweets" id="calebcrane-tweets"&gt; &lt;/div&gt;
       &lt;/div&gt;
   &lt;/div&gt;
&lt;/div&gt;

<!-- ... repeated 5 times with different usernames ... -->
</pre>
<pre escaped="true" class="js">
&lt;script type="text/javascript" charset="utf-8">
      window.addEvent("domready", function(){
          $$('.twidget').each(function(twidget){
              var tweets = twidget.getElement(".tweets");

              new Twidget({ user:tweets.get("id").split("-")[0], element: tweets,
                            onRequest : function(){ twidget.spin() },
                            onComplete: function(){ twidget.unspin(); },
                            onCancel: function(){ twidget.unspin(); }
                          });
          });
      });
&lt;/script>
</pre>
<p>We just Loop through the .twidget elements (line 3); and for each one create a function that</p>
<ol>
<li>takes the twidget element as an argument</li>
<li>grabs and holds a reference to the first child element with class .tweets (line 4)</li>
<li>instantiates an anonymous Twidget object with
<ul>
<li>a Twitter username determined by breaking the twidget element&#8217;s id in half at the hyphen -, e.g., calebcrane-tweets -> calebcrane</li>
<li>the referenced child element above (tweets) as an element to display the actual tweets</li>
<li>event handlers that properly reference the twidget element passed into the function rather than manually referencing DOM elements</li>
</ul>
</li>
</ol>
<p class="push top">Rather than manually writing the code to create each Twidget object we let the structure of the HTML and simple references and good naming convention (IDs with the username in them) do it for us. That being said we are increasing the execution time.</p>
<p>I am, however, happy to sacrifice &ndash; what is likely only marginally &ndash; increased execution time in favor of <em>programmer productivity</em>, <em>reduced</em> likelihood of <em>refactoring errors</em>, and <em>bandwidth savings</em> (less text to send to the client).</p>
]]></content:encoded>
			<wfw:commentRss>http://simulacre.org/add-twitter-widgets-to-a-page-dynamically/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Twidget</title>
		<link>http://simulacre.org/twidget/</link>
		<comments>http://simulacre.org/twidget/#comments</comments>
		<pubDate>Thu, 11 Feb 2010 17:58:41 +0000</pubDate>
		<dc:creator>Caleb</dc:creator>
				<category><![CDATA[Modules]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[modules]]></category>
		<category><![CDATA[MooTools]]></category>
		<category><![CDATA[twidget]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[widget]]></category>

		<guid isPermaLink="false">http://simulacre.org/?p=119</guid>
		<description><![CDATA[Twidget
Twidget retrieves recent tweets from any user&#8217;s public timeline, marks them up and puts them into a container element.

Demo




Caleb Crane
                    
&#160;







MooTools
                [<a href="http://simulacre.org/twidget/">.....</a>]]]></description>
			<content:encoded><![CDATA[<h2>Twidget</h2>
<p>Twidget retrieves recent tweets from any user&#8217;s public timeline, marks them up and puts them into a container element.</p>
<p><img src="http://c5.simulacre.org/images/twidget/banner_200x100.png" alt="Screenshot" /></p>
<h2>Demo</h2>
<div class="twidgets">
<div class="twidget" id="calebcrane-twidget">
<div class="border">
<div class="center inner">
<h3>Caleb Crane</h3>
<p>                   <a href="http://www.twitter.com/calebcrane"><img src="http://c5.simulacre.org/images/twitter0a.png"/></a> </p>
<div class="tweets" id="calebcrane-tweets">&nbsp;</div>
</p>
</div>
</div>
</div>
<div class="twidget">
<div class="border">
<div class="center inner">
<h3>MooTools</h3>
<p>                   <a href="http://www.twitter.com/mootools"><img src="http://c5.simulacre.org/images/twitter0a.png"/></a> </p>
<div class="tweets" id="mootools-tweets">&nbsp;</div>
</p>
</div>
</div>
</div>
<div class="twidget">
<div class="border">
<div class="center inner">
<h3>Valerio Proietti</h3>
<p>                   <a href="http://twitter.com/Kamicane"><img src="http://c5.simulacre.org/images/twitter0a.png"/></a> </p>
<div class="tweets" id="kamicane-tweets">&nbsp;</div>
</p>
</div>
</div>
</div>
</div>
<div class="twidgets">
<div class="twidget">
<div class="border">
<div class="center inner">
<h3>Aaron Newton</h3>
<p>                   <a href="http://www.twitter.com/anutron"><img src="http://c5.simulacre.org/images/twitter0a.png"/></a> </p>
<div class="tweets" id="anutron-tweets">&nbsp;</div>
</p>
</div>
</div>
</div>
<div class="twidget">
<div class="border">
<div class="center inner">
<h3>Guillermo Rauch</h3>
<p>                   <a href="http://www.twitter.com/rauchg"><img src="http://c5.simulacre.org/images/twitter0a.png"/></a> </p>
<div class="tweets" id="rauchg-tweets">&nbsp;</div>
</p>
</div>
</div>
</div>
<div class="twidget">
<div class="border">
<div class="center inner">
<h3>David Walsh</h3>
<p>                   <a href="http://www.twitter.com/davidwalshblog"><img src="http://c5.simulacre.org/images/twitter0a.png"/></a> </p>
<div class="tweets" id="davidwalshblog-tweets">&nbsp;</div>
</p>
</div>
</div>
</div>
</div>
<hr />
<div id="readme" class="blob">
<div class="wikistyle">
<h2>How to use</h2>
<ol>
<li>
<p>Reference the Twidget module in your html page</p>
<pre class="html">
&lt;script type="text/javascript" charset="utf-8" src="js/Twidget.js"&gt;&lt;/script&gt;
			</pre>
</li>
<li>
<p>Instantiate a Twidget object once the domready event has been fired:</p>
<pre class="js">
window.addEvent("domready", function(){
    new Twidget({ user: "mootools", count : "5" });
});
			</pre>
</li>
</ol>
<h2>Syntax</h2>
<pre class="js">
new Twidget([options]);
		</pre>
<p class="tweet">This is a <a  href="http://search.twitter.com/search?q=%23tweet">#tweet</a>  that mentions <a href="http://twitter.com/mootools">@mootools</a>  <a href="http://mootools.net">http://mootools.net</a>.<span  class="when">3 days ago</span></p>
<h2>Arguments</h2>
<ol>
<li>options &#8211; (object, optional) the options described below:</li>
</ol>
<h2>Options</h2>
<ul>
<li>user      : (string)  The twitter username <em>defaults to</em> mootools</li>
<li>count     : (number) The maximum number of tweets to retrieve. <em>defaults to</em> 5</li>
<li>element   : (element) The container element in which to insert the tweets. <em>defaults to</em> $(&#8220;tweets&#8221;);</li>
</ul>
<h2>Events</h2>
<ul>
<li>request   : onRequest() &#8211; Fired when the request to twitter.com is executed</li>
<li>cancel    : onCancel() &#8211; Fired if the request to twitter.com fails</li>
<li>complete  : onComplete() &#8211; Fires after the tweets have been inserted into the page.</li>
</ul>
<h2>Default Markup</h2>
<ul>
<li>All @replies will be wrapped in anchor elements.</li>
<li>All #hashtags will be wrapped in anchor elements.</li>
<li>All http/https links will be wrapped in anchor elements.</li>
<li>Each tweet will be wrapped in a p element with a &#8220;tweet&#8221; class</li>
<li>The time/date, relative to now, of the tweet will be appended to the end of the tweet and wrapped in a  span element with a &#8220;when&#8221; class</li>
</ul>
<h3>Example</h3>
<p class="tweet">This is a <a  href="http://search.twitter.com/search?q=%23tweet">#tweet</a>  that mentions <a href="http://twitter.com/mootools">@mootools</a>  <a href="http://mootools.net">http://mootools.net</a>. <span  class="when">3 days ago</span></p>
<pre class="html">
&lt;p class="tweet"&gt;This is a &lt;a href="http://search.twitter.com/search?q=%23tweet"&gt;#tweet&lt;/a&gt; that mentions &lt;a href="http://twitter.com/mootools"&gt;@mootools&lt;/a&gt; &lt;a href="http://mootools.net"&gt;http://mootools.net&lt;/a&gt;.&lt;span class="when"&gt;3 days ago&lt;/span&gt;&lt;/p&gt;
		</pre>
<h3>Example CSS</h3>
<p>The CSS used to layout the widgets on this page is below.</p>
<pre class="css">
div.twidgets .spinner {
 	position: absolute;
 	z-index: 999;
 	opacity: 0.4;
 	filter: alpha(opacity=40);
 	-ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=40);
 	background-color: black;
 	-moz-border-radius: 5px;
     -webkit-border-radius: 5px;
     -border-radius: 5px;
 }
 div.twidgets .spinner-msg {
 	text-align: center;
 	font-weight: bold;
 }

 div.twidgets .spinner-img {
 	background: transparent url(http://c5.simulacre.org/images/twidget/spinner.gif) no-repeat -10px 0px;
 	width: 80px;
 	height: 24px;
 	margin: 0 auto;
 }

 .twidgets:after{ content: "."; display: block; clear: both; visibility: hidden; line-height: 0; height: 0; }

 div.twidget{
     border:3px solid #ebebeb;
     padding:0;
     margin:10px;

     -moz-border-radius: 5px;
     -webkit-border-radius: 5px;
     -border-radius: 5px;
     width:200px;
     text-align:center;

     float:left;
     position:relative;
 }
 div.twidget div.border{
     -moz-border-radius: 5px;
     -webkit-border-radius: 5px;
     -border-radius: 5px;
     border:1px solid #8d8d8d;
 }
 div.twidget div.inner{
     padding:5px;
     -moz-border-radius: 5px;
     -webkit-border-radius: 5px;
     -border-radius: 5px;
     border-top:2px solid #fff;
     border-bottom:2px solid #fff;
     background: #f3f3f3 url(http://c5.simulacre.org/images/wdgtbg.gif) repeat-x 0px 0px;
 }

 div.twidget h3{
     margin:0 0 10px;
     font-size:11pt;
     text-align:left;
 }

 div.twidget a{ text-decoration: none; outline: 0; -moz-outline: 0; color:#dc2509; }
 div.twidget a:hover{ position: relative; left:1px; }
 div.twidget a:active{ top:1px;}
 div.twidget img{ border:none;}

 .tweets{
   text-align:left;
   font-size:8pt;
 }

 .tweets .posted, .tweets .when{
   font-size:7pt;
   white-space:nowrap;
   margin:0.25em 0;
 }
		</pre>
<h2>Changing Links</h2>
<p>If the <a href="http://mootools.net/forge/p/tweetify">Tweetify</a> module is available Twidget will use it to construct the links, so change Tweetify if you have it installed.</p>
<p>If Tweetify is not available Twidget will use its own internal method <em>linkify</em>. In that case simply extend Twidget and write your own <em>linkify</em> method.</p>
<h2>Changing Wrapper Markup</h2>
<p>Twidget will wrap all links in a p element with a &#8220;tweet&#8221; class. The time/date, relative to now, when the tweet was created will be appended to the end of the tweet and wrapped in a span element with a &#8220;when&#8221; class.</p>
<p>The element described above are added by the internal <em>markup</em> method, so to change the markup, just extend Twidget and write your own <em>markup</em> method.</p>
<h2>Known Issues</h2>
<p><a href="http://apiwiki.twitter.com/Twitter-REST-API-Method:-statuses-user_timeline?SearchFor=user_timeline&amp;sp=1">Retweets not included</a></p>
</p></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://simulacre.org/twidget/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
