<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.3" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>Virtua Dave Dot Com</title>
	<link>http://www.virtuadave.com</link>
	<description>Go ahead, debug with that print statement. I dare you.</description>
	<pubDate>Wed, 19 Nov 2008 19:56:43 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3</generator>
	<language>en</language>
			<item>
		<title>Keeping PdaNet free on the iPhone</title>
		<link>http://www.virtuadave.com/2008/11/19/keeping-pdanet-free-on-the-iphone/</link>
		<comments>http://www.virtuadave.com/2008/11/19/keeping-pdanet-free-on-the-iphone/#comments</comments>
		<pubDate>Wed, 19 Nov 2008 19:50:15 +0000</pubDate>
		<dc:creator>dave</dc:creator>
		
		<category><![CDATA[def SocialSkills(): pass]]></category>

		<guid isPermaLink="false">http://www.virtuadave.com/2008/11/19/keeping-pdanet-free-on-the-iphone/</guid>
		<description><![CDATA[Starting with PdaNet version 1.40, its author is asking for $30 after two weeks of trial usage. Version 1.33 is free, so here&#8217;s how to revert:
First, ssh on to your iPhone. On my network, my phone&#8217;s address is 192.168.1.8.
ssh mobile@192.168.1.8
 (The default password is: alpine)
Then, become root:
su
 (Again, the default password is alpine)
Now, download and [...]]]></description>
			<content:encoded><![CDATA[<p>Starting with PdaNet version 1.40, its author is asking for $30 after two weeks of trial usage. Version 1.33 is free, so here&#8217;s how to revert:</p>
<p>First, ssh on to your iPhone. On my network, my phone&#8217;s address is 192.168.1.8.</p>
<blockquote><p><code>ssh mobile@192.168.1.8</code></p></blockquote>
<p> (The default password is: alpine)</p>
<p>Then, become root:</p>
<blockquote><p><code>su</code></p></blockquote>
<p> (Again, the default password is alpine)</p>
<p>Now, download and install the PdaNet 1.33 package from the modmyi repo. We&#8217;ll need wget first. I have PdaNet 1.33 mirrored <a href="http://priv.kupesoft.com/pdanet1.33.deb">here</a> if this location is broken.</p>
<blockquote><p><code>apt-get -y install wget<br />
wget http://modmyi.com/repo/2debs/pdanet1.33.deb<br />
dpkg -i pdanet1.33.deb<br />
</code></p></blockquote>
<p>Finally, put the pdanet package on hold, so upgrades on Cydia won&#8217;t update versions.</p>
<blockquote><p><code>echo com.jft.pn hold | dpkg --set-selections</code></p></blockquote>
<p>That does it. For now, Cydia will mark the package as upgradeable but never actually upgrade it. Kind of annoying, but it should the trick.</p>
<p>Dave</p>
]]></content:encoded>
			<wfw:commentRss>http://www.virtuadave.com/2008/11/19/keeping-pdanet-free-on-the-iphone/feed/</wfw:commentRss>
		</item>
		<item>
		<title>iPhone? You Phone.</title>
		<link>http://www.virtuadave.com/2008/07/16/20/</link>
		<comments>http://www.virtuadave.com/2008/07/16/20/#comments</comments>
		<pubDate>Wed, 16 Jul 2008 16:32:12 +0000</pubDate>
		<dc:creator>dave</dc:creator>
		
		<category><![CDATA[def SocialSkills(): pass]]></category>

		<guid isPermaLink="false">http://www.virtuadave.com/2008/07/16/20/</guid>
		<description><![CDATA[I was at DemoCamp last night and, while the demos were generally interesting (congrats DrProject on the neat IRC integration demo), some of the presenters&#8217; sexist humour was difficult at times.
News:

I bought a VPS at Linode. If you&#8217;d like any hosting, let me know :)
I&#8217;m going to rework this blog using Django
My iPhone comes today [...]]]></description>
			<content:encoded><![CDATA[<p>I was at <a href="http://democamp.info/">DemoCamp</a> last night and, while the demos were generally interesting (congrats DrProject on the neat <a href="http://drprojectirc.wordpress.com/">IRC integration demo</a>), some of the presenters&#8217; sexist humour was difficult at times.</p>
<p>News:</p>
<ul>
<li>I bought a VPS at <a href="http://www.linode.com/">Linode</a>. If you&#8217;d like any hosting, let me know :)</li>
<li>I&#8217;m going to rework this blog using Django</li>
<li>My iPhone comes today :)</li>
<li>I promise to write more</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.virtuadave.com/2008/07/16/20/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Geometry Cometry</title>
		<link>http://www.virtuadave.com/2008/04/06/geometry-cometry/</link>
		<comments>http://www.virtuadave.com/2008/04/06/geometry-cometry/#comments</comments>
		<pubDate>Sun, 06 Apr 2008 05:03:53 +0000</pubDate>
		<dc:creator>dave</dc:creator>
		
		<category><![CDATA[def SocialSkills(): pass]]></category>

		<guid isPermaLink="false">http://www.virtuadave.com/2008/04/06/geometry-cometry/</guid>
		<description><![CDATA[Hi friends,
It&#8217;s official. Click here to download a preview build of Geometry Cometry, my new video game.
Thanks,
D. T.
]]></description>
			<content:encoded><![CDATA[<p>Hi friends,</p>
<p>It&#8217;s official. <a href="http://geocom.kupesoft.com/">Click here</a> to download a preview build of Geometry Cometry, my new video game.</p>
<p>Thanks,<br />
D. T.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.virtuadave.com/2008/04/06/geometry-cometry/feed/</wfw:commentRss>
		</item>
		<item>
		<title>PyCon and PyGame 1.8</title>
		<link>http://www.virtuadave.com/2008/03/30/pycon-and-pygame18/</link>
		<comments>http://www.virtuadave.com/2008/03/30/pycon-and-pygame18/#comments</comments>
		<pubDate>Sun, 30 Mar 2008 18:55:21 +0000</pubDate>
		<dc:creator>dave</dc:creator>
		
		<category><![CDATA[def SocialSkills(): pass]]></category>

		<guid isPermaLink="false">http://www.virtuadave.com/2008/03/30/pygame-18/</guid>
		<description><![CDATA[Okay, so I won&#8217;t write much about PyCon.
The highlights were spending lovely time with David Wolever and Jeff Balogh and a nice dinner with some Python/GSoC people that was comped. The talks that I attended were well done except for a walker-outer or two.
Guido surprisingly quoted Matz in his keynote, that is &#8220;open source needs [...]]]></description>
			<content:encoded><![CDATA[<p>Okay, so I won&#8217;t write much about <a href="http://us.pycon.org/2008/about/">PyCon</a>.</p>
<p>The highlights were spending lovely time with <a href="http://www.codekills.net/">David Wolever</a> and Jeff Balogh and a nice dinner with some <a href="http://www.python.org/">Python</a>/<a href="http://code.google.com/soc/2008">GSoC</a> people that was comped. The talks that I attended were well done except for a walker-outer or two.</p>
<p><a href="http://en.wikipedia.org/wiki/Guido_van_rossum">Guido</a> surprisingly quoted <a href="http://en.wikipedia.org/wiki/Yukihiro_Matsumoto">Matz</a> in his keynote, that is &#8220;open source needs to move or die.&#8221; I liked that.</p>
<p>In other news, <a href="http://www.pygame.org/">PyGame 1.8</a> is out and has some nice new features.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.virtuadave.com/2008/03/30/pycon-and-pygame18/feed/</wfw:commentRss>
		</item>
		<item>
		<title>PyCon</title>
		<link>http://www.virtuadave.com/2008/03/19/pycon/</link>
		<comments>http://www.virtuadave.com/2008/03/19/pycon/#comments</comments>
		<pubDate>Wed, 19 Mar 2008 18:07:58 +0000</pubDate>
		<dc:creator>dave</dc:creator>
		
		<category><![CDATA[def SocialSkills(): pass]]></category>

		<guid isPermaLink="false">http://www.virtuadave.com/2008/03/19/pycon/</guid>
		<description><![CDATA[Well, I was at PyCon 2k8 in Chicago (more to come, I promise). Beyond the people I met, the most important thing that happened was that I finally plunged head first in to PyGame. While what I&#8217;m about to show you a sneak peak of won&#8217;t be the first game of its kind, I hope [...]]]></description>
			<content:encoded><![CDATA[<p>Well, I was at PyCon 2k8 in Chicago (more to come, I promise). Beyond the people I met, the most important thing that happened was that I finally plunged head first in to PyGame. While what I&#8217;m about to show you a sneak peak of won&#8217;t be the first game of its kind, I hope it&#8217;ll be the best&#8230;</p>
<p><img src="http://www.virtuadave.com/wp-content/uploads/2008/03/geocom.png" alt="Geometry Cometry" /></p>
<p>Yours,<br />
D. T.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.virtuadave.com/2008/03/19/pycon/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Invasive changes</title>
		<link>http://www.virtuadave.com/2007/12/07/invasive-changes/</link>
		<comments>http://www.virtuadave.com/2007/12/07/invasive-changes/#comments</comments>
		<pubDate>Fri, 07 Dec 2007 23:27:35 +0000</pubDate>
		<dc:creator>dave</dc:creator>
		
		<category><![CDATA[def SocialSkills(): pass]]></category>

		<guid isPermaLink="false">http://www.virtuadave.com/2007/12/07/invasive-changes/</guid>
		<description><![CDATA[Have you checked out Python 3.0?

dave@bozo:~/Desktop/Python-3.0a2$ ./python
Python 3.0a2 (r30a2:59382, Dec  7 2007, 18:14:16)
[GCC 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> print "Hello, World!"
SyntaxError: invalid syntax (, line 1)

&#8220;You know a language has invasive changes when &#8216;Hello, World!&#8217; breaks.&#8221; -Victor Ng
]]></description>
			<content:encoded><![CDATA[<p>Have you checked out <a href="http://www.python.org/download/releases/3.0/">Python 3.0</a>?</p>
<pre>
dave@bozo:~/Desktop/Python-3.0a2$ ./python
Python 3.0a2 (r30a2:59382, Dec  7 2007, 18:14:16)
[GCC 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> print "Hello, World!"
SyntaxError: invalid syntax (<stdin>, line 1)
</pre>
<p><strong>&#8220;You know a language has invasive changes when &#8216;Hello, World!&#8217; breaks.&#8221;</strong> -<a href="http://www.crankycoder.com/">Victor Ng</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.virtuadave.com/2007/12/07/invasive-changes/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Fake SMTPd</title>
		<link>http://www.virtuadave.com/2007/11/27/fake-smtpd/</link>
		<comments>http://www.virtuadave.com/2007/11/27/fake-smtpd/#comments</comments>
		<pubDate>Tue, 27 Nov 2007 18:43:01 +0000</pubDate>
		<dc:creator>dave</dc:creator>
		
		<category><![CDATA[def SocialSkills(): pass]]></category>

		<guid isPermaLink="false">http://www.virtuadave.com/2007/11/27/fake-smtpd/</guid>
		<description><![CDATA[So I wrote a fake SMTP server for testing DrProject. Check it out.
Thanks,
Dave
]]></description>
			<content:encoded><![CDATA[<p>So I wrote a <a href="/etc/fakesmtp">fake SMTP server</a> for testing DrProject. Check it out.</p>
<p>Thanks,<br />
Dave</p>
]]></content:encoded>
			<wfw:commentRss>http://www.virtuadave.com/2007/11/27/fake-smtpd/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Decorative Python</title>
		<link>http://www.virtuadave.com/2007/11/21/decorative-python/</link>
		<comments>http://www.virtuadave.com/2007/11/21/decorative-python/#comments</comments>
		<pubDate>Wed, 21 Nov 2007 07:28:48 +0000</pubDate>
		<dc:creator>dave</dc:creator>
		
		<category><![CDATA[def SocialSkills(): pass]]></category>

		<guid isPermaLink="false">http://www.virtuadave.com/2007/11/21/decorative-python/</guid>
		<description><![CDATA[In my code for DrProject/REST, I rather like a trivial 2 lines of Python that ever so thinly wraps around property and is used for decoration.

def Property(func):
&#160;&#160;&#160;return property(doc=func.__doc__, *func())

If it&#8217;s not immediately clear what this does, you&#8217;re new to Python decorators. Here&#8217;s an silly, useless, but otherwise insightful example:

class Test(object):
&#160;&#160;&#160;def __init__(self, value):
&#160;&#160;&#160;&#160;&#160;&#160;self.__data = value
&#160;&#160;&#160;@Property
&#160;&#160;&#160;def data():
&#160;&#160;&#160;&#160;&#160;&#160;'''Here [...]]]></description>
			<content:encoded><![CDATA[<p>In my code for DrProject/REST, I rather like a trivial 2 lines of Python that ever so thinly wraps around <code>property</code> and is used for decoration.</p>
<blockquote><p><code><br />
def Property(func):<br />
&nbsp;&nbsp;&nbsp;return property(doc=func.__doc__, *func())<br />
</code></p></blockquote>
<p>If it&#8217;s not immediately clear what this does, you&#8217;re new to Python decorators. Here&#8217;s an silly, useless, but otherwise insightful example:</p>
<blockquote><p><code><br />
class Test(object):</p>
<p>&nbsp;&nbsp;&nbsp;def __init__(self, value):<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.__data = value</p>
<p>&nbsp;&nbsp;&nbsp;@Property<br />
&nbsp;&nbsp;&nbsp;def data():<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'''Here is my docstring'''<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;def fget(self):<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return self.__data<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;def fset(self, value):<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.__data = value<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;def fdel(self):<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;raise NotImplementedError, "Cannot delete"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return fget, fset, fdel<br />
</code></p></blockquote>
<p>That&#8217;s all,<br />
Dave</p>
]]></content:encoded>
			<wfw:commentRss>http://www.virtuadave.com/2007/11/21/decorative-python/feed/</wfw:commentRss>
		</item>
		<item>
		<title>AJAX Persistent Request Objects API</title>
		<link>http://www.virtuadave.com/2007/11/14/ajax-persistent-request-objects-api/</link>
		<comments>http://www.virtuadave.com/2007/11/14/ajax-persistent-request-objects-api/#comments</comments>
		<pubDate>Wed, 14 Nov 2007 06:50:21 +0000</pubDate>
		<dc:creator>dave</dc:creator>
		
		<category><![CDATA[def SocialSkills(): pass]]></category>

		<guid isPermaLink="false">http://www.virtuadave.com/2007/11/14/ajax-persistent-request-objects-api/</guid>
		<description><![CDATA[reqobj.js - AJAX (XMLHttpRequst) Persistent Request Objects API.
Used for Café Chess (http://play.cafechess.com/js/reqobj.js)
(Note: All functions/variables with an underscore before them are private)
Variables:
unsupported_redirect (string)
Set this to the URL you&#8217;d like the script to redirect to if an XMLHttpRequest() object can not be created.
Example:
&#160;
var unsupported_redirect = 'http://www.example.com/nosupport.html';
Functions:
do_req(postdata, url, callback, timeout_interval) (boolean)
Does a single HTTP POST call.  Returns [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://play.cafechess.com/js/reqobj.js">reqobj.js</a> - AJAX (XMLHttpRequst) Persistent Request Objects API.<br />
<em>Used for <a href="http://www.cafechess.com/">Café Chess</a> (<a href="http://play.cafechess.com/js/reqobj.js">http://play.cafechess.com/js/reqobj.js</a>)</em></p>
<p>(Note: All functions/variables with an underscore before them are private)</p>
<p><cite><strong>Variables:</strong></cite></p>
<p><strong>unsupported_redirect</strong> (string)<br />
Set this to the URL you&#8217;d like the script to redirect to if an XMLHttpRequest() object can not be created.</p>
<p><em>Example:</em></p>
<p class="code">&nbsp;</p>
<pre>var unsupported_redirect = 'http://www.example.com/nosupport.html';</pre>
<p><cite><strong>Functions:</strong></cite></p>
<p><strong>do_req(<em>postdata</em>, <em>url</em>, <em>callback</em>, <em>timeout_interval</em>)</strong> (boolean)<br />
Does a single HTTP POST call.  Returns true if the call goes through, false if there is already a call in progress.</p>
<ul>
<li><em>postdata</em> (string) - The data to send.</li>
<li><em>url</em> (string) - The url to post to (should be a relative path or most browsers will throw an error).</li>
<li><em>callback</em> (string) - Just the name (ie: no brackets) of a function that will accept one input parameter (either false or a string) to be called when the request has gone through.  The request will call this function with the returned data upon success or false upon failure.</li>
<li><em>timeout_interval</em> (int) - The amount of time (in milliseconds) that the request should wait for a response.  After this time, the callback function will be called with false.</li>
</ul>
<p><em>Example:</em></p>
<p class="code">&nbsp;</p>
<pre>function handle_request(data) {

  if (data)

    document.write(data);

  else

    document.write('An error occurred.');

}var response = do_req('post this', 'post.php', 'handle_request', 5000);

if (!reponse)

  alert('Request could not be sent');</pre>
<p><strong>p_do_req(<em>callforpostdata</em>, <em>url</em>, <em>callback</em>, <em>interval</em>, <em>timeout_interval</em>)</strong> (boolean)<br />
Creates a persistent HTTP POST object that runs in the background.  Returns true if the object could be created, false if there has already been an object created.</p>
<ul>
<li><em>callforpostdata</em> (string) - Just the name (ie: no brackets) of a function that accepts no input parameters and will return a string to use as post data for each call.</li>
<li><em>url</em> (string) - The url to post to (should be a relative path or most browsers will throw an error).</li>
<li><em>callback</em> (string) - Just the name (ie: no brackets) of a function that will accept one input parameter (either false or a string) to be called when the each request has gone through.  The object will call this function with the returned data upon success or false upon failure.</li>
<li><em>interval</em> (int) - The amount of time (in milliseconds) that the object will wait after each call (upon success or failure) until the next call.</li>
<li><em>timeout_interval</em> (int) - The amount of time (in milliseconds) that the object should wait for each response.  After this time, the callback function will be called with false and the next call queued.</li>
</ul>
<p><em>Example:</em></p>
<p class="code">&nbsp;</p>
<pre>function handle_request(data) {

  if (data)

    document.write(data + '&lt;br&gt;');

  else

    document.write('An error occurred.' + '&lt;br&gt;');

}function get_post_data() {

  return 'post_this';

}

var response = p_do_req('get_post_data', 'post.php', 'handle_request', 1250, 5000);

if (!reponse)

  alert('Object could not be created');</pre>
<p><strong>p_kill_req()</strong> (boolean)<br />
Attempts to destroy an already active persistent request object.  Returns true if one exists and it is destroyed, returns false is there isn&#8217;t one to destroy.</p>
<p>Now that&#8217;s that,<br />
Dave</p>
<p>(Note that this was imported from my old blog. If the formatting is messy let me know so I can change it.)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.virtuadave.com/2007/11/14/ajax-persistent-request-objects-api/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Wordprexploit</title>
		<link>http://www.virtuadave.com/2007/10/23/wordprexploit/</link>
		<comments>http://www.virtuadave.com/2007/10/23/wordprexploit/#comments</comments>
		<pubDate>Tue, 23 Oct 2007 04:03:24 +0000</pubDate>
		<dc:creator>dave</dc:creator>
		
		<category><![CDATA[def SocialSkills(): pass]]></category>

		<guid isPermaLink="false">http://www.virtuadave.com/2007/10/23/wordprexploit/</guid>
		<description><![CDATA[It&#8217;s wonderful that I chose WordPress, considering what lovely exploits it seems to have accumulated in the past. How about that for full disclosure?
But I&#8217;m not going to switch for a while. I&#8217;ve hacked up Kubrik pretty good.
]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s wonderful that I chose <a href="http://wordpress.org/">WordPress</a>, considering what <strong><a href="http://blogsecurity.net/wordpress/blogwatch/blogwatch/">lovely exploits</a></strong> it seems to have accumulated in the past. How about that for <em>full disclosure</em>?</p>
<p>But I&#8217;m not going to switch for a while. I&#8217;ve hacked up <a href="http://binarybonsai.com/wordpress/kubrick/">Kubrik</a> pretty good.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.virtuadave.com/2007/10/23/wordprexploit/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
