<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1182449701024810662</id><updated>2012-02-16T18:00:15.933-08:00</updated><category term='apache'/><category term='flash'/><category term='ctrl'/><category term='Werkzeug'/><category term='emacs'/><category term='javascript'/><category term='mysql'/><category term='debugging'/><category term='rumbling-ramblings'/><category term='php'/><category term='veetle'/><category term='gtk'/><category term='utf-8'/><category term='ssh'/><category term='github'/><category term='lisp'/><category term='poop'/><category term='capslock'/><category term='instructions'/><category term='how-to'/><category term='django'/><category term='corporate america'/><category term='xmonad'/><category term='virtual terminal'/><category term='gnome'/><category term='grammar'/><category term='regex'/><category term='jquery'/><category term='console'/><category term='RESTful'/><category term='sql'/><category term='SQLAlchemy'/><category term='git'/><category term='python'/><category term='bug-fix'/><category term='wsgi'/><category term='unix'/><category term='software-development'/><category term='debian'/><category term='windows'/><category term='gettext'/><category term='ubuntu'/><category term='traffic'/><category term='questions'/><category term='subversion'/><title type='text'>Strange Adventures in Infinite Space</title><subtitle type='html'>Turd Flop Down M'leg</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>88</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-1340090838046786172</id><published>2012-02-13T16:15:00.000-08:00</published><updated>2012-02-13T16:14:49.849-08:00</updated><title type='text'>The Etsy way</title><content type='html'>&lt;a href="http://codeascraft.etsy.com/2012/02/13/the-etsy-way/"&gt;http://codeascraft.etsy.com/2012/02/13/the-etsy-way/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-1340090838046786172?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/1340090838046786172/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2012/02/etsy-way.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/1340090838046786172'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/1340090838046786172'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2012/02/etsy-way.html' title='The Etsy way'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-7224392514191045750</id><published>2011-10-21T15:50:00.000-07:00</published><updated>2011-10-21T16:07:13.915-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='utf-8'/><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>PDO utf-8 issues</title><content type='html'>Had issues with json_encode complaining:&lt;br /&gt;&lt;pre class="code-java"&gt;&lt;span class="code-quote"&gt;Invalid UTF-8 sequence in argument&lt;/span&gt; &lt;/pre&gt;&lt;br /&gt;Fixed it by adding&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 90%;"&gt;&lt;code&gt;PDO::MYSQL_ATTR_INIT_COMMAND =&amp;gt; "SET NAMES utf8"&lt;/code&gt;&lt;/pre&gt;to the PDO creation line.. ie:&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 90%;"&gt;&lt;code&gt;$pdo = new PDO(&lt;br /&gt;    'mysql:host=mysql.example.com;dbname=example_db',&lt;br /&gt;    "username",&lt;br /&gt;    "password",&lt;br /&gt;    array(PDO::MYSQL_ATTR_INIT_COMMAND =&amp;gt; "SET NAMES utf8"));&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://www.laszlo.nu/post/34159352/how-to-use-utf-8-with-mysql-and-php-data-objects-pdo"&gt;source&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-7224392514191045750?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/7224392514191045750/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2011/10/pdo-utf-8-issues.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/7224392514191045750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/7224392514191045750'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2011/10/pdo-utf-8-issues.html' title='PDO utf-8 issues'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-2605440065570348581</id><published>2011-10-20T12:15:00.000-07:00</published><updated>2011-10-21T16:07:28.121-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='emacs'/><category scheme='http://www.blogger.com/atom/ns#' term='debugging'/><title type='text'>Emacs + conkeror</title><content type='html'>&lt;a href="http://emacs-fu.blogspot.com/2010/12/conkeror-web-browsing-emacs-way.html%0A"&gt;http://emacs-fu.blogspot.com/2010/12/conkeror-web-browsing-emacs-way.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-2605440065570348581?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/2605440065570348581/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2011/10/emacs-conkeror.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/2605440065570348581'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/2605440065570348581'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2011/10/emacs-conkeror.html' title='Emacs + conkeror'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-6631511551800737814</id><published>2011-10-11T15:45:00.000-07:00</published><updated>2011-10-21T16:07:40.077-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='emacs'/><category scheme='http://www.blogger.com/atom/ns#' term='debugging'/><title type='text'>Emacs, geben and xdebug</title><content type='html'>* sudo pecl install xdebug&lt;br /&gt;* edit php.ini&lt;br /&gt;&lt;pre&gt;  zend_extension=/path/to/xdebug.so&lt;br /&gt;; usually /usr/lib/php5/20060613+lfs/xdebug.so&lt;br /&gt;  [debug]&lt;br /&gt;  xdebug.remote_autostart=off&lt;br /&gt;  xdebug.remote_enable=on&lt;br /&gt;  xdebug.remote_handler=dbgp&lt;br /&gt;  xdebug.remote_mode=req&lt;br /&gt;  xdebug.remote_host=localhost&lt;br /&gt;  xdebug.remote_port=9000&lt;br /&gt;&lt;/pre&gt;* restart apache: /etc/init.d/apache2 restart&lt;br /&gt;* download geben: &lt;a href="http://trac.sakura.ne.jp/geben/"&gt;http://trac.sakura.ne.jp/geben/&lt;/a&gt;&lt;br /&gt;* unpack it into ~/emacs.d/ (emacs includes folder)* add this to your .emacs file:&lt;br /&gt;&lt;pre&gt;(add-to-list 'load-path "/home/your/emacs.files/geben")&lt;br /&gt;(add-to-list 'load-path "/home/your/emacs.files/geben/gud")&lt;br /&gt;&lt;/pre&gt;* restart emacs and run geben with `M-x geben`&lt;br /&gt;* open a php service with the parameter &lt;br /&gt;`?XDEBUG_SESSION_START` to start debugging&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://blog.local.ch/en/2008/08/08/debug-php-in-emacs-with-geben/"&gt;source&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-6631511551800737814?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/6631511551800737814/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2011/10/emacs-geben-and-xdebug.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/6631511551800737814'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/6631511551800737814'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2011/10/emacs-geben-and-xdebug.html' title='Emacs, geben and xdebug'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-2143880321215231862</id><published>2011-09-22T21:50:00.000-07:00</published><updated>2011-09-22T21:55:14.893-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='git'/><title type='text'>Ignoring changes in a tracked file in git</title><content type='html'>&lt;code class="plain"&gt;Ignore changes:&lt;/code&gt;&lt;br /&gt;&lt;code class="plain"&gt; &lt;/code&gt;&lt;br /&gt;&lt;pre&gt;git update-index --assume-unchanged &lt;/pre&gt;&lt;br /&gt;&lt;code class="plain"&gt;Un-ignore changes:&lt;/code&gt;&lt;br /&gt;&lt;pre&gt;git update-index --no-assume-unchanged&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre&gt;[&lt;a href="http://blog.pagebakers.nl/2009/01/29/git-ignoring-changes-in-tracked-files/"&gt;source&lt;/a&gt;]&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-2143880321215231862?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/2143880321215231862/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2011/09/ignoring-changes-in-tracked-file-in-git.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/2143880321215231862'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/2143880321215231862'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2011/09/ignoring-changes-in-tracked-file-in-git.html' title='Ignoring changes in a tracked file in git'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-3993262902234751677</id><published>2011-09-15T03:20:00.000-07:00</published><updated>2011-09-15T03:24:40.194-07:00</updated><title type='text'></title><content type='html'>Smugly accusing someone of anger doesn’t do anything to discount the content of the argument. [&lt;a href="http://www.alternet.org/story/152395/10_myths_many_religious_people_hold_about_atheists_debunked?page=entire"&gt;1&lt;/a&gt;]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-3993262902234751677?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/3993262902234751677/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2011/09/smugly-accusing-someone-of-anger-doesnt.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/3993262902234751677'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/3993262902234751677'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2011/09/smugly-accusing-someone-of-anger-doesnt.html' title=''/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-915862174936983282</id><published>2011-08-08T17:00:00.000-07:00</published><updated>2011-08-08T17:01:02.280-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='git'/><title type='text'>Setting 'git pull' to use --rebase for all branches</title><content type='html'>git config --global branch.autosetuprebase always&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-915862174936983282?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/915862174936983282/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2011/08/setting-git-pull-to-use-rebase-for-all.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/915862174936983282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/915862174936983282'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2011/08/setting-git-pull-to-use-rebase-for-all.html' title='Setting &apos;git pull&apos; to use --rebase for all branches'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-2809368893828533091</id><published>2011-06-30T20:15:00.000-07:00</published><updated>2011-06-30T20:18:36.063-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gettext'/><title type='text'>Gettext and codesets.  UTF-8 in particular</title><content type='html'>For the longest time, Japanese translations weren't working and kept returning ???? instead of the correct Japanese characters.  A college finally found the solution:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;bind_textdomain_codeset("messages", 'UTF-8');&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;where "messages" is the text domain that was bound with the textdomain command.&lt;br /&gt;&lt;br /&gt;Stupidly difficult bug to tackle.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-2809368893828533091?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/2809368893828533091/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2011/06/gettext-and-codesets-utf-8-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/2809368893828533091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/2809368893828533091'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2011/06/gettext-and-codesets-utf-8-in.html' title='Gettext and codesets.  UTF-8 in particular'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-5253534718412601889</id><published>2011-05-03T15:00:00.000-07:00</published><updated>2011-05-03T20:32:05.059-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gettext'/><category scheme='http://www.blogger.com/atom/ns#' term='how-to'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Gettext workflow</title><content type='html'>1. Define your   &lt;tt&gt;bindtextdomain&lt;/tt&gt; and &lt;tt&gt;textdomain&lt;/tt&gt; as&lt;br /&gt;&lt;blockquote&gt;bindtextdomain('hello', '/usr/share/locale')&lt;br /&gt;textdomain('hello')&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;2. Wrap strings to be translated in gettext('translate me') or, using the gettext alias, _('translate me').&lt;br /&gt;&lt;blockquote&gt;return _('this string is to be translated');&lt;br /&gt;&lt;/blockquote&gt;3. Extract the strings using the xgettext utility.&lt;br /&gt;&lt;blockquote&gt;xgettext -d hello -s -o hello.pot hello.c&lt;/blockquote&gt;4. Turn the .pot file into a .po file that can be passed on to the translators&lt;br /&gt;&lt;blockquote&gt;msginit -l es_US -o spanish.po -i hello.pot&lt;br /&gt;&lt;/blockquote&gt;5. Translate the strings in the .po file&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;msgid "Hello\n"&lt;br /&gt;msgstr "Hola\n"&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;6. Convert the .po file into a compiled .mo using the msgfmt utility, note that the output filename must match the domain given as the first argument to &lt;tt&gt;bindtextdomain&lt;/tt&gt; and &lt;tt&gt;textdomain&lt;/tt&gt; and must be placed in the location specified as the second argument to &lt;tt&gt;bindtextdomain&lt;br /&gt;&lt;/tt&gt; joined with the language set in &lt;tt&gt;setlocale&lt;/tt&gt; or set in the environment&lt;blockquote&gt;msgfmt -c -v -o hello.mo spanish.po&lt;br /&gt;cp hello.mo /usr/share/locale/es_US/LC_MESSAGES&lt;br /&gt;&lt;/blockquote&gt;&lt;a href="http://oriya.sarovar.org/docs/gettext/"&gt;source&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-5253534718412601889?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/5253534718412601889/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2011/05/gettext-workflow.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/5253534718412601889'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/5253534718412601889'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2011/05/gettext-workflow.html' title='Gettext workflow'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-2926318935201616521</id><published>2011-04-22T16:40:00.000-07:00</published><updated>2011-04-22T16:45:13.090-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='veetle'/><category scheme='http://www.blogger.com/atom/ns#' term='bug-fix'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Veetle player and ICEauthority</title><content type='html'>Installing the Veetle player on Ubuntu by running the install script as super user causes issues by changing the owner of your home directory to 1016 (or a similar #).  This can easily be rectified by simply chown/chgrp your home directory back to your user and by replacing .ICEauthority file in your home directory with the /var/lib/gdm/.ICEauthority file (you also have to chown/chgrp the .ICEauthority file once you've copied it).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;a href="http://http://ubuntuforums.org/showthread.php?t=1634192"&gt;&lt;br /&gt;Source&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-2926318935201616521?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/2926318935201616521/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2011/04/veetle-player-and-iceauthority.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/2926318935201616521'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/2926318935201616521'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2011/04/veetle-player-and-iceauthority.html' title='Veetle player and ICEauthority'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-219606262699798212</id><published>2011-04-22T16:35:00.000-07:00</published><updated>2011-04-22T16:39:22.473-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='how-to'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Adding locales for gettext</title><content type='html'>Go to System -&amp;gt; Administration -&amp;gt; Language Support and add the languages you want to support.&lt;br /&gt;&lt;br /&gt;Once those have installed, run&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;sudo dpkg-reconfigure locales&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Done&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;a href="http://http://ubuntuforums.org/showthread.php?t=859091"&gt;&lt;br /&gt;Source&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-219606262699798212?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/219606262699798212/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2011/04/adding-locales-for-gettext.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/219606262699798212'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/219606262699798212'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2011/04/adding-locales-for-gettext.html' title='Adding locales for gettext'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-3932630468761891040</id><published>2011-04-06T16:40:00.000-07:00</published><updated>2011-04-06T16:43:20.781-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='emacs'/><title type='text'>Emacs Tramp Cheatsheet</title><content type='html'>Open a file on a remote machine:&lt;br /&gt;&lt;pre&gt;&lt;samp&gt;&lt;span class="file"&gt;C-c C-f /user@machine:path/to.file&lt;/span&gt;&lt;/samp&gt;&lt;/pre&gt;&lt;br /&gt;Sudo with Tramp:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;C-c C-f /sudo::/path/to/file&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.gnu.org/software/tramp/"&gt;Source&lt;/a&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-3932630468761891040?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/3932630468761891040/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2011/04/emacs-tramp-cheatsheet.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/3932630468761891040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/3932630468761891040'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2011/04/emacs-tramp-cheatsheet.html' title='Emacs Tramp Cheatsheet'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-7960046376509882473</id><published>2011-03-15T11:15:00.000-07:00</published><updated>2011-03-15T11:42:26.727-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='regex'/><category scheme='http://www.blogger.com/atom/ns#' term='emacs'/><title type='text'>Emacs back references in replace-regex.</title><content type='html'>From &lt;a href="http://http://www.gnu.org/software/emacs/manual/html_node/emacs/Regexp-Replace.html"&gt;http://www.gnu.org/software/emacs/manual/html_node/emacs/Regexp-Replace.html&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;blockquote&gt;In replace-regexp, the newstring need not be constant: it can refer to all or part of what is matched by the regexp. ‘\&amp;’ in newstring stands for the entire match being replaced. ‘\d’ in newstring, where d is a digit, stands for whatever matched the dth parenthesized grouping in regexp. (This is called a “back reference.”) ‘\#’ refers to the count of replacements already made in this command, as a decimal number. In the first replacement, ‘\#’ stands for ‘0’; in the second, for ‘1’; and so on. For example,&lt;br /&gt;&lt;br /&gt;     M-x replace-regexp &amp;lt;RET&amp;gt; c[ad]+r &amp;lt;RET&amp;gt; \&amp;-safe &amp;lt;RET&amp;gt;&lt;br /&gt;&lt;br /&gt;replaces (for example) ‘cadr’ with ‘cadr-safe’ and ‘cddr’ with ‘cddr-safe’. &lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-7960046376509882473?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/7960046376509882473/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2011/03/emacs-back-references-in-replace-regex.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/7960046376509882473'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/7960046376509882473'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2011/03/emacs-back-references-in-replace-regex.html' title='Emacs back references in replace-regex.'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-1408974537476305012</id><published>2011-02-09T16:55:00.000-08:00</published><updated>2011-02-09T17:13:15.632-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='how-to'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><title type='text'>mod_proxy in ubuntu</title><content type='html'>In order to get mod_proxy running in ubuntu I had to:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;ln -s /etc/apache2/mods-available/proxy.conf /etc/apache2/mods-enabled/proxy.conf&lt;/li&gt;&lt;li&gt;ln -s /etc/apache2/mods-available/proxy.load /etc/apache2/mods-enabled/proxy.load&lt;/li&gt;&lt;li&gt;ln -s /etc/apache2/mods-available/proxy_http.load /etc/apache2/mods-enabled/proxy_http.load&lt;/li&gt;&lt;/ul&gt;Then in my conf file (sites-enabled/my-site) I added between the VirtualHost tag&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;lt;proxy&amp;gt;&lt;br /&gt;  Order deny,allow&lt;br /&gt;  Allow from all&lt;br /&gt;&amp;lt;/proxy&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;location /pickup &amp;gt;&lt;br /&gt;  ProxyPass http://qa-ox3-datamart-xv-01.xv.dc.openx.org/pickup/&lt;br /&gt;  ProxyPassReverse  http://qa-ox3-datamart-xv-01.xv.dc.openx.org/pickup/&lt;br /&gt;&amp;lt;/location&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-1408974537476305012?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/1408974537476305012/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2011/02/modproxy-in-ubuntu.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/1408974537476305012'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/1408974537476305012'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2011/02/modproxy-in-ubuntu.html' title='mod_proxy in ubuntu'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-3688008494270946144</id><published>2011-02-09T15:05:00.000-08:00</published><updated>2011-02-09T15:07:08.128-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='git'/><category scheme='http://www.blogger.com/atom/ns#' term='how-to'/><title type='text'>Delete a remote branch in git</title><content type='html'>git push origin :branchname&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-3688008494270946144?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/3688008494270946144/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2011/02/delete-remote-branch-in-git.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/3688008494270946144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/3688008494270946144'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2011/02/delete-remote-branch-in-git.html' title='Delete a remote branch in git'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-475745457675157836</id><published>2011-01-31T18:15:00.000-08:00</published><updated>2011-02-01T15:00:31.654-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wsgi'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Simple wsgi apps without using a framework.</title><content type='html'>Using apache and mod_wsgi, serve a dirt simple app (useful for mocking services that havent been created yet by other programmers).&lt;br /&gt;&lt;br /&gt;After installing mod_wsgi (sudo apt-get install libapache2-mod-wsgi)&lt;br /&gt;&lt;br /&gt;Apache conf:&lt;br /&gt;&lt;blockquote&gt;WSGIScriptAlias /webdir/ /filesys/dir/&lt;/blockquote&gt;With this you can call wsgi scripts in 'webdir' as localhost/webdir/test.py&lt;br /&gt;&lt;br /&gt;python WSGI code for the file /filesys/dir/test.py:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;def application(environ, start_response):&lt;br /&gt;   response_body = '{"fake-json":"temp-output"}'&lt;br /&gt;   status = '200 OK'&lt;br /&gt;   response_headers = [('Content-Type', 'application/json'),&lt;br /&gt;                       ('Content-Length', str(len(response_body)))]&lt;br /&gt;   start_response(status, response_headers)&lt;br /&gt;&lt;br /&gt;   return [response_body]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Done.  No stupid framework needed for stupid simple apps.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-475745457675157836?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/475745457675157836/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2011/01/simple-wsgi-aps-without-using-framework.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/475745457675157836'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/475745457675157836'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2011/01/simple-wsgi-aps-without-using-framework.html' title='Simple wsgi apps without using a framework.'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-5501069375116562641</id><published>2010-12-14T11:15:00.000-08:00</published><updated>2010-12-14T11:16:40.472-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gtk'/><category scheme='http://www.blogger.com/atom/ns#' term='emacs'/><category scheme='http://www.blogger.com/atom/ns#' term='bug-fix'/><title type='text'>Resolving "murrine_style_draw_box: assertion `height &gt;= -1'"</title><content type='html'>Finally figured out how to stop this message from popping up after every key stroke if I've launched emacs from a terminal.&lt;br /&gt;&lt;br /&gt;Modify the entry in  /usr/share/themes/Ambiance/gtk-2.0/gtkrc from  GtkRange::trough-under-steppers = 0 to GtkRange::trough-under-steppers =  1. Change Ambiance to whatever theme you are using.&lt;br /&gt;&lt;br /&gt;Source: &lt;a href="http://thehacklist.blogspot.com/2010/06/resolving-murrinestyledrawbox-assertion.html"&gt;The Hack List&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-5501069375116562641?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/5501069375116562641/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2010/12/resolving-murrinestyledrawbox-assertion.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/5501069375116562641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/5501069375116562641'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2010/12/resolving-murrinestyledrawbox-assertion.html' title='Resolving &quot;murrine_style_draw_box: assertion `height &gt;= -1&apos;&quot;'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-383312396114589485</id><published>2010-12-07T12:15:00.000-08:00</published><updated>2010-12-07T14:34:19.713-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='git'/><category scheme='http://www.blogger.com/atom/ns#' term='console'/><title type='text'>Some command line utils for git conflict resolution</title><content type='html'>Git has some nice utilities that can make dealing with conflicts much easier.&lt;br /&gt;&lt;br /&gt;If after merging you just want to keep either the remote (theirs) or your own file (ours), you can checkout the file with either --ours or --theirs options as in:&lt;br /&gt;&lt;pre&gt;git checkout --ours index.html&lt;br /&gt;git checkout --theirs template.html&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;In order to look at the original files,  &lt;tt&gt;git show :1:filename&lt;/tt&gt; shows the    common ancestor, &lt;tt&gt;git show :2:filename&lt;/tt&gt; shows the &lt;tt&gt;HEAD&lt;/tt&gt;    version, and &lt;tt&gt;git show :3:filename&lt;/tt&gt; shows the &lt;tt&gt;MERGE_HEAD&lt;/tt&gt;    version.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Sources:&lt;br /&gt;&lt;a href="http://www.gitready.com/advanced/2009/02/25/keep-either-file-in-merge-conflicts.html"&gt;Keep either file in a merge conflict&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-383312396114589485?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/383312396114589485/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2010/12/some-command-line-utils-for-git.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/383312396114589485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/383312396114589485'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2010/12/some-command-line-utils-for-git.html' title='Some command line utils for git conflict resolution'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-3532049463149198180</id><published>2010-11-23T10:05:00.000-08:00</published><updated>2010-11-23T10:07:07.712-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='emacs'/><title type='text'>Article on Tabs vs Spaces</title><content type='html'>It's an old article (2000!!), but it's a good article.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.jwz.org/doc/tabs-vs-spaces.html"&gt;http://www.jwz.org/doc/tabs-vs-spaces.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-3532049463149198180?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/3532049463149198180/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2010/11/article-on-tabs-vs-spaces.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/3532049463149198180'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/3532049463149198180'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2010/11/article-on-tabs-vs-spaces.html' title='Article on Tabs vs Spaces'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-2962103467598623366</id><published>2010-11-17T10:10:00.000-08:00</published><updated>2010-11-17T10:12:37.879-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software-development'/><title type='text'>DRY is more than just not repeating code.</title><content type='html'>&lt;p&gt; &lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;DRY says that every piece of system knowledge should have one authoritative,  unambiguous representation. Every piece of knowledge in the development of something  should have a single representation. A system's knowledge is far broader than just its code.  It refers to database schemas, test plans, the build system, even documentation.  &lt;/p&gt;&lt;p&gt; Given all this knowledge, why should you find one way to represent each feature? The obvious answer is, if you have more than one way to express the same  thing, at some point the two or three different representations will most likely fall out of step  with each other. Even if they don't, you're guaranteeing yourself the headache of maintaining  them in parallel whenever a change occurs. And change will occur. DRY is important if you  want flexible and maintainable software. &lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;-- &lt;a href="http://www.artima.com/intv/dry.html"&gt;Dave Thomas&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-2962103467598623366?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/2962103467598623366/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2010/11/dry-is-more-than-just-not-repeating.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/2962103467598623366'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/2962103467598623366'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2010/11/dry-is-more-than-just-not-repeating.html' title='DRY is more than just not repeating code.'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-7516808591696279082</id><published>2010-11-04T10:40:00.000-07:00</published><updated>2010-11-04T10:42:35.488-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='how-to'/><category scheme='http://www.blogger.com/atom/ns#' term='emacs'/><title type='text'>How to change auto-save-list directory in emacs</title><content type='html'>To change the auto-save-list directory in emacs, add the following to your .emacs:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;;; Put auto-save-list somewhere else                           &lt;br /&gt;(set 'auto-save-list-file-prefix "~/.trash/.saves-")&lt;/code&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-7516808591696279082?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/7516808591696279082/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2010/11/how-to-change-auto-save-list-directory.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/7516808591696279082'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/7516808591696279082'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2010/11/how-to-change-auto-save-list-directory.html' title='How to change auto-save-list directory in emacs'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-8910804784366369752</id><published>2010-11-01T15:25:00.000-07:00</published><updated>2010-11-01T15:29:39.987-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='git'/><title type='text'>Ignore changes to a file in Git</title><content type='html'>Temporarily ignore changes to a file in git:&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;git update-index --assume-unchanged filename&lt;/code&gt;&lt;br /&gt;&lt;/blockquote&gt;To start tracking changes to the file again, run:&lt;br /&gt;&lt;blockquote&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;code&gt;git update-index --no-assume-unchanged filename&lt;/code&gt;&lt;/blockquote&gt;source: &lt;a href="http://gitready.com/intermediate/2009/02/18/temporarily-ignoring-files.html"&gt;http://gitready.com/intermediate/2009/02/18/temporarily-ignoring-files.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-8910804784366369752?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/8910804784366369752/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2010/11/ignore-changes-to-file-in-git.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/8910804784366369752'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/8910804784366369752'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2010/11/ignore-changes-to-file-in-git.html' title='Ignore changes to a file in Git'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-2447437550287382308</id><published>2010-11-01T10:55:00.000-07:00</published><updated>2010-11-01T10:56:28.394-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='how-to'/><title type='text'>Make mouse pointer disappear with unclutter</title><content type='html'>Add the following line to .xsession to make the mouse pointer go away after a set number of seconds:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;unclutter -idle 1 -noevents &amp;amp;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-2447437550287382308?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/2447437550287382308/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2010/11/make-mouse-pointer-disappear-with.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/2447437550287382308'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/2447437550287382308'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2010/11/make-mouse-pointer-disappear-with.html' title='Make mouse pointer disappear with unclutter'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-190907422073119538</id><published>2010-11-01T10:45:00.000-07:00</published><updated>2010-11-01T10:58:07.006-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='git'/><title type='text'>Revert a file in Git</title><content type='html'>&lt;p&gt;To revert a file with uncommitted changes to the current version in the repo do:&lt;/p&gt;&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;git checkout -- filename&lt;filename&gt;&lt;/filename&gt;&lt;/code&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;&lt;p&gt;source: &lt;a href="http://norbauer.com/notebooks/code/notes/git-revert-reset-a-single-file"&gt;http://norbauer.com/notebooks/code/notes/git-revert-reset-a-single-file&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-190907422073119538?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/190907422073119538/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2010/11/revert-file-in-git.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/190907422073119538'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/190907422073119538'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2010/11/revert-file-in-git.html' title='Revert a file in Git'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-3214416537895274911</id><published>2010-10-27T10:40:00.000-07:00</published><updated>2010-10-27T10:40:00.047-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='subversion'/><title type='text'>Get a list of files that have changed between revisions in Subversion</title><content type='html'>&lt;code&gt;svn diff -r REVNO:HEAD --summarize&lt;br /&gt;&lt;br /&gt;source: http://muffinresearch.co.uk/archives/2008/09/15/svn-tip-get-list-of-files-changed-between-revisions/&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-3214416537895274911?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/3214416537895274911/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2010/10/get-list-of-files-that-have-changed.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/3214416537895274911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/3214416537895274911'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2010/10/get-list-of-files-that-have-changed.html' title='Get a list of files that have changed between revisions in Subversion'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-9209670542107799243</id><published>2010-10-21T11:30:00.000-07:00</published><updated>2010-10-21T11:32:06.564-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rumbling-ramblings'/><title type='text'>Macs</title><content type='html'>You don't use a mac if you know what you're doing.  You use a mac if you don't know what you're doing and you just want someone who does know what they're doing to configure a machine with all the basics set to the most popular settings.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-9209670542107799243?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/9209670542107799243/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2010/10/macs.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/9209670542107799243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/9209670542107799243'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2010/10/macs.html' title='Macs'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-9156133533999188254</id><published>2010-10-20T11:40:00.000-07:00</published><updated>2010-11-18T18:54:22.864-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='how-to'/><title type='text'>Whole Trackpad as a scrollwheel</title><content type='html'>Update: The below is all crap.  Turns out the best way to do it is to simply set up in your bashrc a call to synclient setting LeftEdge and RightEdge = 0&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;synclient LeftEdge=0&lt;br /&gt;synclient RightEdge=0&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;--------------------------------------------------------------------------------------&lt;br /&gt;Using synclient -l to display all values, find the value of LeftEdge and then set the value of RightEdge to the same value in LeftEdge in your xorg.conf under the 'InputDevice' section:&lt;br /&gt;&lt;br /&gt;&lt;pre class="alt2" dir="ltr" style="margin: 0px; padding: 6px; border: 1px inset; width: 640px; height: 194px; text-align: left; overflow: auto;"&gt;Section "InputDevice"&lt;br /&gt;Identifier "Synaptics Touchpad"&lt;br /&gt;Driver  "synaptics"&lt;br /&gt;Option  "SendCoreEvents" "true"&lt;br /&gt;Option  "Device" "/dev/psaux"&lt;br /&gt;Option  "Protocol" "auto-dev"&lt;br /&gt;Option  "SHMConfig" "on"&lt;br /&gt;Option  "HorizEdgeScroll" "0"&lt;br /&gt;&lt;b&gt; Option  "RightEdge" "1752"&lt;/b&gt;&lt;br /&gt;EndSection&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Source: http://ubuntuforums.org/showthread.php?t=886449&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-9156133533999188254?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/9156133533999188254/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2010/10/whole-trackpad-as-scrollwheel.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/9156133533999188254'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/9156133533999188254'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2010/10/whole-trackpad-as-scrollwheel.html' title='Whole Trackpad as a scrollwheel'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-2493227166029129060</id><published>2010-10-20T11:15:00.000-07:00</published><updated>2010-10-20T11:15:00.973-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software-development'/><title type='text'>Interuptable Programmer</title><content type='html'>http://www.stevestreeting.com/2010/09/04/work-2-0/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-2493227166029129060?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/2493227166029129060/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2010/10/interuptable-programmer.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/2493227166029129060'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/2493227166029129060'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2010/10/interuptable-programmer.html' title='Interuptable Programmer'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-992322376453450974</id><published>2010-10-16T00:10:00.000-07:00</published><updated>2010-10-16T00:38:07.046-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rumbling-ramblings'/><title type='text'>The Last of the 8s (Strange Adventures in Math)</title><content type='html'>Today I learned that I am one of the last of the 8s...  I was born in 1978 and this year has a unique property that 19+78 = 97 the middle two numbers of the year 1&lt;span style="font-weight: bold; font-style: italic;"&gt;97&lt;/span&gt;8.  Nifty.  What other years have this?&lt;br /&gt;&lt;br /&gt;Well assuming that we're just looking for years between 1000 and 10,000, we can write some python code to figure that out:&lt;br /&gt;&lt;pre&gt;for i in range(1000,10000):&lt;br /&gt;a = i/100&lt;br /&gt;b = i%100&lt;br /&gt;c = (i-(i/1000)*1000)/10&lt;br /&gt;if (a+b == c):&lt;br /&gt;  print(i)&lt;br /&gt;&lt;/pre&gt;This produces something kinda cool... but that I don't really understand:&lt;br /&gt;&lt;blockquote&gt;1208&lt;br /&gt;1318&lt;br /&gt;1428&lt;br /&gt;1538&lt;br /&gt;1648&lt;br /&gt;1758&lt;br /&gt;1868&lt;br /&gt;1978&lt;br /&gt;2307&lt;br /&gt;2417&lt;br /&gt;2527&lt;br /&gt;2637&lt;br /&gt;2747&lt;br /&gt;2857&lt;br /&gt;2967&lt;br /&gt;3406&lt;br /&gt;3516&lt;br /&gt;3626&lt;br /&gt;3736&lt;br /&gt;3846&lt;br /&gt;3956&lt;br /&gt;4505&lt;br /&gt;4615&lt;br /&gt;4725&lt;br /&gt;4835&lt;br /&gt;4945&lt;br /&gt;5604&lt;br /&gt;5714&lt;br /&gt;5824&lt;br /&gt;5934&lt;br /&gt;6703&lt;br /&gt;6813&lt;br /&gt;6923&lt;br /&gt;7802&lt;br /&gt;7912&lt;br /&gt;8901&lt;br /&gt;&lt;/blockquote&gt;That's 8 years that end in 8, 7 that end in 7, 6 that end in 6 etc down to one year that ends in 1 (8901).   But where are the 9's?  They're in adding the first value and the last value together.  36 of them (9*4?).. There's some other patterns in there as well.  I'm sure there's a whole dissertation in mathematics that's been written on this, but I'm not even sure where to start searching for more info about it (it's the Loblaw principle... named after it's founder, Bob Loblaw..)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-992322376453450974?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/992322376453450974/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2010/10/last-of-8s-strange-adventures-in-math.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/992322376453450974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/992322376453450974'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2010/10/last-of-8s-strange-adventures-in-math.html' title='The Last of the 8s (Strange Adventures in Math)'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-5421107428829412372</id><published>2010-10-08T14:15:00.000-07:00</published><updated>2010-10-28T21:25:12.170-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Alex Martelli on python vs ruby</title><content type='html'>&lt;a href="http://groups.google.com/group/comp.lang.python/msg/028422d707512283?pli=1"&gt;From comp.lang.python&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div id="qhide_2225" style="display: block;" class="qt"&gt;&lt;span class="fixed_width"&gt;Erik Max Francis wrote:&lt;br /&gt;&gt; "Brandon J. Van Every" wrote:&lt;br /&gt;&lt;/span&gt;&lt;p&gt;&lt;span class="fixed_width"&gt;&gt;&gt; What's better about Ruby than Python?  I'm sure there's something.&lt;br /&gt;&gt;&gt; What is it?&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="fixed_width"&gt;&gt; Wouldn't it make much more sense to ask Ruby people this, rather than&lt;br /&gt;&gt; Python people?&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;span class="fixed_width"&gt;Might, or might not, depending on one's purposes -- for example, if&lt;br /&gt;one's purposes include a "sociological study" of the Python community,&lt;br /&gt;then putting questions to that community is likely to prove more&lt;br /&gt;revealing of informaiton about it, than putting them elsewhere:-).&lt;br /&gt;&lt;/span&gt;&lt;p&gt;&lt;span class="fixed_width"&gt;Personally, I gladly took the opportunity to follow Dave Thomas'&lt;br /&gt;one-day Ruby tutorial at last OSCON.  Below a thin veneer of syntax&lt;br /&gt;differences, I find Ruby and Python amazingly similar -- if I was&lt;br /&gt;computing the minimum spanning tree among just about any set of&lt;br /&gt;languages, I'm pretty sure Python and Ruby would be the first two&lt;br /&gt;leaves to coalesce into an intermediate node:-).&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="fixed_width"&gt;Sure, I do get weary, in Ruby, of typing the silly "end" at the end&lt;br /&gt;of each block (rather than just unindenting) -- but then I do get&lt;br /&gt;to avoid typing the equally-silly ':' which Python requires at the&lt;br /&gt;_start_ of each block, so that's almost a wash:-).  Other syntax&lt;br /&gt;differences such as '@foo' versus 'self.foo', or the higher significance&lt;br /&gt;of case in Ruby vs Python, are really just about as irrelevant to me.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="fixed_width"&gt;Others no doubt base their choice of programming languages on just&lt;br /&gt;such issues, and they generate the hottest debates -- but to me that's&lt;br /&gt;just an example of one of Parkinson's Laws in action (the amount on&lt;br /&gt;debate on an issue is inversely proportional to the issue's actual&lt;br /&gt;importance).&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="fixed_width"&gt;One syntax difference that I do find important, and in Python's&lt;br /&gt;favour -- but other people will no doubt think just the reverse --&lt;br /&gt;is "how do you call a function which takes no parameters".  In&lt;br /&gt;Python (like in C), to call a function you always apply the&lt;br /&gt;"call operator" -- trailing parentheses just after the object&lt;br /&gt;you're calling (inside those trailing parentheses go the args&lt;br /&gt;you're passing in the call -- if you're passing no args, then&lt;br /&gt;the parentheses are empty).  This leaves the mere mention of&lt;br /&gt;any object, with no operator involved, as meaning just a&lt;br /&gt;reference to the object -- in any context, without special&lt;br /&gt;cases, exceptions, ad-hoc rules, and the like.  In Ruby (like&lt;br /&gt;in Pascal), to call a function WITH arguments you pass the&lt;br /&gt;args (normally in parentheses, though that is not invariably&lt;br /&gt;the case) -- BUT if the function takes no args then simply&lt;br /&gt;mentioning the function implicitly calls it.  This may meet&lt;br /&gt;the expectations of many people (at least, no doubt, those&lt;br /&gt;whose only previous experience of programming was with Pascal,&lt;br /&gt;or other languages with similar "implcit calling", such as&lt;br /&gt;Visual Basic) -- but to me, it means the mere mention of an&lt;br /&gt;object may EITHER mean a reference to the object, OR a call&lt;br /&gt;to the object, depending on the object's type -- and in those&lt;br /&gt;cases where I can't get a reference to the object by merely&lt;br /&gt;mentioning it I will need to use explicit "give me a reference&lt;br /&gt;to this, DON'T call it!" operators that aren't needed otherwise.&lt;br /&gt;I feel this impacts the "first-classness" of functions (or&lt;br /&gt;methods, or other callable objects) and the possibility of&lt;br /&gt;interchanging objects smoothly.  Therefore, to me, this specific&lt;br /&gt;syntax difference is a serious black mark against Ruby -- but&lt;br /&gt;I do understand why others would thing otherwise, even though&lt;br /&gt;I could hardly disagree more vehemently with them:-).&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="fixed_width"&gt;Below the syntax, we get into some important differences in&lt;br /&gt;elementary semantics -- for example, strings in Ruby are&lt;br /&gt;mutable objects (like in C++), while in Python they are not&lt;br /&gt;mutable (like in Java, or I believe C#).  Again, people who&lt;br /&gt;judge primarily by what they're already familiar with may&lt;br /&gt;think this is a plus for Ruby (unless they're familiar with&lt;br /&gt;Java or C#, of course:-).  Me, I think immutable strings are&lt;br /&gt;an excellent idea (and I'm not surprised that Java, independently&lt;br /&gt;I think, reinvented that idea which was already in Python), though&lt;br /&gt;I wouldn't mind having a "mutable string buffer" type as well&lt;br /&gt;(and ideally one with better ease-of-use than Java's own&lt;br /&gt;"string buffers"); and I don't give this judgment because of&lt;br /&gt;familiarity -- before studying Java, apart from functional&lt;br /&gt;programming languages where _all_ data are immutable, all the&lt;br /&gt;languages I knew had mutable strings -- yet when I first saw&lt;br /&gt;the immutable-string idea in Java (which I learned well before&lt;br /&gt;I learned Python), it immediately struck me as excellent, a&lt;br /&gt;very good fit for the reference-semantics of a higher level&lt;br /&gt;programming language (as opposed to the value-semantics that&lt;br /&gt;fit best with languages closer to the machine and farther from&lt;br /&gt;applications, such as C) with strings as a first-class, built-in&lt;br /&gt;(and pretty crucial) data type.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="fixed_width"&gt;Ruby does have some advantages in elementary semantics -- for&lt;br /&gt;example, the removal of Python's "lists vs tuples" exceedingly&lt;br /&gt;subtle distinction.  But mostly the score (as I keep it, with&lt;br /&gt;simplicity a big plus and subtle, clever distinctions a notable&lt;br /&gt;minus) is against Ruby (e.g., having both closed and half-open&lt;br /&gt;intervals, with the notations a..b and a...b [anybody wants&lt;br /&gt;to claim that it's _obvious_ which is which?-)], is silly --&lt;br /&gt;IMHO, of course!).  Again, people who consider having a lot of&lt;br /&gt;similar but subtly different things at the core of a language&lt;br /&gt;a PLUS, rather than a MINUS, will of course count these "the&lt;br /&gt;other way around" from how I count them:-).&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="fixed_width"&gt;Don't be misled by these comparisons into thinking the two&lt;br /&gt;languages are _very_ different, mind you.  They aren't.  But&lt;br /&gt;if I'm asked to compare "capelli d'angelo" to "spaghettini",&lt;br /&gt;after pointing out that these two kinds of pasta are just&lt;br /&gt;about undistinguishable to anybody and interchangeable in any&lt;br /&gt;dish you might want to prepare, I would then inevitably have&lt;br /&gt;to move into microscopic examination of how the lengths and&lt;br /&gt;diameters imperceptibly differ, how the ends of the strands&lt;br /&gt;are tapered in one case and not in the other, and so on -- to&lt;br /&gt;try and explain why I, personally, would rather have capelli&lt;br /&gt;d'angelo as the pasta in any kind of broth, but would prefer&lt;br /&gt;spaghettini as the pastasciutta to go with suitable sauces for&lt;br /&gt;such long thin pasta forms (olive oil, minced garlic, minced&lt;br /&gt;red peppers, and finely ground anchovies, for example - but if&lt;br /&gt;you sliced the garlic and peppers instead of mincing them, then&lt;br /&gt;you should choose the sounder body of spaghetti rather than the&lt;br /&gt;thinner evanescence of spaghettini, and would be well advised&lt;br /&gt;to forego the achoview and add instead some fresh spring basil&lt;br /&gt;[or even -- I'm a heretic...! -- light mint...] leaves -- at&lt;br /&gt;the very last moment before serving the dish).  Ooops, sorry,&lt;br /&gt;it shows that I'm traveling abroad and haven't had pasta for&lt;br /&gt;a while, I guess.  But the analogy is still pretty good!-)&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="fixed_width"&gt;So, back to Python and Ruby, we come to the two biggies (in&lt;br /&gt;terms of language proper -- leaving the libraries, and other&lt;br /&gt;important ancillaries such as tools and environments, how to&lt;br /&gt;embed/extend each language, etc, etc, out of it for now -- they&lt;br /&gt;wouldn't apply to all IMPLEMENTATIONS of each language anyway,&lt;br /&gt;e.g., Jython vs Classic Python being two implementations of&lt;br /&gt;the Python language!):&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="fixed_width"&gt;1. Ruby's iterators and codeblocks vs Python's iterators&lt;br /&gt; and generators;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="fixed_width"&gt;2. Ruby's TOTAL, unbridled "dynamicity", including the ability&lt;br /&gt; to "reopen" any existing class, including all built-in ones,&lt;br /&gt; and change its behavior at run-time -- vs Python's vast but&lt;br /&gt; _bounded_ dynamicity, which never changes the behavior of&lt;br /&gt; existing built-in classes and their instances.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="fixed_width"&gt;Personally, I consider [1] a wash (the differences are so&lt;br /&gt;deep that I could easily see people hating either approach&lt;br /&gt;and revering the other, but on MY personal scales the pluses&lt;br /&gt;and minuses just about even up); and [2] a crucial issue --&lt;br /&gt;one that makes Ruby much more suitable for "tinkering", BUT&lt;br /&gt;Python equally more suitable for use in large production&lt;br /&gt;applications.  It's funny, in a way, because both languages&lt;br /&gt;are so MUCH more dynamic than most others, that in the end&lt;br /&gt;the key difference between them from my POV should hinge on&lt;br /&gt;that -- that Ruby "goes to eleven" in this regard (the&lt;br /&gt;reference here is to "Spinal Tap", of course).  In Ruby,&lt;br /&gt;there are no limits to my creativity -- if I decide that&lt;br /&gt;all string comparisons must become case-insensitive, _I CAN&lt;br /&gt;DO THAT_!  I.e., I can dynamically alter the built-in string&lt;br /&gt;class so that&lt;br /&gt;  a = "Hello World"&lt;br /&gt;  b = "hello world"&lt;br /&gt;  if a == b&lt;br /&gt;      print "equal!\n"&lt;br /&gt;  else&lt;br /&gt;      print "different!\n"&lt;br /&gt;  end&lt;br /&gt;WILL print "equal".  In python, there is NO way I can do&lt;br /&gt;that.  For the purposes of metaprogramming, implementing&lt;br /&gt;experimental frameworks, and the like, this amazing dynamic&lt;br /&gt;ability of Ruby is _extremely_ appealing.  BUT -- if we're&lt;br /&gt;talking about large applications, developed by many people&lt;br /&gt;and maintained by even more, including all kinds of libraries&lt;br /&gt;from diverse sources, and needing to go into production in&lt;br /&gt;client sites... well, I don't WANT a language that is QUITE&lt;br /&gt;so dynamic, thank you very much.  I loathe the very idea of&lt;br /&gt;some library unwittingly breaking other unrelated ones that&lt;br /&gt;rely on those strings being different -- that's the kind of&lt;br /&gt;deep and deeply hidden "channel", between pieces of code that&lt;br /&gt;LOOK separate and SHOULD BE separate, that spells d-e-a-t-h&lt;br /&gt;in large-scale programming.  By letting any module affect the&lt;br /&gt;behavior of any other "covertly", the ability to mutate the&lt;br /&gt;semantics of built-in types is just a BAD idea for production&lt;br /&gt;application programming, just as it's cool for tinkering.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="fixed_width"&gt;If I had to use Ruby for such a large application, I would&lt;br /&gt;try to rely on coding-style restrictions, lots of tests (to&lt;br /&gt;be rerun whenever ANYTHING changes -- even what should be&lt;br /&gt;totally unrelated...), and the like, to prohibit use of this&lt;br /&gt;language feature.  But NOT having the feature in the first&lt;br /&gt;place is even better, in my opinion -- just as Python itself&lt;br /&gt;would be an even better language for application programming&lt;br /&gt;if a certain number of built-ins could be "nailed down", so&lt;br /&gt;I KNEW that, e.g., len("ciao") is 4 (rather than having to&lt;br /&gt;worry subliminally about whether somebody's changed the&lt;br /&gt;binding of name 'len' in the __builtins__ module...).  I do&lt;br /&gt;hope that eventually Python does "nail down" its built-ins.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="fixed_width"&gt;But the problem's minor, since rebinding built-ins is quite&lt;br /&gt;a deprecated as well as a rare practice in Python.  In Ruby,&lt;br /&gt;it strikes me as major -- just like the _too powerful_ macro&lt;br /&gt;facilities of other languages (such as, say, Dylan) present&lt;br /&gt;similar risks in my own opinion (I do hope that Python never&lt;br /&gt;gets such a powerful macro system, no matter the allure of&lt;br /&gt;"letting people define their own domain-specific little&lt;br /&gt;languages embedded in the language itself" -- it would, IMHO,&lt;br /&gt;impair Python's wonderful usefulness for application&lt;br /&gt;programming, by presenting an "attractive nuisance" to the&lt;br /&gt;would-be tinkerer who lurks in every programmer's heart...).&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;Alex Martelli&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-5421107428829412372?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/5421107428829412372/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2010/10/from-comp.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/5421107428829412372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/5421107428829412372'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2010/10/from-comp.html' title='Alex Martelli on python vs ruby'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-9206011256855009484</id><published>2010-10-06T22:50:00.000-07:00</published><updated>2010-10-28T21:28:26.206-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rumbling-ramblings'/><title type='text'>Coach Johnny D's quote..</title><content type='html'>Our deepest fear is not that we are inadequate.&lt;br /&gt;Our deepest fear is that we are powerful beyond measure.&lt;br /&gt;It is our light, not our darkness, that most frightens us.&lt;br /&gt;Your playing small does not serve the world.&lt;br /&gt;There is nothing enlightened about shrinking so that other people won't feel insecure around you.&lt;br /&gt;...We are all meant to shine as children do.&lt;br /&gt;It's not just in some of us; it is in everyone.&lt;br /&gt;And as we let our own lights shine, we unconsciously give other people permission to do the same.&lt;br /&gt;As we are liberated from our own fear,&lt;br /&gt;our presence automatically liberates others.&lt;br /&gt;&lt;br /&gt;Marianne Williamson via Coach Johnny D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-9206011256855009484?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/9206011256855009484/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2010/10/coach-johnny-ds-quote.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/9206011256855009484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/9206011256855009484'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2010/10/coach-johnny-ds-quote.html' title='Coach Johnny D&apos;s quote..'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-3012100007506759231</id><published>2010-09-10T16:40:00.000-07:00</published><updated>2011-05-27T10:39:12.289-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='git'/><title type='text'>List just the files that have changed in git.</title><content type='html'>To show the files that have changed between two revisions:&lt;br /&gt;&lt;blockquote&gt;git diff --name-only foo bar&lt;/blockquote&gt;&lt;br /&gt;To show the files that changed for a particular commit:&lt;br /&gt;&lt;blockquote&gt;git show --pretty="format:" --name-only *commit-sha*&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-3012100007506759231?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/3012100007506759231/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2010/09/list-just-files-that-have-changed.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/3012100007506759231'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/3012100007506759231'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2010/09/list-just-files-that-have-changed.html' title='List just the files that have changed in git.'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-965490105972731400</id><published>2010-09-07T13:45:00.000-07:00</published><updated>2010-09-07T13:46:29.659-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='how-to'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome'/><title type='text'>Change Gnome login background/theme</title><content type='html'>1.When logged out, hold down CTRL+Alt+F1&lt;br /&gt;2.Type export DISPLAY=:0.0 and press ENTER&lt;br /&gt;3.Type Sudo -u gdm gnome-control-center and press ENTER&lt;br /&gt;4.Hold down CTRL+Alt+F7&lt;br /&gt;5.Gnome Control Center will appear. Press ''Apperance'' and choose a picture.&lt;br /&gt;6. Close the window and log in&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-965490105972731400?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/965490105972731400/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2010/09/change-gnome-login-backgroundtheme.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/965490105972731400'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/965490105972731400'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2010/09/change-gnome-login-backgroundtheme.html' title='Change Gnome login background/theme'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-2052443018110849279</id><published>2010-08-24T23:25:00.000-07:00</published><updated>2010-08-25T00:19:11.849-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rumbling-ramblings'/><title type='text'>Epic Pub Crawl Remembered</title><content type='html'>Almost a year ago, we had an end of soccer party on a Saturday which turned into an epic pub crawl (my first ever).  It was myself, JR, Jay, and Josh Jetson (seriously). We started drinking at Venice Beach Wines, then made our way to the beach where we got lunch.  I remember seeing the smoke from the Station fire that was raging in the hills behind Pasadena while we were walking along the shore.  From there we made our way back to Abbot-Kinney where we stopped at the Otheroom and hung out drinking various beers for about 5 hours.  People we knew stopped by and eventually Enos showed up and we had a great time just chatting about random stuff.  We were there so long that Jay took off and got some sandwiches for us all for dinner.  From there we wandered over to Roosterfish, a gay bar with cheap drinks and got drunk on wiskey... we were basically there alone since it was still early in the evening (9pm).  After that we continued on to The Brig where we continued drinking various stuff (PBR!.. for sheer trendiness) until around midnight when we decided to head for home.  But first we stopped at one of the taco trucks that had showed up and grabbed some tacos.  On the way home was basically when I realized that I was really drunk.  I was walking along fuzzy headed and couldn't stop hiccuping.  We got to Jay's place and continued drinking and chatting.&lt;br /&gt;&lt;br /&gt;A pub crawl, starting at 11am and ending at 3am in Venice beach.  It was the most fun I think I've ever had and all we did was talk, eat and drink.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-2052443018110849279?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/2052443018110849279/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2010/08/epic-pub-crawl-remembered.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/2052443018110849279'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/2052443018110849279'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2010/08/epic-pub-crawl-remembered.html' title='Epic Pub Crawl Remembered'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-8424899754281418374</id><published>2010-08-24T22:55:00.000-07:00</published><updated>2010-08-24T22:56:20.238-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='instructions'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><category scheme='http://www.blogger.com/atom/ns#' term='console'/><title type='text'>Adding backgrounds to directories in LS_COLORS</title><content type='html'>To add backgrounds to the directories in the output of ls, in .bashrc add:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;export LS_COLORS='di=01;34;47'&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-8424899754281418374?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/8424899754281418374/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2010/08/adding-backgrounds-to-directories-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/8424899754281418374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/8424899754281418374'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2010/08/adding-backgrounds-to-directories-in.html' title='Adding backgrounds to directories in LS_COLORS'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-8403917925930275540</id><published>2010-08-23T17:55:00.000-07:00</published><updated>2010-08-23T17:57:41.651-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rumbling-ramblings'/><title type='text'>Quicklaunch ballistic space cannon</title><content type='html'>&lt;object width="640" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/1IXYsDdPvbo&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=en_US&amp;feature=player_embedded&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/1IXYsDdPvbo&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=en_US&amp;feature=player_embedded&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="320" height="193"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-8403917925930275540?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/8403917925930275540/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2010/08/quicklaunch-ballistic-space-cannon.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/8403917925930275540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/8403917925930275540'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2010/08/quicklaunch-ballistic-space-cannon.html' title='Quicklaunch ballistic space cannon'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-782699688795827711</id><published>2010-08-20T11:25:00.001-07:00</published><updated>2010-08-20T11:27:53.674-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rumbling-ramblings'/><title type='text'>Invisible Flying Spaghetti Monster In My Garage...</title><content type='html'>The Dragon In My Garage&lt;br /&gt;&lt;br /&gt;by Carl Sagan&lt;br /&gt;"A fire-breathing dragon lives in my garage"&lt;br /&gt;&lt;br /&gt;Suppose (I'm following a group therapy approach by the psychologist Richard Franklin) I seriously make such an assertion to you.  Surely you'd want to check it out, see for yourself.  There have been innumerable stories of dragons over the centuries, but no real evidence. What an opportunity!&lt;br /&gt;&lt;br /&gt;"Show me," you say.  I lead you to my garage.  You look inside and see a ladder, empty paint cans, an old tricycle -- but no dragon.&lt;br /&gt;&lt;br /&gt;"Where's the dragon?" you ask.&lt;br /&gt;&lt;br /&gt;"Oh, she's right here," I reply, waving vaguely.  "I neglected to mention that she's an invisible dragon."&lt;br /&gt;&lt;br /&gt;You propose spreading flour on the floor of the garage to capture the dragon's footprints.&lt;br /&gt;&lt;br /&gt;"Good idea," I say, "but this dragon floats in the air."&lt;br /&gt;&lt;br /&gt;Then you'll use an infrared sensor to detect the invisible fire.&lt;br /&gt;&lt;br /&gt;"Good idea, but the invisible fire is also heatless."&lt;br /&gt;&lt;br /&gt;You'll spray-paint the dragon and make her visible.&lt;br /&gt;&lt;br /&gt;"Good idea, but she's an incorporeal dragon and the paint won't stick."  And so on.  I counter every physical test you propose with a special explanation of why it won't work.&lt;br /&gt;&lt;br /&gt;Now, what's the difference between an invisible, incorporeal, floating dragon who spits heatless fire and no dragon at all?  If there's no way to disprove my contention, no conceivable experiment that would count against it, what does it mean to say that my dragon exists?  Your inability to invalidate my hypothesis is not at all the same thing as proving it true.  Claims that cannot be tested, assertions immune to disproof are veridically worthless, whatever value they may have in inspiring us or in exciting our sense of wonder.  What I'm asking you to do comes down to believing, in the absence of evidence, on my say-so.  The only thing you've really learned from my insistence that there's a dragon in my garage is that something funny is going on inside my head.  You'd wonder, if no physical tests apply, what convinced me.  The possibility that it was a dream or a hallucination would certainly enter your mind.  But then, why am I taking it so seriously?  Maybe I need help.  At the least, maybe I've seriously underestimated human fallibility.  Imagine that, despite none of the tests being successful, you wish to be scrupulously open-minded.  So you don't outright reject the notion that there's a fire-breathing dragon in my garage.  You merely put it on hold.  Present evidence is strongly against it, but if a new body of data emerge you're prepared to examine it and see if it convinces you.  Surely it's unfair of me to be offended at not being believed; or to criticize you for being stodgy and unimaginative -- merely because you rendered the Scottish verdict of "not proved."&lt;br /&gt;&lt;br /&gt;Imagine that things had gone otherwise.  The dragon is invisible, all right, but footprints are being made in the flour as you watch.  Your infrared detector reads off-scale.  The spray paint reveals a jagged crest bobbing in the air before you.  No matter how skeptical you might have been about the existence of dragons -- to say nothing about invisible ones -- you must now acknowledge that there's something here, and that in a preliminary way it's consistent with an invisible, fire-breathing dragon.&lt;br /&gt;&lt;br /&gt;Now another scenario: Suppose it's not just me.  Suppose that several people of your acquaintance, including people who you're pretty sure don't know each other, all tell you that they have dragons in their garages -- but in every case the evidence is maddeningly elusive.  All of us admit we're disturbed at being gripped by so odd a conviction so ill-supported by the physical evidence.  None of us is a lunatic.  We speculate about what it would mean if invisible dragons were really hiding out in garages all over the world, with us humans just catching on.  I'd rather it not be true, I tell you.  But maybe all those ancient European and Chinese myths about dragons weren't myths at all.&lt;br /&gt;&lt;br /&gt;Gratifyingly, some dragon-size footprints in the flour are now reported.  But they're never made when a skeptic is looking.  An alternative explanation presents itself.  On close examination it seems clear that the footprints could have been faked.  Another dragon enthusiast shows up with a burnt finger and attributes it to a rare physical manifestation of the dragon's fiery breath.  But again, other possibilities exist.  We understand that there are other ways to burn fingers besides the breath of invisible dragons.  Such "evidence" -- no matter how important the dragon advocates consider it -- is far from compelling.  Once again, the only sensible approach is tentatively to reject the dragon hypothesis, to be open to future physical data, and to wonder what the cause might be that so many apparently sane and sober people share the same strange delusion.&lt;br /&gt;&lt;br /&gt;--- Excerpt from  &lt;a href="http://www.amazon.com/exec/obidos/ASIN/0345409469/qid=994520541/sr=1-20/ref=sc_b_20/103-7805055-6613450"&gt;The Demon-Haunted World&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-782699688795827711?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/782699688795827711/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2010/08/invisible-flying-spaghetti-monster-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/782699688795827711'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/782699688795827711'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2010/08/invisible-flying-spaghetti-monster-in.html' title='Invisible Flying Spaghetti Monster In My Garage...'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-1336781217157928802</id><published>2010-08-10T17:00:00.000-07:00</published><updated>2010-08-17T13:02:55.183-07:00</updated><title type='text'>Fade out of focus windows in xmonad with xcompmgr and transset</title><content type='html'>Assuming that you have xmonad already installed on an ubuntu (or other debian based) machine:&lt;div&gt;&lt;ul&gt;&lt;li&gt;Install xcompmgr and transset:&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;blockquote&gt;&lt;i&gt;sudo apt-get install xcompmgr transset&lt;/i&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Add the following to your .xprofile:&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;blockquote&gt;&lt;i&gt;xcompmgr -c&amp;amp;&lt;/i&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Add the following to your xmonad.hs:&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;i&gt;import XMonad.Hooks.FadeInactive&lt;br&gt;myLogHook :: X ()&lt;br&gt;myLogHook = fadeInactiveLogHook fadeAmount&lt;br&gt;where fadeAmount = 0.4 --or 0xdddddddd etc&lt;br&gt;main = xmonad defaultConfig { logHook = myLogHook }&lt;br&gt;-- replace defaultConfig with your config class (ie gnomeConfig if you're using gnome+xmonad)&lt;/i&gt;&lt;/blockquote&gt;&lt;ul&gt;&lt;li&gt;Restart your x session (logout)&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Done&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Sources:&lt;br /&gt;&lt;a href="http://serverfault.com/questions/29866/using-compiz-with-xmonad"&gt;http://serverfault.com/questions/29866/using-compiz-with-xmonad&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://hackage.haskell.org/packages/archive/xmonad-contrib/0.8/doc/html/XMonad-Hooks-FadeInactive.html"&gt;http://hackage.haskell.org/packages/archive/xmonad-contrib/0.8/doc/html/XMonad-Hooks-FadeInactive.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://wiki.archlinux.org/index.php/Xcompmgr"&gt;http://wiki.archlinux.org/index.php/Xcompmgr&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-1336781217157928802?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/1336781217157928802/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2010/08/fade-out-of-focus-windows-in-xmonad.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/1336781217157928802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/1336781217157928802'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2010/08/fade-out-of-focus-windows-in-xmonad.html' title='Fade out of focus windows in xmonad with xcompmgr and transset'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-2970056803805481134</id><published>2010-08-10T10:55:00.000-07:00</published><updated>2010-08-10T10:56:40.707-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Alex Martelli is a python encyclopedia..</title><content type='html'>&lt;a href="http://www.aleax.it/python_mat_en.html"&gt;http://www.aleax.it/python_mat_en.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-2970056803805481134?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/2970056803805481134/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2010/08/alex-martelli-is-python-encyclopedia.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/2970056803805481134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/2970056803805481134'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2010/08/alex-martelli-is-python-encyclopedia.html' title='Alex Martelli is a python encyclopedia..'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-5946712301298704526</id><published>2010-07-30T14:15:00.000-07:00</published><updated>2010-09-25T16:00:56.168-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='how-to'/><category scheme='http://www.blogger.com/atom/ns#' term='xmonad'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome'/><title type='text'>Gnome + Xmonad</title><content type='html'>From &lt;a href="http://markhansen.co.nz/xmonad-ubuntu-lucid"&gt;http://markhansen.co.nz/xmonad-ubuntu-lucid&lt;/a&gt;&lt;br /&gt;Here’s how to run XMonad as a drop-in replacement for gnome’s default window manager (Metacity):&lt;br /&gt;&lt;br /&gt;Install XMonad. Open a terminal and enter:&lt;br /&gt;&lt;blockquote&gt;sudo apt-get install xmonad&lt;/blockquote&gt;Configure XMonad to interact happily with gnome. Make a file ~/.xmonad/xmonad.hs, and put in it:&lt;br /&gt;&lt;blockquote&gt;import XMonad&lt;br /&gt;import XMonad.Config.Gnome&lt;br /&gt;main = xmonad gnomeConfig&lt;/blockquote&gt;Compile this config file by typing &lt;b&gt;&lt;i&gt;xmonad --recompile&lt;/i&gt;&lt;/b&gt; at the terminal.&lt;br /&gt;&lt;br /&gt;Tell gnome to use xmonad instead of metacity. At the terminal, enter:&lt;br /&gt;&lt;blockquote&gt;gconftool-2 -s /desktop/gnome/session/required_components/windowmanager xmonad --type string&lt;/blockquote&gt;Log out and log back in and you're done.&lt;br /&gt;&lt;br /&gt;NOTE: To revert back to Metacity from XMonad, at the terminal, enter:&lt;br /&gt;&lt;blockquote&gt;gconftool-2 -s /desktop/gnome/session/required_components/windowmanager gnome-wm --type string&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-5946712301298704526?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/5946712301298704526/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2010/07/gnome-xmonad.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/5946712301298704526'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/5946712301298704526'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2010/07/gnome-xmonad.html' title='Gnome + Xmonad'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-2550321670264651219</id><published>2010-06-22T18:45:00.000-07:00</published><updated>2010-08-25T00:18:10.117-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rumbling-ramblings'/><title type='text'>Blogging for more than a year..</title><content type='html'>It's been more than a year since I started this blog.  Wow.  When I started the blog, I was working on finishing off the Shopgreen site, a site that was very well tested and laid out, but got no love (it really was kind of a dry project) from the higher ups. &lt;br /&gt;&lt;br /&gt;A year ago today, I had just started on the CNN Trivia project for Red.  Wait scrap that, I was waiting to get started on the trivia project and still working on shopgreen site while waiting for the 'producer' to figure out what to do.  That project pretty much soaked up my time from July until it eventually finished after some delays in October, but was still ready for the re-launch of the Cnn site.&lt;br /&gt;&lt;br /&gt;After that project I basically sat around for 3 weeks until I was let go the week of thanksgiving.  Thanks, assholes.  After that, I was annoyed with the whole prospect of having to work for another crappy non-engineering company and took the month of December off.&lt;br /&gt;&lt;br /&gt;I started looking again in January, and with no work and no interviews beyond one at the beginning of the month, I started to get worried about paying to bills and actually applied for unemployment.  But the interview earlier in the month panned out and I was able to tell the employment office that I didnt need unemployment after all.&lt;br /&gt;&lt;br /&gt;February started with OpenID.. a crappy configuration hell project which made me doubt my skills as a python programmer due to bug after frustrating bug, most of which were in the repoze.who openid implementation.  But at least I learned a ton about wsgi.&lt;br /&gt;&lt;br /&gt;March brought the end of the OpenID project as it turned out OpenID didnt really provide what the tech lead wanted after all.  At the end of the month I started on the Asset Admin project which entailed finally having to give up avoiding javascript/html/css.  I've actually become rather good at it, but I'm still not entirely enthused about having to work on js/html projects.&lt;br /&gt;&lt;br /&gt;In April I finished the first portion of the Asset Admin, the Playlist Editor, but due to work overload on the tech lead, it was never released.  I completely rewrote Playlist Editor 5 times due to having to learn js/jquery at the same time, but in the end I was proud of the result.  At the end of April I started on the second part of the Asset Admin, the Media Picker which was basically a continuation of what I had learned from Playlist Editor.&lt;br /&gt;&lt;br /&gt;During May I continued working on the Media Picker, updating Playlist Editor as I learned more javascript/jquery tricks.  Around this time I took the plunge into really understanding CSS.  I got the two sub projects looking pretty good.  I finished Media Picker and started on the last piece, the Asset Editor towards the middle of the month.  I worked hard to make it so that the Asset Editor could be used anywhere (with Playlist Editor or Media Picker) and still look the same (no shifting of images or changing of heights).&lt;br /&gt;&lt;br /&gt;But in June, the whole backend project which the Asset Admin was an administrative front end for was basically canceled through a decision by the parent company to allow serving of media through youtube and facebook etc.   Everyone scrambled around looking for work until we started work on the current project which I'm not too keen on working on, the dashboard project, which is basically just a nice display of a bunch of CEO porn (aka random statistics about various things that are applicable to the company).&lt;br /&gt;&lt;br /&gt;Non work related, I played soccer!   From February '09 to August '09, I played soccer with the team we had  at Red.  Not since I was 17 in high school had I last played, but I was still one of the better players on the team.  Surprisingly, one of the most artsy guys at the office was the best player on the team. We played for two seasons in which I had the most goals for our team the first season (3: headed the ball over the defender then blasted it in, the penalty kick, and the loose ball calm shot) but only got one second season (left footed shot!)  That being said, we were a pretty sorry bunch with more than half the team having never played soccer before.  Most scores were around 8-0 or some such.&lt;br /&gt;&lt;br /&gt;In August, for the end of soccer party, I got drunk for the first time during an epic 14 hour pub crawl.  Just a bunch of guys from the soccer team talking and drinking.  Good times.&lt;br /&gt;&lt;br /&gt;In October, the trainer I had been working out with for the past year finally opened his own gym.   I trained with him in the gym as he was still building it; before the pull up bars were up, before the rubber mats were down.  Previously we had been working out at one of those small gyms that big apartment complexes provide as an incentive to move in, but nobody really uses.  And before that we were at some place in Monrovia which was owned by some guy who reminded me of a shorter smaller version of Mitch.&lt;br /&gt;&lt;br /&gt;In November I got drunk for the second (and probably last) time during another pub crawl for JR's birthday.  Wasn't as great as the first time as I ended up getting sick at the end of the night and had to crash at JR's place.&lt;br /&gt;&lt;br /&gt;In December I did almost absolutely nothing.&lt;br /&gt;&lt;br /&gt;In January I managed to find a job while continuing to save tons of money.&lt;br /&gt;&lt;br /&gt;In February, my gf got a roborovski hamster (Hammie).  A neurotic and seemingly suicidal hamster that is bascially crippled by fear.  After a few weeks of having the hamster hurl itself from great heights to escape us, the gf got a second hamster.  This one is a much more hamster-y hamster which we named 'Cookie'.   Cookie lets us pet her and is very aware of heights and is generally adorable.&lt;br /&gt;&lt;br /&gt;In April, for my birthday, the gf bought a second damn dog on complete impulse, chopped all her beautiful hair off, put on 15lbs, and was a complete bitch.  The three weeks after my birthday she was basically the most unfriendly and bitch that I've ever known her to be.  On several occasions I was bound and determined to call it quits, but I remained calm and kept telling myself that she was just going through some rough times.  She eventually came out of it.&lt;br /&gt;&lt;br /&gt;And so there's a year.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-2550321670264651219?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/2550321670264651219/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2010/06/blogging-for-more-than-year.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/2550321670264651219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/2550321670264651219'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2010/06/blogging-for-more-than-year.html' title='Blogging for more than a year..'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-8824494898945263616</id><published>2010-06-22T18:25:00.000-07:00</published><updated>2010-06-22T21:24:16.014-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='capslock'/><category scheme='http://www.blogger.com/atom/ns#' term='ctrl'/><category scheme='http://www.blogger.com/atom/ns#' term='how-to'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>Windows Key remapping</title><content type='html'>So today I wanted to remap more than just capslock -&gt; lctrl.   I searched around a bit to try and find scan codes for registry hacks but didnt find much.  I did find, &lt;a href="http://justkeepswimming.net/keymapper/"&gt;this little tool&lt;/a&gt;, which is great but you need to make sure that you're editing boot mappings and not user mappings.&lt;br /&gt;&lt;br /&gt;Go to Mappings-&gt; Show and select 'Boot Mappings' to ensure that you're editing the right keys.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-8824494898945263616?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/8824494898945263616/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2010/06/windows-key-remapping.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/8824494898945263616'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/8824494898945263616'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2010/06/windows-key-remapping.html' title='Windows Key remapping'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-97767936141443768</id><published>2010-05-17T15:35:00.000-07:00</published><updated>2010-05-21T01:40:36.413-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rumbling-ramblings'/><title type='text'>The "Big Lebowski" Office Management Method</title><content type='html'>&lt;span style="font-weight: normal; color: rgb(255, 85, 104);"&gt;Keesey: &lt;/span&gt;We'll just let stuff happen, man&lt;div&gt;&lt;span style="font-weight: normal; color: rgb(84, 255, 173);"&gt;jbum: &lt;/span&gt;"go with the flow"&lt;/div&gt;&lt;div&gt;&lt;span style="font-weight: normal; color: rgb(255, 85, 104);"&gt;Keesey: &lt;/span&gt;It'd be beautiful, you dig?&lt;/div&gt;&lt;div&gt;&lt;span style="font-weight: normal; color: rgb(84, 255, 173);"&gt;jbum: &lt;/span&gt;if a meeting wants to happen, it'll happen, dude&lt;/div&gt;&lt;div&gt;&lt;span style="font-weight: normal; color: rgb(84, 255, 173);"&gt;jbum: &lt;/span&gt;otherwise, it wasn't meant to be&lt;/div&gt;&lt;div&gt;&lt;span style="font-weight: normal; color: rgb(255, 85, 104);"&gt;Keesey: &lt;/span&gt;free your calendar and your mind will follow&lt;/div&gt;&lt;div&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(255, 159, 148);"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: normal; color: rgb(255, 159, 148);"&gt;wickedSA: &lt;/span&gt;the "big lebowski" office management method&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-97767936141443768?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/97767936141443768/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2010/05/tthe-big-lebowski-office-management.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/97767936141443768'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/97767936141443768'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2010/05/tthe-big-lebowski-office-management.html' title='The &quot;Big Lebowski&quot; Office Management Method'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-2304142508846888900</id><published>2010-04-29T23:20:00.000-07:00</published><updated>2010-04-29T23:44:04.191-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rumbling-ramblings'/><title type='text'>Suppression.</title><content type='html'>"There are many hypotheses in science which are wrong.  That's perfectly alright.  It's the aperture to finding out what's right. Science is a self correcting process.  To be accepted, new idea's must survive the most rigorous standards of evidence and scrutiny.&lt;br /&gt;&lt;br /&gt;The &lt;span style="font-weight: bold; font-style: italic; color: rgb(255, 0, 0);"&gt;worst&lt;/span&gt; aspect of the Velikovsky affair &lt;span style="font-weight: bold; font-style: italic;"&gt;is not that many of his ideas were wrong or silly&lt;/span&gt; or in gross contradiction to the facts.  Rather, the &lt;span style="font-weight: bold; font-style: italic; color: rgb(255, 0, 0);"&gt;worst&lt;/span&gt; aspect is that &lt;span style="color: rgb(255, 0, 0); font-style: italic; font-weight: bold;"&gt;some scientists&lt;/span&gt; attempted to &lt;span style="font-weight: bold; font-style: italic; color: rgb(255, 0, 0);"&gt;suppress &lt;/span&gt;Velikovsky's ideas. &lt;br /&gt;&lt;br /&gt;The suppression of uncomfortable ideas may be common in religion or in politics, but it is not the path to knowledge and there is no place for it in the endevour of science.  We do not know beforehand where fundamental insights will arise from about our mysterious and lovely solar system and &lt;span style="font-weight: bold;"&gt;the history of our study of the solar system shows clearly that accepted and conventional idea's are often wrong&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;that fundamental insights can arise from most unexpected sources&lt;/span&gt;."&lt;br /&gt;&lt;br /&gt;- Carl Sagan: "Cosmos" Ep.4 - Heaven and Hell.  It's on Netflix.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-2304142508846888900?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/2304142508846888900/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2010/04/suppression.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/2304142508846888900'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/2304142508846888900'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2010/04/suppression.html' title='Suppression.'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-5016932558262993499</id><published>2010-03-12T14:40:00.000-08:00</published><updated>2010-03-12T16:57:50.327-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='questions'/><title type='text'>The Tedious Questions..</title><content type='html'>Q: In SQL what does 'Group By' do?&lt;br /&gt;&lt;br /&gt;A: The GROUP BY statement is used in conjunction with the &lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;aggregate  functions&lt;/span&gt;&lt;/span&gt;(avg, sum, etc) to group the result-set by one or more columns.  Note that only the columns used by the GROUP BY statement can be used in the SELECT statement.&lt;br /&gt;&lt;br /&gt;fred| 100&lt;br /&gt;bob| 100&lt;br /&gt;fred| 400&lt;br /&gt;&lt;br /&gt;SELECT Customer,SUM(OrderPrice) FROM Orders&lt;br /&gt;GROUP BY Customer&lt;br /&gt;&lt;br /&gt;fred| 500&lt;br /&gt;bob| 400&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-5016932558262993499?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/5016932558262993499/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2010/03/tedious-questions.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/5016932558262993499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/5016932558262993499'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2010/03/tedious-questions.html' title='The Tedious Questions..'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-1473499407932439404</id><published>2010-02-03T15:25:00.000-08:00</published><updated>2010-02-03T15:25:11.870-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='instructions'/><category scheme='http://www.blogger.com/atom/ns#' term='how-to'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>Disable Ease of Access in windows 7</title><content type='html'>Finally found a command that will completely disable Ease of Access in windows 7.  On the command line, run&lt;br /&gt;&lt;blockquote&gt;cacls %windir%\system32\utilman.exe /C /D Everyone&lt;/blockquote&gt;and hit Y when prompted.  This will remove the functionality behind that stupid button on the windows screen and will stop the stupid ease of access dialog from popping up when you're typing in your password to the login page.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-1473499407932439404?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/1473499407932439404/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2010/02/disable-ease-of-access-in-windows-7.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/1473499407932439404'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/1473499407932439404'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2010/02/disable-ease-of-access-in-windows-7.html' title='Disable Ease of Access in windows 7'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-2865319302161268643</id><published>2010-02-02T18:10:00.000-08:00</published><updated>2010-03-12T16:57:32.430-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rumbling-ramblings'/><category scheme='http://www.blogger.com/atom/ns#' term='questions'/><title type='text'>How to ask (and answer) a question</title><content type='html'>&lt;blockquote&gt;Asker (1):  Heys, is the requirement that the service provider 'client' part be in a wsgi module?&lt;br /&gt;Asker (2):  I've got my test stuff running in a tornado instance simply for ease of development (dont have to setup/configure apache... simple yes, but still dont have to do it)&lt;br /&gt;Answerer (1):  i want to wrap wsgi things with it, in a wsgi serving framework -- sounds like it'd be a wsgi middleware of some sort&lt;br /&gt;Answerer (2):  tornado is completely different&lt;br /&gt;Answerer (3):  we're not gonna redo everything to use tornado&lt;br /&gt;Answerer (4):  you don't need apache for anything&lt;br /&gt;Asker (3):  ok, that's why I was asking&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;So the above is a recent q/a session that took place a few moments ago in the real world.  There are a number of problems with this q/a session.  We'll start with the asker first.&lt;br /&gt;&lt;br /&gt;Asker line 1 is fine.  It asks the question 'is it a requirement that something be done in a certain way'.   Asker line 2 is trouble.   It's adding potentially confusing details to the question which the answerer has to evaluate and determine if to ignore it or not.&lt;br /&gt;&lt;br /&gt;Answerer line 1 is a perfect answer to line 1, but as we can see in answerer line 2, the answerer picked up on details in asker line 2 which were extraneous to the actual answer.  This is common for people who are very detail oriented and don't let needless details slide.  In doing this though, answerer is now making assumptions about asker and briefly discussing Tornado and Apache, which the asker didn't ask about.  This is even more of an issue on the internet and potential flame bait when it comes to online discussions since asker can become annoyed that the answerer has assumed that asker doesn't know what tornado is or what apache is needed or not needed for and respond with inflammatory comments such as 'that wasnt what I asked, asshole' or some such.&lt;br /&gt;&lt;br /&gt;This simple example illustrates the reason that brevity is not only the soul of wit, but the key to good communication.  Ask simple questions, give simple answers, ignore needless details when required (either answering or asking).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-2865319302161268643?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/2865319302161268643/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2010/02/how-to-ask-and-answer-question.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/2865319302161268643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/2865319302161268643'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2010/02/how-to-ask-and-answer-question.html' title='How to ask (and answer) a question'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-2058003443238033496</id><published>2010-01-15T15:45:00.000-08:00</published><updated>2010-01-15T16:40:46.040-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rumbling-ramblings'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>New Year's Python Meme</title><content type='html'>So I'm a bit late to the party, but there's meme going around python developers to discuss what they've done/discovered in the past year in a q/a manner.  So here's mine.&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;1. What’s the coolest Python application, framework or library you have discovered in 2009 ?&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Would have to be &lt;a href="http://twistedmatrix.com/trac/"&gt;Twisted&lt;/a&gt;.  I've avoided Twisted for a while now since I was always told that it'd hurt your head if you tried to get into it and that it wasn't very pep8 friendly, but it turns out it has some pretty good tutorials (the &lt;a href="http://twistedmatrix.com/documents/current/core/howto/tutorial/index.html"&gt;Finger&lt;/a&gt; tutorial) and that a lot of the stuff is useful right off the bat (such as the &lt;a href="http://twistedmatrix.com/documents/current/core/examples/chatserver.py"&gt;chatserver&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Non-Python:&lt;br /&gt;The Lua language.  It's not that it's all that cool, it's just another language and not as nice as python, but it's pretty cool in that it lets you create mods for games pretty quickly (in this case Demigod.. which is a great game that needs some help at this point).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2. What new programming technique did you learn in 2009 ?&lt;/strong&gt;&lt;strong&gt;3. What’s the name of the open source project you contributed the most in 2009 ? What did you do ?&lt;/strong&gt;&lt;br /&gt;New programming technique would have to be constructor patterns that I learned from a very good Flash developer and the Refactoring book that he introduced me to.  I mainly learned it by working through the refactoring example with my girlfriend on a automation project she had for her work.&lt;br /&gt;&lt;br /&gt;The open source project I contributed the most to would have to be the PIL and &lt;a href="http://code.google.com/p/python-payflowpro/" style="text-decoration: none; color: rgb(0, 0, 0);"&gt;python-payflowpro&lt;/a&gt; and only in the sense that I submitted bug reports (tho I submitted work around code for the issue with PIL).&lt;br /&gt;&lt;br /&gt;For 2009, I worked entirely on two large web projects.  One an online trivia game, and the other a credit offset reseller site.  The credit offset site was fantastic in that the code was completely developed with TDD and had about 10-15 tests per function.  I didn't start a single class or function without having the test code written beforehand.  The trivia game had the potential to be fun, but I had to make accommodations for stupid managers and constant changes to what was wanted.  I simply should have said 'No' more often, but it's hard to do when your excited and want to make everything cool.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;4. What was the Python blog or website you read the most in 2009 ?&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;I read Planet Python which is an aggregation blog of a bunch of well known Python bloggers... so I guess I've been reading lots of blogs.  Also, lots of StackOverflow.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;5. What are the three top things you want to learn in 2010 ?&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;3 things for python in 2010?&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Hadoop and map/reduce.  I'm already familiar with the concepts, but I'd like to get some actual experience with it&lt;/li&gt;&lt;li&gt;pyGTK and pyGame.  I'd really like to get into gui programming.. even tho cli rules.&lt;/li&gt;&lt;li&gt;Ctypes.. I've been meaning to read up or do a tutorial on ctypes for a long time.&lt;/li&gt;&lt;/ol&gt;Non-Python:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;How to make mods for games (in particular, Demigod).  For a long time I've played games and kept notebooks on what was cool, what was stupid and what I would do differently in the hopes that I would eventually learn how to create a mod of a game.  I've been investing a lot of time in games and there's a lot of stuff that I'd like to tweak.  Demigod is very open to modding with the Lua language so I'd like to finally start and complete a mod for a game.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-2058003443238033496?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/2058003443238033496/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2010/01/new-years-python-meme.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/2058003443238033496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/2058003443238033496'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2010/01/new-years-python-meme.html' title='New Year&apos;s Python Meme'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-4195801304490881624</id><published>2010-01-04T14:20:00.000-08:00</published><updated>2010-01-04T14:21:55.794-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rumbling-ramblings'/><title type='text'>Decemeber 2009:  my month of quiescent perseveration</title><content type='html'>We repeat ourselves. The mind &lt;strong style="font-weight: normal;"&gt;perseverates&lt;/strong&gt;. The road is rutted and grooved, and beside the road are familiar ditches.&lt;br /&gt;-- Eric Maisel&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-4195801304490881624?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/4195801304490881624/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2010/01/decemeber-2009-my-month-of.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/4195801304490881624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/4195801304490881624'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2010/01/decemeber-2009-my-month-of.html' title='Decemeber 2009:  my month of quiescent perseveration'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-3622378122837599756</id><published>2009-11-30T12:40:00.001-08:00</published><updated>2010-11-01T10:41:59.087-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='git'/><category scheme='http://www.blogger.com/atom/ns#' term='github'/><category scheme='http://www.blogger.com/atom/ns#' term='ssh'/><category scheme='http://www.blogger.com/atom/ns#' term='how-to'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>github, ssh config file and ssh-agent</title><content type='html'>Github makes use of ssh-keys for checking out your stuff via git. I also have several different keys and store them with different names such as github_rsa or some such.  In order to get this to work, you have to create a config file that stores the location of the private key.&lt;br /&gt;&lt;br /&gt;For github, in the .ssh/ directory, create a file `config` and enter in the following:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;From github's help page:&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;Host github.com&lt;br /&gt;User git&lt;br /&gt;Hostname github.com&lt;br /&gt;PreferredAuthentications publickey&lt;br /&gt;IdentityFile path-to-private-key&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;In several situations I've had to set up ssh keys for remote machines that only provide me with terminal access. Thus I keep getting pestered to enter the passphrase for the ssh key. ssh-agent takes care of having to keep entering in the passphrase.&lt;br /&gt;&lt;br /&gt;After setting up the ssh-keys do:&lt;br /&gt;&lt;blockquote&gt;eval `ssh-agent`; ssh-add ~/.ssh/github_rsa&lt;/blockquote&gt;&lt;br /&gt;It will then ask for the passphrase the one time when it adds the key to the agent, and then wont ask again.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-3622378122837599756?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/3622378122837599756/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2009/11/github-ssh-config-file-and-ssh-agent.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/3622378122837599756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/3622378122837599756'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2009/11/github-ssh-config-file-and-ssh-agent.html' title='github, ssh config file and ssh-agent'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-7943973933956468429</id><published>2009-11-30T12:15:00.000-08:00</published><updated>2010-06-22T19:39:45.660-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><category scheme='http://www.blogger.com/atom/ns#' term='corporate america'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>The 'let go' command</title><content type='html'>I was recently let go from the place where I plied my craft (I left on ok terms).  The only real issue I had was that the computer I used there was a company computer, and during the time I had spent there, I had done things such as purchase stuff on amazon.com, save passwords to various email accounts in browsers, etc.  So to rectify this situation and ensure that nobody using the computer after me had access to my data, I rebooted the machine in recovery mode (this was an ubuntu box) and ran&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;find /home/tfdml/. | xargs shred -fu ; rm -rf /home/tfdml/ ; shutdown -h now&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;then gathered my belonging's and left.  Note that I could have just as easily switched to an alternate terminal with ctrl-alt-f1 and ran the command there.&lt;br /&gt;&lt;br /&gt;This ensured, at least to my level of paranoia, that all my personal information was secure.  Now, all documentation, code and notes were all stored in the company repo, so it's not like I was being malicious and destroying all the work I had done for the company.  This removed all of my own personal information from the machine without having to reformat the drive or any other such drastic measures and allowed for the company to quickly turn the machine around for another worker to use.&lt;br /&gt;&lt;br /&gt;(Edit:  It turns out this command didnt work as well as I planned as apparently it took quite some time to run.  Eventually one of the other dev's there saw the machine was on and simply turned it off since there was nobody using it anymore.  This allowed the guy who got the computer after me access to some of the files in my account.  In retrospect, I should delete all the huge files (anything over a gig, music directory, vm images) before running this command and ensuring that the command is only going to operate on a set of files that amount to at most a gig.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-7943973933956468429?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/7943973933956468429/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2009/11/let-go-command.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/7943973933956468429'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/7943973933956468429'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2009/11/let-go-command.html' title='The &apos;let go&apos; command'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-679620207422641153</id><published>2009-11-17T10:45:00.000-08:00</published><updated>2009-11-17T12:55:35.238-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='grammar'/><title type='text'>"so that" vs "such that"</title><content type='html'>So that or such that?  Found a nice article that covers these issues, as well as a few other cool grammar bits for mathematicians.&lt;br /&gt;&lt;br /&gt;From the article:&lt;br /&gt;&lt;br /&gt;Here are the definitions.  &lt;h4&gt;so that&lt;/h4&gt; &lt;ol&gt;&lt;li&gt;In order that, as in &lt;i&gt;I stopped &lt;b&gt;so that&lt;/b&gt; you could catch up&lt;/i&gt;.&lt;/li&gt;&lt;li&gt;With the result or consequence that, as in &lt;i&gt;Mail the package now &lt;b&gt;so that&lt;/b&gt; it will arrive on time. &lt;/i&gt;&lt;/li&gt;&lt;li&gt;so ... that. In such a way or to such an extent that, as in &lt;i&gt;The line was &lt;b&gt;so&lt;/b&gt; long &lt;b&gt;that&lt;/b&gt; I could scarcely find the end of it.&lt;/i&gt;&lt;/li&gt;&lt;/ol&gt; From dictionary.com  &lt;h4&gt;such that&lt;/h4&gt; &lt;ol&gt;&lt;li&gt;adj : of a degree or quality specified (by the "that" clause); &lt;i&gt;their anxiety was &lt;b&gt;such that&lt;/b&gt; they could not sleep.&lt;/i&gt; (dictionary.com)&lt;/li&gt;&lt;li&gt;A condition used in the definition of a mathematical object. For example, the rationals  can be defined as &lt;i&gt;the set of all m/n &lt;b&gt;such that&lt;/b&gt; n is nonzero and m and n are integers .&lt;/i&gt; (mathworld.wolfram.com)&lt;/li&gt;&lt;/ol&gt;  &lt;h4&gt;Examples&lt;/h4&gt; &lt;ol&gt;&lt;li&gt;We require &lt;i&gt;x&lt;/i&gt; to be a rational number so that &lt;i&gt;mx&lt;/i&gt; is an integer for some &lt;i&gt;m&lt;/i&gt;. [Correct] &lt;/li&gt;&lt;li&gt;We require &lt;i&gt;x&lt;/i&gt; to be a rational number so that &lt;i&gt;3x&lt;/i&gt; is an integer. [Incorrect; should be &lt;i&gt; such that 3x is an integer&lt;/i&gt;.] &lt;/li&gt;&lt;li&gt;Let &lt;i&gt;H&lt;/i&gt; be a discrete subgroup of the Lie group &lt;i&gt;G&lt;/i&gt; so that &lt;i&gt;G/H&lt;/i&gt; is compact. [Incorrect --- not all discrete subgroups of Lie groups have compact quotient; this is from the Annals of Math., 107, p313.]&lt;/li&gt;&lt;li&gt;Let &lt;i&gt;N&lt;/i&gt; and &lt;i&gt;N'&lt;/i&gt; be submodules of a module &lt;i&gt;M&lt;/i&gt; such that  &lt;i&gt;N&lt;/i&gt; contains &lt;i&gt;N'&lt;/i&gt;, so that &lt;i&gt;N/N'&lt;/i&gt; is a submodule of &lt;i&gt;M/N'&lt;/i&gt;. [Correct! From &lt;i&gt;Steps in Commutative Algebra&lt;/i&gt;.]&lt;/li&gt;&lt;/ol&gt;  &lt;p&gt;Briefly, if omitting the "that" from "so that" renders the sentence nonsense, then it was already nonsense, and you should have used "such that". You won't find "so that" among lists of commonly misused expressions because only mathematicians commonly misuse it. Probably the error arose from the influence of German on American (mathematical) English, since the two are not distinguished in German.&lt;/p&gt;&lt;br /&gt;&lt;a href="http://www.jmilne.org/math/words.html"&gt;Mathlish&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-679620207422641153?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/679620207422641153/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2009/11/so-that-vs-such-that.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/679620207422641153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/679620207422641153'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2009/11/so-that-vs-such-that.html' title='&quot;so that&quot; vs &quot;such that&quot;'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-3729903314198205088</id><published>2009-11-04T11:40:00.000-08:00</published><updated>2009-11-04T11:40:39.667-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rumbling-ramblings'/><title type='text'>da Vinci quote</title><content type='html'>&lt;blockquote&gt;Those who are enamored of practice without science are like a pilot who goes into a ship without rudder or compass and never has any certainty where he is going. Practice should always be based upon a sound knowledge of theory.&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-3729903314198205088?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/3729903314198205088/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2009/11/da-vinci-quote.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/3729903314198205088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/3729903314198205088'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2009/11/da-vinci-quote.html' title='da Vinci quote'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-2250824548107940794</id><published>2009-10-28T21:30:00.000-07:00</published><updated>2009-10-28T22:34:31.592-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='how-to'/><title type='text'>Displaying and Configuring Character Sets in MySQL</title><content type='html'>&lt;blockquote&gt;&lt;/blockquote&gt;Display all character sets:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;show variables like 'character_set%';&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Change the character set for a table:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;BUT with the caveat that&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;The CONVERT TO operation converts column values between the character sets. This is not what you want if you have a column in one character set (like latin1) but the stored values actually use some other, incompatible character set (like utf8). In this case, you have to do the following for each such column:&lt;br /&gt;&lt;br /&gt;ALTER TABLE t1 CHANGE c1 c1 BLOB;&lt;br /&gt;ALTER TABLE t1 CHANGE c1 c1 TEXT CHARACTER SET utf8;&lt;br /&gt;&lt;br /&gt;The reason this works is that there is no conversion when you convert to or from BLOB columns.&lt;br /&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;The process to completely change all mysql's character sets from latin-1 and make this garbage:&lt;br /&gt;(using the &lt;span style="font-style: italic;"&gt;show variables&lt;/span&gt; command from above)&lt;br /&gt;&lt;pre&gt;+--------------------------+----------------------------+&lt;br /&gt;| Variable_name            | Value                      |&lt;br /&gt;+--------------------------+----------------------------+&lt;br /&gt;| character_set_client     | latin1                     |&lt;br /&gt;| character_set_connection | latin1                     |&lt;br /&gt;| character_set_database   | latin1                     |&lt;br /&gt;| character_set_filesystem | binary                     |&lt;br /&gt;| character_set_results    | latin1                     |&lt;br /&gt;| character_set_server     | latin1                     |&lt;br /&gt;| character_set_system     | utf8                       |&lt;br /&gt;| character_sets_dir       | /usr/share/mysql/charsets/ |&lt;br /&gt;+--------------------------+----------------------------+&lt;br /&gt;&lt;/pre&gt;look beautiful like this:&lt;br /&gt;&lt;pre&gt;+--------------------------+----------------------------+&lt;br /&gt;| Variable_name            | Value                      |&lt;br /&gt;+--------------------------+----------------------------+&lt;br /&gt;| character_set_client     | utf8                       |&lt;br /&gt;| character_set_connection | utf8                       |&lt;br /&gt;| character_set_database   | utf8                       |&lt;br /&gt;| character_set_filesystem | binary                     |&lt;br /&gt;| character_set_results    | utf8                       |&lt;br /&gt;| character_set_server     | utf8                       |&lt;br /&gt;| character_set_system     | utf8                       |&lt;br /&gt;| character_sets_dir       | /usr/share/mysql/charsets/ |&lt;br /&gt;+--------------------------+----------------------------+&lt;br /&gt;&lt;/pre&gt;involves simply adding the following to the [mysqld] section of your my.cnf (or /etc/mysql/my.cnf if you like, and are on a debian based machine)&lt;br /&gt;&lt;code&gt;&lt;br /&gt;collation_server=utf8_unicode_ci&lt;br /&gt;character_set_server=utf8&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;and adding the following to &lt;span style="font-weight: bold;"&gt;BOTH&lt;/span&gt; the [client] section &lt;span style="font-weight: bold;"&gt;AND&lt;/span&gt; the [mysqld] section:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;default-character-set=utf8&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;This is simply in case you cannot go back and re-compile mysql using&lt;br /&gt;&lt;code&gt;./configure --with-charset=utf8 --with-collation=utf8_general_ci&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-2250824548107940794?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/2250824548107940794/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2009/10/displaying-character-sets-in-mysql.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/2250824548107940794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/2250824548107940794'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2009/10/displaying-character-sets-in-mysql.html' title='Displaying and Configuring Character Sets in MySQL'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-8447134988387935079</id><published>2009-10-27T11:30:00.000-07:00</published><updated>2009-10-27T11:37:21.298-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='how-to'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Completely removing gnome from ubuntu.</title><content type='html'>I use terminal only versions of ubuntu on several vm's that I have set up.  Maybe I should use something else, like just plain debian with no gui, but either way I was looking for a way to completely remove all gnome elements from my virtual machines.  In the end I found a LONG command that just lists all the gnome elements to send to the apt-get remove command... seems like there should be something more elegant...&lt;br /&gt;&lt;br /&gt;The commands are &lt;a href="http://www.psychocats.net/ubuntu/purekde"&gt;here&lt;/a&gt;, but it needs to be noted to remove the `&amp;amp;&amp;amp; sudo apt-get install kubuntu-desktop` from the end of the commands.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-8447134988387935079?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/8447134988387935079/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2009/10/i-use-terminal-only-versions-of-ubuntu.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/8447134988387935079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/8447134988387935079'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2009/10/i-use-terminal-only-versions-of-ubuntu.html' title='Completely removing gnome from ubuntu.'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-958269504129723251</id><published>2009-10-18T12:30:00.000-07:00</published><updated>2010-02-02T18:33:37.137-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='rumbling-ramblings'/><category scheme='http://www.blogger.com/atom/ns#' term='flash'/><title type='text'>Well.. so much for javascript..</title><content type='html'>I have always despised javascript and html for it's hacky approach to...well.. everything.   Html was well done in the 90's, maybe, but at the moment html and javascript just look and feel and appear to work like one huge cobbled together kludge that nobody can fix because the entire world uses html/javascript and sorta knows how it all fits together.  Years ago when I was the webmaster for a small college, I dealt with javascript/html extensively and hated it intensely (back in the age of ie3 and Netscape and just the beginnings of mozilla 1.0).&lt;br /&gt;&lt;br /&gt;So after my latest little adventure in javascript and getting everything to work perfectly in FF3, my girlfriend, who does QA for another web company, asked 'Does it work in Internet Explorer?' So I tried my simple little &amp;lt;input&amp;gt; hider (along with all the concessions I made for I.E) in I.E 8. I was expecting that there might be some small issues that would popup, but nothing major. Instead what I got was I.E 8 completely freezing to the point where I couldn't even kill it in the task manager. I got the Vista little spinning ring of death and in order to fix the issue, I had to get to the ctrl-alt-delete menu and hit 'logout'.&lt;br /&gt;&lt;br /&gt;Now I know that there's lots of people out there who are experts in making javascript things in sing in both ie8 and ff3, but at what cost?  I work at a company who primarily works with flash and there's always a big discussion/name-calling-fest whenever a site is made entirely in flash when it 'should' be made in html/javascript.  The main reason people usually defend the decision to use flash is something along the lines of "we have lots of very good flash developers and it's faster for them to just develop the site in flash", which is true.  The 'it works properly in all browsers with a minimum of fuss' is rarely even brought up.&lt;br /&gt;&lt;br /&gt;But given the amount of design considerations, QA, potental major headaches that have to be taken into account when developing an html/javascript site, I would have to say that these issues are very significant.   Developing in flash is significantly easier simply because the majority of these issues are minimized.  You simply develope the app, QA it and deploy it.  It works as expected in all browsers.  No special considerations that need to be learned and tested, no design decisions that have to be abandoned because the feature will work in one browser, but not in another.&lt;br /&gt;&lt;br /&gt;Flash wins.&lt;br /&gt;&lt;br /&gt;Update:  HTML 5 to control them all.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-958269504129723251?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/958269504129723251/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2009/10/well-so-much-for-javascript.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/958269504129723251'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/958269504129723251'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2009/10/well-so-much-for-javascript.html' title='Well.. so much for javascript..'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-4118008861020546963</id><published>2009-10-18T03:40:00.001-07:00</published><updated>2009-10-18T04:18:48.892-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='instructions'/><category scheme='http://www.blogger.com/atom/ns#' term='jquery'/><category scheme='http://www.blogger.com/atom/ns#' term='how-to'/><title type='text'>Learning Jquery and rehashing javascript..</title><content type='html'>Been learning jquery and messing around with hiding things dynamically in the django-admin...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.blogger.com/post-create.g?blogID=1182449701024810662"&gt;&lt;br /&gt;indexOf doesn't work in IE&lt;/a&gt; so basically the work around is to apply it to ie's version of js..&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;if (!Array.indexOf) {&lt;br /&gt;  Array.prototype.indexOf = function (obj, start) {&lt;br /&gt;    for (var i = (start || 0); i &lt; this.length; i++) {&lt;br /&gt;      if (this[i] == obj) {&lt;br /&gt;        return i;&lt;br /&gt;      }&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://querylog.com/q/Javascript+converting+string+to+TitleCase"&gt;There is no string title case function&lt;/a&gt; so again, put one in yourself..&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;// (c)GPL, apv&lt;br /&gt;String.noLC = new Object&lt;br /&gt;({the:1, a:1, an:1, and:1, or:1, but:1, aboard:1,&lt;br /&gt; about:1, above:1, across:1, after:1, against:1,&lt;br /&gt; along:1, amid:1, among:1, around:1, as:1, at:1,&lt;br /&gt; before:1, behind:1, below:1, beneath:1, beside:1,&lt;br /&gt; besides:1, between:1, beyond:1, but:1, by:1, 'for':1,&lt;br /&gt; from:1, 'in':1, inside:1, into:1, like:1, minus:1,&lt;br /&gt; near:1, of:1, off:1, on:1, onto:1, opposite:1,&lt;br /&gt; outside:1, over:1, past:1, per:1, plus:1,&lt;br /&gt; regarding:1, since:1, than:1, through:1, to:1,&lt;br /&gt; toward:1, towards:1, under:1, underneath:1, unlike:1,&lt;br /&gt; until:1, up:1, upon:1, versus:1, via:1, 'with':1,&lt;br /&gt; within:1, without:1});&lt;br /&gt;&lt;br /&gt;String.prototype.titleCase = function () {&lt;br /&gt;var parts = this.split(' ');&lt;br /&gt;if ( parts.length == 0 ) return '';&lt;br /&gt;&lt;br /&gt;var fixed = new Array();&lt;br /&gt;for ( var i in parts ) {&lt;br /&gt; var fix = '';&lt;br /&gt; if ( String.noLC[parts[i]] )&lt;br /&gt; {&lt;br /&gt;   fix = parts[i].toLowerCase();&lt;br /&gt; }&lt;br /&gt; else if ( parts[i].match(/^([A-Z]\.)+$/i) )&lt;br /&gt; { // will mess up "i.e." and like&lt;br /&gt;   fix = parts[i].toUpperCase();&lt;br /&gt; }&lt;br /&gt; else if ( parts[i].match(/^[^aeiouy]+$/i) )&lt;br /&gt; { // voweless words are almost always acronyms&lt;br /&gt;   fix = parts[i].toUpperCase();&lt;br /&gt; }&lt;br /&gt; else&lt;br /&gt; {&lt;br /&gt;   fix = parts[i].substr(0,1).toUpperCase() +&lt;br /&gt;              parts[i].substr(1,parts[i].length);&lt;br /&gt; }&lt;br /&gt; fixed.push(fix);&lt;br /&gt;}&lt;br /&gt;fixed[0] = fixed[0].substr(0,1).toUpperCase() +&lt;br /&gt;              fixed[0].substr(1,fixed[0].length);&lt;br /&gt;return fixed.join(' ');&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;a href="http://www.quirksmode.org/js/associative.html"&gt;Javascripts objects work as associative arrays&lt;/a&gt;&lt;br /&gt;&lt;pre style="margin-right: -1225px;"&gt;var theStatus = new Object;&lt;br /&gt;theStatus.Home = 'normal';&lt;br /&gt;theStatus['Home'] //will print 'normal'&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://www.hunlock.com/blogs/Mastering_Javascript_Arrays#every"&gt;Arrays are useful&lt;/a&gt; as in all languages, but their function set isnt really all that complete and &lt;a href="http://wolfram.kriesing.de/blog/index.php/2008/javascript-remove-element-from-array"&gt;require some inelegant code to remove elements properly&lt;/a&gt;. (Mainly just&lt;br /&gt;&lt;pre lang="javascript"&gt;var arr = [4,5,6];&lt;br /&gt;arr.splice(arr.indexOf(5), 1);&lt;br /&gt;&lt;/pre&gt;Also, to copy arrays by value, you have to use the splice() fn...&lt;br /&gt;&lt;br /&gt;There's no elegant way to copy objects by value, so again..&lt;a href="http://my.opera.com/GreyWyvern/blog/show.dml/1725165"&gt; add it in yourself.&lt;/a&gt;&lt;br /&gt;&lt;pre&gt;Object.prototype.clone = function() {&lt;br /&gt;var newObj = (this instanceof Array) ? [] : {};&lt;br /&gt;for (i in this) {&lt;br /&gt; if (i == 'clone') continue;&lt;br /&gt; if (this[i] &amp;amp;&amp;amp; typeof this[i] == "object") {&lt;br /&gt;   newObj[i] = this[i].clone();&lt;br /&gt; } else newObj[i] = this[i]&lt;br /&gt;} return newObj;&lt;br /&gt;};&lt;/pre&gt;Jquery doesn't have a proper way to filter with regexes... &lt;a href="http://blog.mastykarz.nl/jquery-regex-filter/"&gt;so.... yeah...&lt;/a&gt; But even that needs to be modified since it only searches on the text() field of an object.&lt;br /&gt;&lt;pre&gt;jQuery.extend(&lt;br /&gt; jQuery.expr[':'], {&lt;br /&gt;     regex: function(a, i, m, r) {&lt;br /&gt;         var r = new RegExp(m[3], 'i');&lt;br /&gt;         //Add modifications here....&lt;br /&gt;         return r.test(jQuery(a).text());&lt;br /&gt;     }&lt;br /&gt; }&lt;br /&gt;);&lt;/pre&gt;&lt;br /&gt;But a way to get around the lack of regex in some cases is to remember that you &lt;a href="http://docs.jquery.com/Selectors/attributeMultiple#attributeFilter1attributeFilter2attributeFilterN"&gt;can chain [attributeFilters]..&lt;/a&gt;&lt;br /&gt;&lt;pre&gt;$("input[id][name$='man']").val("only this one");&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;And finally(for now), &lt;a href="http://jetlogs.org/2007/12/16/jquery-disabled-and-readonly-inputs/"&gt;you can add attributes to objects with attr.&lt;/a&gt;&lt;br /&gt;&lt;pre&gt;&lt;code class="javascript"&gt;$(&lt;span class="string"&gt;'#target'&lt;/span&gt;).attr(&lt;span class="string"&gt;"disabled"&lt;/span&gt;, &lt;span class="keywords"&gt;true&lt;/span&gt;); &lt;/code&gt;&lt;code class="javascript"&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I still don't like javascript, but jquery makes working with it a lot nicer.. sorta.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-4118008861020546963?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/4118008861020546963/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2009/10/learning-jquery-and-rehashing.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/4118008861020546963'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/4118008861020546963'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2009/10/learning-jquery-and-rehashing.html' title='Learning Jquery and rehashing javascript..'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-1533368250548488665</id><published>2009-10-16T17:35:00.000-07:00</published><updated>2009-12-06T23:34:13.700-08:00</updated><title type='text'>Python closures explanation</title><content type='html'>While trying to figure out what exactly people meant when they said that python didn't have &lt;span style="font-style: italic;"&gt;true&lt;/span&gt; closures, I found this excellent response that describes the issue perfectly.&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;br /&gt;Joel VanderWerf wrote:&lt;br /&gt;&gt; ...&lt;br /&gt;&gt;&lt;br /&gt;&gt; But in Python, the inner function only has access to the _object_, not&lt;br /&gt;&gt; to the original variable which refers to the object, and so you have to&lt;br /&gt;&gt; "box" the value inside an object if you want to have shared references.&lt;br /&gt;&lt;br /&gt;No, you still don't undestand the issue properly. You're getting closer,&lt;br /&gt;but not quite there yet.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;y = 0&lt;br /&gt;&lt;br /&gt;def foo():&lt;br /&gt;   global y&lt;br /&gt;   x = 0&lt;br /&gt;   def bar():&lt;br /&gt;       print x, y&lt;br /&gt;   bar()&lt;br /&gt;   x = y = 1&lt;br /&gt;   bar()&lt;br /&gt;   x = y = 2&lt;br /&gt;   bar()&lt;br /&gt;   x = y = 3&lt;br /&gt;   bar()&lt;br /&gt;   x = y = 4&lt;br /&gt;   bar()&lt;br /&gt;   x = y = 5&lt;br /&gt;&lt;br /&gt;foo()&lt;br /&gt;&lt;br /&gt;0 0&lt;br /&gt;1 1&lt;br /&gt;2 2&lt;br /&gt;3 3&lt;br /&gt;4 4&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Now just as in Ruby, 0, 1, 2, 3, 4 are separate objects. It is literally&lt;br /&gt;impossible to change their values. All you can do is change bindings TO&lt;br /&gt;the variables. So obviously "bar" is really inheriting the _bindings_&lt;br /&gt;for x and y because it is the _bindings_ that are changing.&lt;br /&gt;&lt;br /&gt;So what's the problem? Consider this program:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;y = 0&lt;br /&gt;&lt;br /&gt;def foo():&lt;br /&gt;   x = 0&lt;br /&gt;   def bar():&lt;br /&gt;       print x, y&lt;br /&gt;   def change(z):&lt;br /&gt;       global y&lt;br /&gt;       x = y = z&lt;br /&gt;&lt;br /&gt;   change(1)&lt;br /&gt;   bar()&lt;br /&gt;   change(2)&lt;br /&gt;   bar()&lt;br /&gt;   change(3)&lt;br /&gt;   bar()&lt;br /&gt;   change(4)&lt;br /&gt;   bar()&lt;br /&gt;&lt;br /&gt;foo()&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The output is:&lt;br /&gt;&lt;br /&gt;0 1&lt;br /&gt;0 2&lt;br /&gt;0 3&lt;br /&gt;0 4&lt;br /&gt;&lt;br /&gt;This is because Python has always adopted the rule that if you assign to&lt;br /&gt;a local variable it springs into existence -- as a local. If you want to&lt;br /&gt;overwrite a global variable, you have to specifically say: "please&lt;br /&gt;overwrite this global." It prevents people from accidentally overwriting&lt;br /&gt;globals with locals.&lt;br /&gt;&lt;br /&gt;But there is no syntax for saying: "please overwrite this intermediate&lt;br /&gt;closure variable." It would be as easy as adding a keyword&lt;br /&gt;"intermediate" or "closure". It's purely a syntactic issue.&lt;br /&gt;&lt;br /&gt;_But_ the addition would be useless in practice because this problem&lt;br /&gt;almost never arises in real code. Its only purpose would be to answer&lt;br /&gt;Lisp and Ruby advocates who want to say that Python doesn't really have&lt;br /&gt;closures. I don't know whether Guido will ever add it for, er, closure,&lt;br /&gt;but I do know that I have _never_ _once_ needed this keyword in hundreds&lt;br /&gt;of thousands of lines of real Python code I have written. And I am thus&lt;br /&gt;going to fight my temptation to go and bug Guido to do it so that we can&lt;br /&gt;put an end to permathreads about Python's lack of closures. ;) If this&lt;br /&gt;problem ever arose in my code (which it has not) then I could work&lt;br /&gt;around it thus:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;y = 0&lt;br /&gt;&lt;br /&gt;def foo():&lt;br /&gt;   x = [0]&lt;br /&gt;   def bar():&lt;br /&gt;       print x[0], y&lt;br /&gt;   def change(z):&lt;br /&gt;       global y&lt;br /&gt;       x[0] = y = z&lt;br /&gt;&lt;br /&gt;   change(1)&lt;br /&gt;   bar()&lt;br /&gt;   change(2)&lt;br /&gt;   bar()&lt;br /&gt;   change(3)&lt;br /&gt;   bar()&lt;br /&gt;   change(4)&lt;br /&gt;   bar()&lt;br /&gt;&lt;br /&gt;foo()&lt;br /&gt;&lt;br /&gt;1 1&lt;br /&gt;2 2&lt;br /&gt;3 3&lt;br /&gt;4 4&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;This should prove that the problem is really not deep in the Python&lt;br /&gt;interpreter or anything like that. It would be a half day's work to&lt;br /&gt;write the patch that added the "intermediate" keyword.&lt;br /&gt;&lt;br /&gt;By the way, there was a time when Python really did lack closures but&lt;br /&gt;there was a hacky workaround. This is where the idea that Python did not&lt;br /&gt;have "real" closures became popular (because it was true). Then Python&lt;br /&gt;added closures, but left out one minor feature and the minor feature&lt;br /&gt;allowed the idea to persist even when it had ceased to be true.&lt;br /&gt;&lt;br /&gt;--Paul Prescod&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-1533368250548488665?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/1533368250548488665/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2009/10/python-closures-explanation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/1533368250548488665'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/1533368250548488665'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2009/10/python-closures-explanation.html' title='Python closures explanation'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-3013440953172313137</id><published>2009-10-12T17:25:00.000-07:00</published><updated>2009-10-12T17:29:23.660-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><title type='text'>Errors while creating validations for django admin</title><content type='html'>TypeError at /admin/quiz/series/add/&lt;br /&gt;&lt;br /&gt;argument of type 'NoneType' is not iterable&lt;br /&gt;&lt;br /&gt;Request Method:  POST&lt;br /&gt;Request URL:  http://10.0.1.72/admin/quiz/series/add/&lt;br /&gt;Exception Type:  TypeError&lt;br /&gt;Exception Value: &lt;br /&gt;&lt;br /&gt;argument of type 'NoneType' is not iterable&lt;br /&gt;&lt;br /&gt;Exception Location:  /usr/local/lib/python2.6/dist-packages/django/forms/models.py in save_instance, line 47&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Got this error which had me stumped for a while.  Turns out it's because I forgot to return self.cleaned_data at the end of my clean() and clean_&amp;lt;fieldname&amp;gt;() functions.&lt;/fieldname&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-3013440953172313137?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/3013440953172313137/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2009/10/errors-while-creating-validations-for.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/3013440953172313137'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/3013440953172313137'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2009/10/errors-while-creating-validations-for.html' title='Errors while creating validations for django admin'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-5287341235142889691</id><published>2009-09-25T13:30:00.000-07:00</published><updated>2009-12-14T11:13:57.364-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rumbling-ramblings'/><title type='text'>Err messages....</title><content type='html'>For the project I'm working on currently, they don't want to let 'unfriendly' (meaning too technical) error messages through.. I think all error messages should be unfriendly because when they are relayed to the devs on the backend, it helps them track down exactly what the issue is much faster.  But then again, my code does contain the error message:&lt;br /&gt;&lt;blockquote&gt;"Error: Oh my god you've ruined EVERYTHING, &lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;AGAIN!&lt;/span&gt;&lt;/span&gt; You old bag!"&lt;/blockquote&gt;This is really quite good at being unfriendly, see, cuz old people have probably ruined everything at least once at their age and probably live their lives dreading that they might do it again...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-5287341235142889691?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/5287341235142889691/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2009/09/err-messages.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/5287341235142889691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/5287341235142889691'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2009/09/err-messages.html' title='Err messages....'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-329960339404198037</id><published>2009-09-24T19:40:00.000-07:00</published><updated>2009-09-24T19:41:35.568-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='emacs'/><title type='text'>Emacs Bookmarks</title><content type='html'>`C-x r m &lt;RET&gt;'&lt;br /&gt;     Set the bookmark for the visited file, at point.&lt;br /&gt;&lt;br /&gt;`C-x r m BOOKMARK &lt;RET&gt;'&lt;br /&gt;     Set the bookmark named BOOKMARK at point (`bookmark-set').&lt;br /&gt;&lt;br /&gt;`C-x r b BOOKMARK &lt;RET&gt;'&lt;br /&gt;     Jump to the bookmark named BOOKMARK (`bookmark-jump').&lt;br /&gt;&lt;br /&gt;`C-x r l'&lt;br /&gt;     List all bookmarks (`list-bookmarks').&lt;br /&gt;&lt;br /&gt;from &lt;a href="http://www.cs.cmu.edu/cgi-bin/info2www?(emacs)Bookmarks"&gt;someone at cmu&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-329960339404198037?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/329960339404198037/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2009/09/emacs-bookmarks.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/329960339404198037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/329960339404198037'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2009/09/emacs-bookmarks.html' title='Emacs Bookmarks'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-6568881036151524706</id><published>2009-08-28T11:40:00.000-07:00</published><updated>2009-08-28T11:51:45.272-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='how-to'/><title type='text'>How to uninstall python packages with easy_install.</title><content type='html'>`easy_install -m packagename` removes the file from your .pth file (and therefore removes it from your python path), then remove .egg file or directory from your site-packages, or dist-packages directory.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Thx to &lt;a href="http://dirtsimple.org/index.html"&gt;PJE&lt;/a&gt; via &lt;a href="http://http://peter-lavalle.blogspot.com/2007/11/removing-python-egg-installed-with.html"&gt;PL&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-6568881036151524706?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/6568881036151524706/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2009/08/how-to-uninstall-python-packages-with.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/6568881036151524706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/6568881036151524706'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2009/08/how-to-uninstall-python-packages-with.html' title='How to uninstall python packages with easy_install.'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-4400265773536522051</id><published>2009-08-26T13:26:00.000-07:00</published><updated>2009-10-26T18:52:19.777-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='subversion'/><category scheme='http://www.blogger.com/atom/ns#' term='how-to'/><title type='text'>How to revert a file or directory in svn.</title><content type='html'>Revert a file to revision 854&lt;br /&gt;&lt;br /&gt;svn merge -c -854 l3toks.dtx&lt;br /&gt;&lt;br /&gt;Grabbed from &lt;a href="http://stackoverflow.com/questions/345997/better-way-to-revert-to-a-previous-svn-revision-of-a-file"&gt;stack overflow&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Revert a directory to revision 854&lt;br /&gt;&lt;br /&gt;svn merge -rHEAD:854 .&lt;br /&gt;&lt;br /&gt;Grabbed from &lt;a href="http://ariejan.net/2007/03/27/subversion-how-to-revert-to-a-previous-revision/"&gt;some code monkey&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-4400265773536522051?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/4400265773536522051/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2009/08/how-to-revert-file.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/4400265773536522051'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/4400265773536522051'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2009/08/how-to-revert-file.html' title='How to revert a file or directory in svn.'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-2863051679371132221</id><published>2009-08-07T16:00:00.000-07:00</published><updated>2009-08-28T11:50:49.887-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='debugging'/><title type='text'>Difficult errors to debug in Django for Django noobs..</title><content type='html'>Got this as an debug template page today:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;TemplateSyntaxError at /admin/&lt;br /&gt;&lt;br /&gt;Caught an exception while rendering: name 'User' is not defined&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;After some digging around and frustration, I finally figured it out.  I had created a new app for my project called `newsbin`, then created a model and views and set the views up in urls.py, but I had not yet added `newsbin` to the installed apps section of settings.py.  Thus it gave the above error.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-2863051679371132221?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/2863051679371132221/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2009/08/difficult-errors-to-debug-in-django.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/2863051679371132221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/2863051679371132221'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2009/08/difficult-errors-to-debug-in-django.html' title='Difficult errors to debug in Django for Django noobs..'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-3848956778029137341</id><published>2009-07-29T14:30:00.000-07:00</published><updated>2009-08-28T11:51:26.630-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='how-to'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Command to copy a vdi in virtual box on a linux machine.</title><content type='html'>Make sure the vm using the original vdi is not running and then release and remove (Choose KEEP) the vdi from the pool of drives.  Then run&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;VBoxManage clonevdi /Original.vdi /NewCopy.vdi&lt;/blockquote&gt;&lt;br /&gt;Once that is done be sure to re-attach the original vdi.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-3848956778029137341?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/3848956778029137341/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2009/07/command-to-copy-vdi-in-virtual-box-on.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/3848956778029137341'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/3848956778029137341'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2009/07/command-to-copy-vdi-in-virtual-box-on.html' title='Command to copy a vdi in virtual box on a linux machine.'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-823286506988478386</id><published>2009-06-30T14:00:00.000-07:00</published><updated>2009-12-14T11:19:12.704-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rumbling-ramblings'/><title type='text'>Dumb show in a contented country in a stupid dimension.</title><content type='html'>10 years ago in a different country in a different dimension, there was a TV show called 'Sharpbow' about a 17th century ship that while being built had a steel plate which was sharpened to a knife edge mounted to its bow.  Supposedly this was to help increase the speed of the ship in the water, which appeared to work as suggested, but in actuality the speed increase was due to the new ship hull design.&lt;br /&gt;&lt;br /&gt;In one of the early episodes, the ship rammed another ship in a dramatic scene.  The sharp bow of the ship inadvertently was the star of the episode, and to the fans, became a 'special weapon' that caused baited anticipation in subsequent episodes that Sharpbow might ram another ship.  The producers decided to use the sharp bow of Sharpbow sparingly and decreed (internally only of course) that Sharpbow would use its bow only once a season with the possibility of it being used in Season Finale's.&lt;br /&gt;&lt;br /&gt;Most episodes delt with life on the high seas and in various ports of call and was somewhat well regarded by critics for such a campy show, but shows that didn't utilize Sharpbow's bow were always a bit of a let-down for fans.  To exacerbate the problem, writers were just as eager as the fan's to see Sharpbow use its sharp bow, writing un-air-able episode after un-air-able episode about ramming ships, against the producers will.&lt;br /&gt;&lt;br /&gt;Even casual viewers speaking around the water cooler could be heard excitedly saying 'I hear they're gunna have Sharpbow use its bow in tonight's episode!'&lt;br /&gt;&lt;br /&gt;And thus it was a contented time 10 years ago&lt;br /&gt;in a dumb country&lt;br /&gt;in a lame dimension&lt;br /&gt;with a stupid show.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-823286506988478386?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/823286506988478386/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2009/06/stupid-show-in-contented-country-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/823286506988478386'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/823286506988478386'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2009/06/stupid-show-in-contented-country-in.html' title='Dumb show in a contented country in a stupid dimension.'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-7503348870194649918</id><published>2009-06-29T17:00:00.000-07:00</published><updated>2009-12-14T11:22:06.770-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='how-to'/><title type='text'>Adding a field to the django auth user.</title><content type='html'>I've been trying to do this for a while and I keep finding how-to's such as &lt;a href="http://scottbarnham.com/blog/2008/08/21/extending-the-django-user-model-with-inheritance/" rel="bookmark"&gt;Extending the Django User model with inheritance&lt;/a&gt;, but the problem with these methods is that you still cant sign-in to the django admin with any users you create (such as the admin you set up at the beginning of the project).&lt;br /&gt;&lt;br /&gt;I finally got the monkey-patching method to work by doing the following.&lt;br /&gt;&lt;br /&gt;You can add fields to the user class with the method add_to_class instead of inheriting the User class by doing the following in your &lt;span style="font-weight: bold;"&gt;models.py&lt;/span&gt;:&lt;br /&gt;&lt;blockquote&gt;User.add_to_class('new_field', models.BooleanField(default=False))&lt;/blockquote&gt;&lt;br /&gt;Once that is done, in &lt;span style="font-weight: bold;"&gt;admin.py&lt;/span&gt;, modify the UserAdmin and add your new field&lt;br /&gt;&lt;blockquote&gt;from django.contrib.auth.admin import UserAdmin&lt;br /&gt;&lt;br /&gt;UserAdmin.list_display += ('new_field',)&lt;br /&gt;UserAdmin.list_filter += ('new_field',)&lt;br /&gt;UserAdmin.fieldsets[1][1]['fields'] = ('first_name','last_name','email','new_field')&lt;br /&gt;&lt;/blockquote&gt;&lt;span id="query" class="query"&gt;Voilà, &lt;/span&gt;with that done, you're new fields should show up in the auth user on the django admin page.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-7503348870194649918?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/7503348870194649918/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2009/06/adding-field-to-django-auth-user.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/7503348870194649918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/7503348870194649918'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2009/06/adding-field-to-django-auth-user.html' title='Adding a field to the django auth user.'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-6409159274597347452</id><published>2009-06-29T11:00:00.000-07:00</published><updated>2009-08-07T16:28:20.117-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='debugging'/><title type='text'>Stupid Adventures in Djangoland</title><content type='html'>After converting a project and doing some directory wide find-replace's, I kept getting this error in django:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;TemplateSyntaxError at /admin/   Caught an exception while rendering: maximum recursion depth exceeded&lt;br /&gt;&lt;/blockquote&gt;A little background, all my projects are usually named 'backend', with the front end code (usually flash) in a separate directory 'frontend'.   So for example in settings.py, I install apps in django by adding 'backend.app' to INSTALLED_APPS.  Anyway, after commenting out huge chunks of code I eventually turned to one of the last things I could turn to to start commenting stuff out. So things Amongst the urlpatterns I found a line &lt;span style="font-weight: bold;"&gt;(r'^app/', include('backend.urls'))&lt;/span&gt;.  Some how, after the find-replace session, this line was setup to constantly reference the urls.py that it resided in, which resulted in the error stated above.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-6409159274597347452?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/6409159274597347452/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2009/06/stupid-adventures-in-djangoland.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/6409159274597347452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/6409159274597347452'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2009/06/stupid-adventures-in-djangoland.html' title='Stupid Adventures in Djangoland'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-616798750003460786</id><published>2009-06-16T16:20:00.001-07:00</published><updated>2009-06-16T16:24:36.920-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rumbling-ramblings'/><category scheme='http://www.blogger.com/atom/ns#' term='poop'/><title type='text'>Tall in the bathroom stall.</title><content type='html'>You know what would suck about being 7 foot tall?  In most public bathrooms you can see over the stall walls and look at the guy who's currently wiping his ass. &lt;br /&gt;&lt;br /&gt;Course you never hear 7 foot tall people complaining about this because usually they play for the NBA and are evil rich and don't have to use public restrooms.  Thus, if you see a 7 foot tall guy looking over the stall at you while you take a dump, take pitty on him since he's most likely so rich that he's going to hell.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-616798750003460786?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/616798750003460786/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2009/06/tall-in-bathroom-stall.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/616798750003460786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/616798750003460786'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2009/06/tall-in-bathroom-stall.html' title='Tall in the bathroom stall.'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-5997409487848899869</id><published>2009-06-15T16:00:00.000-07:00</published><updated>2009-06-16T16:24:56.387-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rumbling-ramblings'/><title type='text'>Adages</title><content type='html'>Red sky in morning, sailors take warning;&lt;br /&gt;Red sky at night, sailors delight.&lt;br /&gt;&lt;br /&gt;or was it&lt;br /&gt;Red sky in morning, sailors in mourning;&lt;br /&gt;Red sky at night, sailors in plight.&lt;br /&gt;&lt;br /&gt;Yeah, that second one is it.. it basically means if you're a sailor and the sky is Red, your screwed.&lt;br /&gt;&lt;br /&gt;And yes if the sky is red instead of blue for anyone else, it means you're going to hell.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-5997409487848899869?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/5997409487848899869/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2009/06/adages.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/5997409487848899869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/5997409487848899869'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2009/06/adages.html' title='Adages'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-9094481157159773338</id><published>2009-06-08T10:30:00.000-07:00</published><updated>2009-06-08T17:02:04.431-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='regex'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>TypeError: not enough arguments for format string</title><content type='html'>Got this error in some python code the other day:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;TypeError: not enough arguments for format string&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Essentially it means you have something like the following in your code:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;"%s,%s,%s" % ('foo','bar')&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Essentially it's saying there aren't enough strings to fill the placeholders.  But it also means that there might be an errant % in the template string that you weren't anticipating such as:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;"%s has 42% of the shares." % ('Bob')&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;which is annoying.  A regex you can run on your code to &lt;span style="font-style: italic;"&gt;roughly&lt;/span&gt; handle this is:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;regex1 = re.compile('%(?![\(])')                                      &lt;br /&gt;regex2 = re.compile('%%+')                                            &lt;br /&gt;cooked_html = regex1.sub('%%', regex2.sub('%', raw_html))&lt;/blockquote&gt;I say roughly since if you're starting to run into these kinds of situations, you really need to start using a templating engine like &lt;a href="http://jinja.pocoo.org/2/"&gt;jinja&lt;/a&gt; or &lt;a href="http://www.makotemplates.org/"&gt;mako&lt;/a&gt;.  I'll switch to mako in the future.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-9094481157159773338?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/9094481157159773338/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2009/06/typeerror-not-enough-arguments-for.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/9094481157159773338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/9094481157159773338'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2009/06/typeerror-not-enough-arguments-for.html' title='TypeError: not enough arguments for format string'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-6757116745700558142</id><published>2009-06-03T18:30:00.000-07:00</published><updated>2009-06-03T18:35:50.148-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='emacs'/><title type='text'>Running functions on marked files in dired mode for emacs.</title><content type='html'>Cool example of how to run a function on files marked in dired&lt;br /&gt;&lt;br /&gt;&lt;a href="http://justinsboringpage.blogspot.com/2009/04/running-elisp-function-on-each-marked.html"&gt;http://justinsboringpage.blogspot.com/2009/04/running-elisp-function-on-each-marked.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-6757116745700558142?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/6757116745700558142/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2009/06/running-functions-on-marked-files-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/6757116745700558142'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/6757116745700558142'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2009/06/running-functions-on-marked-files-in.html' title='Running functions on marked files in dired mode for emacs.'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-8583585879496420552</id><published>2009-05-29T10:00:00.000-07:00</published><updated>2009-05-29T10:11:53.301-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lisp'/><category scheme='http://www.blogger.com/atom/ns#' term='emacs'/><title type='text'></title><content type='html'>A co-worker wrote a nice little lisp snippet for emacs to indent the entire buffer.  I should modify it to indent a marked region, if there isn't code to do this already.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;(defun indent-whole-buffer ()&lt;br /&gt;"Indent the entire buffer"&lt;br /&gt;(interactive)&lt;br /&gt;(indent-region 0 (buffer-size)))&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-8583585879496420552?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/8583585879496420552/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2009/05/co-worker-wrote-nice-little-lisp.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/8583585879496420552'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/8583585879496420552'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2009/05/co-worker-wrote-nice-little-lisp.html' title=''/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-3274778178415764181</id><published>2009-05-24T16:47:00.000-07:00</published><updated>2009-06-16T16:25:26.753-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rumbling-ramblings'/><title type='text'>Such a lame ending to a great game, Fallout 3</title><content type='html'>Finally finished Fallout 3.  Unfortunately,  the ending was just about the most horribly stupid ending that I can remember.  I've not been watching many movies lately, so maybe I'm more susceptible to stupid STUPID endings, but the ending was a contrived turd strained out in pain.  Especially when it was already established that there was another character who could accomplish the final 'deed' without being harmed in anyway, as that character had already done before.  A super mutant, Fawkes, who was resistant to radiation, had gone into a highly irradiated chamber to retrieve a device called the G.E.C.K, but when asked to do the same task and enter in a simple code into a computer, his response was something along the lines of 'you have your own destiny to follow'.  Apparently there's another character, Charon, who REGENERATES HEALTH from radiation, who basically says the same thing.&lt;br /&gt;&lt;br /&gt;Poor, POOR form.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-3274778178415764181?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/3274778178415764181/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2009/05/such-lame-ending-to-great-game-fallout.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/3274778178415764181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/3274778178415764181'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2009/05/such-lame-ending-to-great-game-fallout.html' title='Such a lame ending to a great game, Fallout 3'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-7819221962605930492</id><published>2009-05-21T17:00:00.000-07:00</published><updated>2009-08-28T11:59:17.942-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='emacs'/><title type='text'>Convert DOS files to unix in emacs.</title><content type='html'>Essentially, C-x RET f undecided-unix&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;from &lt;a href="http://edivad.wordpress.com/2007/04/03/emacs-convert-dos-to-unix-and-vice-versa/"&gt;this&lt;/a&gt; guy&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-7819221962605930492?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/7819221962605930492/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2009/05/convert-dos-to-unix.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/7819221962605930492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/7819221962605930492'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2009/05/convert-dos-to-unix.html' title='Convert DOS files to unix in emacs.'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-2546796549594047979</id><published>2009-05-15T16:00:00.000-07:00</published><updated>2009-05-29T10:08:12.218-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rumbling-ramblings'/><title type='text'>It's cruel not to kill pumpkin..</title><content type='html'>Fallout 3 is a truly great game.  Right there on the level of Fallout/Fallout 2.&lt;br /&gt;&lt;br /&gt;Anyway, wondering around the wastes, I stumbled upon a giant mole rat named 'pumpkin' cage up in a dead guy's laboratory (well after I met him, a dead guy's laboratory).  In this laboratory, the guy works on trying to make mole rat meat better tasting and better for you.  I read in quite a few places that people couldn't bring themselves to kill pumpkin and harvest the meat to create the wonder mole meat.  While the whole "can't kill a virtual animal thing" is curious (and well.. old), the fact that people DON'T kill pumpkin is vastly more cruel than actually killing pumpkin.  Pumpkin, at least in terms of the game, is left to starve to death in a confined cage where it cant turn around.&lt;br /&gt;&lt;br /&gt;I'm willing to wager that this is how most people are in real life as well.  They're unwilling to put down the dog trapped in the cage starving to death with a wire cinched so tight around it's waist that it's cut into it's abdomen.&lt;br /&gt;&lt;br /&gt;Course, this is just my paper tiger, my model that I hold up to people in comparison so that if they do match up with the model I described, I can mock them relentlessly and feel vastly superior to them.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-2546796549594047979?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/2546796549594047979/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2009/05/its-cruel-not-to-kill-pumpkin.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/2546796549594047979'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/2546796549594047979'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2009/05/its-cruel-not-to-kill-pumpkin.html' title='It&apos;s cruel not to kill pumpkin..'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-4411188689544582331</id><published>2009-05-14T16:18:00.000-07:00</published><updated>2009-05-14T16:21:50.218-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='subversion'/><category scheme='http://www.blogger.com/atom/ns#' term='how-to'/><title type='text'>Ignoring file types in svn</title><content type='html'>&lt;p&gt;&lt;strong&gt;Create a file (.svnignore) with the regular expressions&lt;/strong&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;*.pyc&lt;br /&gt;*~&lt;br /&gt;&lt;/code&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Run &lt;em&gt;svn propset&lt;/em&gt; on the project&lt;/strong&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;svn -R propset svn:ignore -F .svnignore .&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;strong&gt;-R&lt;/strong&gt; indicates that you are doing this recursively so all the directories ignore these.&lt;br /&gt;&lt;strong&gt;-F&lt;/strong&gt; indicates the file we just created with the regular expressions.&lt;/p&gt;&lt;p&gt;Originally found over on &lt;a href="http://pandemoniumillusion.wordpress.com/2008/05/07/ignore-pyc-files-in-subversion/"&gt;Pandemonium Illusion&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-4411188689544582331?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/4411188689544582331/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2009/05/ignoring-file-types-in-svn.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/4411188689544582331'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/4411188689544582331'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2009/05/ignoring-file-types-in-svn.html' title='Ignoring file types in svn'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-6499374631305383793</id><published>2009-05-12T15:00:00.000-07:00</published><updated>2009-06-17T18:07:17.126-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='console'/><title type='text'>Curl examples</title><content type='html'>No traffic info today, left too late.&lt;br /&gt;&lt;a href="http://linux-journal.blogspot.com/2005/04/curl-examples.html"&gt;&lt;br /&gt;Nice curl examples&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-6499374631305383793?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/6499374631305383793/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2009/05/curl-examples.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/6499374631305383793'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/6499374631305383793'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2009/05/curl-examples.html' title='Curl examples'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-8437689320613128885</id><published>2009-05-06T10:17:00.000-07:00</published><updated>2009-05-07T11:10:24.995-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='traffic'/><title type='text'>Traffic May 6 and traffic notes</title><content type='html'>weather: Sunny&lt;br /&gt;traffic: light&lt;br /&gt;time: 920-1000&lt;br /&gt;&lt;br /&gt;Well, why the traffic builds up on certain days vs others is beyond me.  My guess was that possibly on sunny days, mom's, teens on break from school, and other non-working types were  jumping on the road to head out to the beach or some such, but alas no. &lt;br /&gt;&lt;br /&gt;I've known about &lt;a href="http://trafficwaves.org/trafexp.html"&gt;traffic antipatterns&lt;/a&gt; for a while and practice them every once in a while, but this deals more with the traffic as it is currently.  I'm more interested as to why the traffic is heavy on certain days vs other days.&lt;br /&gt;&lt;br /&gt;I've never been the agressive try-to-get-10-cars ahead type, as I generally let my 'chunked'&lt;a href="http://www.theoryoffun.com/excerpt.shtml"&gt;&lt;span style="font-size:78%;"&gt;[1]&lt;/span&gt;&lt;/a&gt; driving skills handle the traffic as best as it can and I usually move through large parts of traffic completely oblivious to the traffic around me.  I usually find I can usually plan out what I intend to do at work or enjoy music while I'm dinking along at 20 mph.  Which is also why I tend not to do the traffic antipatterns as much either, I have better things to think about than trying to deal with the traffic around me.  There have been several times when I've made the 75 mile drive to my parents place with no traffic and not remembered any part of the drive at all.. which is great!&lt;br /&gt;&lt;br /&gt;This, of course, only works to an extent while commuting as eventually I have to merge over or let people in or do something else that requires me focusing on driving again.  Still, what's more interesting to me is why?  Why was there less traffic today, a very nice day, than last Wednesday?  Why are there more cars in the parking lot?  Why, apparently, are there more cars on the road? I suppose I have to see if there are other events or something else going on.. but that's gunna take more effort.&lt;br /&gt;&lt;a href="http://www.theoryoffun.com/excerpt.shtml"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-8437689320613128885?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/8437689320613128885/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2009/05/traffic-may-6.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/8437689320613128885'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/8437689320613128885'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2009/05/traffic-may-6.html' title='Traffic May 6 and traffic notes'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-5018149255689066940</id><published>2009-05-05T15:30:00.000-07:00</published><updated>2009-07-07T18:59:00.326-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='emacs'/><title type='text'>Emacs Dired mode quick reference.</title><content type='html'>Some particular highlights are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;To enter Dired mode simply do C-x C-f and select a directory&lt;/li&gt;&lt;li&gt;To open a file or directory, move the cursor to the name of the file you want to edit and hit enter (or e)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Create a directory - +&lt;/li&gt;&lt;li&gt;Copy a file - S[hift]-c&lt;/li&gt;&lt;li&gt;Move/rename a file - S-r&lt;/li&gt;&lt;li&gt;Delete a file by pressing `d` to mark it for deletion, then press `x` to process all marked files.  Press `u` to deselect a file marked for deletion.&lt;/li&gt;&lt;li&gt;Press `~` to mark all backup files in the current directory for deletion (again, use `x` to actually remove them).&lt;/li&gt;&lt;li&gt;Refresh the Dired screen with `g`&lt;/li&gt;&lt;li&gt;Diff two files with `=`&lt;/li&gt;&lt;li&gt;Mark a file with `m` and then perform a shell command on said marked files with `!`.  You can also just run a command with `!`.  For example, download a zip file with `!wget www.com/somezipfile.zip` and then with that zipfile under the cursor, run `!unzip`&lt;br /&gt;&lt;/li&gt;&lt;li&gt;And the coolest bit, you can use regex to rename groups of files in a directory with %r.  If you have Main.as and Main.2.as and you want to rename them to main.as and main.2.as, you can do `Main\(.+\).as` to `main\1.as`&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-5018149255689066940?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/5018149255689066940/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2009/05/excellent-emacs-dired-mode-article.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/5018149255689066940'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/5018149255689066940'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2009/05/excellent-emacs-dired-mode-article.html' title='Emacs Dired mode quick reference.'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-3957903507952175675</id><published>2009-04-29T18:00:00.000-07:00</published><updated>2009-04-29T17:56:40.391-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='how-to'/><title type='text'>Screen Howto</title><content type='html'>&lt;a href="http://ubuntuforums.org/showthread.php?t=299286"&gt;How to set up screen to allow multiple user access&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-3957903507952175675?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/3957903507952175675/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2009/04/screen-howto.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/3957903507952175675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/3957903507952175675'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2009/04/screen-howto.html' title='Screen Howto'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-7406723834655649071</id><published>2009-04-29T16:30:00.000-07:00</published><updated>2009-04-29T16:40:40.416-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQLAlchemy'/><category scheme='http://www.blogger.com/atom/ns#' term='RESTful'/><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='Werkzeug'/><title type='text'>RESTful Framework? ORM + CMS + Gateway Interface</title><content type='html'>Django works for RESTful backends to a flash frontend, but it's orm isnt that great and I'm not using the nice templating engine anyway.  Its CMS on the other hand is killer.&lt;br /&gt;&lt;br /&gt;I'm looking into what I can replace django with, ala cart like.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;ORM - SQLAlchemy&lt;/li&gt;&lt;li&gt;CMS - FormAlchemy?&lt;/li&gt;&lt;li&gt;Gateway - Werkzeug? CherryPy?&lt;/li&gt;&lt;/ul&gt;Werkzeug so far looks to be REALLY nice.  I define 'application' in a file and then point WSGIScriptAlias to it in my apache conf and it works (granted I take in and return the correct values).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-7406723834655649071?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/7406723834655649071/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2009/04/restful-framework-orm-cms-gateway.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/7406723834655649071'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/7406723834655649071'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2009/04/restful-framework-orm-cms-gateway.html' title='RESTful Framework? ORM + CMS + Gateway Interface'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-3793818270966408228</id><published>2009-04-27T21:00:00.000-07:00</published><updated>2009-04-28T13:47:53.923-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='how-to'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='console'/><title type='text'>Unix groups, users</title><content type='html'>On ubuntu (if you don't have access to the gui):&lt;br /&gt;&lt;br /&gt;To create a user:&lt;br /&gt;&lt;blockquote&gt;useradd &lt;username&gt; -m -s /bin/bash *username*&lt;br /&gt;passwd *username*&lt;username&gt;&lt;br /&gt;&lt;/username&gt;&lt;/username&gt;&lt;/blockquote&gt;To create a group:&lt;br /&gt;&lt;blockquote&gt;groupadd *groupname*&lt;groupname&gt;&lt;/groupname&gt;&lt;/blockquote&gt;To add users to that new group:&lt;br /&gt;&lt;blockquote&gt;usermod -a -G *groupname* *username*&lt;groupname&gt; &lt;username&gt;&lt;br /&gt;&lt;/username&gt;&lt;/groupname&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-3793818270966408228?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/3793818270966408228/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2009/04/unix-groups-users.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/3793818270966408228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/3793818270966408228'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2009/04/unix-groups-users.html' title='Unix groups, users'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-6537476785102378179</id><published>2009-04-25T18:00:00.000-07:00</published><updated>2009-04-28T13:50:08.200-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='traffic'/><title type='text'>Traffic Saturday, April 25, 2009</title><content type='html'>Traffic sucks, but worse it seems to be unpredictable.. and not just because of accidents.  I'll keeping track of some stats, just for the sake of keeping stats (I have a stupid theory atm that there's a relation to whether it's overcast or not..).  I know Saturday sorta doesnt count as it's not a weekday, but I was really annoyed with traffic today so I started today.&lt;br /&gt;&lt;br /&gt;heavy traffic - traffic (speeds &lt;20 mph) before Crenshaw (Crunchshaw)&lt;br /&gt;medium - traffic starts at Crenshaw&lt;br /&gt;light - traffic starts at or after Washington Fairfax&lt;br /&gt;none -  drive at typical speeds (75mph) all the way to santa monica&lt;br /&gt;&lt;br /&gt;weather: sunny/hot&lt;br /&gt;traffic: heavy&lt;br /&gt;time: 13:45-14:30&lt;br /&gt;&lt;br /&gt;weather: dark&lt;br /&gt;traffic: medium&lt;br /&gt;time: 16:45-17:15&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-6537476785102378179?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/6537476785102378179/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2009/04/traffic.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/6537476785102378179'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/6537476785102378179'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2009/04/traffic.html' title='Traffic Saturday, April 25, 2009'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-8839496508541032379</id><published>2009-04-21T17:00:00.000-07:00</published><updated>2009-04-21T17:49:51.022-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='bug-fix'/><title type='text'>Mysql connection error 2003 (HY000) (146)</title><content type='html'>Tried logging into a remote mysql server and got an error:&lt;br /&gt;&lt;blockquote&gt;ERROR 2003 (HY000): Can't connect to MySQL server on 'someserver' (146)&lt;/blockquote&gt;In this case, it was due to &lt;span style="font-style: italic;"&gt;bind-address&lt;/span&gt; being set to 127.0.0.1in the /etc/my.cnf file (/opt/local/etc/my.cnf).  The issue arose on a machine that used to be  a slave after I had converted it back into a stand alone mysql server.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-8839496508541032379?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/8839496508541032379/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2009/04/mysql-connection-error-2003-hy000-146.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/8839496508541032379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/8839496508541032379'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2009/04/mysql-connection-error-2003-hy000-146.html' title='Mysql connection error 2003 (HY000) (146)'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-4066120409228676242</id><published>2009-04-18T12:00:00.000-07:00</published><updated>2009-09-25T13:44:18.928-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rumbling-ramblings'/><category scheme='http://www.blogger.com/atom/ns#' term='poop'/><title type='text'>Pro tip for the internet.</title><content type='html'>Shit is NOT sexy.  If there's shit in your sex, you're just fucked up. Knock it off and get over it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-4066120409228676242?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/4066120409228676242/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2009/04/pro-tip-for-internet.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/4066120409228676242'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/4066120409228676242'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2009/04/pro-tip-for-internet.html' title='Pro tip for the internet.'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-4270008923008285955</id><published>2009-04-16T11:00:00.000-07:00</published><updated>2009-04-21T17:46:33.908-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='capslock'/><category scheme='http://www.blogger.com/atom/ns#' term='instructions'/><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><category scheme='http://www.blogger.com/atom/ns#' term='ctrl'/><category scheme='http://www.blogger.com/atom/ns#' term='how-to'/><category scheme='http://www.blogger.com/atom/ns#' term='virtual terminal'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='console'/><title type='text'>Swapping ctrl and capslock on debian flavored linux-distros (ie ubuntu)</title><content type='html'>From the emacs-wiki http://www.emacswiki.org/emacs/MovingTheCtrlKey &lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;1. chmod 644 /etc/default/console-setup then edit that file. Add an X11 style caps lock modification via:&lt;/p&gt;&lt;pre&gt; $ diff -U0 /etc/default/{console-setup.orig,console-setup}&lt;br /&gt;--- /etc/default/console-setup.orig     2009-02-09 03:05:27.000000000 -0500&lt;br /&gt;+++ /etc/default/console-setup  2009-02-09 04:11:20.000000000 -0500&lt;br /&gt;@@ -40 +40 @@&lt;br /&gt;-XKBOPTIONS=""&lt;br /&gt;+XKBOPTIONS="ctrl:swapcaps"&lt;/pre&gt;&lt;p&gt;you can do “ctrl:nocaps” instead if you want to two control keys.&lt;/p&gt;&lt;p&gt;2. Trick dpkg into integrating your changes:&lt;/p&gt;&lt;pre&gt; $ sudo dpkg-reconfigure console-setup&lt;/pre&gt;&lt;p&gt;and choose all the defaults.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;Note that this will only change capslock and ctrl in virtual terminals or when gnome or some other (lesser) window manager is not running.&lt;br /&gt;&lt;br /&gt;To swap capslock and ctrl in gnome do:&lt;br /&gt;&lt;br /&gt;System-&gt;Preferences-&gt; Keyboard Preferences-&gt; Layout tab-&gt; Other Options (aka Layout Options) -&gt; Ctrl key position-&gt; Swap Ctrl and CapsLock radio button.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-4270008923008285955?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/4270008923008285955/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2009/04/swapping-ctrl-and-capslock-on-debian.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/4270008923008285955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/4270008923008285955'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2009/04/swapping-ctrl-and-capslock-on-debian.html' title='Swapping ctrl and capslock on debian flavored linux-distros (ie ubuntu)'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1182449701024810662.post-8183382000441694377</id><published>2009-04-15T16:00:00.000-07:00</published><updated>2010-01-15T16:57:04.296-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rumbling-ramblings'/><category scheme='http://www.blogger.com/atom/ns#' term='instructions'/><category scheme='http://www.blogger.com/atom/ns#' term='poop'/><category scheme='http://www.blogger.com/atom/ns#' term='how-to'/><category scheme='http://www.blogger.com/atom/ns#' term='corporate america'/><title type='text'>How to go to the restroom in a corporate environment</title><content type='html'>&lt;ol&gt;&lt;li&gt;Enter the stall, make sure the door closes behind you.&lt;/li&gt;&lt;li&gt;Pull out around 5 squares (1 foot) of  toilet paper and wipe down the toilet seat.  Sprinkles on the lid could possibly seep through the butt-gasket.&lt;/li&gt;&lt;li&gt;Place the butt-gasket on the toilet lid.  Take care to make sure the most disastrous parts (the parts back by the buttocks) are covered.  You're not going to pick up anything to vicious down by the legs.  Lower all leg garments to the knee level and sit down.  Lowering leg garments any further will only allow them to be potentially soiled on the floor.  Pull the buttocks apart slightly as to help prevent any further fouling of the skin around the anus and buttocks.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Evacuate the colon and, if necessary, the bladder.  ONLY empty the bladder if necessary, if you don't have to evacuate the colon, then you are not to be using a stall.&lt;/li&gt;&lt;li&gt;Do not worry about noises or smells offending others that may be in the bathroom with you.  The sounds and smells that you make others endure is a sign of corporate dominance.  On the other hand, if the smell offends you, then go ahead and flush it as soon as it escapes.&lt;/li&gt;&lt;li&gt;Play some games and/or surf on your phone.  This IS a requirement.  This is part of your free time and is to be considered a break in the working routine to allow the R-mode brain to do some free thinking.  Do not conduct any work or take calls.  You need this time to be free from work such that when you do return to your work place, you are refreshed and ready to continue.  This time should be kept to a 5 minute maxium as your legs and buttocks may go numb, hindering the wiping process in step 8.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Once your colon has recovered from the evacuation, sit forward off of the toilet and butt-gasket.  Do not sit back down as the gasket has most likely shifted and or possibly fallen down into the bowl.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Pull out 1 to 1 1/2 feet of toilet paper and scrunch into a ball.  Use this ball to wipe from back to front.  A front to back movement is suitable as well, but contrary to popular pornographic knowledge,both wipe paths clean equally as well.  Fold the toilet paper ball if appropriate.  Repeat all of step 8 until no brown coloring resides on the toilet paper.  If you see blood, it is only indicative that your anus is chapped.  Continue wiping until there is no brown.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Wipe or dab dry the urinary area.  Return all garments to their previous positions.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;If the toilet is not motion sensing, use your foot to kick start the flush process.&lt;/li&gt;&lt;li&gt;Wash your god damn hands with soap and water that is as hot as you can stand.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;After washing, use a paper towel to turn off the tap as well as on the door handle when exiting the bathroom.  If no trash receptacle is near the door, simply let the towel fall to the ground.   If the restroom provides only hot air blowers to dry your hands, do not attempt to turn off any taps and simply exit the restroom as quickly as possible.  The high water costs incured by leaving the tap on will send a concise and articulate message that air blowers are simply unacceptable hand drying utilities.  Use your pinky to open the door if the door pulls in or cover your hand with your shirt to turn the knob the door is configured with one.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-weight: bold;"&gt;Some notes on bathroom etiquette.&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;If anyone ever attempts to converse with you for any reason other than an emergency while you are in the stall, it is correct and proper to remind them that it is unacceptable to conduct conversations with those already in the stalls.&lt;/li&gt;&lt;li&gt;If a child under the age of 7 looks under the stall door directly at you, it is acceptable to use your foot and kick them in the head.  For those over the age of 7, wait until all evacuations have completed before attacking.&lt;/li&gt;&lt;li&gt;For all violent actions while in the restroom, remember that you are at your most vulnerable when you are evacuating your colon.  There is not much you can do about this, but remember it anyway.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1182449701024810662-8183382000441694377?l=tfdml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tfdml.blogspot.com/feeds/8183382000441694377/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tfdml.blogspot.com/2009/04/how-to-go-to-bathroom-in-corporate.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/8183382000441694377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1182449701024810662/posts/default/8183382000441694377'/><link rel='alternate' type='text/html' href='http://tfdml.blogspot.com/2009/04/how-to-go-to-bathroom-in-corporate.html' title='How to go to the restroom in a corporate environment'/><author><name>Turd Flop Down M'leg</name><uri>http://www.blogger.com/profile/06936562665485119622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
