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

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   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:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    <title>Exile From the Herd - Hacking tech</title>
    <link>http://www.privateworld.com/</link>
    <description>Better Living through Private World Domination</description>
    <dc:language>en</dc:language>
    <generator>Serendipity 1.0-beta3 - http://www.s9y.org/</generator>
    <pubDate>Tue, 11 Sep 2007 01:08:06 GMT</pubDate>

    <image>
        <url>http://www.privateworld.com/templates/default/img/s9y_banner_small.png</url>
        <title>RSS: Exile From the Herd - Hacking tech - Better Living through Private World Domination</title>
        <link>http://www.privateworld.com/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>iPhone unlocked on the Fido network using Turbo Sim card </title>
    <link>http://www.privateworld.com/archives/113-iPhone-unlocked-on-the-Fido-network-using-Turbo-Sim-card.html</link>
            <category>Hacking tech</category>
    
    <comments>http://www.privateworld.com/archives/113-iPhone-unlocked-on-the-Fido-network-using-Turbo-Sim-card.html#comments</comments>
    <wfw:comment>http://www.privateworld.com/wfwcomment.php?cid=113</wfw:comment>

    <slash:comments>4</slash:comments>
    <wfw:commentRss>http://www.privateworld.com/rss.php?version=2.0&amp;type=comments&amp;cid=113</wfw:commentRss>
    

    <author>nospam@example.com (Mark Jeftovic)</author>
    <content:encoded>
    I bought a &lt;a href=&quot;http://www.bladox.com&quot;&gt;turbo Sim card&lt;/a&gt; on the aftermarket (at a pretty inflated price), from &lt;a href=&quot;http://www.pdaplaza.ca&quot;&gt;PDAPlaza&lt;/a&gt;, it arrived pretty quickly.&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.privateworld.com/images/FidoIphone.jpg&quot; align=left width=263 height=300 border=5&gt;&lt;br /&gt;
&lt;br /&gt;
I was going to wait for a software unlock but I broke down before the weekend and grabbed a couple turbo SIMs.&lt;br /&gt;
&lt;br /&gt;
There are a lot of docs out there on what to do, I thought I&#039;d post a quick summary of what you need to do to get iphone unlocked on a Canadian network like Fido or Rogers (I guess the point is this works on pretty well any GSM network) &lt;br /&gt;&lt;a href=&quot;http://www.privateworld.com/archives/113-iPhone-unlocked-on-the-Fido-network-using-Turbo-Sim-card.html#extended&quot;&gt;Continue reading &quot;iPhone unlocked on the Fido network using Turbo Sim card &quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Tue, 04 Sep 2007 23:40:06 -0400</pubDate>
    <guid isPermaLink="false">http://www.privateworld.com/archives/113-guid.html</guid>
    
</item>
<item>
    <title>easySPF: an ajax enabled SPF wizard</title>
    <link>http://www.privateworld.com/archives/112-easySPF-an-ajax-enabled-SPF-wizard.html</link>
            <category>Hacking tech</category>
    
    <comments>http://www.privateworld.com/archives/112-easySPF-an-ajax-enabled-SPF-wizard.html#comments</comments>
    <wfw:comment>http://www.privateworld.com/wfwcomment.php?cid=112</wfw:comment>

    <slash:comments>3</slash:comments>
    <wfw:commentRss>http://www.privateworld.com/rss.php?version=2.0&amp;type=comments&amp;cid=112</wfw:commentRss>
    

    <author>nospam@example.com (Mark Jeftovic)</author>
    <content:encoded>
    Creating &lt;a href=&quot;http://openspf.org&quot;&gt;Sender Policy Framework (SPF) data&lt;/a&gt; is a task that naturally lends itself to ajax. As you tweak the parameters of your policies, the spf record changes on the fly. This was a good opportunity for me to &lt;a href=&quot;http://jquery.com&quot;&gt;learn jquery&lt;/a&gt; and I was pretty impressed with how fast jquery enabled me to get a basic framework up and running.&lt;br /&gt;
&lt;br /&gt;
What took me the longest was figuring out how to get the contents of my form processing via an external php script before being rendered into my inline &amp;lt;div&amp;gt;, after awhile I gave up and asked one of my programmers. Turns out it&#039;s the &lt;b&gt;load()&lt;/b&gt; event handler, but the jquery page doesn&#039;t really make it evident in the documentation that what I want to do is this:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
 $(&quot;#my_div_id&quot;).load(&quot;some_script.php&quot;, { myvar: myvar } );&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Then I can access the myvar and anything else passed in the parameter list via the php &lt;b&gt;$_REQUEST&lt;/b&gt; structure.&lt;br /&gt;
&lt;br /&gt;
Anyhoo, the result is &lt;a href=&quot;http://www.spfwizard.com&quot;&gt;easySPF: an ajax enabled SPF wizard.&lt;/a&gt; 
    </content:encoded>

    <pubDate>Tue, 21 Aug 2007 20:13:39 -0400</pubDate>
    <guid isPermaLink="false">http://www.privateworld.com/archives/112-guid.html</guid>
    
</item>
<item>
    <title>Migrating your feed subscribers to Feedburner</title>
    <link>http://www.privateworld.com/archives/89-Migrating-your-feed-subscribers-to-Feedburner.html</link>
            <category>Hacking tech</category>
    
    <comments>http://www.privateworld.com/archives/89-Migrating-your-feed-subscribers-to-Feedburner.html#comments</comments>
    <wfw:comment>http://www.privateworld.com/wfwcomment.php?cid=89</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.privateworld.com/rss.php?version=2.0&amp;type=comments&amp;cid=89</wfw:commentRss>
    

    <author>nospam@example.com (Mark Jeftovic)</author>
    <content:encoded>
    I spent a few hours friday working on a blog widget that would parse the number of subscribers out of the HTTP_USER_AGENT strings of the various feedreaders so I could easily see the aggregate number of subscribers I have. It only took me a few hours to realize that what I was trying to do, wasn&#039;t gonna work.&lt;br /&gt;
&lt;br /&gt;
My plan to use remote javascript may have worked fine for human readers to the main index, a la &lt;a href=&quot;http://www.mybloglog.com&quot;&gt;MyBlogLog&lt;/a&gt; (which I use), but of course, duh, the feedreaders won&#039;t load the main index and they likely won&#039;t interpolate the javascript. I doubted an iframe would work either.&lt;br /&gt;
So my idea for a widget wasn&#039;t going to fly, I realized the only way to do this was to actually run the entire feed URL through the counter system, the way &lt;a href=&quot;http://www.feedburner.com&quot;&gt;FeedBurner&lt;/a&gt; does it. It was only a coincidence that this happened on the same day &lt;a href=&quot;http://blogs.feedburner.com/feedburner/archives/2007/06/feedburner_google.php&quot;&gt;Google bought FeedBurner&lt;/a&gt; for 100 Million.&lt;br /&gt;
&lt;br /&gt;
So the blog widget is a non-starter, I still want to easily know my aggregate subscribers but now I don&#039;t want to start counting from zero, I want to be able to factor in my existing readers.&lt;br /&gt;
&lt;br /&gt;
My existing readers subscribe to my feed via http://mark.jeftovic.net/feeds/index.rss2, which is the same URL feedburner will use to load the feed. So simply redirecting my existing feed URL to &lt;a href=&quot;http://feeds.feedburner.com/jeftovic/JVMu&quot;&gt;my new Feedburner feed&lt;/a&gt; would create an infinite loop when FeedBurner tries to load the old feed.&lt;br /&gt;
&lt;br /&gt;
We need to always redirect the old feed URL to the new feed URL &lt;i&gt;except&lt;/i&gt; when the remote client is Feedburner. &lt;br /&gt;
&lt;br /&gt;
My blog platform is &lt;a href=&quot;http://www.s9y.org/&quot;&gt;serendipity&lt;/a&gt;, and it implements all the RSS and XML urls by a URL rewrite to &lt;b&gt;rss.php&lt;/b&gt;, so at the very top of that file, we just add this:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
if(!eregi(&quot;^FeedBurner&quot;,$_SERVER[&#039;HTTP_USER_AGENT&#039;])) {&lt;br /&gt;
        Header(&quot;Location: http://feeds.feedburner.com/jeftovic/JVMu&quot;);&lt;br /&gt;
        exit;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
This should allow Feedburner to load the RSS from the blog, and redirect all the other feedreaders to Feedburner. Hopefully I haven&#039;t overlooked anything. This is somewhat of a test post and if all goes well, it should show up in my &lt;a href=&quot;http://www.bloglines.com&quot;&gt;Bloglines&lt;/a&gt; reader transparently.&lt;br /&gt;
&lt;br /&gt;
To migrate to FeedBurner from other blog platforms including Wordpress and Drupal, there is &lt;a href=&quot;http://forums.feedburner.com/viewtopic.php?t=17&quot;&gt;this thread&lt;/a&gt; on the FeedBurner forums. 
    </content:encoded>

    <pubDate>Mon, 04 Jun 2007 22:33:07 -0400</pubDate>
    <guid isPermaLink="false">http://www.privateworld.com/archives/89-guid.html</guid>
    
</item>
<item>
    <title>Useless mash-up between pdns pipe backend and md5</title>
    <link>http://www.privateworld.com/archives/1-Useless-mash-up-between-pdns-pipe-backend-and-md5.html</link>
            <category>Hacking tech</category>
    
    <comments>http://www.privateworld.com/archives/1-Useless-mash-up-between-pdns-pipe-backend-and-md5.html#comments</comments>
    <wfw:comment>http://www.privateworld.com/wfwcomment.php?cid=1</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.privateworld.com/rss.php?version=2.0&amp;type=comments&amp;cid=1</wfw:commentRss>
    

    <author>nospam@example.com (Mark Jeftovic)</author>
    <content:encoded>
    I&#039;ve had the idea to do some tinkering with &lt;a href=&quot;http://www.powerdns.com&quot;&gt;powerdns&#039; pipe backend&lt;/a&gt; for awhile and had decided to rig up a quick and dirty MD5 encoder/decoder database on a domain I&#039;ve had for awhile &lt;a href=&quot;http://www.md5.org&quot;&gt;MD5.ORG&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
So it was pretty easy. Now anybody can quickly get an MD5 hash on any string that&#039;ll fit inside a DNS query packet by doing something like:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;br /&gt;
host -t txt &amp;lt;string&amp;gt;.to.md5.org&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
or the slightly less readable&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;br /&gt;
dig -t txt &amp;lt;string&amp;gt;.to.md5.org&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
Then for completeness you can try and see if we already know what string creates a given MD5 hash and retrieve it using&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;br /&gt;
host -t txt &amp;lt;md5hash&amp;gt;.from.md5.org&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
There is not a lot of practical value to this, it was just a neat hack to learn the basics of the pdns pipe backend, which I like a lot. 
    </content:encoded>

    <pubDate>Sat, 20 May 2006 16:20:33 -0400</pubDate>
    <guid isPermaLink="false">http://www.privateworld.com/archives/1-guid.html</guid>
    
</item>
<item>
    <title>Ebay's  move to free and grokking PHP's Services_Ebay</title>
    <link>http://www.privateworld.com/archives/7-Ebays-move-to-free-and-grokking-PHPs-Services_Ebay.html</link>
            <category>Hacking tech</category>
    
    <comments>http://www.privateworld.com/archives/7-Ebays-move-to-free-and-grokking-PHPs-Services_Ebay.html#comments</comments>
    <wfw:comment>http://www.privateworld.com/wfwcomment.php?cid=7</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.privateworld.com/rss.php?version=2.0&amp;type=comments&amp;cid=7</wfw:commentRss>
    

    <author>nospam@example.com (Mark Jeftovic)</author>
    <content:encoded>
    Ebay made a very smart move recently and &lt;a href=&quot;http://www.internetnews.com/dev-news/article.php/3563941&quot;&gt;removed most of the costs associated with their developer platform&lt;/a&gt;. I think this will bring a lot of innovative new services to the market as the barrier to entry is now largely technical and not financial. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
One of the reasons Amazon&#039;s AWS and affiliate program  is so ubiquitous across the net is largely due to two things: 1) the depth and stickiness of the Amazon site and 2) the free access to their affiliate and AWS services.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
Ebay has one of the few sites whose depth and prevalence approaches that of Amazon, although a back-of-the-napkin  comparison shows Amazon dwarfs Ebay in backlinks by about 28 million to 6 million.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
I started playing with PHP&#039;s pear class &lt;a href=&quot;http://pear.php.net/manual/en/package.webservices.services-ebay.php&quot;&gt;Services_Ebay&lt;/a&gt; and after some struggling, I finally have a handle on it and thought I&#039;d post some of the &quot;aha&quot; links which helped get me there.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.onlamp.com/pub/a/php/2005/01/27/ebay_webservices.html?page=1&quot;&gt;Programming eBay Web Services with PHP 5 and Services_Ebay&lt;/a&gt; covers getting up and running. Here are a couple of handy calls to know:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;br /&gt;
$session = Services_Ebay::getSession($devId, $appId, $certId);&lt;br /&gt;&lt;br /&gt;
$session-&gt;setToken($token);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
$call = Services_Ebay::loadAPICall(&#039;GetCategories&#039;);&lt;br /&gt;&lt;br /&gt;
$call-&gt;describeCall();&lt;br /&gt;&lt;br /&gt;
$result = $call-&gt;call($session);&lt;br /&gt;&lt;br /&gt;
print_r($result);&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
The &lt;b&gt;describeCall()&lt;/b&gt; describes any method you care to load via &lt;b&gt;loadAPICall()&lt;/b&gt; and you can see the complete list of methods in the package via &lt;b&gt;getAvailableApiCalls()&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
The describeCall() output links to the &lt;a href=&quot;http://developers.ebay.com&quot;&gt;eBay Developers&lt;/a&gt; documentation on the given call.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
For example, &lt;b&gt;getCategories()&lt;/b&gt; is documented &lt;a href=&quot;http://developer.ebay.com/DevZone/docs/API_Doc/Developing/Listing_Items.htm#Category&quot;&gt;here&lt;/a&gt;, which explains which parameters to pass to obtain the version number of the current category list and what to pass to dump the entire category tree.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
One silly problem I ran into wass, how do I pass the parameters to the getCategory() call? It took me awhile because I couldn&#039;t find it via googling so I had to experiment.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
Turns out it&#039;s&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;br /&gt;
$session = Services_Ebay::getSession($devId, $appId, $certId);&lt;br /&gt;&lt;br /&gt;
$session-&gt;setToken($token);&lt;br /&gt;&lt;br /&gt;
$ebay = new Services_Ebay($session);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
try {&lt;br /&gt;&lt;br /&gt;
                $args = array(&lt;br /&gt;&#039;DetailLevel&#039;=&gt;1,&lt;br /&gt;&#039;ViewAllNodes&#039;=&gt;1,&lt;br /&gt;&lt;br /&gt;
                          );&lt;br /&gt;&lt;br /&gt;
        $result = $ebay-&gt;GetCategories($args);&lt;br /&gt;&lt;br /&gt;
        print_r($result);&lt;br /&gt;&lt;br /&gt;
}   catch (Exception $e) {&lt;br /&gt;&lt;br /&gt;
        echo &quot;Something went wrong.&quot;;&lt;br /&gt;&lt;br /&gt;
        echo $e;&lt;br /&gt;&lt;br /&gt;
}&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
If you&#039;re going to cut your teeth on the getCategories() call like I did, remember to lift the default 8M memory limit on your script when you dump the entire tree.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
So I&#039;m looking forward to experimenting with this API. 
    </content:encoded>

    <pubDate>Fri, 16 Dec 2005 22:21:41 -0500</pubDate>
    <guid isPermaLink="false">http://www.privateworld.com/archives/7-guid.html</guid>
    
</item>

</channel>
</rss>