<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description></description><title>Microthoughts</title><generator>Tumblr (3.0; @sigizmund)</generator><link>http://blog.sigizmund.info/</link><item><title>New CLI approach for Python applications</title><description>&lt;p&gt;I’m not sure whether I’ve just reinvented the wheel, but … a new way of building command-line interface in Python!&lt;/p&gt;  &lt;p&gt;Well, it probably won’t work for everything. Where it works at it’s best is when you have a number of modules, which meant to do something, and you don’t want to build the CLI interface to each of them. Say, in my case — I have 5 modules for the running various machine-learning tasks, which act as wrappers around various Java applications (written by me and third-party). Each module has a number of functions, which have something in common — they take input file(s), process it and write output to another file.&lt;/p&gt;  &lt;p&gt;Now, let’s get to the code.&lt;/p&gt;  &lt;pre&gt;&lt;code&gt;tagger.py - performs feature extraction and invokation of Mallet tagger&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;  &lt;p&gt;Actual code is not included — just methods’ names.&lt;/p&gt;  &lt;pre style="color: #000000; background: #ffffff;"&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;import&lt;/span&gt; os&lt;br/&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;import&lt;/span&gt; sys&lt;span style="color: #800000; font-weight: bold;"&gt;from&lt;/span&gt; common &lt;span style="color: #800000; font-weight: bold;"&gt;import&lt;/span&gt; &lt;span style="color: #808030;"&gt;*&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;def&lt;/span&gt; extractFeaturesForTagger&lt;span style="color: #808030;"&gt;(&lt;/span&gt;filename&lt;span style="color: #808030;"&gt;,&lt;/span&gt; output&lt;span style="color: #808030;"&gt;,&lt;/span&gt; jrunner &lt;span style="color: #808030;"&gt;=&lt;/span&gt; &lt;span style="color: #e34adc;"&gt;None&lt;/span&gt;&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;span style="color: #808030;"&gt;:&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #808030;"&gt;.&lt;/span&gt;&lt;span style="color: #808030;"&gt;.&lt;/span&gt;&lt;span style="color: #808030;"&gt;.&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;def&lt;/span&gt; invokeTagger&lt;span style="color: #808030;"&gt;(&lt;/span&gt;featuresFile&lt;span style="color: #808030;"&gt;,&lt;/span&gt; modelFile&lt;span style="color: #808030;"&gt;,&lt;/span&gt; train &lt;span style="color: #808030;"&gt;=&lt;/span&gt; &lt;span style="color: #e34adc;"&gt;True&lt;/span&gt;&lt;span style="color: #808030;"&gt;,&lt;/span&gt; output &lt;span style="color: #808030;"&gt;=&lt;/span&gt; &lt;span style="color: #e34adc;"&gt;None&lt;/span&gt;&lt;span style="color: #808030;"&gt;,&lt;/span&gt; jrunner &lt;span style="color: #808030;"&gt;=&lt;/span&gt; &lt;span style="color: #e34adc;"&gt;None&lt;/span&gt;&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;span style="color: #808030;"&gt;:&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #808030;"&gt;.&lt;/span&gt;&lt;span style="color: #808030;"&gt;.&lt;/span&gt;&lt;span style="color: #808030;"&gt;.&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;def&lt;/span&gt; despatch&lt;span style="color: #808030;"&gt;(&lt;/span&gt;args&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;span style="color: #808030;"&gt;:&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #e34adc;"&gt;len&lt;/span&gt;&lt;span style="color: #808030;"&gt;(&lt;/span&gt;args&lt;span style="color: #808030;"&gt;)&lt;/span&gt; &lt;span style="color: #808030;"&gt;&lt;&lt;/span&gt; &lt;span style="color: #008c00;"&gt;3&lt;/span&gt;&lt;span style="color: #808030;"&gt;:&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: #e34adc;"&gt;False&lt;/span&gt;    cmd &lt;span style="color: #808030;"&gt;=&lt;/span&gt; args&lt;span style="color: #808030;"&gt;[&lt;/span&gt;&lt;span style="color: #008c00;"&gt;2&lt;/span&gt;&lt;span style="color: #808030;"&gt;]&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;br/&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;if&lt;/span&gt; cmd &lt;span style="color: #808030;"&gt;=&lt;/span&gt;&lt;span style="color: #808030;"&gt;=&lt;/span&gt; &lt;span style="color: #0000e6;"&gt;'fe'&lt;/span&gt;&lt;span style="color: #808030;"&gt;:&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;try&lt;/span&gt;&lt;span style="color: #808030;"&gt;:&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #808030;"&gt;(&lt;/span&gt;ifile&lt;span style="color: #808030;"&gt;,&lt;/span&gt; ofile&lt;span style="color: #808030;"&gt;)&lt;/span&gt; &lt;span style="color: #808030;"&gt;=&lt;/span&gt; args&lt;span style="color: #808030;"&gt;[&lt;/span&gt;&lt;span style="color: #008c00;"&gt;3&lt;/span&gt;&lt;span style="color: #808030;"&gt;:&lt;/span&gt;&lt;span style="color: #808030;"&gt;]&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;except&lt;/span&gt;&lt;span style="color: #808030;"&gt;:&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: #e34adc;"&gt;False&lt;/span&gt;        extractFeaturesForTagger&lt;span style="color: #808030;"&gt;(&lt;/span&gt;ifile&lt;span style="color: #808030;"&gt;,&lt;/span&gt; ofile&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;elif&lt;/span&gt; cmd &lt;span style="color: #808030;"&gt;=&lt;/span&gt;&lt;span style="color: #808030;"&gt;=&lt;/span&gt; &lt;span style="color: #0000e6;"&gt;'train'&lt;/span&gt;&lt;span style="color: #808030;"&gt;:&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;try&lt;/span&gt;&lt;span style="color: #808030;"&gt;:&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #808030;"&gt;(&lt;/span&gt;ifile&lt;span style="color: #808030;"&gt;,&lt;/span&gt; ofile&lt;span style="color: #808030;"&gt;)&lt;/span&gt; &lt;span style="color: #808030;"&gt;=&lt;/span&gt; args&lt;span style="color: #808030;"&gt;[&lt;/span&gt;&lt;span style="color: #008c00;"&gt;3&lt;/span&gt;&lt;span style="color: #808030;"&gt;:&lt;/span&gt;&lt;span style="color: #808030;"&gt;]&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;except&lt;/span&gt;&lt;span style="color: #808030;"&gt;:&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: #e34adc;"&gt;False&lt;/span&gt;&lt;p&gt;&lt;/p&gt;        invokeTagger&lt;span style="color: #808030;"&gt;(&lt;/span&gt;ifile&lt;span style="color: #808030;"&gt;,&lt;/span&gt; ofile&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;elif&lt;/span&gt; cmd &lt;span style="color: #808030;"&gt;=&lt;/span&gt;&lt;span style="color: #808030;"&gt;=&lt;/span&gt; &lt;span style="color: #0000e6;"&gt;'tag'&lt;/span&gt;&lt;span style="color: #808030;"&gt;:&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;try&lt;/span&gt;&lt;span style="color: #808030;"&gt;:&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #808030;"&gt;(&lt;/span&gt;fts&lt;span style="color: #808030;"&gt;,&lt;/span&gt; model&lt;span style="color: #808030;"&gt;,&lt;/span&gt; ofile&lt;span style="color: #808030;"&gt;)&lt;/span&gt; &lt;span style="color: #808030;"&gt;=&lt;/span&gt; args&lt;span style="color: #808030;"&gt;[&lt;/span&gt;&lt;span style="color: #008c00;"&gt;3&lt;/span&gt;&lt;span style="color: #808030;"&gt;:&lt;/span&gt;&lt;span style="color: #808030;"&gt;]&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;except&lt;/span&gt;&lt;span style="color: #808030;"&gt;:&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: #e34adc;"&gt;False&lt;/span&gt;        invokeTagger&lt;span style="color: #808030;"&gt;(&lt;/span&gt;fts&lt;span style="color: #808030;"&gt;,&lt;/span&gt; model&lt;span style="color: #808030;"&gt;,&lt;/span&gt; &lt;span style="color: #e34adc;"&gt;False&lt;/span&gt;&lt;span style="color: #808030;"&gt;,&lt;/span&gt; ofile&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;else&lt;/span&gt;&lt;span style="color: #808030;"&gt;:&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;print&lt;/span&gt;&lt;span style="color: #808030;"&gt;(&lt;/span&gt;&lt;span style="color: #0000e6;"&gt;"Couldn't recognise the options: "&lt;/span&gt;&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;print&lt;/span&gt;&lt;span style="color: #808030;"&gt;(&lt;/span&gt;args&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: #e34adc;"&gt;False&lt;/span&gt;&lt;p&gt;&lt;/p&gt;    &lt;span style="color: #800000; font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: #e34adc;"&gt;True&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;def&lt;/span&gt; describe&lt;span style="color: #808030;"&gt;(&lt;/span&gt;&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;span style="color: #808030;"&gt;:&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: #808030;"&gt;(&lt;/span&gt;&lt;span style="color: #0000e6;"&gt;"tagger"&lt;/span&gt;&lt;span style="color: #808030;"&gt;,&lt;/span&gt; &lt;span style="color: #808030;"&gt;[&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #808030;"&gt;(&lt;/span&gt;&lt;span style="color: #0000e6;"&gt;"fe"&lt;/span&gt;&lt;span style="color: #808030;"&gt;,&lt;/span&gt; &lt;span style="color: #0000e6;"&gt;"[I]uafFile, [O]featureVectorsFile"&lt;/span&gt;&lt;span style="color: #808030;"&gt;,&lt;/span&gt; &lt;span style="color: #0000e6;"&gt;"Extract features for tagger"&lt;/span&gt;&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;span style="color: #808030;"&gt;,&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #808030;"&gt;(&lt;/span&gt;&lt;span style="color: #0000e6;"&gt;"train"&lt;/span&gt;&lt;span style="color: #808030;"&gt;,&lt;/span&gt; &lt;span style="color: #0000e6;"&gt;"[I]featureVectorsFile, [O]modelFile"&lt;/span&gt;&lt;span style="color: #808030;"&gt;,&lt;/span&gt; &lt;span style="color: #0000e6;"&gt;"Train the model"&lt;/span&gt;&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;span style="color: #808030;"&gt;,&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #808030;"&gt;(&lt;/span&gt;&lt;span style="color: #0000e6;"&gt;"tag"&lt;/span&gt;&lt;span style="color: #808030;"&gt;,&lt;/span&gt; &lt;span style="color: #0000e6;"&gt;"[I]featureVectorsFile, [I]modelFile, [O]taggerOutputFile"&lt;/span&gt;&lt;span style="color: #808030;"&gt;,&lt;/span&gt; &lt;span style="color: #0000e6;"&gt;"Tag locations in file"&lt;/span&gt;&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #808030;"&gt;]&lt;/span&gt;&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;br/&gt;&lt;/pre&gt;  &lt;p&gt;What matters is two functions - &lt;code&gt;despatch&lt;/code&gt; and &lt;code&gt;describe&lt;/code&gt;. First one actually takes standard &lt;code&gt;sys.argv&lt;/code&gt;, assumes that it applies to current module and tries to apply the arguments to it’s functions. When it works, it invokes an appropriate method. When it’s not, it returns False.&lt;/p&gt;  &lt;p&gt;Second method returns a tuple of string and list, which, in it’s turn consists of tuples of three elements — subcommand name, parameters and short description. Now when we have this module, let’s get to the &lt;code&gt;despatcher.py&lt;/code&gt;:&lt;/p&gt;  &lt;pre style="color: #000000; background: #ffffff;"&gt;&lt;span style="color: #696969;"&gt;#!/usr/bin/env python&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #696969;"&gt;# encoding: utf-8&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #696969;"&gt;"""&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #696969;"&gt;despatcher.py&lt;/span&gt;&lt;span style="color: #696969;"&gt;Created by Roman Kirillov on 2009-09-25.&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #696969;"&gt;Copyright (c) 2009 Yahoo! Inc. All rights reserved.&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #696969;"&gt;"""&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;import&lt;/span&gt; sys&lt;br/&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;import&lt;/span&gt; os&lt;span style="color: #800000; font-weight: bold;"&gt;import&lt;/span&gt; tagger&lt;br/&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;import&lt;/span&gt; disambiguator&lt;p&gt;&lt;/p&gt;modules &lt;span style="color: #808030;"&gt;=&lt;/span&gt; &lt;span style="color: #808030;"&gt;[&lt;/span&gt;tagger&lt;span style="color: #808030;"&gt;,&lt;/span&gt;disambiguator&lt;span style="color: #808030;"&gt;]&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;def&lt;/span&gt; printHelp&lt;span style="color: #808030;"&gt;(&lt;/span&gt;&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;span style="color: #808030;"&gt;:&lt;/span&gt;&lt;br/&gt;    helpString &lt;span style="color: #808030;"&gt;=&lt;/span&gt; &lt;span style="color: #0000e6;"&gt;'\nUsage options: %s &lt;module&gt; &lt;command&gt; &lt;command-specific-arguments&gt;\n'&lt;/span&gt; &lt;span style="color: #808030;"&gt;%&lt;/span&gt; &lt;span style="color: #808030;"&gt;(&lt;/span&gt;sys&lt;span style="color: #808030;"&gt;.&lt;/span&gt;argv&lt;span style="color: #808030;"&gt;[&lt;/span&gt;&lt;span style="color: #008c00;"&gt;0&lt;/span&gt;&lt;span style="color: #808030;"&gt;]&lt;/span&gt;&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;for&lt;/span&gt; m &lt;span style="color: #800000; font-weight: bold;"&gt;in&lt;/span&gt; modules&lt;span style="color: #808030;"&gt;:&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #808030;"&gt;(&lt;/span&gt;cmd&lt;span style="color: #808030;"&gt;,&lt;/span&gt; subcmds&lt;span style="color: #808030;"&gt;)&lt;/span&gt; &lt;span style="color: #808030;"&gt;=&lt;/span&gt; m&lt;span style="color: #808030;"&gt;.&lt;/span&gt;describe&lt;span style="color: #808030;"&gt;(&lt;/span&gt;&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;p&gt;&lt;/p&gt;        helpString &lt;span style="color: #808030;"&gt;=&lt;/span&gt; helpString &lt;span style="color: #808030;"&gt;+&lt;/span&gt; &lt;span style="color: #0000e6;"&gt;'\n'&lt;/span&gt; &lt;span style="color: #808030;"&gt;+&lt;/span&gt; cmd &lt;span style="color: #808030;"&gt;+&lt;/span&gt; &lt;span style="color: #0000e6;"&gt;'\n'&lt;/span&gt;        &lt;span style="color: #800000; font-weight: bold;"&gt;for&lt;/span&gt; scd &lt;span style="color: #800000; font-weight: bold;"&gt;in&lt;/span&gt; subcmds&lt;span style="color: #808030;"&gt;:&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #808030;"&gt;(&lt;/span&gt;s&lt;span style="color: #808030;"&gt;,&lt;/span&gt; params&lt;span style="color: #808030;"&gt;,&lt;/span&gt; descr&lt;span style="color: #808030;"&gt;)&lt;/span&gt; &lt;span style="color: #808030;"&gt;=&lt;/span&gt; scd&lt;br/&gt;            helpString &lt;span style="color: #808030;"&gt;=&lt;/span&gt; helpString &lt;span style="color: #808030;"&gt;+&lt;/span&gt; &lt;span style="color: #808030;"&gt;(&lt;/span&gt;s &lt;span style="color: #808030;"&gt;+&lt;/span&gt; &lt;span style="color: #0000e6;"&gt;"\t"&lt;/span&gt;&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;span style="color: #808030;"&gt;.&lt;/span&gt;rjust&lt;span style="color: #808030;"&gt;(&lt;/span&gt;&lt;span style="color: #008c00;"&gt;15&lt;/span&gt;&lt;span style="color: #808030;"&gt;)&lt;/span&gt; &lt;span style="color: #696969;"&gt;#  + params + " -- " + descr + "\n"&lt;/span&gt;&lt;br/&gt;            helpString &lt;span style="color: #808030;"&gt;=&lt;/span&gt; helpString  &lt;span style="color: #808030;"&gt;+&lt;/span&gt; params &lt;span style="color: #808030;"&gt;+&lt;/span&gt; &lt;span style="color: #0000e6;"&gt;" -- "&lt;/span&gt; &lt;span style="color: #808030;"&gt;+&lt;/span&gt; descr &lt;span style="color: #808030;"&gt;+&lt;/span&gt; &lt;span style="color: #0000e6;"&gt;"\n"&lt;/span&gt;&lt;p&gt;&lt;/p&gt;    &lt;span style="color: #800000; font-weight: bold;"&gt;print&lt;/span&gt;&lt;span style="color: #808030;"&gt;(&lt;/span&gt;helpString&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;def&lt;/span&gt; canIHaz&lt;span style="color: #808030;"&gt;(&lt;/span&gt;val&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;span style="color: #808030;"&gt;:&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #800000; font-weight: bold;"&gt;not&lt;/span&gt; val&lt;span style="color: #808030;"&gt;:&lt;/span&gt;&lt;br/&gt;        printHelp&lt;span style="color: #808030;"&gt;(&lt;/span&gt;&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;br/&gt;        sys&lt;span style="color: #808030;"&gt;.&lt;/span&gt;&lt;span style="color: #e34adc;"&gt;exit&lt;/span&gt;&lt;span style="color: #808030;"&gt;(&lt;/span&gt;&lt;span style="color: #008c00;"&gt;3&lt;/span&gt;&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;def&lt;/span&gt; despatch&lt;span style="color: #808030;"&gt;(&lt;/span&gt;&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;span style="color: #808030;"&gt;:&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #e34adc;"&gt;len&lt;/span&gt;&lt;span style="color: #808030;"&gt;(&lt;/span&gt;sys&lt;span style="color: #808030;"&gt;.&lt;/span&gt;argv&lt;span style="color: #808030;"&gt;)&lt;/span&gt; &lt;span style="color: #808030;"&gt;&lt;&lt;/span&gt; &lt;span style="color: #008c00;"&gt;2&lt;/span&gt; &lt;span style="color: #800000; font-weight: bold;"&gt;or&lt;/span&gt; sys&lt;span style="color: #808030;"&gt;.&lt;/span&gt;argv&lt;span style="color: #808030;"&gt;[&lt;/span&gt;&lt;span style="color: #008c00;"&gt;1&lt;/span&gt;&lt;span style="color: #808030;"&gt;]&lt;/span&gt; &lt;span style="color: #808030;"&gt;=&lt;/span&gt;&lt;span style="color: #808030;"&gt;=&lt;/span&gt; &lt;span style="color: #0000e6;"&gt;'help'&lt;/span&gt;&lt;span style="color: #808030;"&gt;:&lt;/span&gt;&lt;br/&gt;        printHelp&lt;span style="color: #808030;"&gt;(&lt;/span&gt;&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;br/&gt;        sys&lt;span style="color: #808030;"&gt;.&lt;/span&gt;&lt;span style="color: #e34adc;"&gt;exit&lt;/span&gt;&lt;span style="color: #808030;"&gt;(&lt;/span&gt;&lt;span style="color: #008c00;"&gt;0&lt;/span&gt;&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;else&lt;/span&gt;&lt;span style="color: #808030;"&gt;:&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;for&lt;/span&gt; m &lt;span style="color: #800000; font-weight: bold;"&gt;in&lt;/span&gt; modules&lt;span style="color: #808030;"&gt;:&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #808030;"&gt;(&lt;/span&gt;cmd&lt;span style="color: #808030;"&gt;,&lt;/span&gt; subcmds&lt;span style="color: #808030;"&gt;)&lt;/span&gt; &lt;span style="color: #808030;"&gt;=&lt;/span&gt; m&lt;span style="color: #808030;"&gt;.&lt;/span&gt;describe&lt;span style="color: #808030;"&gt;(&lt;/span&gt;&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;if&lt;/span&gt; cmd &lt;span style="color: #808030;"&gt;=&lt;/span&gt;&lt;span style="color: #808030;"&gt;=&lt;/span&gt; sys&lt;span style="color: #808030;"&gt;.&lt;/span&gt;argv&lt;span style="color: #808030;"&gt;[&lt;/span&gt;&lt;span style="color: #008c00;"&gt;1&lt;/span&gt;&lt;span style="color: #808030;"&gt;]&lt;/span&gt;&lt;span style="color: #808030;"&gt;:&lt;/span&gt;&lt;br/&gt;                canIHaz&lt;span style="color: #808030;"&gt;(&lt;/span&gt;m&lt;span style="color: #808030;"&gt;.&lt;/span&gt;despatch&lt;span style="color: #808030;"&gt;(&lt;/span&gt;sys&lt;span style="color: #808030;"&gt;.&lt;/span&gt;argv&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #e34adc;"&gt;__name__&lt;/span&gt; &lt;span style="color: #808030;"&gt;=&lt;/span&gt;&lt;span style="color: #808030;"&gt;=&lt;/span&gt; &lt;span style="color: #0000e6;"&gt;'__main__'&lt;/span&gt;&lt;span style="color: #808030;"&gt;:&lt;/span&gt;&lt;br/&gt;    despatch&lt;span style="color: #808030;"&gt;(&lt;/span&gt;&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;br/&gt;&lt;/pre&gt;  &lt;p&gt;While it’s pretty easy to anyone who can read Python to understand, what’s this all about, let’s just show what happens when you run &lt;code&gt;despatcher.py&lt;/code&gt; without parameters:&lt;/p&gt;  &lt;pre&gt;&lt;code&gt;[kirillov@chiark integration]$ python despatcher.pyUsage options: despatcher.py &lt;module&gt; &lt;command&gt; &lt;command-specific-arguments&gt;&lt;p&gt;&lt;/p&gt;tagger&lt;br/&gt;            fe  [I]uafFile, [O]featureVectorsFile -- Extract features for tagger&lt;br/&gt;         train  [I]featureVectorsFile, [O]modelFile -- Train the model&lt;br/&gt;           tag  [I]featureVectorsFile, [I]modelFile, [O]taggerOutputFile -- Tag locations in filedisambiguator&lt;br/&gt;            fe  [I]uafFile, [O]outputFileName, [I]useTaggedLocations (true/false) -- Invoke disambiguation feature extractor&lt;br/&gt;        import  [I]featureVector, [O]malletImport -- Import feature vector to Mallet format&lt;br/&gt;         train  [I]featureVector, [O]modelName -- Train disambiguators model&lt;br/&gt;      disambig  [I]featureVector, [I]modelName, [O]output -- Run trained disambiguator over the feature vector&lt;br/&gt;     normalise  [I]featureVector, [O]normalisedFeatureVector -- Normalises the feature vector&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;  &lt;p&gt;Pretty easy, huh? Of course, still needs a lot of tuning and polishing, but it feels so much better to have a centralised dispatcher, which takes care of printing help and handling options — rather than having a one for each module?&lt;/p&gt;      &lt;p style="font-size: 10px;"&gt;  &lt;a href="http://posterous.com"&gt;Posted via web&lt;/a&gt;   from &lt;a href="http://www.sigizmund.com/new-cli-approach-for-python-applications"&gt;Roman’s blog&lt;/a&gt; | &lt;a href="http://www.sigizmund.com/new-cli-approach-for-python-applications#comment"&gt;&lt;span style="font-size: 11px"&gt;Comment »&lt;/span&gt;&lt;/a&gt;  &lt;/p&gt;</description><link>http://blog.sigizmund.info/post/196693047</link><guid>http://blog.sigizmund.info/post/196693047</guid><pubDate>Fri, 25 Sep 2009 17:09:31 +0100</pubDate></item><item><title>VoIP calls via 3G from your iPhone </title><description>What if you’re away from any wifi or desk phone with a fancy “All World Unlimited” price plan (i.e. your work phone), and you still need to make that long international call urgently? Apple says there’s nothing you can do about it and you must use your provider’s international tarif.  Independent developers who don’t bother putting their app to AppStore disagree. 3G is just another source of the Internet, and if Steve, O2, AT&amp;T &amp; co doesn’t want youto use it the way you like - worse for them. Because tiny app Siphone (apparently, SIP + telephone) works nicely via your 3G connection, and all you need is a SIP account with some money on it (I use voipcheap.com for that backup purpose - they’re crap, but none of them is any better). This morning I had a call with my wife (who’s meeting with some of her clients in Moscow) and chatted for 15 minutes; guess how much should I pay if I use O2’s international tarif? &lt;p&gt;&lt;/p&gt; Anyway, Siphone is a little gem and if you have your iPhone jailbroken, you have absolutely no reasons not to install it. Do it. Now.&lt;p&gt;&lt;img src="http://posterous.com/getfile/files.posterous.com/sigizmund/tLkQuZuthps2TMzBjOC2isu5P1jWK0Ak9zD4jkHfhPhDA7fD8so5JedAm09m/photo.jpg" width="320" height="480"/&gt;&lt;/p&gt;
&lt;p&gt;Roman Kirillov &lt;br/&gt;&lt;a href="http://sigizmund.com"&gt;&lt;a href="http://sigizmund.com"&gt;http://sigizmund.com&lt;/a&gt;&lt;/a&gt; &lt;/p&gt;
 Sent from my iPhone      &lt;p style="font-size: 10px;"&gt;  &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;   from &lt;a href="http://www.sigizmund.com/voip-calls-via-3g-from-your-iphone"&gt;Roman’s blog&lt;/a&gt; | &lt;a href="http://www.sigizmund.com/voip-calls-via-3g-from-your-iphone#comment"&gt;&lt;span style="font-size: 11px"&gt;Comment »&lt;/span&gt;&lt;/a&gt;  &lt;/p&gt;</description><link>http://blog.sigizmund.info/post/193984101</link><guid>http://blog.sigizmund.info/post/193984101</guid><pubDate>Tue, 22 Sep 2009 08:15:55 +0100</pubDate></item><item><title>New Yahoo! marketing campaign: it's you!</title><description>Totally completely utterly amazingly breathtakingly awesome! Proud to work for Y!&lt;p&gt;&lt;a href="http://posterous.com/getfile/files.posterous.com/sigizmund/GKdQlDLzFFCqREn8hmbSNLm9AfH7IaKpBwD6q1b0VuTZdtaLtyKKc396Vy74/photo.jpg"&gt;&lt;img src="http://posterous.com/getfile/files.posterous.com/sigizmund/RMbEbDi4Z7iqRBJuVm3os8UP1wBTQrKuCRBKc2xLLuqFds94KzgfYJD7YEJL/photo.jpg.scaled.500.jpg" width="500" height="375"/&gt;&lt;/a&gt; &lt;/p&gt;      &lt;p style="font-size: 10px;"&gt;  &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;   from &lt;a href="http://www.sigizmund.com/new-yahoo-marketing-campaign-its-you"&gt;Roman’s blog&lt;/a&gt; | &lt;a href="http://www.sigizmund.com/new-yahoo-marketing-campaign-its-you#comment"&gt;&lt;span style="font-size: 11px"&gt;Comment »&lt;/span&gt;&lt;/a&gt;  &lt;/p&gt;</description><link>http://blog.sigizmund.info/post/193479994</link><guid>http://blog.sigizmund.info/post/193479994</guid><pubDate>Mon, 21 Sep 2009 18:34:05 +0100</pubDate></item><item><title>Two questions to Posterous ((tag: posterous)</title><description>Hi guys,  First - thanks again for a nice service, themes are really cool and I’m really going to do some heavy-weight customisation over the weekend! Now, two questions: &lt;p&gt;&lt;/p&gt; 1. Is there any way to hide past of the post behind the “read more” link? Like  in LiveJournal or ” in WordPress? That may definitely help to make Posterous more solid and professional blogging tool.  2. Is there any way to convert tags into twitter hashtags? So, if I tag this post (you see - I’m CCing &lt;a href="mailto:post@posterous.com"&gt;post@posterous.com&lt;/a&gt;!) with “posterous” tag, can it be converted into #posterous on Twitter? &lt;p&gt;&lt;/p&gt; 3. (oi! there’re three questions actually!) – can we have an option of sending content which will be processed by Markdown OR at least sending HTML source? Say, I want to include snippets of code into my post, so I’d prefer to have `int a = 128` or at least &lt;code&gt;int a = 128;&lt;/code&gt; feature.  Thanks again! &lt;p&gt;&lt;/p&gt; Cheers, &lt;br/&gt;Roman      &lt;p style="font-size: 10px;"&gt;  &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;   from &lt;a href="http://www.sigizmund.com/two-questions-to-posterous-tag-posterous"&gt;Roman’s blog&lt;/a&gt; | &lt;a href="http://www.sigizmund.com/two-questions-to-posterous-tag-posterous#comment"&gt;&lt;span style="font-size: 11px"&gt;Comment »&lt;/span&gt;&lt;/a&gt;  &lt;/p&gt;</description><link>http://blog.sigizmund.info/post/193248863</link><guid>http://blog.sigizmund.info/post/193248863</guid><pubDate>Mon, 21 Sep 2009 10:54:13 +0100</pubDate></item><item><title>Edit in TextMate functionality in Firefox </title><description>&lt;p&gt;Do you like “Edit in TextMate” command you can use in any Cocoa edit window, and write the text in your favourite text editor? (of course, TextMate that is). I like it too, and since I’ve switched to Firefox (after 1.5 years struggling with Safari and getting finally tired of it being SO slow sometimes!) I missed it a lot. Well, now you can do it, too – just follow the advice here: &lt;a href="http://blog.circlesixdesign.com/2007/02/23/textmate-firefox/"&gt;&lt;a href="http://blog.circlesixdesign.com/2007/02/23/textmate-firefox/"&gt;http://blog.circlesixdesign.com/2007/02/23/textmate-firefox/&lt;/a&gt;&lt;/a&gt;  Little tip: there’s no need to create any symbolic link, you can simply specify `/usr/local/bin/mate` as your editor, or, if you didn’t install `mate` command when installing TextMate (which I highly recommend to do), you can use `/Applications/TextMate.app/Content/MacOS/TextMate` to achieve nearly identical results.      &lt;p style="font-size: 10px;"&gt;  &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;   from &lt;a href="http://www.sigizmund.com/edit-in-textmate-functionality-in-firefox"&gt;Roman’s blog&lt;/a&gt; | &lt;a href="http://www.sigizmund.com/edit-in-textmate-functionality-in-firefox#comment"&gt;&lt;span style="font-size: 11px"&gt;Comment »&lt;/span&gt;&lt;/a&gt;  &lt;/p&gt;&lt;/p&gt;</description><link>http://blog.sigizmund.info/post/192497124</link><guid>http://blog.sigizmund.info/post/192497124</guid><pubDate>Sun, 20 Sep 2009 13:25:44 +0100</pubDate></item><item><title>Mesmerising Flash video/animation/game</title><description>&lt;p&gt;&lt;object height="300" width="400"&gt;&lt;param name="allowfullscreen" value="true"&gt;
&lt;param name="allowscriptaccess" value="always"&gt;
&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=6655024&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1"&gt;
&lt;embed allowfullscreen="true" type="application/x-shockwave-flash" src="http://vimeo.com/moogaloop.swf?clip_id=6655024&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" allowscriptaccess="always" height="300" width="400"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;p&gt;&lt;a href="http://vimeo.com/6655024"&gt;Mesmerising Flash Application&lt;/a&gt; from &lt;a href="http://vimeo.com/user1830214"&gt;Roman Kirillov&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&lt;/p&gt;    &lt;p&gt;Try it yourself, really.&lt;/p&gt;      &lt;p style="font-size: 10px;"&gt;  &lt;a href="http://posterous.com"&gt;Posted via web&lt;/a&gt;   from &lt;a href="http://www.sigizmund.com/mesmerising-flash-videoanimationgame"&gt;Roman’s posterous&lt;/a&gt; | &lt;a href="http://www.sigizmund.com/mesmerising-flash-videoanimationgame#comment"&gt;&lt;span style="font-size: 11px"&gt;Comment »&lt;/span&gt;&lt;/a&gt;  &lt;/p&gt;</description><link>http://blog.sigizmund.info/post/192409255</link><guid>http://blog.sigizmund.info/post/192409255</guid><pubDate>Sun, 20 Sep 2009 09:37:53 +0100</pubDate></item><item><title>Debugging Hadoop applications using your Eclipse </title><description>Well, it can be annoying - it can be awfully annoying, in fact, to debug Hadoop applications. But sometimes you need it, because logging doesn’t show anything, and you’ve tried anything but still cannot get under the Hadoop’s cover. In this case, do few simple steps.
&lt;div&gt;1. Download and unpack Hadoop to your local machine. &lt;/div&gt;
&lt;div&gt;2. Prepare small set of data you’re planning to run the test on&lt;/div&gt;
&lt;div&gt;3. Check that you actually can run Hadoop locally, something like this (don’t forget to set &lt;span style="font-size: 12px;"&gt;$HADOOP_CLASSPATH&lt;/span&gt; first!): &lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;&lt;span style="font-size: 12px;"&gt;&lt;span class="Apple-tab-span" style=""&gt;	&lt;/span&gt;bin/hdebug jar yourprogram.jar com.company.project.HadoopApp tiny.txt ./out&lt;/span&gt;&lt;/div&gt;

&lt;div&gt;4. Go to Hadoop’s directory, and copy file &lt;span style="font-size: 12px;"&gt;bin/hadoop&lt;/span&gt; to &lt;span style="font-size: 12px;"&gt;bin/hdebug&lt;/span&gt;
&lt;/div&gt;
&lt;div&gt;5. Now, we need to make Hadoop start in debug mode. What you should do is to add one line of text into the starting script:&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;a href="http://posterous.com/getfile/files.posterous.com/sigizmund/v23pbIhPmnDsmqKmBnKUQgzkJh1hdPs535wZihWutom7icvFIJVbYYI6bfcc/PastedGraphic-2.png"&gt;&lt;img src="http://posterous.com/getfile/files.posterous.com/sigizmund/8EfIodEjOgUkdNzogWEZ3kX45HdirDA9HpkYOkJyAI5AoDyCeOGi9hXC3dHW/PastedGraphic-2.png.scaled.500.jpg" width="500" height="73"/&gt;&lt;/a&gt; &lt;/div&gt;

&lt;div&gt;Yes, here’s it. Copy it from here:&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;&lt;span style="font-size: 12px;"&gt;-Xdebug -Xrunjdwp:transport=dt_socket,address=8001,server=y,suspend=y&lt;/span&gt;&lt;/div&gt;

&lt;div&gt;What does it say basically is an instruction to Java to start in debug mode, and wait for socket connection of the remote debugger on port 8001; execution should be suspended after the start until debugger is connected.&lt;br/&gt;&lt;p&gt;&lt;/p&gt;
&lt;div&gt;Now, go and start your grid application like you did in step 3, but now use &lt;span style="font-size: 12px;"&gt;bin/hdebug&lt;/span&gt; script we’ve created. If you’ve done everything correctly, program should output something like this:&lt;/div&gt;

&lt;div&gt;&lt;span style="font-size: 12px;"&gt;Listening for transport dt_socket at address: 8001&lt;/span&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;and wait for debugger. So, let’s get it some debugger then! Fire up your Eclipse with your project (likely you have it opened already since you’re trying to debug something) and add new Debug configuration:&lt;/div&gt;

&lt;div&gt;
&lt;a href="http://posterous.com/getfile/files.posterous.com/sigizmund/mGPixhOySRJwja1tITEdz4ftBNlB89lAY1mnJz2KlNRiTxQT4iYCzx2ZcGll/PastedGraphic-4.png"&gt;&lt;img src="http://posterous.com/getfile/files.posterous.com/sigizmund/2uCWcHqMfGlmg68gKFoC7yfSDzRrBLyohtq8QDDw2iK1gBYP988JSP6OdFHr/PastedGraphic-4.png.scaled.500.jpg" width="500" height="297"/&gt;&lt;/a&gt; &lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;After you’ve set everything up, click “Apply” and close the window for now – probably, you’d want to set some breakpoints before starting the actual debugging. Go and do it, and then simply choose created debug configuration - and off you go! If everything worked properly, you should soon get a standard debugger window, with all the nice things Java can offer you. Hope it’ll help some of us in our difficult business of writing distributed grid-enabled applications! :)&lt;/div&gt;

&lt;br/&gt;
&lt;/div&gt;      &lt;p style="font-size: 10px;"&gt;  &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;   from &lt;a href="http://www.sigizmund.com/debugging-hadoop-applications-using-your-ecli"&gt;Roman’s posterous&lt;/a&gt; | &lt;a href="http://www.sigizmund.com/debugging-hadoop-applications-using-your-ecli#comment"&gt;&lt;span style="font-size: 11px"&gt;Comment »&lt;/span&gt;&lt;/a&gt;  &lt;/p&gt;</description><link>http://blog.sigizmund.info/post/190261764</link><guid>http://blog.sigizmund.info/post/190261764</guid><pubDate>Thu, 17 Sep 2009 16:30:47 +0100</pubDate></item><item><title>My O2 iPhone App - easy and convenient, does what it says </title><description>So, you would really like to now, how much longer can you use your inclusive minutes and text, or want to see, when your next bill is due or how much did you pay the last time? There’s an app for that! Recently released My O2 app is a tiny brilliant - does what it says, easily and simply – no more, and no less.&lt;p&gt;&lt;img src="http://posterous.com/getfile/files.posterous.com/sigizmund/5B75VKxUenbB4N5hCpgnIGSIZizVkzPkzmMM4fgu9APVaIig4qKAl7pYC5YK/IMG_0250.png" width="320" height="480"/&gt;&lt;/p&gt;
&lt;p&gt;Main screen simply shows you the most important information – well, for me it’s not that bad, as the last bill was just yesterday and I am unlikely to put the needle to the left-most position. But, I can easily see what I want to, and that’s pretty much enough. You can also view your last bill summary, your recent charges (I found out how much one minute costs me when I’m in Spain!) – and even view your tariff details, which is something totally amazing if you need just a quick reference, on what you’re paying. Honestly, O2 - you did a great job and my congratulations are well-deserved!&lt;/p&gt;
&lt;p&gt;&lt;img src="http://posterous.com/getfile/files.posterous.com/sigizmund/cJIAXIDjqp07tnDYWjXm0eY6MumS5uiM6X9OkuuedgVq9Egq3NZNUCVZ5kG1/IMG_0251.png" width="320" height="480"/&gt;&lt;img src="http://posterous.com/getfile/files.posterous.com/sigizmund/3dEqk4bntXqDO1AbYcvzO80hbX9TgO7NCHnx8fRBI67BIwrPIVvNmJwgSlAY/IMG_0252.png" width="320" height="480"/&gt;&lt;img src="http://posterous.com/getfile/files.posterous.com/sigizmund/KWmROIgpjgNzupz3jw0UE9PgqCWayROKNwQ10Nv3yJfGMhS74SGIm8BiBPFC/IMG_0253.png" width="320" height="480"/&gt;&lt;img src="http://posterous.com/getfile/files.posterous.com/sigizmund/On5BCd090agKEIVlJoUl52a9DsZFjaQ5HlxgfaZqr3Oi8SiGvDEUo606uNng/IMG_0254.png" width="320" height="480"/&gt;&lt;img src="http://posterous.com/getfile/files.posterous.com/sigizmund/ZKrfSDOqhF8VOi0wB3VOtyQKAgM68Ee2w7ZQfjnH8UVV1UNs99vY19eg25TX/IMG_0255.png" width="320" height="480"/&gt;&lt;a href="http://www.sigizmund.com/my-o2-iphone-app-easy-and-convenient-does-wha"&gt;See and download the full gallery on posterous&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Grab it while it’s hot! (via O2 Blog)&lt;/p&gt;      &lt;p style="font-size: 10px;"&gt;  &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;   from &lt;a href="http://www.sigizmund.com/my-o2-iphone-app-easy-and-convenient-does-wha"&gt;Roman’s posterous&lt;/a&gt; | &lt;a href="http://www.sigizmund.com/my-o2-iphone-app-easy-and-convenient-does-wha#comment"&gt;&lt;span style="font-size: 11px"&gt;Comment »&lt;/span&gt;&lt;/a&gt;  &lt;/p&gt;</description><link>http://blog.sigizmund.info/post/188531419</link><guid>http://blog.sigizmund.info/post/188531419</guid><pubDate>Tue, 15 Sep 2009 14:44:06 +0100</pubDate></item><item><title>My O2 iPhone App - easy and convenient, does what it says ((tags: geek, iphone, apple)</title><description>&lt;div&gt;So, you would really like to now, how much longer can you use your inclusive minutes and text, or want to see, when your next bill is due or how much did you pay the last time? There’s an app for that! Recently released &lt;a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=325533754&amp;mt=8"&gt;My O2&lt;/a&gt; app is a tiny brilliant - does what it says, easily and simply – no more, and no less.&lt;/div&gt;

&lt;div&gt;&lt;/div&gt;
&lt;p&gt;&lt;img src="http://posterous.com/getfile/files.posterous.com/sigizmund/qQDKDImsqzcgWKNV3hkiHDPj2Au9Gsi5ILdYWaBICD75NGIHr158WasumCZt/IMG_0250.png" width="320" height="480"/&gt;&lt;/p&gt;

&lt;div&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;Main screen simply shows you the most important information – well, for me it’s not that bad, as the last bill was just yesterday and I am unlikely to put the needle to the left-most position. But, I can easily see what I want to, and that’s pretty much enough. You can also view your last bill summary, your recent charges (I found out how much one minute costs me when I’m in Spain!) – and even view your tariff details, which is something totally amazing if you need just a quick reference, on what you’re paying. Honestly, O2 - you did a great job and my congratulations are well-deserved!&lt;/div&gt;

&lt;div&gt;&lt;/div&gt;
&lt;p&gt;&lt;img src="http://posterous.com/getfile/files.posterous.com/sigizmund/5VVlclLLsx82Mg94sADgMZ37MGTiazeyifWVgIHKEQ6aHRHgYWvVSDrawndT/IMG_0251.png" width="320" height="480"/&gt;&lt;/p&gt;

&lt;div&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;&lt;/div&gt;
&lt;p&gt;&lt;img src="http://posterous.com/getfile/files.posterous.com/sigizmund/qo5PJCbMhrDH34lh020S0xdg6GKVzlrMFEXDmnwRLgLgNEb9inTvaNCKYU1Q/IMG_0252.png" width="320" height="480"/&gt;&lt;/p&gt;

&lt;div&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;&lt;/div&gt;
&lt;p&gt;&lt;img src="http://posterous.com/getfile/files.posterous.com/sigizmund/HzBZXOgaKYubog3L23F69FKIWnhrAYYyFIAKWLwlKbFWj2U8ylLYvxDjNT77/IMG_0253.png" width="320" height="480"/&gt;&lt;/p&gt;

&lt;div&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;&lt;/div&gt;
&lt;p&gt;&lt;img src="http://posterous.com/getfile/files.posterous.com/sigizmund/4eSdtoISd3B9mycxG1yfCqfYaoGwCKFkvTIIc7x8VFmLFMMFoPyfthUztI4w/IMG_0254.png" width="320" height="480"/&gt;&lt;/p&gt;

&lt;div&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;&lt;/div&gt;
&lt;p&gt;&lt;img src="http://posterous.com/getfile/files.posterous.com/sigizmund/KStTye1Fv5fR9Ajrg8fAdbA1vY8ucEHDJE1F4jp9da6bI9Oto56WARnqFpDG/IMG_0255.png" width="320" height="480"/&gt;&lt;/p&gt;

&lt;div&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;Grab it while it’s hot! (via &lt;a href="http://dnc.o2.co.uk/home/2009/09/my-o2-iphone.html"&gt;O2 Blog&lt;/a&gt;)&lt;/div&gt;      &lt;p style="font-size: 10px;"&gt;  &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;   from &lt;a href="http://www.sigizmund.com/my-o2-iphone-app-easy-and-convenient-does-wha"&gt;Roman’s posterous&lt;/a&gt; | &lt;a href="http://www.sigizmund.com/my-o2-iphone-app-easy-and-convenient-does-wha#comment"&gt;&lt;span style="font-size: 11px"&gt;Comment »&lt;/span&gt;&lt;/a&gt;  &lt;/p&gt;</description><link>http://blog.sigizmund.info/post/188530127</link><guid>http://blog.sigizmund.info/post/188530127</guid><pubDate>Tue, 15 Sep 2009 14:41:35 +0100</pubDate></item><item><title>Me and Natalie on our friends' wedding </title><description>&lt;a href="http://posterous.com/getfile/files.posterous.com/sigizmund/s6uQ9PHz9YiltZNoxLweFZKYmeEzAJUP2FKL8cxysnVnF5jb4phGlnTiEwfi/3919729003_628d07ee76_b.jpg.scaled.1000.jpg"&gt;&lt;img src="http://posterous.com/getfile/files.posterous.com/sigizmund/FlRsLewKMFZV3f3vGJnLSZsUZRTntPwJ4p5bMQaAz6LPPacwR2RHx8lqWLgH/3919729003_628d07ee76_b.jpg.scaled.500.jpg" width="500" height="333"/&gt;&lt;/a&gt; &lt;p&gt;I bet you’re surprised I do not look as smart as the rest of the guests (and not even nearly as smart as my beautiful wife). Well, that’s because I’ve been the most miserable person there – namely photographer, and spend the whole day jumping around with the camera (with two cameras, in fact), so at 12AM when guests were enjoying the Spanish wine and truly delicious food from the hotel’s restaurant, I fought myself to not fall asleep right where I was sitting.&lt;/p&gt;      &lt;p style="font-size: 10px;"&gt;  &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;   from &lt;a href="http://www.sigizmund.com/me-and-natalie-on-our-friends-wedding"&gt;Roman’s posterous&lt;/a&gt; | &lt;a href="http://www.sigizmund.com/me-and-natalie-on-our-friends-wedding#comment"&gt;&lt;span style="font-size: 11px"&gt;Comment »&lt;/span&gt;&lt;/a&gt;  &lt;/p&gt;</description><link>http://blog.sigizmund.info/post/188419675</link><guid>http://blog.sigizmund.info/post/188419675</guid><pubDate>Tue, 15 Sep 2009 10:38:46 +0100</pubDate></item><item><title>A problem for real engineers</title><description>On the first of september 100 immortal prisoners with a life sentence are suggested an early release if they can find a solution to a problem.  There’s a room with a hanging lightbulb. Every day, starting on the 1st of September, warder will let one prisoner into this room. When prisoner is in, he can see, whether lamp is on or off, or switch it. Each prisoner will be asked a question: “Whether every prisoner has been here?”. If he says “no”, game goes one. If he says yes and this is a correct answer, everyone is released. If he says yes and he’s wrong - everyone is executed. &lt;p&gt;&lt;/p&gt; Warders can choose prisoners randomly, one prisoner can be choose as many times as warder wants. Prisoners do not see each other, cannot talk and cannot see the lightbulb; they can talk only once - on the 1st of September, before the game starts.  Find an optimal strategy, estimate, how long it may take for prisoners to be released.      &lt;p style="font-size: 10px;"&gt;  &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;   from &lt;a href="http://www.sigizmund.com/a-problem-for-real-engineers"&gt;Roman’s posterous&lt;/a&gt; | &lt;a href="http://www.sigizmund.com/a-problem-for-real-engineers#comment"&gt;&lt;span style="font-size: 11px"&gt;Comment »&lt;/span&gt;&lt;/a&gt;  &lt;/p&gt;</description><link>http://blog.sigizmund.info/post/187607105</link><guid>http://blog.sigizmund.info/post/187607105</guid><pubDate>Mon, 14 Sep 2009 11:37:06 +0100</pubDate></item><item><title>Producing Star War effects with Safari 4</title><description>Yes, it’s all for real. Look at the video.
&lt;div style="padding: 5px 5px 10px 5px; margin-top: 5px; border: 1px solid #ddd; background-color: #fff;line-height: 16px;"&gt;       &lt;div style="float: left; margin-right: 5px; overflow: visible;"&gt;&lt;a href="http://posterous.com/getfile/files.posterous.com/sigizmund/OQ5fS2USiybVsxeS7OBxNEsmMm4RZQfm3LZbJRi8KEMGTfl98U3meHiX5L28/StartWarsSafari_-_Computer.m4v" style="color: #bc7134;"&gt;&lt;img src="http://posterous.com/images/filetypes/unknown.png" style="border: none;"/&gt;&lt;/a&gt;&lt;/div&gt;       &lt;div style="font-size: 10px; color: #424037;line-height: 16px;"&gt;Download now or &lt;a href="http://www.sigizmund.com/producing-star-war-effects-with-safari-4" style="color: #bc7134;"&gt;watch on posterous&lt;/a&gt;
&lt;/div&gt;       &lt;b&gt;&lt;a href="http://posterous.com/getfile/files.posterous.com/sigizmund/OQ5fS2USiybVsxeS7OBxNEsmMm4RZQfm3LZbJRi8KEMGTfl98U3meHiX5L28/StartWarsSafari_-_Computer.m4v" style="color: #bc7134;"&gt;StartWarsSafari - Computer.m4v&lt;/a&gt;&lt;/b&gt; &lt;span style="font-size: 10px; color: #424037;"&gt;(7303 KB)&lt;/span&gt;       &lt;br style="clear: both;"/&gt;
&lt;/div&gt;      &lt;p&gt;In my Twitter (&lt;a href="http://twitter.com/sigizmund/status/3840531748)"&gt;&lt;a href="http://twitter.com/sigizmund/status/3840531748"&gt;http://twitter.com/sigizmund/status/3840531748&lt;/a&gt;)&lt;/a&gt; I’ve added a link to video-manual, how to produce this breathtaking, but utterly useless effect. &lt;br/&gt; &lt;br/&gt;R.&lt;/p&gt;      &lt;p style="font-size: 10px;"&gt;  &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;   from &lt;a href="http://www.sigizmund.com/producing-star-war-effects-with-safari-4"&gt;Roman’s posterous&lt;/a&gt; | &lt;a href="http://www.sigizmund.com/producing-star-war-effects-with-safari-4#comment"&gt;&lt;span style="font-size: 11px"&gt;Comment »&lt;/span&gt;&lt;/a&gt;  &lt;/p&gt;</description><link>http://blog.sigizmund.info/post/182841159</link><guid>http://blog.sigizmund.info/post/182841159</guid><pubDate>Tue, 08 Sep 2009 15:17:31 +0100</pubDate></item><item><title>I want my iPhone - re-think of Sinatra's hit</title><description>&lt;object height="417" width="500"&gt;&lt;param name="movie" value="http://www.youtube.com/v/vniMR6Ez9cE&amp;hl=en&amp;fs=1"&gt;
&lt;param name="wmode" value="window"&gt;
&lt;param name="allowFullScreen" value="true"&gt;
&lt;param name="allowscriptaccess" value="always"&gt;
&lt;embed src="http://www.youtube.com/v/vniMR6Ez9cE&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" height="417" wmode="window" width="500"&gt;&lt;/embed&gt;&lt;/object&gt; Really great to my opinion! Well, maybe there’s just a very little bit of pre-justice. &lt;p&gt;&lt;/p&gt; R.      &lt;p style="font-size: 10px;"&gt;  &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;   from &lt;a href="http://www.sigizmund.com/i-want-my-iphone-re-think-of-sinatras-hit"&gt;Roman’s posterous&lt;/a&gt; | &lt;a href="http://www.sigizmund.com/i-want-my-iphone-re-think-of-sinatras-hit#comment"&gt;&lt;span style="font-size: 11px"&gt;Comment »&lt;/span&gt;&lt;/a&gt;  &lt;/p&gt;</description><link>http://blog.sigizmund.info/post/181893694</link><guid>http://blog.sigizmund.info/post/181893694</guid><pubDate>Mon, 07 Sep 2009 12:01:17 +0100</pubDate></item><item><title>The Boat That Really Rocked</title><description>Richard Curtis is absolutely, unbelievably, unbearably and intolerably fantastic. It’s the best movie I’ve seen in the last few years, that’s so bad I didn’t have a chance to see it before.  Maybe it’s a first time I’m feeling slightly sorrow I’ve never been here in Britain back then in 60s to see it all alive. That really rocked.&lt;p&gt;&lt;a href="http://posterous.com/getfile/files.posterous.com/sigizmund/njHcnwepdo9H1sTsuixbx9aWLcmbpZiPO1gMuNauHliSxqFiDnaXXdx2BM2O/boat-that-rocked.jpg.scaled.1000.jpg"&gt;&lt;img src="http://posterous.com/getfile/files.posterous.com/sigizmund/yx5guY4lIhdpQR0diJnXDsCFeaMwslht4Sheohe8De9SVdZnFRi354W9sZ5M/boat-that-rocked.jpg.scaled.500.jpg" width="500" height="250"/&gt;&lt;/a&gt; &lt;/p&gt;      &lt;p style="font-size: 10px;"&gt;  &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;   from &lt;a href="http://www.sigizmund.com/the-boat-that-really-rocked"&gt;Roman’s posterous&lt;/a&gt; | &lt;a href="http://www.sigizmund.com/the-boat-that-really-rocked#comment"&gt;&lt;span style="font-size: 11px"&gt;Comment »&lt;/span&gt;&lt;/a&gt;  &lt;/p&gt;</description><link>http://blog.sigizmund.info/post/180638668</link><guid>http://blog.sigizmund.info/post/180638668</guid><pubDate>Sat, 05 Sep 2009 22:14:19 +0100</pubDate></item><item><title>New posterous address </title><description>&lt;p&gt;OK, I’ve made up my mind - an idea of photoblog didn’t work, so I’ve decided to switch my main domain - &lt;a href="http://sigizmund.com"&gt;&lt;a href="http://sigizmund.com"&gt;http://sigizmund.com&lt;/a&gt;&lt;/a&gt; - to my posterous account; it is now live and if you’re seeing this post, your address bar probably says “sigizmund.com/something”.      &lt;p style="font-size: 10px;"&gt;  &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;   from &lt;a href="http://www.sigizmund.com/new-posterous-address"&gt;Roman’s posterous&lt;/a&gt; | &lt;a href="http://www.sigizmund.com/new-posterous-address#comment"&gt;&lt;span style="font-size: 11px"&gt;Comment »&lt;/span&gt;&lt;/a&gt;  &lt;/p&gt;&lt;/p&gt;</description><link>http://blog.sigizmund.info/post/180322981</link><guid>http://blog.sigizmund.info/post/180322981</guid><pubDate>Sat, 05 Sep 2009 11:49:47 +0100</pubDate></item><item><title>WOEID Info </title><description>Something what I wanted to do for such a long time - to make publicly available service, which can answer one simple question – what does this WOEID mean? So, I’ve made it - in a way that anyone can put a link to it with a WOEID in URL. Finally, everyone who wants to find out how does that look like, shouldn’t bother getting Yahoo! AppID, read API docs and so on and so forth (I am not saying that reading docs is a bad idea – it’s actually very good and you can save a hell lot of time and nerves by doing that, but sometimes, well … we just don’t feel like it). Anyway, take a look and maybe you will find it useful. In my plans to add a geocoder to the app (so you can type not the WOEID but the human-readable name, such as “London, UK”).
&lt;div&gt;Ah. Almost forgot. You can find &lt;a href="http://sigizmund.info/woeidinfo/?woeid=22474302"&gt;WOEID Info right here&lt;/a&gt;. &lt;br/&gt;&lt;div&gt;
&lt;p&gt;&lt;/p&gt;

&lt;div&gt;
&lt;a href="http://posterous.com/getfile/files.posterous.com/sigizmund/SJ3kQVBqBs5x3LMbZ06tYFe5ZMCbB0SGlneiKk6D4kHxPhu3XzzAFS50aQG8/PastedGraphic-1.png"&gt;&lt;img src="http://posterous.com/getfile/files.posterous.com/sigizmund/uNX8IV0rJIkqAFiKg5OmqGlokqlHc8nNPYlWEUoMeFYPecL7Qisp78ExqaCL/PastedGraphic-1.png.scaled.500.jpg" width="500" height="534"/&gt;&lt;/a&gt; &lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;      &lt;p style="font-size: 10px;"&gt;  &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;   from &lt;a href="http://sigizmund.posterous.com/woeid-info"&gt;Roman’s posterous&lt;/a&gt; | &lt;a href="http://sigizmund.posterous.com/woeid-info#comment"&gt;&lt;span style="font-size: 11px"&gt;Comment »&lt;/span&gt;&lt;/a&gt;  &lt;/p&gt;</description><link>http://blog.sigizmund.info/post/179786699</link><guid>http://blog.sigizmund.info/post/179786699</guid><pubDate>Fri, 04 Sep 2009 19:29:37 +0100</pubDate></item><item><title>Stop being greedy, BOSE - part 2</title><description>Griffin’s SmartTalk works at least twice better than Bose’s £30 mobile headset cable - just because it has a button and now I enjoy same level of comfort as when using Apple’s headset - but with incomparably higher sound quality. And I paid only £13.95 shipping included for this - if it’s not a bargain, I don’t know what it is.&lt;p&gt;&lt;a href="http://posterous.com/getfile/files.posterous.com/sigizmund/fTINTxQUXrykx7lBmquFXQWoNJbSekMx6fBRUZaoQlhSJn2DRy72LkTIxeOR/photo.jpg"&gt;&lt;img src="http://posterous.com/getfile/files.posterous.com/sigizmund/PksqSjOI3R3IdirtUaoTJax8D3pZa0MVqHAOXf96KbXDyHMlilVqa7OCcR0u/photo.jpg.scaled.500.jpg" width="500" height="667"/&gt;&lt;/a&gt; &lt;/p&gt;      &lt;p style="font-size: 10px;"&gt;  &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;   from &lt;a href="http://sigizmund.posterous.com/stop-being-greedy-bose-part-2"&gt;Roman’s posterous&lt;/a&gt; | &lt;a href="http://sigizmund.posterous.com/stop-being-greedy-bose-part-2#comment"&gt;&lt;span style="font-size: 11px"&gt;Comment »&lt;/span&gt;&lt;/a&gt;  &lt;/p&gt;</description><link>http://blog.sigizmund.info/post/178197574</link><guid>http://blog.sigizmund.info/post/178197574</guid><pubDate>Wed, 02 Sep 2009 21:34:49 +0100</pubDate></item><item><title>Windows 7 impressions </title><description>OK, so I’ve installed it (in form of a free 90-day preview version distributed by Redmond guys) and it’s running in VirtualBox on my MacBook. It’s running OK, really. Certain things do really make me happy - the taskbar, which uses the screen space in more optimal way is one of them; really nice and streamlined GUI is another. Snipping Tool, a nice little utility for taking screenshots - is just what many Windows users been asking for many years, is not built-in and shipped as a part of operating system - this could be a real win, but … you see - I can make a screenshot of a part of the screen. I can draw something using pen or highlighter. What else can I need? Probably, draw an arrow and write some text - and this cannot be done. So, it’s not win, really – and it lacks only a tiny feature.  To be perfectly honest with you, it’s very unlikely that I will use it IRL any time soon – I’m poisoned, poisoned long ago by Apple venom, and there’s no known vaccine for it, but I must appreciate, what Microsoft is doing - 7 seems to work as fast as XP in virtual machine, and it is way faster than Vista - looks like a right thing to use.&lt;p&gt;&lt;a href="http://posterous.com/getfile/files.posterous.com/sigizmund/P0suGCKkU5daj4Dwuy1L77ZB0wLsxZhRQSAEsLkY557k31xdEbj9sgS7oCIl/Picture_1.png"&gt;&lt;img src="http://posterous.com/getfile/files.posterous.com/sigizmund/TYmcaXWCZ8EKKus4tn1sOrL6oWxQnxQvZiGQ2EoRtvL4y330mvgn8uNW5oZc/Picture_1.png.scaled.500.jpg" width="500" height="313"/&gt;&lt;/a&gt; &lt;a href="http://posterous.com/getfile/files.posterous.com/sigizmund/lrVFQhc7OwlGgUK6AfnjzPoGRLWryDCFQ2MkVc0uQdO8tqKqlTP3B6UeIv2X/Picture_2.png"&gt;&lt;img src="http://posterous.com/getfile/files.posterous.com/sigizmund/bnfdJNVNaCzCHFWW2coPbCcNigU0cXO6r66Hm6cbzHSXdu6r5P83crNLhqwL/Picture_2.png.scaled.500.jpg" width="500" height="375"/&gt;&lt;/a&gt; &lt;a href="http://posterous.com/getfile/files.posterous.com/sigizmund/4lMyGv4hcKLwLjGJ8jz2mIQ7oGxBkhXJR2JRrto08hUFcsWDJytlkXiDHI6O/Picture_3.png"&gt;&lt;img src="http://posterous.com/getfile/files.posterous.com/sigizmund/mmSzIC7RFL8VWcngKNZuO3in4IxldAHAYp1iHOcqhNfw7IV69GLkSBYQX2lV/Picture_3.png.scaled.500.jpg" width="500" height="376"/&gt;&lt;/a&gt; &lt;a href="http://posterous.com/getfile/files.posterous.com/sigizmund/9nNhh1KHmXcbg0nvJGiA2OzvlJaRRd44JXpRyhL8tprqoiEYbiw4fIIJq89Q/Picture_4.png"&gt;&lt;img src="http://posterous.com/getfile/files.posterous.com/sigizmund/OYpXkV8kOGBDjx6hLkY9naQWkfTrrlEc2t9Q8Kts5b4ER2lnFgoHGs0Rq6Vv/Picture_4.png.scaled.500.jpg" width="500" height="305"/&gt;&lt;/a&gt; &lt;a href="http://posterous.com/getfile/files.posterous.com/sigizmund/kcM4ntto3HgggTJpniL70nWDcmqZ3EkRHGueuCsl7qnG7fiyE9raSEwifdLR/Picture_5.png"&gt;&lt;img src="http://posterous.com/getfile/files.posterous.com/sigizmund/XYwkf7SfJl8bnvxTx8CNVSBwElLpAXw8czj8WX5rdrLaofESBDMIAjDbqnmB/Picture_5.png.scaled.500.jpg" width="500" height="265"/&gt;&lt;/a&gt; &lt;a href="http://sigizmund.posterous.com/windows-7-impressions"&gt;See and download the full gallery on posterous&lt;/a&gt;&lt;/p&gt;      &lt;p style="font-size: 10px;"&gt;  &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;   from &lt;a href="http://sigizmund.posterous.com/windows-7-impressions"&gt;Roman’s posterous&lt;/a&gt; | &lt;a href="http://sigizmund.posterous.com/windows-7-impressions#comment"&gt;&lt;span style="font-size: 11px"&gt;Comment »&lt;/span&gt;&lt;/a&gt;  &lt;/p&gt;</description><link>http://blog.sigizmund.info/post/178000023</link><guid>http://blog.sigizmund.info/post/178000023</guid><pubDate>Wed, 02 Sep 2009 16:13:23 +0100</pubDate></item><item><title>My Snow Leopard is finally here</title><description>&lt;p&gt;&lt;a href="http://posterous.com/getfile/files.posterous.com/sigizmund/SMHTY4MsOKOzzu8HjOP4yn01z4nBOrTtRxGDPvlHpmJwl0FsRMTXcea20FTj/IMG_0239.jpg"&gt;&lt;img src="http://posterous.com/getfile/files.posterous.com/sigizmund/JtrEUV3k2aCPRnDbS4GZh0lv13rGdWUdbgOmVeucLFUR7ikTADz42pe3A14C/IMG_0239.jpg.scaled.500.jpg" width="500" height="375"/&gt;&lt;/a&gt; &lt;a href="http://posterous.com/getfile/files.posterous.com/sigizmund/q4NLU04F9K3gxYezV74UQfHXam9XGVLXCocWIu5qSCaPjsrBeXFPbIUbHc0B/IMG_0241.jpg"&gt;&lt;img src="http://posterous.com/getfile/files.posterous.com/sigizmund/dbEjdhGfci1SDABiC2m16HGrDnUaW2yEs4HGHaR6d7fJCcZeFIQ5UYTAOY5h/IMG_0241.jpg.scaled.500.jpg" width="500" height="375"/&gt;&lt;/a&gt; &lt;a href="http://posterous.com/getfile/files.posterous.com/sigizmund/CN2Ieqa7JX0xUcIu89dwqKea79rC8s3pVeJUl1bxxBbeiGw7w1PBs9at9LC9/IMG_0240.jpg"&gt;&lt;img src="http://posterous.com/getfile/files.posterous.com/sigizmund/sBsrpC72kyWSHliGpaunMoAqRevEQLyHqlQGOqSvyc25lxDhJX50IZaxt2hC/IMG_0240.jpg.scaled.500.jpg" width="500" height="375"/&gt;&lt;/a&gt; &lt;a href="http://posterous.com/getfile/files.posterous.com/sigizmund/1adauTtcQFKWfIhKfgr6ATbt0zZtLj7Q2nUmGlelIxhzhOOwlTEcSQLtML4w/IMG_0242.jpg"&gt;&lt;img src="http://posterous.com/getfile/files.posterous.com/sigizmund/CzpdhaYQEnjgDTxrOHWkowOaHX7ruX1dfsViZwaj4UGcih79FrWejoPFz4gr/IMG_0242.jpg.scaled.500.jpg" width="500" height="375"/&gt;&lt;/a&gt; &lt;a href="http://sigizmund.posterous.com/my-snow-leopard-is-finally-here"&gt;See and download the full gallery on posterous&lt;/a&gt;      &lt;p style="font-size: 10px;"&gt;  &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;   from &lt;a href="http://sigizmund.posterous.com/my-snow-leopard-is-finally-here"&gt;Roman’s posterous&lt;/a&gt; | &lt;a href="http://sigizmund.posterous.com/my-snow-leopard-is-finally-here#comment"&gt;&lt;span style="font-size: 11px"&gt;Comment »&lt;/span&gt;&lt;/a&gt;  &lt;/p&gt;&lt;/p&gt;</description><link>http://blog.sigizmund.info/post/177843914</link><guid>http://blog.sigizmund.info/post/177843914</guid><pubDate>Wed, 02 Sep 2009 10:50:29 +0100</pubDate></item><item><title>PlaceMaker + Flickr + YQL = PhotoMaker</title><description>&lt;p&gt;&lt;a href="http://posterous.com/getfile/files.posterous.com/sigizmund/OWbs3I0ckuzJjBg9ry623fJjBty0QuAqUibqcmfPiNQzzU07Y7wxWusVj4L3/Picture_4.png.scaled.1000.jpg"&gt;&lt;img src="http://posterous.com/getfile/files.posterous.com/sigizmund/5lXQfPBZ2vldbJgZXJd22rPOUUmQLHOD6exLl6RmGnNtnQPVfBtweglcdwXX/Picture_4.png.scaled.500.jpg" width="500" height="446"/&gt;&lt;/a&gt; &lt;br/&gt;&lt;div&gt;&lt;div&gt;
&lt;br/&gt;Today I’ve created and published a PhotoMaker – mash-up, which geoparses articles, using Yahoo! Placemaker and finds photographs on Flickr which are relevant to found places. It uses YQL to glue them together - and initially was created as a demo of these three brilliant pieces of technology. Please take a look yourself at &lt;a href="http://sigizmund.info/PhotoMaker"&gt;sigizmund.info/PhotoMaker&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;      &lt;p style="font-size: 10px;"&gt;  &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;   from &lt;a href="http://sigizmund.posterous.com/placemaker-flickr-yql-photomaker"&gt;Roman’s posterous&lt;/a&gt; | &lt;a href="http://sigizmund.posterous.com/placemaker-flickr-yql-photomaker#comment"&gt;&lt;span style="font-size: 11px"&gt;Comment »&lt;/span&gt;&lt;/a&gt;  &lt;/p&gt;&lt;/p&gt;</description><link>http://blog.sigizmund.info/post/177169618</link><guid>http://blog.sigizmund.info/post/177169618</guid><pubDate>Tue, 01 Sep 2009 16:46:08 +0100</pubDate></item></channel></rss>
