<?xml version="1.0" encoding="utf-8" ?>

<rdf:RDF 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns="http://my.netscape.com/rdf/simple/0.9/">
<channel>
    <title>I'm Persian</title>
    <link>http://gluegadget.com/blog/</link>
    <description>My land is Iran</description>
    <dc:language>en</dc:language>

    <image rdf:resource="http://gluegadget.com/blog/templates/bulletproof/img/s9y_banner_small.png" />

    <items>
      <rdf:Seq>
        <rdf:li resource="http://gluegadget.com/blog/index.php?/archives/35-guid.html" />
        <rdf:li resource="http://gluegadget.com/blog/index.php?/archives/34-guid.html" />
        <rdf:li resource="http://gluegadget.com/blog/index.php?/archives/33-guid.html" />
        <rdf:li resource="http://gluegadget.com/blog/index.php?/archives/31-guid.html" />
        <rdf:li resource="http://gluegadget.com/blog/index.php?/archives/30-guid.html" />
        <rdf:li resource="http://gluegadget.com/blog/index.php?/archives/29-guid.html" />
        <rdf:li resource="http://gluegadget.com/blog/index.php?/archives/28-guid.html" />
        <rdf:li resource="http://gluegadget.com/blog/index.php?/archives/27-guid.html" />
        <rdf:li resource="http://gluegadget.com/blog/index.php?/archives/26-guid.html" />
        <rdf:li resource="http://gluegadget.com/blog/index.php?/archives/25-guid.html" />
        <rdf:li resource="http://gluegadget.com/blog/index.php?/archives/24-guid.html" />
        <rdf:li resource="http://gluegadget.com/blog/index.php?/archives/23-guid.html" />
        <rdf:li resource="http://gluegadget.com/blog/index.php?/archives/22-guid.html" />
        <rdf:li resource="http://gluegadget.com/blog/index.php?/archives/21-guid.html" />
        <rdf:li resource="http://gluegadget.com/blog/index.php?/archives/20-guid.html" />
      </rdf:Seq>
    </items>
</channel>

<image rdf:about="http://gluegadget.com/blog/templates/bulletproof/img/s9y_banner_small.png">
        <url>http://gluegadget.com/blog/templates/bulletproof/img/s9y_banner_small.png</url>
        <title>RSS: I'm Persian - My land is Iran</title>
        <link>http://gluegadget.com/blog/</link>
        <width>100</width>
        <height>21</height>
    </image>


<item rdf:about="http://gluegadget.com/blog/index.php?/archives/35-guid.html">
    <title>HNDroid 0.2</title>
    <link>http://gluegadget.com/blog/index.php?/archives/35-HNDroid-0.2.html</link>
    <description>
    &lt;a href=&quot;http://gluegadget.com/hndroid/&quot; title=&quot;HNDroid&quot;&gt;HNDroid&lt;/a&gt; is a &lt;a href=&quot;http://news.ycombinator.com/&quot; title=&quot;Hacker News&quot;&gt;Hacker News&lt;/a&gt; android client which I first released in September, and announced in a Tell HN &lt;a href=&quot;http://news.ycombinator.com/item?id=1708783&quot; title=&quot;Tell HN: HNdroid, Hacker News android client&quot;&gt;thread&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Well, I&#039;m not actually writing to introduce an already 2-month-old project, but to thank everyone who helped me getting HNDroid more bearable. &lt;a href=&quot;http://community.ir/~emilsedgh/blog/&quot; title=&quot;emilsedgh&#039;s blog&quot;&gt;Emil&lt;/a&gt; helped me debugging and testing it on a real device, &lt;a href=&quot;http://whalesalad.com/&quot; title=&quot;Michael Whalen&quot;&gt;Michael&lt;/a&gt; kindly offered a new logo for application, and Ben from &lt;a href=&quot;http://www.solidstategroup.com&quot; title=&quot;Solid State Group&quot;&gt;Solid State Group&lt;/a&gt; helped me putting it in Android market.&lt;br /&gt;
&lt;br /&gt;
A couple of days ago I released version 0.2 with a new light theme, bugfixes, performance improvements, and some minor new features. You can download the .apk from project&#039;s page, or download it from Market (search for hndroid). 
    </description>

    <dc:publisher>I'm Persian</dc:publisher>
    <dc:creator>nospam@example.com (Amir Mohammad Saied)</dc:creator>
    <dc:subject>
    Android, </dc:subject>
    <dc:date>2010-11-16T17:50:33Z</dc:date>
    <wfw:comment>http://gluegadget.com/blog/wfwcomment.php?cid=35</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://gluegadget.com/blog/rss.php?version=1.0&amp;type=comments&amp;cid=35</wfw:commentRss>
    
    
</item>
<item rdf:about="http://gluegadget.com/blog/index.php?/archives/34-guid.html">
    <title>Twitter, OAuth and bti</title>
    <link>http://gluegadget.com/blog/index.php?/archives/34-Twitter,-OAuth-and-bti.html</link>
    <description>
    So Twitter finally dropped Basic authentication, and now OAuth (twitter&#039;s implementation though) is the only way to authorize clients.&lt;br /&gt;
&lt;br /&gt;
I&#039;m not going to tell you how bright is the idea behind OAuth, the idea of letting an application to do things on behalf of you without letting it know your credentials, the idea of revoking the access of misbehaving application as soon as it started being fishy, the idea of letting the server to revoke the consumer&#039;s access whenever it wants, cause of course you all know these. But wasn&#039;t that application (the one service provider decided to revoke access), the one you authorized earlier on? You and hundreds of thousands of other users? Apparently it doesn&#039;t matter, after all you are not the ultimate resource owner.&lt;br /&gt;
&lt;br /&gt;
The shiny new twitter client (which you may have even paid for, and/or even better you got it from a distribution channel) stopped working? Who&#039;s to blame? Depends on whom you ask. Twitter would eventually blame developers for not being able to hide their key and secret.&lt;br /&gt;
&lt;br /&gt;
But is it really developer&#039;s underdo? OAuth specifications clearly state that the service provider shouldn&#039;t solely rely on the secret as a method to verify the consumer identity, because it&#039;s pretty damn easy to extract the key, and secret if the client is a desktop application, ergo the answer is &quot;No&quot;.&lt;br /&gt;
&lt;br /&gt;
Enough rant, time to talk about the third part of the post&#039;s title.&lt;br /&gt;
&lt;br /&gt;
&quot;&lt;a href=&quot;http://gregkh.github.com/bti/&quot;&gt;&lt;strong&gt;bti&lt;/strong&gt;&lt;/a&gt;&quot; is an open source CLI twitter/identi.ca client originally developed by the famous hacker &lt;a href=&quot;http://www.kroah.com/&quot;&gt;Greg Kroah-Hartman&lt;/a&gt; to annoy the whole world by piping the bash input as tweet/dent. I sent my first patch (readline support) in February 2009, and after that I couldn&#039;t resist sending more patches (e.g., read support) because Greg is a pleasure to work with, he accepted all my silly patches, and silently fixed all the issues with them.&lt;br /&gt;
&lt;br /&gt;
When a &lt;a href=&quot;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=588235&quot;&gt;bug&lt;/a&gt; filed at debian BTS for sending bti to grave for not having OAuth supprot, I thought it&#039;s about time to make bti OAuth aware. The obvious was to register bti, and put the consumer key, and secret in the source. Wait, what?! You Idiot! Twitter has warned that would kill all OAuth keys seen in the wild - yeah, that&#039;s what you do when you solely rely on the secret (I know, I switched off the rant earlier, but the rant was inevitable). So we decided we&#039;d better not distribute the key and secret, thus there&#039;s no key bundled with bti.&lt;br /&gt;
&lt;br /&gt;
OK, this is what you should do in order to allow bti to tweet (thanks to Greg, the Basic auth support is still there, since Identi.ca has OAuth service provider too, I was tempted to purge Basic auth&#039;s codebase entirely):&lt;br /&gt;
&lt;ul&gt;&lt;br /&gt;
&lt;li&gt;Go to &lt;a href=&quot;http://twitter.com/apps/new&quot;&gt;http://twitter.com/apps/new&lt;/a&gt; to register a new application. Set the &quot;Application type&quot; as &quot;Client&quot;, and &quot;Default Access type&quot; to &quot;Read &amp;amp; Write&quot;.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;Open bti config file (~/.bti), and put these two lines into it:&lt;br/&gt;&lt;br /&gt;
   &lt;em&gt;consumer_key=THE_CONSUMER_KEY_IN_APPLICATION_DETAILS_PAGE&lt;/em&gt;&lt;br/&gt;&lt;br /&gt;
   &lt;em&gt;consumer_secret=THE_CONSUMER_SECRET_IN_APPLICATION_DETAILS_PAGE&lt;/em&gt;&lt;br/&gt;&lt;br /&gt;
&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;Run bti, if things go well bti should print an URL, open that in your browser, and allow bti to access your account. Copy the PIN and paste it in bti prompt. Now bti should print &lt;em&gt;access_token_key&lt;/em&gt;, and &lt;em&gt;access_token_secret&lt;/em&gt;, paste those two lines in your bti config file as well.&lt;/li&gt;&lt;br /&gt;
&lt;/ul&gt;&lt;br /&gt;
That&#039;s it! 
    </description>

    <dc:publisher>I'm Persian</dc:publisher>
    <dc:creator>nospam@example.com (Amir Mohammad Saied)</dc:creator>
    <dc:subject>
    GNU/Linux, </dc:subject>
    <dc:date>2010-09-03T22:01:46Z</dc:date>
    <wfw:comment>http://gluegadget.com/blog/wfwcomment.php?cid=34</wfw:comment>
        <slash:comments>9</slash:comments>
        <wfw:commentRss>http://gluegadget.com/blog/rss.php?version=1.0&amp;type=comments&amp;cid=34</wfw:commentRss>
    
    
</item>
<item rdf:about="http://gluegadget.com/blog/index.php?/archives/33-guid.html">
    <title>mod_gearman_status</title>
    <link>http://gluegadget.com/blog/index.php?/archives/33-mod_gearman_status.html</link>
    <description>
    Apparently the only way to pull information from Gearman job server is via a text-based protocol which runs on the same port as the binary protocol. I wrote a simple mod_status-like Apache module to monitor gearmand.&lt;br /&gt;
&lt;strong&gt;WARNING: bad code ahead. I warned you!&lt;/strong&gt;&lt;br /&gt;
&lt;a href=&quot;http://github.com/amir/mod_gearman_status&quot;&gt;mod_gearman_status&lt;/a&gt; 
    </description>

    <dc:publisher>I'm Persian</dc:publisher>
    <dc:creator>nospam@example.com (Amir Mohammad Saied)</dc:creator>
    <dc:subject>
    Apache, Gearman, GNU/Linux, </dc:subject>
    <dc:date>2010-03-26T14:54:25Z</dc:date>
    <wfw:comment>http://gluegadget.com/blog/wfwcomment.php?cid=33</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://gluegadget.com/blog/rss.php?version=1.0&amp;type=comments&amp;cid=33</wfw:commentRss>
    
    
</item>
<item rdf:about="http://gluegadget.com/blog/index.php?/archives/31-guid.html">
    <title>The Web is broken for me, and it's all your fault Google!</title>
    <link>http://gluegadget.com/blog/index.php?/archives/31-The-Web-is-broken-for-me,-and-its-all-your-fault-Google!.html</link>
    <description>
    &lt;strong&gt;UPDATE:&lt;/strong&gt;&lt;em&gt; Just uploaded some &lt;a href=&quot;http://www.flickr.com/photos/amir_mohammad/sets/72157615068325063/&quot; title=&quot;Screenshots&quot;&gt;screenshots.&lt;/a&gt;&lt;/em&gt;&lt;br /&gt;
&lt;p&gt;&lt;br /&gt;
As you probably know Google started hosting popular JavaScript libraries back in months. Letting Google be your CDN is quite cool, to quote the project itself (&lt;a href=&quot;http://code.google.com/apis/ajaxlibs/&quot;&gt;http://code.google.com/apis/ajaxlibs/&lt;/a&gt;) using this service:&lt;br /&gt;
&lt;blockquote&gt;&lt;em&gt;...your application has high speed, globally available access to a growing list of the most popular, open source JavaScript libraries...&lt;/em&gt;&lt;/blockquote&gt;&lt;br /&gt;
Oh wait wait wait! Global? Then there&#039;s got to be something wrong with Google&#039;s definition of &amp;quot;global&amp;quot;. As far as I know Iran is part of the globe, and I believe you have to tell your users clearly if your mileage varies than theirs. Google has to tell web developers that by &amp;quot;globally&amp;quot; they actually mean &amp;quot;the World minus some countries&amp;quot;.&lt;br /&gt;
Here in Iran we get silly &amp;quot;HTTP Authenticate&amp;quot; popups upon each request to that service; not just clicking on &amp;quot;OK/Cancel&amp;quot; multiple times hurts - but not loading JavaScript libraries will break the web page entirely.&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;Here in Iran websites are categorised in one of these three:&lt;br /&gt;
&lt;ol&gt; &lt;br /&gt;
&lt;li&gt;Those which are censored by the government&lt;/li&gt; &lt;br /&gt;
&lt;li&gt;Those websites which will throw us &amp;quot;Forbidden&amp;quot; (a.k.a 403) while visiting from Iran, and&lt;/li&gt; &lt;br /&gt;
&lt;li&gt;Those innocent ones which don&#039;t really believe we Iranians should not use their services, but they just consume hosted files in the services like one Google offers.&lt;/li&gt; &lt;br /&gt;
&lt;/ol&gt; &lt;br /&gt;
(well there&#039;s also some rare ones which works just fine, but come on they don&#039;t deserve a separate category &lt;img src=&quot;http://gluegadget.com/blog/templates/default/img/emoticons/tongue.png&quot; alt=&quot;:-P&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;)&lt;br /&gt;
&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;So, &lt;strong&gt;please&lt;/strong&gt; stop using Google&#039;s service (the other annoying one is Google code which does not let us browse project&#039;s pages, checking out from subversion repositories ...)&lt;br /&gt;&lt;br /&gt;
I call the web &amp;quot;broken&amp;quot;, and it&#039;s all your fault Google.&lt;/p&gt; 
    </description>

    <dc:publisher>I'm Persian</dc:publisher>
    <dc:creator>nospam@example.com (Amir Mohammad Saied)</dc:creator>
    <dc:subject>
    Internet, </dc:subject>
    <dc:date>2009-03-12T09:28:47Z</dc:date>
    <wfw:comment>http://gluegadget.com/blog/wfwcomment.php?cid=31</wfw:comment>
        <slash:comments>21</slash:comments>
        <wfw:commentRss>http://gluegadget.com/blog/rss.php?version=1.0&amp;type=comments&amp;cid=31</wfw:commentRss>
    
    
</item>
<item rdf:about="http://gluegadget.com/blog/index.php?/archives/30-guid.html">
    <title>Seven Things</title>
    <link>http://gluegadget.com/blog/index.php?/archives/30-Seven-Things.html</link>
    <description>
    &lt;div align=&quot;left&quot;&gt;&lt;br /&gt;
Thanks to &lt;a href=&quot;http://saltybeagle.com/&quot; title=&quot;Brett Bieber&quot;&gt;Brett Bieber&lt;/a&gt; for tagging me in the &amp;quot;Seven things you probably don&#039;t know about me&amp;quot; meme.  Unlike the others, mine are not interesting, not at all, but here goes...&lt;br /&gt;
&lt;ol&gt; &lt;br /&gt;
&lt;li&gt;I grew up in a &lt;a href=&quot;http://en.wikipedia.org/wiki/Rafsanjan&quot; title=&quot;Rafsanjan&quot;&gt;small city&lt;/a&gt; famous for it&#039;s pistachio and rugs. I now live in a big, crowded city which suffers from severe air pollution, Tehran.&lt;/li&gt; &lt;br /&gt;
&lt;li&gt;Not too many people know this, but I play &lt;a href=&quot;http://en.wikipedia.org/wiki/Santur&quot; title=&quot;Santur&quot;&gt;Santur&lt;/a&gt;, and once was in a concert.&lt;/li&gt; &lt;br /&gt;
&lt;li&gt;My first computer was a &lt;a href=&quot;http://en.wikipedia.org/wiki/Commodore_128&quot; title=&quot;Commodore 128&quot;&gt;Commodore 128&lt;/a&gt; at the age of 6 or 7. God knows how many circles I drew.&lt;/li&gt; &lt;br /&gt;
&lt;li&gt;Never been in a party or wedding ... I&#039;m actually uneasy in crowded places.&lt;/li&gt; &lt;br /&gt;
&lt;li&gt;I don&#039;t drink alcohol... yet &lt;img src=&quot;http://gluegadget.com/blog/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;/li&gt; &lt;br /&gt;
&lt;li&gt;I&#039;m a big fan of &lt;a href=&quot;http://en.wikipedia.org/wiki/Progressive_rock&quot; title=&quot;Progressive rock&quot;&gt;Progressive rock&lt;/a&gt;... actually, I like 70&#039;s.&lt;/li&gt; &lt;br /&gt;
&lt;li&gt;I really want to get a PHP user group started here in Tehran.&lt;/li&gt; &lt;br /&gt;
&lt;/ol&gt;I can&#039;t find anyone with a blog who hasn&#039;t already been tagged for this, so I guess I&#039;m the last one &lt;img src=&quot;http://gluegadget.com/blog/templates/default/img/emoticons/tongue.png&quot; alt=&quot;:-P&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt; &lt;br /&gt;
&lt;/div&gt; 
    </description>

    <dc:publisher>I'm Persian</dc:publisher>
    <dc:creator>nospam@example.com (Amir Mohammad Saied)</dc:creator>
    <dc:subject>
    General, GNU/Linux, PHP, </dc:subject>
    <dc:date>2009-02-26T15:31:26Z</dc:date>
    <wfw:comment>http://gluegadget.com/blog/wfwcomment.php?cid=30</wfw:comment>
        <slash:comments>3</slash:comments>
        <wfw:commentRss>http://gluegadget.com/blog/rss.php?version=1.0&amp;type=comments&amp;cid=30</wfw:commentRss>
    
    
</item>
<item rdf:about="http://gluegadget.com/blog/index.php?/archives/29-guid.html">
    <title>MIT/GNU Scheme and Gentoo</title>
    <link>http://gluegadget.com/blog/index.php?/archives/29-MITGNU-Scheme-and-Gentoo.html</link>
    <description>
    It seems dev-scheme/mit-scheme package has been removed from portage, it could be because of files containing executable stacks or something.&lt;br /&gt;
If you (like me) need the &lt;a href=&quot;http://www.gnu.org/software/mit-scheme/&quot; title=&quot;MIT/GNU Scheme&quot;&gt;MIT/GNU Scheme&lt;/a&gt;, and prefer not to install packages unless there&#039;s an ebuild (thus there&#039;s emerge) somewhere, here&#039;s the &lt;a href=&quot;http://repo.or.cz/w/gentoo-lisp-overlay.git&quot;&gt;Gentoo lisp overlay&lt;/a&gt;, but to my surprise it&#039;s not listed at &lt;a href=&quot;http://overlays.gentoo.org/&quot;&gt;overlays.gentoo.org&lt;/a&gt;. This overlay contains dev-scheme/mit-scheme-c, and no, it&#039;s not binary.&lt;br /&gt;
Simply clone it (and don&#039;t forget to pull periodically), and add the directory to your PORTDIR_OVERLAY. 
    </description>

    <dc:publisher>I'm Persian</dc:publisher>
    <dc:creator>nospam@example.com (Amir Mohammad Saied)</dc:creator>
    <dc:subject>
    Gentoo, </dc:subject>
    <dc:date>2008-10-30T14:13:00Z</dc:date>
    <wfw:comment>http://gluegadget.com/blog/wfwcomment.php?cid=29</wfw:comment>
        <slash:comments>1</slash:comments>
        <wfw:commentRss>http://gluegadget.com/blog/rss.php?version=1.0&amp;type=comments&amp;cid=29</wfw:commentRss>
    
    
</item>
<item rdf:about="http://gluegadget.com/blog/index.php?/archives/28-guid.html">
    <title>The New Laptop</title>
    <link>http://gluegadget.com/blog/index.php?/archives/28-The-New-Laptop.html</link>
    <description>
    I just picked up a ThinkPad T61 (14.1&quot;, Intel(R) Core(TM)2 Duo CPU T9300 @ 2.50GHz, 2GB RAM, Quadro NVS 140M 512MB).&lt;br /&gt;
It comes with &quot;Windows Vista Home Premium Ultra blah blah&quot;, and I only booted into it once, actually the shop guy did, damn.&lt;br /&gt;
When I got back home, the first I did was downloading and burning a Gentoo minimal, and after almost three days I had a Gentoo from stage3 &quot;up &amp;amp; running&quot;.&lt;br /&gt;
After installing Xorg and nVidia drivers, it was time to choose a DE, and with no surprise I ended up with no DE, just a WM, a tiling one of course, &lt;a href=&quot;http://awesome.naquadah.org/&quot; title=&quot;awesome&quot;&gt;awesome&lt;/a&gt;.&lt;br /&gt;
Awesome 3 is about to release (and it&#039;s RCs are in portage, though hard masked), and it&#039;s configuration format is not backward compatible with awesome 2, so there was no point in starting with 2. Usually I don&#039;t install hard-masked packages, but this time I did, and actually emerged bunch of them in order to satisfy awesome&#039;s dependencies.&lt;br /&gt;
And ..., everything is compiled with native march and mtune &lt;img src=&quot;http://gluegadget.com/blog/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; 
    </description>

    <dc:publisher>I'm Persian</dc:publisher>
    <dc:creator>nospam@example.com (Amir Mohammad Saied)</dc:creator>
    <dc:subject>
    GNU/Linux, </dc:subject>
    <dc:date>2008-08-30T08:43:19Z</dc:date>
    <wfw:comment>http://gluegadget.com/blog/wfwcomment.php?cid=28</wfw:comment>
        <slash:comments>11</slash:comments>
        <wfw:commentRss>http://gluegadget.com/blog/rss.php?version=1.0&amp;type=comments&amp;cid=28</wfw:commentRss>
    
    
</item>
<item rdf:about="http://gluegadget.com/blog/index.php?/archives/27-guid.html">
    <title>PEAR bash completion</title>
    <link>http://gluegadget.com/blog/index.php?/archives/27-PEAR-bash-completion.html</link>
    <description>
    Lately I&#039;ve been playing alot with the PEAR CLI. &amp;#160;The one annoying thing I noticed the most was its lack of tab completion that I&#039;m used to from the shell. &amp;#160;It turns out that this feature is very easy to add, in the bash at least. &amp;#160;&lt;span style=&quot;text-decoration:line-through;&quot;&gt;Here&lt;/span&gt; (Update: Now it&#039;s in &lt;a href=&quot;http://svn.pear.php.net/wsvn/PEARSVN/sandbox/PEAR_BashCompletion/trunk/&quot; title=&quot;PEAR bash completion&quot;&gt;PEAR SVN repository&lt;/a&gt;) is a simple tab completion script for the bash. &amp;#160;In addition to completing the PEAR commands and their respective options, it can even autocomplete the names of installed packages and discovered PEAR channels. &amp;#160;Just source it, and enjoy &lt;img src=&quot;http://gluegadget.com/blog/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; 
    </description>

    <dc:publisher>I'm Persian</dc:publisher>
    <dc:creator>nospam@example.com (Amir Mohammad Saied)</dc:creator>
    <dc:subject>
    GNU/Linux, PEAR, PHP, </dc:subject>
    <dc:date>2008-07-25T18:36:55Z</dc:date>
    <wfw:comment>http://gluegadget.com/blog/wfwcomment.php?cid=27</wfw:comment>
        <slash:comments>6</slash:comments>
        <wfw:commentRss>http://gluegadget.com/blog/rss.php?version=1.0&amp;type=comments&amp;cid=27</wfw:commentRss>
    
    
</item>
<item rdf:about="http://gluegadget.com/blog/index.php?/archives/26-guid.html">
    <title>Book review: “Pro PHP: Patterns, Frameworks, Testing and More” by Kevin McArthur</title>
    <link>http://gluegadget.com/blog/index.php?/archives/26-Book-review-Pro-PHP-Patterns,-Frameworks,-Testing-and-More-by-Kevin-McArthur.html</link>
    <description>
    As the title suggests this book is about advanced PHP related topics, being divided into 5 parts and 21 chapters. The title enunciates the book will cover many different aspects, but you&#039;ll get disappointed as soon as you perceive it&#039;s only about 300 pages.&lt;br /&gt;
&lt;br /&gt;
First part starts with &quot;OOP and Patterns&quot; and will end up with PHP 6&#039;s new features. The Patterns chapter is the first one which disappoints you - you&#039;ll wish it was a little more verbose, covering some more patterns and being more than only 7 pages.&lt;br /&gt;
&lt;br /&gt;
The next Part is about &quot;Testing and Documentation&quot;, covering PHPDoc and DocBook in it&#039;s first chapter. In the next one about &quot;Reflection API&quot; - which I think is one of the best chapters - Kevin goes deep into two complete real world examples. But unfortunately then book disappoints you again, trying to cover some topics like &quot;Development Environment&quot;, &quot;Unit Testing&quot;, &quot;Deployment&quot; and &quot;Continuous Integration&quot; in just about 20 pages. Kevin just skims through introductory concepts of tools like Subversion, PHPUnit, Phing, Xinc and Xdebug.&lt;br /&gt;
&lt;br /&gt;
The third part is all devoted to SPL. Kevin describes SPL from fundamentals to some advanced topics like &quot;Array Overloading&quot; and &quot;Observer Pattern&quot; in a way you wished that all of the book was written this way.&lt;br /&gt;
&lt;br /&gt;
Part 4 covers another Pattern, MVC this time. Describing what it is, why it&#039;s good, and talking about criteria you may consider when choosing an MVC framework. Then it helps you to roll your own MVC framework by recommending to choose from one of the publicly available frameworks. The book also covers Zend Framework as one of those &quot;publicly available frameworks&quot; which meets the most criteria in his opinion.&lt;br /&gt;
&lt;br /&gt;
And the final Part, and with no surprise it&#039;s titled &quot;Web 2.0&quot;. In my opinion the first chapter of this part is the book&#039;s truly weakest chapter, it&#039;s about Ajax and JSON and it barely covers anything more than what you&#039;ll find in any of the beginner Ajax tutorials. But the rest chapters compensates, &quot;Web Services&quot; and &quot;Certificate Authentication&quot;.&lt;br /&gt;
&lt;br /&gt;
All in all I found the book a good one, a good next step if you are already familiar with PHP and looking for a book to extend your knowledge, then this one is a recommended one. But I by one would like to see some practical solutions applied to enterprise level when buying a book titled Pro. 
    </description>

    <dc:publisher>I'm Persian</dc:publisher>
    <dc:creator>nospam@example.com (Amir Mohammad Saied)</dc:creator>
    <dc:subject>
    PHP, </dc:subject>
    <dc:date>2008-05-20T10:12:06Z</dc:date>
    <wfw:comment>http://gluegadget.com/blog/wfwcomment.php?cid=26</wfw:comment>
        <slash:comments>4</slash:comments>
        <wfw:commentRss>http://gluegadget.com/blog/rss.php?version=1.0&amp;type=comments&amp;cid=26</wfw:commentRss>
    
    
</item>
<item rdf:about="http://gluegadget.com/blog/index.php?/archives/25-guid.html">
    <title>Calling protected SOAP from Mozilla</title>
    <link>http://gluegadget.com/blog/index.php?/archives/25-Calling-protected-SOAP-from-Mozilla.html</link>
    <description>
    &lt;div align=&quot;left&quot; dir=&quot;ltr&quot;&gt;&lt;br /&gt;
Recently I had to write a Firefox extension for a &lt;a href=&quot;http://www.hostiran.net/&quot;&gt;company&lt;/a&gt; which provides &lt;a href=&quot;http://sms.hostiran.net/webservice/&quot;&gt;text messaging web services&lt;/a&gt;. The Web-Service is an RPC-Style SOAP one which is written by &lt;a href=&quot;http://blog.phpmystery.com/&quot;&gt;&quot;Nima Shayafar&quot;&lt;/a&gt;.&lt;br /&gt;
When I got this offer, I didn&#039;t think that this one would cause any troubles, as Mozilla has a SOAP implementation landed in it&#039;s platform since years (&lt;strike&gt;And if you ask me, I&#039;ll tell you no one, never touched it again to improve it -even a little bit&lt;/strike&gt; &lt;strong&gt;UPDATE:&lt;/strong&gt;&lt;em&gt;They finally touched it, and they completely removed it from Mozilla 1.9!&lt;/em&gt;&lt;img src=&quot;http://gluegadget.com/blog/templates/default/img/emoticons/tongue.png&quot; alt=&quot;:-P&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;).&lt;br /&gt;
This Web-Service is protected by basic HTTP Authentication, nothing tricky so far, but to my surprise Mozilla&#039;s SOAP implementation doesn&#039;t provide any mean to do authentication against an endpoint, and nah, not even a basic one.&lt;br /&gt;
Well I thought as this (writing Firefox extensions for protected SOAP Web Services) is not that uncommon situation I may get a good amount of information by Googling, but nothing catchy comes there in results except a thread at &lt;a href=&quot;http://groups.google.com/group/netscape.public.mozilla.xml/browse_thread/thread/b46993fbc34afee9/0aee2d3d620ff42e&quot;&gt;netscape.public.mozilla.xml&lt;/a&gt; where I found two solutions, one was submitting username/password pair together with URL, and the other one was to make an XHR connection to the endpoint (XMLHttpRequest implementation let you provide login/password for a basic authentication), and as Mozilla remembers that for the browser session, you&#039;re there.&lt;br /&gt;
The first solution is hmm ... horrible! And the second one, I didn&#039;t manage to get it to work.&lt;br /&gt;
So I started wondering in other possible ways to overcome this, and guess what? It was damn easy!&lt;br /&gt;
You just need to set Authorization header in HTTP request (which is base64 encoded of login:password), but just for that particular endpoint, and how?&lt;br /&gt;
You need to use nsIHttpChannel in conjugation with nsIObserverService, register it right before invoking the SOAPCall, and (don&#039;t forget to!) unregister it when the call is done, that&#039;s it.&lt;br /&gt;
Well, it took me an hour to come up with this, and I&#039;m writing it in hopes save someone else &quot;one hour&quot;.&lt;br /&gt;
&lt;/div&gt; 
    </description>

    <dc:publisher>I'm Persian</dc:publisher>
    <dc:creator>nospam@example.com (Amir Mohammad Saied)</dc:creator>
    <dc:subject>
    Mozilla, SOAP, Web Services, </dc:subject>
    <dc:date>2007-12-14T07:16:00Z</dc:date>
    <wfw:comment>http://gluegadget.com/blog/wfwcomment.php?cid=25</wfw:comment>
        <slash:comments>12</slash:comments>
        <wfw:commentRss>http://gluegadget.com/blog/rss.php?version=1.0&amp;type=comments&amp;cid=25</wfw:commentRss>
    
    
</item>
<item rdf:about="http://gluegadget.com/blog/index.php?/archives/24-guid.html">
    <title>Ohloh API</title>
    <link>http://gluegadget.com/blog/index.php?/archives/24-Ohloh-API.html</link>
    <description>
    &lt;div align=&quot;left&quot; dir=&quot;ltr&quot;&gt;&lt;br /&gt;
It&#039;s a while since I started using &lt;a href=&quot;http://www.ohloh.net/api&quot;&gt;Ohloh API&lt;/a&gt; for the &lt;a href=&quot;http://www.facebook.com/apps/application.php?id=5754608444&quot;&gt;facebook app&lt;/a&gt; I mentioned in earlier post.&lt;br /&gt;
It&#039;s a REST-based one with well structured URIs, the only thing that could be implemented better (from the definitions perspective), is the way Ohloh let you know what happened to your request, the response status.&lt;br /&gt;
It&#039;s now represented in entity-body (&amp;lt;response&amp;gt;&amp;lt;status&amp;gt;....&amp;lt;/status&amp;gt;...&amp;lt;/response&amp;gt;), but IMO using ``HTTP Response Code&#039;&#039; would be a better choice when you&#039;re talking about a RESTful web service, data transmitting over HTTP without an additional messaging layer.&lt;br /&gt;
&lt;/div&gt; 
    </description>

    <dc:publisher>I'm Persian</dc:publisher>
    <dc:creator>nospam@example.com (Amir Mohammad Saied)</dc:creator>
    <dc:subject>
    REST, Web Services, </dc:subject>
    <dc:date>2007-11-24T08:16:04Z</dc:date>
    <wfw:comment>http://gluegadget.com/blog/wfwcomment.php?cid=24</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://gluegadget.com/blog/rss.php?version=1.0&amp;type=comments&amp;cid=24</wfw:commentRss>
    
    
</item>
<item rdf:about="http://gluegadget.com/blog/index.php?/archives/23-guid.html">
    <title>Rock Your Hackers - facebook way</title>
    <link>http://gluegadget.com/blog/index.php?/archives/23-Rock-Your-Hackers-facebook-way.html</link>
    <description>
    &lt;div align=&quot;left&quot; dir=&quot;ltr&quot;&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.facebook.com/apps/application.php?id=5754608444&quot;&gt;Rock Your Hackers&lt;/a&gt; allows you to praise, promote, and in no uncertain terms shout for joy about your favorite free and open source software projects (FOSS) and then share your &quot;Hack List&quot; with your friends (and perhaps fellow hackers)!  Wave the banners of your favorite FOSS projects for all your &quot;faceworld&quot; to see.&lt;br /&gt;
 &lt;br /&gt;
Here’s how you get started:&lt;br /&gt;
1) Add the application&lt;br /&gt;
2) Browse for cool FOSS projects (PHP, PEAR, Jaws ...)&lt;br /&gt;
3) Add them to your favorites&lt;br /&gt;
4) Share your favorites with your friends!&lt;br /&gt;
&lt;br/&gt;&lt;div align=&quot;center&quot;&gt;&lt;a href =&quot;http://www.ohloh.net&quot;&gt;&lt;img src=&quot;http://www.ohloh.net/images/badges/mini.gif&quot; width=&quot;80&quot; height=&quot;15&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt; 
    </description>

    <dc:publisher>I'm Persian</dc:publisher>
    <dc:creator>nospam@example.com (Amir Mohammad Saied)</dc:creator>
    <dc:subject>
    Facebook, PHP, </dc:subject>
    <dc:date>2007-10-27T01:54:18Z</dc:date>
    <wfw:comment>http://gluegadget.com/blog/wfwcomment.php?cid=23</wfw:comment>
        <slash:comments>2</slash:comments>
        <wfw:commentRss>http://gluegadget.com/blog/rss.php?version=1.0&amp;type=comments&amp;cid=23</wfw:commentRss>
    
    
</item>
<item rdf:about="http://gluegadget.com/blog/index.php?/archives/22-guid.html">
    <title>People in the Browser</title>
    <link>http://gluegadget.com/blog/index.php?/archives/22-People-in-the-Browser.html</link>
    <description>
    &lt;div align=&quot;left&quot; dir=&quot;ltr&quot;&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.flock.com&quot; title=&quot;Flock&quot;&gt;Flock&lt;/a&gt;, the so called &quot;Social Web Browser&quot; has just released the third RC of it&#039;s upcoming 1.0 (codenamed falcon), though it&#039;s the first public release but is still in private beta.&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;First of all I&#039;ve to admit, and let you know that I&#039;m nothing near a review guy, so take this advice, and stop reading here if you&#039;re going to use this post as a motivate to start Flocking!&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
Well, I&#039;m a long-time-but-not-frequent Flock user, actually Flock is the one (browser) which I put behind the proxy to make web surfing a bit more bearable (there&#039;re lots of websites which are not accessible here in Iran because of some governments policies, and yes, I won&#039;t write that damn word!), at the first I didn&#039;t use it&#039;s unique features, just simply as a web browser, as a polished Firefox maybe.&lt;br /&gt;
But after a while I told myself let&#039;s see how &lt;a href=&quot;http://www.flickr.com&quot; title=&quot;Flickr&quot;&gt;Flickr&lt;/a&gt; works from within the Flock, and it was great! But doing so for the rest of available integrations didn&#039;t go that smoothly, I never managed to make it&#039;s Blogging feature to work with my &lt;a href=&quot;http://www.s9y.org&quot; title=&quot;s9y&quot;&gt;s9y&lt;/a&gt;, neither the &lt;a href=&quot;http://www.youtube.com&quot; title=&quot;YouTube&quot;&gt;YouTube&lt;/a&gt; experience was great (actually it couldn&#039;t be even if wanted to, &#039;cause I was behind proxy, using a 128Kbps capped connection).&lt;br /&gt;
But today, right after receiving an email from Flock guys indicating that the 1.0 beta is ready, I went and downloaded it, and as far as I can tell you, and experienced so far, it&#039;s awesome, it&#039;s now truly &quot;People in the Browser&quot;, if you want to see them (People), simply launch the &quot;People&quot; sidebar, you&#039;ll like it.&lt;br /&gt;
The catchy feature was &lt;a href=&quot;http://www.facebook.com&quot; title=&quot;facebook&quot;&gt;facebook&lt;/a&gt; integration, the &lt;a href=&quot;http://www.twitter.com&quot; title=&quot;twitter&quot;&gt;twitter&lt;/a&gt; experience was smooth and the Flickr one has just got better.&lt;br /&gt;
Actually Flock is where  the other browsers are trying to reach using extensions/add-ons. Flock is doing great around it&#039;s centric goal, the People, their interactions, media-sharing, communications and the rest, I think if there&#039;s a popular&#039;n&#039;cool web-service somewhere, there would be a Flock guy trying to land it into the Flock.&lt;br /&gt;
As you may already heard, Mozilla guys has launched a new project called &lt;a href=&quot;http://wiki.mozilla.org/WebRunner&quot; title=&quot;WebRunner&quot;&gt;WebRunner&lt;/a&gt;, a &lt;a href=&quot;http://developer.mozilla.org/en/docs/XULRunner&quot; title=&quot;XULRunner&quot;&gt;XULRunner&lt;/a&gt; based browser, based on a concept called Site Specific Browsers (SSB). What Flock is doing is not completely SSB (at least when you compare it with the definition over there at Mozilla wiki), but the point is something else.&lt;br /&gt;
All of us had experienced a revolution (an evolution to be precise) in web applications in recent months, all those cool and fancy graphics, big bold fonts, nice effects, to-be-desktopish efforts and the rest, but it was just on the web applications side, and nothing on their hosts (aka Web Browsers).&lt;br /&gt;
Actually the web browsers was ruining all the fun (e.g., with reaching 99% CPU usage and crashing) because simply they weren&#039;t ready.&lt;br /&gt;
But now seems web browsers has realized that they are steps behind their guests, they are trying to adopt their selves, and bringing us an even better web-surfing experience.&lt;br /&gt;
&lt;/div&gt; 
    </description>

    <dc:publisher>I'm Persian</dc:publisher>
    <dc:creator>nospam@example.com (Amir Mohammad Saied)</dc:creator>
    <dc:subject>
    Flock, Web, </dc:subject>
    <dc:date>2007-10-19T11:06:00Z</dc:date>
    <wfw:comment>http://gluegadget.com/blog/wfwcomment.php?cid=22</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://gluegadget.com/blog/rss.php?version=1.0&amp;type=comments&amp;cid=22</wfw:commentRss>
    
    
</item>
<item rdf:about="http://gluegadget.com/blog/index.php?/archives/21-guid.html">
    <title>Wearing the Inside Out(?)</title>
    <link>http://gluegadget.com/blog/index.php?/archives/21-Wearing-the-Inside-Out.html</link>
    <description>
    &lt;div dir=&quot;ltr&quot; align=&quot;left&quot;&gt;&lt;br /&gt;
I had always an excuse for not playing with Emacs, and it was that I don&#039;t have 24 fingers in my hands, and even if I had, I do promise that those crappy keyboards would break my wrist.&lt;br /&gt;
&lt;br /&gt;
Last week, I bought a new keyboard, a &lt;a href=&quot;http://www.amazon.com/Logitech-967415-0403-Media-Keyboard/dp/B0002F8WKS&quot;&gt;Logitech Media Keyboard Elite&lt;/a&gt;.&lt;br /&gt;
I must admit that this is the best keyboard that I have ever had, though it has a bunch of useless so called &quot;Multimedia keys&quot;.&lt;br /&gt;
Well, right after plugging it in and starting my box, &lt;em&gt;I decided to ...&lt;/em&gt;&lt;br /&gt;
Yess, and finally I migrated from my beloved Vim to Emacs, I&#039;m not sure if I&#039;ll stay with Emacs forever but at least I&#039;m withe her for one month.&lt;br /&gt;
After writing a cheat sheet and stick it on my monitor pane and learning the basic skills, it was time to port my own Vim plugins to Emacs, If you&#039;re a frequent reader of my blog, you probably know I wrote &lt;a href=&quot;http://gluegadget.com/blog/index.php?/archives/13-An-Audacious-plugin-for-Vim.html&quot;&gt;an Audacious plugin for Vim&lt;/a&gt; couple of months ago which let me control the Audacious from right within Vim, but now (after a week hanging around in emacs) I really feel that it&#039;s missing, and the lack of that code-snippet became an excuse for me to start learning elisp!&lt;br /&gt;
Lisp seems hilarious at the first glimpse, it will put you alone with &lt;strong&gt;L&lt;/strong&gt;ots of &lt;strong&gt;I&lt;/strong&gt;nsignificant &lt;strong&gt;S&lt;/strong&gt;illy &lt;strong&gt;P&lt;/strong&gt;arentheses. But when you got familiar with its syntax and the flow, you&#039;ll like it, believe me.&lt;br /&gt;
&lt;br /&gt;
And here you are, &lt;a href=&quot;http://www.emacswiki.org/cgi-bin/wiki/audel.el&quot;&gt;an Audacious .el&lt;/a&gt;.&lt;br /&gt;
&lt;/div&gt;  
    </description>

    <dc:publisher>I'm Persian</dc:publisher>
    <dc:creator>nospam@example.com (Amir Mohammad Saied)</dc:creator>
    <dc:subject>
    Audacious, Emacs, GNU/Linux, </dc:subject>
    <dc:date>2007-06-04T20:27:47Z</dc:date>
    <wfw:comment>http://gluegadget.com/blog/wfwcomment.php?cid=21</wfw:comment>
        <slash:comments>4</slash:comments>
        <wfw:commentRss>http://gluegadget.com/blog/rss.php?version=1.0&amp;type=comments&amp;cid=21</wfw:commentRss>
    
    
</item>
<item rdf:about="http://gluegadget.com/blog/index.php?/archives/20-guid.html">
    <title>A Vimmiish client for Twitter</title>
    <link>http://gluegadget.com/blog/index.php?/archives/20-A-Vimmiish-client-for-Twitter.html</link>
    <description>
    &lt;div align=&quot;left&quot; dir=&quot;ltr&quot;&gt;&lt;br /&gt;
Welcome to the crazy world of you&#039;ve-to-do-everything-from-right-within-your-vim!&lt;br /&gt;
&lt;br /&gt;
I&#039;ve written a simple &lt;a href=&quot;http://www.vim.org/&quot;&gt;Vim&lt;/a&gt; &lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=1853&quot;&gt;script&lt;/a&gt; for &lt;a href=&quot;http://twitter.com/&quot;&gt;Twitter&lt;/a&gt;, you can update your status and track public or your friends time line with this script.&lt;br /&gt;
&lt;br /&gt;
NOTE: It requires your Vim to be compiled with Python bindings (which is; in most distributions by default)&lt;br /&gt;
&lt;/div&gt; 
    </description>

    <dc:publisher>I'm Persian</dc:publisher>
    <dc:creator>nospam@example.com (Amir Mohammad Saied)</dc:creator>
    <dc:subject>
    Vim, </dc:subject>
    <dc:date>2007-04-05T15:09:59Z</dc:date>
    <wfw:comment>http://gluegadget.com/blog/wfwcomment.php?cid=20</wfw:comment>
        <slash:comments>4</slash:comments>
        <wfw:commentRss>http://gluegadget.com/blog/rss.php?version=1.0&amp;type=comments&amp;cid=20</wfw:commentRss>
    
    
</item>

</rdf:RDF>
