<?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>Wil Tan &#187; Uncategorized</title>
	<atom:link href="http://dready.org/blog/category/uncategorized/feed/" rel="self" type="application/rss+xml" />
	<link>http://dready.org/blog</link>
	<description>musings on internationalized identifiers: domain names, OpenID, TLDs</description>
	<lastBuildDate>Thu, 15 Dec 2011 03:42:26 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>What&#8217;s with the J in Emails?</title>
		<link>http://dready.org/blog/2011/12/01/whats-with-the-j/</link>
		<comments>http://dready.org/blog/2011/12/01/whats-with-the-j/#comments</comments>
		<pubDate>Thu, 01 Dec 2011 05:52:23 +0000</pubDate>
		<dc:creator>wil</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[i18n]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[emoticons]]></category>
		<category><![CDATA[font]]></category>
		<category><![CDATA[outlook]]></category>
		<category><![CDATA[windings]]></category>

		<guid isPermaLink="false">http://dready.org/blog/?p=292</guid>
		<description><![CDATA[This has bothered me ever since I saw it appearing in emails:
I&#8217;d love that J
WTF is that &#8220;J&#8221;? Does it stand for &#8220;joke&#8221;? &#8220;Jesus&#8221;?
After a while it became apparent that it&#8217;s somewhat equivalent to a smiley face, but I was still puzzled by it until I peeked under the hood today and found an email [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>This has bothered me ever since I saw it appearing in emails:</p>
<blockquote><p>I&#8217;d love that J</p></blockquote>
<p>WTF is that &#8220;J&#8221;? Does it stand for &#8220;joke&#8221;? &#8220;Jesus&#8221;?</p>
<p>After a while it became apparent that it&#8217;s somewhat equivalent to a smiley face, but I was still puzzled by it until I peeked under the hood today and found an email sent from Outlook with the following bit in the HTML part:</p>
<pre class="code">I'd love that &lt;span style="font-family:Wingdings"&gt;J&lt;/span&gt;</pre>
<p>A-ha!</p>
<p>When rendered using the Windings font, indeed you get a smiley face:</p>
<pre class="code">I'd love that <span style="font-family:Wingdings">J</span></pre>
<p>And the <code>text/plain</code> part of the email actually does contain the regular <code>&#58;)</code>, so you&#8217;d only see the &#8220;J&#8221; showing up if your device is trying to display the HTML version but it doesn&#8217;t have the Windings font available.</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://dready.org/blog/2011/12/01/whats-with-the-j/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Find For-Else Statements in Python Code</title>
		<link>http://dready.org/blog/2011/10/24/find-for-else-statements-in-python-code/</link>
		<comments>http://dready.org/blog/2011/10/24/find-for-else-statements-in-python-code/#comments</comments>
		<pubDate>Mon, 24 Oct 2011 12:23:57 +0000</pubDate>
		<dc:creator>wil</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://dready.org/blog/?p=287</guid>
		<description><![CDATA[I came across Ned Batchelder&#8217;s post on the for/else construct, which explains its purpose in a different way from the standard Python docs. I&#8217;m fairly certain that more than once in my Python career I have been confused, or as one of the commenters put it: &#8220;Whenever I see it, I usually require an extra [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>I came across <a href="http://nedbatchelder.com/blog/201110/forelse.html">Ned Batchelder&#8217;s post</a> on the for/else construct, which explains its purpose in a different way from the standard Python docs. I&#8217;m fairly certain that more than once in my Python career I have been confused, or as one of the commenters put it: &#8220;Whenever I see it, I usually require an extra mental cycle to remember what it does&#8221;.</p>
<p>It got me paranoid and I wanted to quickly scan through my code to make sure that I haven&#8217;t got a lurking bug somewhere. This is the script that I came up with, which takes a <code>.py</code> file and look in its <acronym title="Abstract Syntax Tree">AST</acronym> to identify such constructs and report them:</p>
<p><script src="https://gist.github.com/1308847.js?file=find_forelse.py"></script></p>
<p>This is the first time I&#8217;m using the <code>ast</code> module, and it took a grand total of 30 minutes to find the module, read the documentation, experiment on the shell and come up with the script. I&#8217;d say that&#8217;s a pretty good testament to the power and intuitiveness of Python!</p>
<p>Hope you find it useful!</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://dready.org/blog/2011/10/24/find-for-else-statements-in-python-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hash Ring fork</title>
		<link>http://dready.org/blog/2010/07/10/hash-ring-fork/</link>
		<comments>http://dready.org/blog/2010/07/10/hash-ring-fork/#comments</comments>
		<pubDate>Sat, 10 Jul 2010 10:11:17 +0000</pubDate>
		<dc:creator>wil</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[hash_ring]]></category>
		<category><![CDATA[pip]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://dready.org/blog/?p=281</guid>
		<description><![CDATA[Amir Salihefendic&#8217;s hash_ring module is awesome, but it doesn&#8217;t install cleanly with pip (dies with ez_setup import error) and spews some deprecation warning on Python 2.6+ (md5 module deprecated in favour of hashlib.)
In order to keep my deployment recipe sane, I&#8217;ve decided to fork the project on github.
Now, all you need is the following in [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p><a href="http://amix.dk/">Amir Salihefendic</a>&#8217;s <a href="http://pypi.python.org/pypi/hash_ring">hash_ring</a> module is awesome, but it doesn&#8217;t install cleanly with <a href="http://pypi.python.org/pypi/pip">pip</a> (dies with <code>ez_setup</code> import error) and spews some deprecation warning on Python 2.6+ (md5 module deprecated in favour of hashlib.)</p>
<p>In order to keep my deployment recipe sane, I&#8217;ve decided to <a href="http://github.com/wil/hash_ring">fork the project on github</a>.</p>
<p>Now, all you need is the following in requirements.txt:</p>
<pre>
-e git://github.com/wil/hash_ring.git#egg=hash-ring
</pre>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://dready.org/blog/2010/07/10/hash-ring-fork/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Nginx + Django + FastCGI + SSL</title>
		<link>http://dready.org/blog/2010/07/10/nginx-django-fastcgi-ssl/</link>
		<comments>http://dready.org/blog/2010/07/10/nginx-django-fastcgi-ssl/#comments</comments>
		<pubDate>Sat, 10 Jul 2010 05:36:00 +0000</pubDate>
		<dc:creator>wil</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[fastcgi]]></category>
		<category><![CDATA[flup]]></category>
		<category><![CDATA[https]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[ssl]]></category>

		<guid isPermaLink="false">http://dready.org/blog/?p=277</guid>
		<description><![CDATA[My favourite method for deploying Django sites in production is with Nginx at the frontend talking FastCGI to a dedicated Django process (either flup or supervisord) via a UNIX or TCP socket.
There are two recurring issues that I keep running into costing hours of fruitless Googling. Hopefully, this will help others:

SCRIPT_NAME is evil! At least [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>My favourite method for deploying Django sites in production is with Nginx at the frontend talking FastCGI to a dedicated Django process (either <a href="http://trac.saddi.com/flup">flup</a> or <a href="http://supervisord.org/">supervisord</a>) via a UNIX or TCP socket.</p>
<p>There are two recurring issues that I keep running into costing hours of fruitless Googling. Hopefully, this will help others:</p>
<ul>
<li><code>SCRIPT_NAME</code> is evil! At least it&#8217;s useless in Django, and if present as a FastCGI parameter, Django will trip that away from your request URI and you&#8217;re almost certainly going to get <code>/</code> no matter what URI you navigate to! So, save <code>SCRIPT_NAME</code> for your PHP stuff, and leave it out of the parts where you expect to be talking to Django.<br />
If you have <code>include fastcgi_params</code> in your <code>nginx.conf</code>, make sure it&#8217;s not hiding behind the <code>fastcgi_params</code> file.</li>
<li>If you want SSL to work, i.e. for Django to <em>know</em> that it is serving in <code>https</code> mode, and to build proper <code>Location</code> header for redirects, you need to include the following in the appropriate section of your <code>nginx.conf</code>:<br />
<code><br />
fastcgi_param  HTTPS on;<br />
</code></p>
<p>Obviously, if you&#8217;re running both plain and SSL version, you shouldn&#8217;t be sharing that section or Django will just thinking that it is in SSL mode even when it&#8217;s not.</p>
</li>
</ul>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://dready.org/blog/2010/07/10/nginx-django-fastcgi-ssl/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Trials and Tribulations of Global Communities</title>
		<link>http://dready.org/blog/2010/04/30/trials-tribulations-global-communities/</link>
		<comments>http://dready.org/blog/2010/04/30/trials-tribulations-global-communities/#comments</comments>
		<pubDate>Fri, 30 Apr 2010 03:30:56 +0000</pubDate>
		<dc:creator>wil</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[culture]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[language]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[tornado]]></category>

		<guid isPermaLink="false">http://dready.org/blog/?p=267</guid>
		<description><![CDATA[I&#8217;m not about to write a lengthy essay on online cultures. Just an interesting observation on some events on the Tornado mailing list.
So, I lurk in that mailing list because Tornado is one of those awesome technologies in the Python world, and there are usually gems flying around.
As with most discussion groups I join, English [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m not about to write a lengthy essay on online cultures. Just an interesting observation on some events on the <a href="http://groups.google.com/group/python-tornado">Tornado mailing list</a>.</p>
<p>So, I lurk in that mailing list because Tornado is one of those awesome technologies in the Python world, and there are usually gems flying around.</p>
<p>As with most discussion groups I join, English is the norm. In fact, some have gone as far as to argue that <a href="http://www.codinghorror.com/blog/2009/03/the-ugly-american-programmer.html">English should be the lingua franca of hackers</a>. To a great extent, I agree.</p>
<p>So, all is well until one day some <a href="http://groups.google.com/group/python-tornado/browse_frm/thread/edffb4cffbbe2ef4">Chinese messages</a> started appearing on the list. Now, I read and write Chinese but I can&#8217;t making a living with Chinese geek-speak. Those messages didn&#8217;t bother me though I was thinking it must be annoying to non-Chinese speaking subscribers. And true enough, we got a <a href="http://groups.google.com/group/python-tornado/browse_frm/thread/196a172ca0b0979b">message from one of the subscribers</a> today:</p>
<blockquote><p>
我们看不懂你的中文信息，写英语，请。
</p></blockquote>
<p>Obviously the output of machine translation with an input to the effect of:</p>
<blockquote><p>
We cannot understand your Chinese messages, write in English, please.
</p></blockquote>
<p>I find it pretty amusing, and hope our fellow Chinese hackers don&#8217;t take offense.</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://dready.org/blog/2010/04/30/trials-tribulations-global-communities/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>git conflict resolution</title>
		<link>http://dready.org/blog/2010/04/28/git-conflict-resolution/</link>
		<comments>http://dready.org/blog/2010/04/28/git-conflict-resolution/#comments</comments>
		<pubDate>Tue, 27 Apr 2010 18:10:47 +0000</pubDate>
		<dc:creator>wil</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[git]]></category>

		<guid isPermaLink="false">http://dready.org/blog/?p=264</guid>
		<description><![CDATA[Logging this mostly for myself.
When a conflict occurs during a pull operation from remote repository, we get this:

$ git pull kumo1 develop
From ssh://kumo0/home/wil/...
 * branch            develop    -> FETCH_HEAD
Auto-merged src/.../file.py
CONFLICT (content): Merge conflict in src/.../file.py
Automatic merge failed; fix conflicts and then commit [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>Logging this mostly for myself.</p>
<p>When a conflict occurs during a pull operation from remote repository, we get this:</p>
<pre>
$ git pull kumo1 develop
From ssh://kumo0/home/wil/...
 * branch            develop    -> FETCH_HEAD
Auto-merged src/.../file.py
CONFLICT (content): Merge conflict in src/.../file.py
Automatic merge failed; fix conflicts and then commit the result.
</pre>
<p>What git did was to fetch objects from the remote repository, and tried to merge it in the branch that you specified. Sometimes the merge operation fails due to a conflict, and the conflicting edits are left in the file. It is then up to you to eyeball the file, straighten it and then &#8220;commit the result&#8221; (as the message said.)</p>
<p>However, if you tried to commit that file (after fixing the conflict), you&#8217;d get this:</p>
<pre>
$ git commit -m "my fixes" src/.../file.py
fatal: cannot do a partial commit during a merge.
</pre>
<p>What you&#8217;d want is to add the <code>-i</code> argument to the <code>git commit</code> command, which tells it to stage the additional file before committing.</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://dready.org/blog/2010/04/28/git-conflict-resolution/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>logcheck update on FreeBSD</title>
		<link>http://dready.org/blog/2010/01/23/logcheck-update-on-freebsd/</link>
		<comments>http://dready.org/blog/2010/01/23/logcheck-update-on-freebsd/#comments</comments>
		<pubDate>Sat, 23 Jan 2010 12:21:27 +0000</pubDate>
		<dc:creator>wil</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://dready.org/blog/?p=254</guid>
		<description><![CDATA[Logging this quickly for posterity.
If like me, you just updated the logcheck port on your FreeBSD to version 1.2.69_1 and found that it&#8217;s broken, you might have run into the same permission problem I did.
Apparently, the port installed some files with too restrictive permissions and the error message from logcheck does not help. The files [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>Logging this quickly for posterity.</p>
<p>If like me, you just updated the <a href="http://logcheck.org/">logcheck</a> port on your FreeBSD to version 1.2.69_1 and found that it&#8217;s broken, you might have run into the same permission problem I did.</p>
<p>Apparently, the port installed some files with too restrictive permissions and the error message from logcheck does not help. The files in question are some dynamically interpreted Perl plug-ins to detect rotated files in various schemes.</p>
<p>Just change the permissions as follows and it should all work again:</p>
<p><code><br />
# chmod 644 /usr/local/share/logcheck/detectrotate/*.dtr<br />
</code></p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://dready.org/blog/2010/01/23/logcheck-update-on-freebsd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tornado with VirtualEnv and Pip Quickstart</title>
		<link>http://dready.org/blog/2009/10/09/tornado-with-virtualenv-and-pip-quickstart/</link>
		<comments>http://dready.org/blog/2009/10/09/tornado-with-virtualenv-and-pip-quickstart/#comments</comments>
		<pubDate>Fri, 09 Oct 2009 08:50:37 +0000</pubDate>
		<dc:creator>wil</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[webeng]]></category>
		<category><![CDATA[tornado]]></category>

		<guid isPermaLink="false">http://dready.org/blog/?p=243</guid>
		<description><![CDATA[Friendfeed&#8217;s open source Tornado web server is great, and is incredibly easy to get up-and-running. Just install tornado, write your app and run it.
At some point, however, you&#8217;d want more structure in your project and manage dependencies to ease deployment. This is where virtualenv and pip shines. For a few more steps, you can bootstrap [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>Friendfeed&#8217;s open source <a href="http://www.tornadoweb.org/">Tornado web server</a> is great, and is incredibly easy to get up-and-running. Just install tornado, write your app and run it.</p>
<p>At some point, however, you&#8217;d want more structure in your project and manage dependencies to ease deployment. This is where <a href="http://pypi.python.org/pypi/virtualenv">virtualenv</a> and <a href="http://pypi.python.org/pypi/pip">pip</a> shines. For a few more steps, you can bootstrap your project and have the warm fuzzy feeling that you can easily deploy the stuff when the code is ready.</p>
<h3>Installing <code>virtualenv</code> and <code>pip</code></h3>
<p>If you haven&#8217;t set up virtualenv, do so (as root):</p>
<pre class="code">
# easy_install virtualenv
</pre>
<p>Decide where you&#8217;d put your project directory. I&#8217;ll use <code>/path/to/myapp</code> for now. The next step is to create a virtualenv where all your Python packages are stored. I like to use the convention of a directory called <code>root</code> where all dependencies are installed. I&#8217;d generally also use it as the prefix for any <acronym title="./configure &amp;&amp; make &amp;&amp; make install">cmmi</acronym> packages that I&#8217;d like to contain within the project.</p>
<pre class="code">
$ cd /path/to/myapp
$ virtualenv --no-site-packages root
</pre>
<p>Activate the environment that we just created:</p>
<pre class="code">
$ . root/bin/activate
(root)[wil@wasabi /path/to/myapp]$
</pre>
<p>From now on, all packages installed with <code>easy_install</code> will be placed in this virtualenv.</p>
<p>Next, we will install <code>pip</code> into this virtualenv:</p>
<pre class="code">
(root)[wil@wasabi /path/to/myapp]$ easy_install pip
</pre>
<p>Once <code>pip</code> is installed, as long as you&#8217;ve got your virtualenv activated, anything installed with <code>pip</code> will also go into the right place (without your having to remember to use the <code>-E</code> command line argument.)</p>
<h3>Installing Tornado</h3>
<p>Tornado (as of the current version) needs two mandatory dependencies, i.e. <a href="http://pycurl.sourceforge.net/">pycURL</a> and <a href="http://pypi.python.org/pypi/simplejson/">simplejson</a>. Make sure you have the right libcURL version installed on your system (using <code>apt-get</code> or other mechanism) and pick the compatible pyCURL version.</p>
<pre class="code">
(root)[wil@wasabi /path/to/myapp]$ pip install pycurl==7.16.4
(root)[wil@wasabi /path/to/myapp]$ pip install simplejson
</pre>
<p>Now we&#8217;ll install tornado proper. I chose to go with the bleeding edge and ask <code>pip</code> to install from the git trunk.</p>
<pre class="code">
(root)[wil@wasabi /path/to/myapp]$ pip install -e \
  git+git://github.com/facebook/tornado.git#egg=tornado
</pre>
<p>Should you not want that, you can tell <code>pip</code> to install from the tarball URL instead (at least until tornado gets added to PyPI.)</p>
<pre class="code">
(root)[wil@wasabi /path/to/myapp]$ pip install \

http://www.tornadoweb.org/static/tornado-0.2.tar.gz
</pre>
<p>Tornado is installed!</p>
<p>Every now and then, it&#8217;s a good idea to save your pip dependencies by running</p>
<pre class="code">
(root)[wil@wasabi /path/to/myapp]$ pip freeze > pip-req.txt
</pre>
<h3>Start your project</h3>
<p>What I like about this is that the project directory has all the dependencies contained within a single directory (<code>root</code>). This is really just my convention; I&#8217;d create a <code>src</code> directory where my application code lives.</p>
<pre class="code">
(root)[wil@wasabi /path/to/myapp]$ mkdir src
(root)[wil@wasabi /path/to/myapp]$ cd src
(root)[wil@wasabi /path/to/myapp/src]$
</pre>
<p>Let&#8217;s test drive Tornado:</p>
<pre class="code">
(root)[wil@wasabi /path/to/myapp/src]$ cp ../root/src/tornado/demos/helloworld/helloworld.py .
(root)[wil@wasabi /path/to/myapp/src]$ python helloworld.py
</pre>
<p>From browser, visit your host at port <code>8888</code> to verify.</p>
<p>That&#8217;s it!</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://dready.org/blog/2009/10/09/tornado-with-virtualenv-and-pip-quickstart/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>links for 2009-02-19</title>
		<link>http://dready.org/blog/2009/02/20/links-for-2009-02-19/</link>
		<comments>http://dready.org/blog/2009/02/20/links-for-2009-02-19/#comments</comments>
		<pubDate>Thu, 19 Feb 2009 16:03:21 +0000</pubDate>
		<dc:creator>delicious</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://dready.org/blog/2009/02/20/links-for-2009-02-19/</guid>
		<description><![CDATA[

JavaScript Madness: Dynamic Script Loading
(tags: bookmarklet js loading script webdev ajax)


Scope in JavaScript &#124; Digital Web Magazine
Excellent article on Javascript scoping, debunking the confusing concepts of &#34;this&#34;, &#34;bind&#34;, &#34;call&#34; and &#34;apply&#34;.
(tags: javascript js tutorial scoping programming)


iTransmogrify!
(tags: iphone videos youtube bookmarklet conversion flash)


Large iPhone Icons &#8211; a set on Flickr
not sure what the license is on [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<ul class="delicious">
<li>
<div class="delicious-link"><a href="http://unixpapa.com/js/dyna.html">JavaScript Madness: Dynamic Script Loading</a></div>
<div class="delicious-tags">(tags: <a href="http://delicious.com/mamamia/bookmarklet">bookmarklet</a> <a href="http://delicious.com/mamamia/js">js</a> <a href="http://delicious.com/mamamia/loading">loading</a> <a href="http://delicious.com/mamamia/script">script</a> <a href="http://delicious.com/mamamia/webdev">webdev</a> <a href="http://delicious.com/mamamia/ajax">ajax</a>)</div>
</li>
<li>
<div class="delicious-link"><a href="http://www.digital-web.com/articles/scope_in_javascript">Scope in JavaScript | Digital Web Magazine</a></div>
<div class="delicious-extended">Excellent article on Javascript scoping, debunking the confusing concepts of &quot;this&quot;, &quot;bind&quot;, &quot;call&quot; and &quot;apply&quot;.</div>
<div class="delicious-tags">(tags: <a href="http://delicious.com/mamamia/javascript">javascript</a> <a href="http://delicious.com/mamamia/js">js</a> <a href="http://delicious.com/mamamia/tutorial">tutorial</a> <a href="http://delicious.com/mamamia/scoping">scoping</a> <a href="http://delicious.com/mamamia/programming">programming</a>)</div>
</li>
<li>
<div class="delicious-link"><a href="http://joemaller.com/2008/01/12/itransmogrify/">iTransmogrify!</a></div>
<div class="delicious-tags">(tags: <a href="http://delicious.com/mamamia/iphone">iphone</a> <a href="http://delicious.com/mamamia/videos">videos</a> <a href="http://delicious.com/mamamia/youtube">youtube</a> <a href="http://delicious.com/mamamia/bookmarklet">bookmarklet</a> <a href="http://delicious.com/mamamia/conversion">conversion</a> <a href="http://delicious.com/mamamia/flash">flash</a>)</div>
</li>
<li>
<div class="delicious-link"><a href="http://www.flickr.com/photos/34818713@N00/sets/72157601845495751/#">Large iPhone Icons &#8211; a set on Flickr</a></div>
<div class="delicious-extended">not sure what the license is on these</div>
<div class="delicious-tags">(tags: <a href="http://delicious.com/mamamia/iphone">iphone</a> <a href="http://delicious.com/mamamia/graphics">graphics</a> <a href="http://delicious.com/mamamia/iphonedev">iphonedev</a> <a href="http://delicious.com/mamamia/icons">icons</a>)</div>
</li>
<li>
<div class="delicious-link"><a href="http://www.freesoftwaremagazine.com/columns/opensocial_overview_how_opensocial_works_and_integrate_with_cms">OpenSocial overview: how opensocial works, and how to integrate it with your CMS</a></div>
<div class="delicious-extended">Good step-by-step guide to implementing OpenSocial in your own site</div>
<div class="delicious-tags">(tags: <a href="http://delicious.com/mamamia/shindig">shindig</a> <a href="http://delicious.com/mamamia/opensocial">opensocial</a> <a href="http://delicious.com/mamamia/gadget">gadget</a> <a href="http://delicious.com/mamamia/widget">widget</a> <a href="http://delicious.com/mamamia/cms">cms</a> <a href="http://delicious.com/mamamia/article">article</a>)</div>
</li>
<li>
<div class="delicious-link"><a href="http://eric.themoritzfamily.com/2009/02/17/announcing-django-viewtools/">Announcing django-viewtools | One More Blog</a></div>
<div class="delicious-tags">(tags: <a href="http://delicious.com/mamamia/django">django</a> <a href="http://delicious.com/mamamia/debugging">debugging</a> <a href="http://delicious.com/mamamia/profiling">profiling</a> <a href="http://delicious.com/mamamia/webdev">webdev</a> <a href="http://delicious.com/mamamia/python">python</a>)</div>
</li>
<li>
<div class="delicious-link"><a href="http://www.yamli.com/">Yamli &#8211; Arabic Search Engine and Smart Arabic Keyboard</a></div>
<div class="delicious-extended">Transliterate Arabic with this tool with API</div>
<div class="delicious-tags">(tags: <a href="http://delicious.com/mamamia/arabic">arabic</a> <a href="http://delicious.com/mamamia/ajax">ajax</a> <a href="http://delicious.com/mamamia/transliteration">transliteration</a> <a href="http://delicious.com/mamamia/api">api</a> <a href="http://delicious.com/mamamia/web2.0">web2.0</a>)</div>
</li>
<li>
<div class="delicious-link"><a href="http://lethain.com/entry/2009/feb/13/the-django-and-ubuntu-intrepid-almanac/">The Django and Ubuntu Intrepid Almanac @ Irrational Exuberance</a></div>
<div class="delicious-tags">(tags: <a href="http://delicious.com/mamamia/sysadmin">sysadmin</a> <a href="http://delicious.com/mamamia/vps">vps</a> <a href="http://delicious.com/mamamia/django">django</a> <a href="http://delicious.com/mamamia/nginx">nginx</a> <a href="http://delicious.com/mamamia/tutorials">tutorials</a> <a href="http://delicious.com/mamamia/ubuntu">ubuntu</a>)</div>
</li>
<li>
<div class="delicious-link"><a href="http://googlewebmastercentral.blogspot.com/2009/02/specify-your-canonical.html">Specify your canonical (Official Google Webmaster Central Blog)</a></div>
<div class="delicious-extended">Tell Googlebot your canonical URL, so you don&#39;t get duplicate pages in the index</div>
<div class="delicious-tags">(tags: <a href="http://delicious.com/mamamia/seo">seo</a> <a href="http://delicious.com/mamamia/webdev">webdev</a> <a href="http://delicious.com/mamamia/google">google</a> <a href="http://delicious.com/mamamia/search">search</a>)</div>
</li>
<li>
<div class="delicious-link"><a href="http://www.scribd.com/doc/12016121/Tokyo-Cabinet-and-Tokyo-Tyrant-Presentation">http://www.scribd.com/doc/12016121/Tokyo-Cabinet-and-Tokyo-Tyrant-Presentation</a></div>
<div class="delicious-tags">(tags: <a href="http://delicious.com/mamamia/tokyocabinet">tokyocabinet</a> <a href="http://delicious.com/mamamia/db">db</a> <a href="http://delicious.com/mamamia/memcached">memcached</a> <a href="http://delicious.com/mamamia/scalability">scalability</a>)</div>
</li>
<li>
<div class="delicious-link"><a href="http://www.webappwednesday.com/">Web App Wednesday &#8211; Occasionally interesting, often trivial, always original.</a></div>
<div class="delicious-tags">(tags: <a href="http://delicious.com/mamamia/gae">gae</a> <a href="http://delicious.com/mamamia/tutorials">tutorials</a> <a href="http://delicious.com/mamamia/python">python</a> <a href="http://delicious.com/mamamia/webdev">webdev</a>)</div>
</li>
<li>
<div class="delicious-link"><a href="http://code.google.com/p/google-mobwrite/">MobWrite: Real-time Synchronization and Collaboration Service</a></div>
<div class="delicious-extended">Ajax frontend with corresponding backend to allow a web form to be collaboratively edited by multiple users.</div>
<div class="delicious-tags">(tags: <a href="http://delicious.com/mamamia/python">python</a> <a href="http://delicious.com/mamamia/gae">gae</a> <a href="http://delicious.com/mamamia/googledocs">googledocs</a> <a href="http://delicious.com/mamamia/ajax">ajax</a> <a href="http://delicious.com/mamamia/collaboration">collaboration</a>)</div>
</li>
</ul>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://dready.org/blog/2009/02/20/links-for-2009-02-19/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>links for 2009-02-18</title>
		<link>http://dready.org/blog/2009/02/19/links-for-2009-02-18/</link>
		<comments>http://dready.org/blog/2009/02/19/links-for-2009-02-18/#comments</comments>
		<pubDate>Wed, 18 Feb 2009 16:07:33 +0000</pubDate>
		<dc:creator>delicious</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://dready.org/blog/2009/02/19/links-for-2009-02-18/</guid>
		<description><![CDATA[

Whoosh
Whoosh is a fast, featureful full-text indexing and searching library implemented in pure Python. May be an easier-to-integrate alternative to Xapian, Lucene or HyperEstraier.
(tags: fulltext search python indexing)


Demiforce :: Home
(tags: iphone gamedev social cocoa)


Business Card Scanning and Contact Manager &#8211; CloudContacts
(tags: businesscards web2.0 organizing crm)


Tagging the World
(tags: techcrunch50 iphone social geotagging camera japan)




No related posts.


No related posts.]]></description>
			<content:encoded><![CDATA[<ul class="delicious">
<li>
<div class="delicious-link"><a href="http://whoosh.ca/">Whoosh</a></div>
<div class="delicious-extended">Whoosh is a fast, featureful full-text indexing and searching library implemented in pure Python. May be an easier-to-integrate alternative to Xapian, Lucene or HyperEstraier.</div>
<div class="delicious-tags">(tags: <a href="http://delicious.com/mamamia/fulltext">fulltext</a> <a href="http://delicious.com/mamamia/search">search</a> <a href="http://delicious.com/mamamia/python">python</a> <a href="http://delicious.com/mamamia/indexing">indexing</a>)</div>
</li>
<li>
<div class="delicious-link"><a href="http://onyx.demiforce.com/">Demiforce :: Home</a></div>
<div class="delicious-tags">(tags: <a href="http://delicious.com/mamamia/iphone">iphone</a> <a href="http://delicious.com/mamamia/gamedev">gamedev</a> <a href="http://delicious.com/mamamia/social">social</a> <a href="http://delicious.com/mamamia/cocoa">cocoa</a>)</div>
</li>
<li>
<div class="delicious-link"><a href="http://www.cloudcontacts.com/">Business Card Scanning and Contact Manager &#8211; CloudContacts</a></div>
<div class="delicious-tags">(tags: <a href="http://delicious.com/mamamia/businesscards">businesscards</a> <a href="http://delicious.com/mamamia/web2.0">web2.0</a> <a href="http://delicious.com/mamamia/organizing">organizing</a> <a href="http://delicious.com/mamamia/crm">crm</a>)</div>
</li>
<li>
<div class="delicious-link"><a href="http://www.tonchidot.com/">Tagging the World</a></div>
<div class="delicious-tags">(tags: <a href="http://delicious.com/mamamia/techcrunch50">techcrunch50</a> <a href="http://delicious.com/mamamia/iphone">iphone</a> <a href="http://delicious.com/mamamia/social">social</a> <a href="http://delicious.com/mamamia/geotagging">geotagging</a> <a href="http://delicious.com/mamamia/camera">camera</a> <a href="http://delicious.com/mamamia/japan">japan</a>)</div>
</li>
</ul>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://dready.org/blog/2009/02/19/links-for-2009-02-18/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

