mirror of
https://github.com/samsonjs/blog.git
synced 2026-03-25 09:05:51 +00:00
638 lines
30 KiB
HTML
638 lines
30 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<title>sjs: Python and Ruby brain dump</title>
|
|
|
|
<link rel="openid.server" href="http://www.myopenid.com/server" />
|
|
<link rel="openid.delegate" href="http://sami-samhuri.myopenid.com/" />
|
|
<meta http-equiv="X-XRDS-Location" content="http://sami-samhuri.myopenid.com/xrds" />
|
|
|
|
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
|
<link rel="alternate" type="application/rss+xml" title="RSS" href="http://feeds.feedburner.com/sjs" />
|
|
|
|
|
|
<script src="http://web.archive.org/web/20080820115439js_/http://sami.samhuri.net/javascripts/prototype.js" type="text/javascript"></script>
|
|
|
|
<link href="http://web.archive.org/web/20080820115439cs_/http://sami.samhuri.net/stylesheets/application.css" rel="stylesheet" type="text/css" />
|
|
</head>
|
|
<body>
|
|
<!-- BEGIN WAYBACK TOOLBAR INSERT -->
|
|
|
|
<script type="text/javascript" src="http://staticweb.archive.org/js/disclaim-element.js" ></script>
|
|
<script type="text/javascript" src="http://staticweb.archive.org/js/graph-calc.js" ></script>
|
|
<script type="text/javascript" src="http://staticweb.archive.org/jflot/jquery.min.js" ></script>
|
|
<script type="text/javascript">
|
|
//<![CDATA[
|
|
var firstDate = 820454400000;
|
|
var lastDate = 1325375999999;
|
|
var wbPrefix = "http://web.archive.org/web/";
|
|
var wbCurrentUrl = "http://sami.samhuri.net/2007/9/26/python-and-ruby-brain-dump";
|
|
|
|
var curYear = -1;
|
|
var curMonth = -1;
|
|
var yearCount = 16;
|
|
var firstYear = 1996;
|
|
var imgWidth=400;
|
|
var yearImgWidth = 25;
|
|
var monthImgWidth = 2;
|
|
var trackerVal = "none";
|
|
var displayDay = "20";
|
|
var displayMonth = "Aug";
|
|
var displayYear = "2008";
|
|
var prettyMonths = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
|
|
|
|
function showTrackers(val) {
|
|
if(val == trackerVal) {
|
|
return;
|
|
}
|
|
if(val == "inline") {
|
|
document.getElementById("displayYearEl").style.color = "#ec008c";
|
|
document.getElementById("displayMonthEl").style.color = "#ec008c";
|
|
document.getElementById("displayDayEl").style.color = "#ec008c";
|
|
} else {
|
|
document.getElementById("displayYearEl").innerHTML = displayYear;
|
|
document.getElementById("displayYearEl").style.color = "#ff0";
|
|
document.getElementById("displayMonthEl").innerHTML = displayMonth;
|
|
document.getElementById("displayMonthEl").style.color = "#ff0";
|
|
document.getElementById("displayDayEl").innerHTML = displayDay;
|
|
document.getElementById("displayDayEl").style.color = "#ff0";
|
|
}
|
|
document.getElementById("wbMouseTrackYearImg").style.display = val;
|
|
document.getElementById("wbMouseTrackMonthImg").style.display = val;
|
|
trackerVal = val;
|
|
}
|
|
function getElementX2(obj) {
|
|
var thing = jQuery(obj);
|
|
if((thing == undefined)
|
|
|| (typeof thing == "undefined")
|
|
|| (typeof thing.offset == "undefined")) {
|
|
return getElementX(obj);
|
|
}
|
|
return Math.round(thing.offset().left);
|
|
}
|
|
function trackMouseMove(event,element) {
|
|
|
|
var eventX = getEventX(event);
|
|
var elementX = getElementX2(element);
|
|
var xOff = eventX - elementX;
|
|
if(xOff < 0) {
|
|
xOff = 0;
|
|
} else if(xOff > imgWidth) {
|
|
xOff = imgWidth;
|
|
}
|
|
var monthOff = xOff % yearImgWidth;
|
|
|
|
var year = Math.floor(xOff / yearImgWidth);
|
|
var yearStart = year * yearImgWidth;
|
|
var monthOfYear = Math.floor(monthOff / monthImgWidth);
|
|
if(monthOfYear > 11) {
|
|
monthOfYear = 11;
|
|
}
|
|
// 1 extra border pixel at the left edge of the year:
|
|
var month = (year * 12) + monthOfYear;
|
|
var day = 1;
|
|
if(monthOff % 2 == 1) {
|
|
day = 15;
|
|
}
|
|
var dateString =
|
|
zeroPad(year + firstYear) +
|
|
zeroPad(monthOfYear+1,2) +
|
|
zeroPad(day,2) + "000000";
|
|
|
|
var monthString = prettyMonths[monthOfYear];
|
|
document.getElementById("displayYearEl").innerHTML = year + 1996;
|
|
document.getElementById("displayMonthEl").innerHTML = monthString;
|
|
// looks too jarring when it changes..
|
|
//document.getElementById("displayDayEl").innerHTML = zeroPad(day,2);
|
|
|
|
var url = wbPrefix + dateString + '/' + wbCurrentUrl;
|
|
document.getElementById('wm-graph-anchor').href = url;
|
|
|
|
//document.getElementById("wmtbURL").value="evX("+eventX+") elX("+elementX+") xO("+xOff+") y("+year+") m("+month+") monthOff("+monthOff+") DS("+dateString+") Moy("+monthOfYear+") ms("+monthString+")";
|
|
if(curYear != year) {
|
|
var yrOff = year * yearImgWidth;
|
|
document.getElementById("wbMouseTrackYearImg").style.left = yrOff + "px";
|
|
curYear = year;
|
|
}
|
|
if(curMonth != month) {
|
|
var mtOff = year + (month * monthImgWidth) + 1;
|
|
document.getElementById("wbMouseTrackMonthImg").style.left = mtOff + "px";
|
|
curMonth = month;
|
|
}
|
|
}
|
|
//]]>
|
|
</script>
|
|
|
|
<style type="text/css">body{margin-top:0!important;padding-top:0!important;min-width:800px!important;}#wm-ipp a:hover{text-decoration:underline!important;}</style>
|
|
<div id="wm-ipp" style="display:none; position:relative;padding:0 5px;min-height:70px;min-width:800px; z-index:9000;">
|
|
<div id="wm-ipp-inside" style="position:fixed;padding:0!important;margin:0!important;width:97%;min-width:780px;border:5px solid #000;border-top:none;background-image:url(http://staticweb.archive.org/images/toolbar/wm_tb_bk_trns.png);text-align:center;-moz-box-shadow:1px 1px 3px #333;-webkit-box-shadow:1px 1px 3px #333;box-shadow:1px 1px 3px #333;font-size:11px!important;font-family:'Lucida Grande','Arial',sans-serif!important;">
|
|
<table style="border-collapse:collapse;margin:0;padding:0;width:100%;"><tbody><tr>
|
|
<td style="padding:10px;vertical-align:top;min-width:110px;">
|
|
<a href="http://wayback.archive.org/web/" title="Wayback Machine home page" style="background-color:transparent;border:none;"><img src="http://staticweb.archive.org/images/toolbar/wayback-toolbar-logo.png" alt="Wayback Machine" width="110" height="39" border="0"/></a>
|
|
</td>
|
|
<td style="padding:0!important;text-align:center;vertical-align:top;width:100%;">
|
|
|
|
<table style="border-collapse:collapse;margin:0 auto;padding:0;width:570px;"><tbody><tr>
|
|
<td style="padding:3px 0;" colspan="2">
|
|
<form target="_top" method="get" action="http://wayback.archive.org/web/form-submit.jsp" name="wmtb" id="wmtb" style="margin:0!important;padding:0!important;"><input type="text" name="url" id="wmtbURL" value="http://sami.samhuri.net/2007/9/26/python-and-ruby-brain-dump" style="width:400px;font-size:11px;font-family:'Lucida Grande','Arial',sans-serif;" onfocus="javascript:this.focus();this.select();" /><input type="hidden" name="type" value="replay" /><input type="hidden" name="date" value="20080820115439" /><input type="submit" value="Go" style="font-size:11px;font-family:'Lucida Grande','Arial',sans-serif;margin-left:5px;" /><span id="wm_tb_options" style="display:block;"></span></form>
|
|
</td>
|
|
<td style="vertical-align:bottom;padding:5px 0 0 0!important;" rowspan="2">
|
|
<table style="border-collapse:collapse;width:110px;color:#99a;font-family:'Helvetica','Lucida Grande','Arial',sans-serif;"><tbody>
|
|
|
|
<!-- NEXT/PREV MONTH NAV AND MONTH INDICATOR -->
|
|
<tr style="width:110px;height:16px;font-size:10px!important;">
|
|
<td style="padding-right:9px;font-size:11px!important;font-weight:bold;text-transform:uppercase;text-align:right;white-space:nowrap;overflow:visible;" nowrap="nowrap">
|
|
|
|
Jul
|
|
|
|
</td>
|
|
<td id="displayMonthEl" style="background:#000;color:#ff0;font-size:11px!important;font-weight:bold;text-transform:uppercase;width:34px;height:15px;padding-top:1px;text-align:center;" title="You are here: 11:54:39 Aug 20, 2008">AUG</td>
|
|
<td style="padding-left:9px;font-size:11px!important;font-weight:bold;text-transform:uppercase;white-space:nowrap;overflow:visible;" nowrap="nowrap">
|
|
|
|
<a href="http://sami.samhuri.net/2007/9/26/python-and-ruby-brain-dump" style="text-decoration:none;color:#33f;font-weight:bold;background-color:transparent;border:none;" title="30 Apr 2009"><strong>APR</strong></a>
|
|
|
|
</td>
|
|
</tr>
|
|
|
|
<!-- NEXT/PREV CAPTURE NAV AND DAY OF MONTH INDICATOR -->
|
|
<tr>
|
|
<td style="padding-right:9px;white-space:nowrap;overflow:visible;text-align:right!important;vertical-align:middle!important;" nowrap="nowrap">
|
|
|
|
<img src="http://staticweb.archive.org/images/toolbar/wm_tb_prv_off.png" alt="Previous capture" width="14" height="16" border="0" />
|
|
|
|
</td>
|
|
<td id="displayDayEl" style="background:#000;color:#ff0;width:34px;height:24px;padding:2px 0 0 0;text-align:center;font-size:24px;font-weight: bold;" title="You are here: 11:54:39 Aug 20, 2008">20</td>
|
|
<td style="padding-left:9px;white-space:nowrap;overflow:visible;text-align:left!important;vertical-align:middle!important;" nowrap="nowrap">
|
|
|
|
<a href="http://sami.samhuri.net/2007/9/26/python-and-ruby-brain-dump" title="13:09:14 Apr 30, 2009" style="background-color:transparent;border:none;"><img src="http://staticweb.archive.org/images/toolbar/wm_tb_nxt_on.png" alt="Next capture" width="14" height="16" border="0"/></a>
|
|
|
|
</td>
|
|
</tr>
|
|
|
|
<!-- NEXT/PREV YEAR NAV AND YEAR INDICATOR -->
|
|
<tr style="width:110px;height:13px;font-size:9px!important;">
|
|
<td style="padding-right:9px;font-size:11px!important;font-weight: bold;text-align:right;white-space:nowrap;overflow:visible;" nowrap="nowrap">
|
|
|
|
2007
|
|
|
|
</td>
|
|
<td id="displayYearEl" style="background:#000;color:#ff0;font-size:11px!important;font-weight: bold;padding-top:1px;width:34px;height:13px;text-align:center;" title="You are here: 11:54:39 Aug 20, 2008">2008</td>
|
|
<td style="padding-left:9px;font-size:11px!important;font-weight: bold;white-space:nowrap;overflow:visible;" nowrap="nowrap">
|
|
|
|
2009
|
|
|
|
</td>
|
|
</tr>
|
|
</tbody></table>
|
|
</td>
|
|
|
|
</tr>
|
|
<tr>
|
|
<td style="vertical-align:middle;padding:0!important;">
|
|
<a href="http://wayback.archive.org/web/20080820115439*/http://sami.samhuri.net/2007/9/26/python-and-ruby-brain-dump" style="color:#33f;font-size:11px;font-weight:bold;background-color:transparent;border:none;" title="See a list of every capture for this URL"><strong>2 captures</strong></a>
|
|
<div style="margin:0!important;padding:0!important;color:#666;font-size:9px;padding-top:2px!important;white-space:nowrap;" title="Timespan for captures of this URL">20 Aug 08 - 30 Apr 09</div>
|
|
</td>
|
|
<td style="padding:0!important;">
|
|
<a style="position:relative; white-space:nowrap; width:400px;height:27px;" href="" id="wm-graph-anchor">
|
|
<div id="wm-ipp-sparkline" style="position:relative; white-space:nowrap; width:400px;height:27px;background-color:#fff;cursor:pointer;border-right:1px solid #ccc;" title="Explore captures for this URL">
|
|
<img id="sparklineImgId" style="position:absolute; z-index:9012; top:0px; left:0px;"
|
|
onmouseover="showTrackers('inline');"
|
|
onmouseout="showTrackers('none');"
|
|
onmousemove="trackMouseMove(event,this)"
|
|
alt="sparklines"
|
|
width="400"
|
|
height="27"
|
|
border="0"
|
|
src="http://wayback.archive.org/jsp/graph.jsp?graphdata=400_27_1996:-1:000000000000_1997:-1:000000000000_1998:-1:000000000000_1999:-1:000000000000_2000:-1:000000000000_2001:-1:000000000000_2002:-1:000000000000_2003:-1:000000000000_2004:-1:000000000000_2005:-1:000000000000_2006:-1:000000000000_2007:-1:000000000000_2008:7:000000010000_2009:-1:000100000000_2010:-1:000000000000_2011:-1:000000000000"></img>
|
|
<img id="wbMouseTrackYearImg"
|
|
style="display:none; position:absolute; z-index:9010;"
|
|
width="25"
|
|
height="27"
|
|
border="0"
|
|
src="http://staticweb.archive.org/images/toolbar/transp-yellow-pixel.png"></img>
|
|
<img id="wbMouseTrackMonthImg"
|
|
style="display:none; position:absolute; z-index:9011; "
|
|
width="2"
|
|
height="27"
|
|
border="0"
|
|
src="http://staticweb.archive.org/images/toolbar/transp-red-pixel.png"></img>
|
|
</div>
|
|
</a>
|
|
|
|
</td>
|
|
</tr></tbody></table>
|
|
</td>
|
|
<td style="text-align:right;padding:5px;width:65px;font-size:11px!important;">
|
|
<a href="javascript:;" onclick="document.getElementById('wm-ipp').style.display='none';" style="display:block;padding-right:18px;background:url(http://staticweb.archive.org/images/toolbar/wm_tb_close.png) no-repeat 100% 0;color:#33f;font-family:'Lucida Grande','Arial',sans-serif;margin-bottom:23px;background-color:transparent;border:none;" title="Close the toolbar">Close</a>
|
|
<a href="http://faq.web.archive.org/" style="display:block;padding-right:18px;background:url(http://staticweb.archive.org/images/toolbar/wm_tb_help.png) no-repeat 100% 0;color:#33f;font-family:'Lucida Grande','Arial',sans-serif;background-color:transparent;border:none;" title="Get some help using the Wayback Machine">Help</a>
|
|
</td>
|
|
</tr></tbody></table>
|
|
|
|
</div>
|
|
</div>
|
|
<script type="text/javascript">
|
|
var wmDisclaimBanner = document.getElementById("wm-ipp");
|
|
if(wmDisclaimBanner != null) {
|
|
disclaimElement(wmDisclaimBanner);
|
|
}
|
|
</script>
|
|
<!-- END WAYBACK TOOLBAR INSERT -->
|
|
|
|
<div id="container">
|
|
<div id="header">
|
|
<h1><span><a href="http://sami.samhuri.net/">sjs</a></span></h1>
|
|
<h2>geeky ramblings</h2>
|
|
</div>
|
|
|
|
<div id="page">
|
|
<div id="content">
|
|
|
|
|
|
<!--
|
|
<rdf:RDF
|
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
|
xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"
|
|
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
|
<rdf:Description
|
|
rdf:about=""
|
|
trackback:ping=""
|
|
dc:title="Python and Ruby brain dump"
|
|
dc:identifier="/2007/9/26/python-and-ruby-brain-dump"
|
|
dc:description="<p>It turns out that <a href="http://dev.laptop.org/git?p=security;a=blob;f=bitfrost.txt">Python is the language of choice on the OLPC</a>, both for implementing applications and exposing to the users. There is a view so..."
|
|
dc:creator="sjs"
|
|
dc:date="September 26, 2007 10:34" />
|
|
</rdf:RDF>
|
|
-->
|
|
|
|
<div class="hentry" id="article-312">
|
|
<h2 class="entry-title">
|
|
<a href="http://sami.samhuri.net/2007/9/26/python-and-ruby-brain-dump">Python and Ruby brain dump</a>
|
|
|
|
<span class="comment_count">0</span>
|
|
|
|
</h2>
|
|
<div class="vcard">
|
|
Posted by <span class="fn">sjs</span>
|
|
</div>
|
|
<abbr class="published" title="2007-09-26T10:34:00+00:00">on Wednesday, September 26</abbr>
|
|
<br class="clear" />
|
|
<div class="entry-content">
|
|
<p>It turns out that <a href="http://dev.laptop.org/git?p=security;a=blob;f=bitfrost.txt">Python is the language of choice on the OLPC</a>, both for implementing applications and exposing to the users. There is a view source key available. I think Python is a great choice.</p>
|
|
|
|
|
|
<p>I've been using Ruby almost exclusively for over a year but the last week I've been doing a personal project in Python using <a href="https://storm.canonical.com/">Storm</a> (which is pretty nice btw) and <a href="http://excess.org/urwid/">urwid</a>. I'm remembering why I liked Python when I first learned it a few years ago. It may not be as elegant as Ruby, conceptually, but it sure is fun to code in. It really is executable pseudo-code for the most part.</p>
|
|
|
|
|
|
<p>I'm tripping up by typing <code>obj.setattr^W^Wsetattr(obj</code> and <code>def self.foo^W^Wfoo(self</code> but other than that I haven't had trouble switching back into Python. I enjoy omitting <code>end</code> statements. I enjoy Python's lack of curly braces, apart from literal dicts. I hate the fact that in Emacs, in python-mode, <code>indent-region</code> only seems to piss me off (or <code>indent-*</code> really, anything except TAB). I really like list comprehensions.</p>
|
|
|
|
|
|
<p>The two languages are so similar that at a glance you may think there are only shallow differences between the languages. People are always busy arguing about the boring things that every language can do (web frameworks anyone?) while ignoring the interesting differences between the languages and their corresponding ecosystems.</p>
|
|
|
|
|
|
<p>Python has more libraries available as it's the more popular language. The nature of software written in the languages is different though as the languages themselves are quite different.</p>
|
|
|
|
|
|
<p>Ruby has some Perl-ish features that make it a good sysadmin scripting language, hence we see nice tools such as <a href="http://www.capify.org/">Capistrano</a> and <a href="http://god.rubyforge.org/">god</a> written in Ruby and used by projects written in other languages.</p>
|
|
|
|
|
|
<p>Python is faster than Ruby so it is open to classes of software that would be cumbersome in Ruby. Source control, for example. You can write a slow SCM in Python though, as <a href="http://bazaar-vcs.org/">Bazaar</a> demonstrates. You could probably write a passable one in Ruby as well. If it didn't quite perform well enough right now it should fare better in a year's time.</p>
|
|
|
|
|
|
<p>I still think that my overall joy is greater when using Ruby, but if Ruby isn't the right tool for the job I'll probably look to Python next (unless some feature of the problem indicates something else would be more appropriate). The reason I chose Python for my current project is because of libs like urwid and I needed an excuse to try out Storm and brush up on my Python. ;-)</p>
|
|
|
|
</div>
|
|
<ul class="meta">
|
|
|
|
|
|
<li>
|
|
Tags: <a href="http://sami.samhuri.net/tags/python">python</a> <a href="http://sami.samhuri.net/tags/ruby">ruby</a>
|
|
</li>
|
|
|
|
<li>
|
|
Meta:
|
|
|
|
<a href="http://sami.samhuri.net/2007/9/26/python-and-ruby-brain-dump">0 comments</a>,
|
|
|
|
<a href="http://sami.samhuri.net/2007/9/26/python-and-ruby-brain-dump">permalink</a>
|
|
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
|
|
<h5><a name="comments">Comments</a></h5>
|
|
<p><a href="http://sami.samhuri.net/2007/9/26/python-and-ruby-brain-dump#comment-form">Leave a response</a></p>
|
|
<div id="comments_div">
|
|
<ol id="comments" class="comments">
|
|
|
|
</ol>
|
|
</div>
|
|
|
|
<form id="comment-form" method="post" action="http://sami.samhuri.net/2007/9/26/python-and-ruby-brain-dump/comments#comment-form">
|
|
<fieldset>
|
|
<legend>Comment</legend>
|
|
<p>
|
|
<label class="text" for="comment_author">Name:</label><br/>
|
|
<input type="text" id="comment_author" name="comment[author]" value="" />
|
|
</p>
|
|
<p>
|
|
<label class="text" for="comment_author_email">Email Address:</label><br />
|
|
<input type="text" id="comment_author_email" name="comment[author_email]" value="" />
|
|
</p>
|
|
<p>
|
|
<label class="text" for="comment_author_url">Website:</label><br />
|
|
<input type="text" id="comment_author_url" name="comment[author_url]" value="" />
|
|
</p>
|
|
<p>
|
|
<label class="text" for="comment_body">Comment:</label><br />
|
|
<textarea id="comment_body" name="comment[body]"></textarea>
|
|
</p>
|
|
<div class="formactions">
|
|
<input type="submit" value="Post comment" class="submit" />
|
|
</div>
|
|
</fieldset>
|
|
</form>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
<div id="sidebar">
|
|
|
|
<div class="sidebar-node">
|
|
<div id="search" class="search">
|
|
<form action="http://sami.samhuri.net/search" id="sform" method="get" name="sform">
|
|
<p><input type="text" id="q" name="q" value="" /></p>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="sidebar-node">
|
|
<h3>Sections</h3>
|
|
<ul>
|
|
|
|
<li><a href="http://sami.samhuri.net/">geeky ramblings</a> (15)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/emacs">Emacs</a> (3)</li>
|
|
|
|
</ul>
|
|
</div>
|
|
|
|
|
|
|
|
<div class="sidebar-node">
|
|
<h3>Tags</h3>
|
|
<ul>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/activerecord">activerecord</a> (2)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/alsa">alsa</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/amusement">amusement</a> (6)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/apple">apple</a> (6)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/arc">arc</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/bdd">bdd</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/broken">broken</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/browsers">browsers</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/buffalo">buffalo</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/bundle">bundle</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/cheat">cheat</a> (3)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/coding">coding</a> (22)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/cool">cool</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/coverflow">coverflow</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/crazy">crazy</a> (2)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/digg">digg</a> (2)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/drm">drm</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/dtrace">dtrace</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/dubai">dubai</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/elschemo">elschemo</a> (2)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/emacs">emacs</a> (11)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/english">english</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/extensions">extensions</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/firefox">firefox</a> (3)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/framework">framework</a> (2)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/funny">funny</a> (2)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/fuse">fuse</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/games">games</a> (2)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/gentoo">gentoo</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/german">german</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/gtkpod">gtkpod</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/haskell">haskell</a> (7)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/humans">humans</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/injury">injury</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/inspirado">inspirado</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/iphone">iphone</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/itunes">itunes</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/i_laughed_i_cried">i_laughed_i_cried</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/keyboard">keyboard</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/keyboard%20shortcuts">keyboard shortcuts</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/lemmings">lemmings</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/life">life</a> (13)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/linux">linux</a> (8)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/lisp">lisp</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/lisp%20arc">lisp arc</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/mac%20os%20x">mac os x</a> (6)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/mediawiki">mediawiki</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/mephisto">mephisto</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/migrations">migrations</a> (2)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/munich">munich</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/mysql">mysql</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/networking">networking</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/opera">opera</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/pedantry">pedantry</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/people">people</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/photo">photo</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/php">php</a> (4)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/programming">programming</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/project%20euler">project euler</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/propaganda">propaganda</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/python">python</a> (2)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/quickcheck">quickcheck</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/rails">rails</a> (18)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/rails%20on%20rules">rails on rules</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/regex">regex</a> (2)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/regular%20expressions">regular expressions</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/rest">rest</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/rtfm">rtfm</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/ruby">ruby</a> (14)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/rushcheck">rushcheck</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/sake">sake</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/scheme">scheme</a> (4)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/school">school</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/seaside">seaside</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/secure%20associations">secure associations</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/seekport">seekport</a> (2)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/snippets">snippets</a> (3)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/ssh">ssh</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/tagify">tagify</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/technology">technology</a> (6)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/test/spec">test/spec</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/textmate">textmate</a> (7)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/tips">tips</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/typo">typo</a> (2)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/ubuntu">ubuntu</a> (2)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/usability">usability</a> (2)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/userscript">userscript</a> (2)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/vacation">vacation</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/vim">vim</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/volume">volume</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/web">web</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/web%20objects">web objects</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/wikipediafs">wikipediafs</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/windows">windows</a> (2)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/work">work</a> (1)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/zend">zend</a> (2)</li>
|
|
|
|
<li><a href="http://sami.samhuri.net/tags/zsh">zsh</a> (1)</li>
|
|
|
|
</ul>
|
|
</div>
|
|
|
|
|
|
<div class="sidebar-node">
|
|
<h3>Friends & cool blogs</h3>
|
|
<ul>
|
|
<li><a href="http://jim.roepcke.com/">have browser, will travel</a></li>
|
|
<li><a href="http://cassandrahill.blogspot.com/">cj's chatter</a></li>
|
|
</ul>
|
|
</div>
|
|
|
|
<div class="sidebar-node">
|
|
<p><a href="http://twitter.com/_sjs">
|
|
<img src="http://web.archive.org/web/20080820115439im_/http://sami.samhuri.net/assets/2007/6/26/icon_twitter.png" alt="[t]" /> twitter</a></p>
|
|
</div>
|
|
|
|
<div class="sidebar-node">
|
|
<p><a href="http://mephistoblog.com/" class="powered"><img alt="mephisto-badge-tiny" src="http://web.archive.org/web/20080820115439im_/http://sami.samhuri.net/images/mephisto-badge-tiny.png" /></a></p>
|
|
</div>
|
|
|
|
</div>
|
|
<br style="clear:both;" />
|
|
|
|
</div>
|
|
|
|
<div id="footer">
|
|
<hr />
|
|
<p><a href="http://sami.samhuri.net/">sjs</a></p>
|
|
<ul>
|
|
<li>powered by <a href="http://mephistoblog.com/">Mephisto</a> /
|
|
styled with <a href="http://quotedprintable.com/pages/scribbish">scribbish</a></li>
|
|
</ul>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<script src="http://web.archive.org/web/20080820115439js_/http://www.google-analytics.com/urchin.js" type="text/javascript"> </script>
|
|
<script type="text/javascript"> _uacct = "UA-214054-3"; urchinTracker(); </script>
|
|
<script src="http://web.archive.org/web/20080820115439js_/http://feeds.feedburner.com/~s/sjs" type="text/javascript" charset="utf-8"></script>
|
|
|
|
</body>
|
|
</html>
|
|
|
|
|
|
|
|
|
|
|
|
<!--
|
|
FILE ARCHIVED ON 11:54:39 Aug 20, 2008 AND RETRIEVED FROM THE
|
|
INTERNET ARCHIVE ON 3:01:48 Aug 21, 2011.
|
|
JAVASCRIPT APPENDED BY WAYBACK MACHINE, COPYRIGHT INTERNET ARCHIVE.
|
|
|
|
ALL OTHER CONTENT MAY ALSO BE PROTECTED BY COPYRIGHT (17 U.S.C.
|
|
SECTION 108(a)(3)).
|
|
-->
|