<?xml version="1.0" encoding="utf-8"?>
<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/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>notes from Ken &#187; Experience</title>
	<atom:link href="http://www.notes.xythian.net/category/experience/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.notes.xythian.net</link>
	<description>Links, technical notes, whatnot.</description>
	<lastBuildDate>Sun, 04 Jul 2010 19:01:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Banks and S/MIME (and other public key encrypted mail options)</title>
		<link>http://www.notes.xythian.net/2010/01/18/banks-and-smime-and-other-public-key-encrypted-mail-options/</link>
		<comments>http://www.notes.xythian.net/2010/01/18/banks-and-smime-and-other-public-key-encrypted-mail-options/#comments</comments>
		<pubDate>Mon, 18 Jan 2010 14:13:11 +0000</pubDate>
		<dc:creator>Ken</dc:creator>
				<category><![CDATA[Experience]]></category>
		<category><![CDATA[Rants]]></category>

		<guid isPermaLink="false">http://www.notes.xythian.net/?p=752</guid>
		<description><![CDATA[Many widely deployed mail client apps support S/MIME. Banks worry about phishing and security since generally they are either liable for losses due to unauthorized online account access or act as though they are to encourage use of the online tools rather than expensive agents. I really wish a bank supported me giving them a [...]]]></description>
			<content:encoded><![CDATA[<p>Many widely deployed mail client apps support S/MIME.  Banks worry about phishing and security since generally they are either liable for losses due to unauthorized online account access or act as though they are to encourage use of the online tools rather than expensive agents.</p>
<p>I really wish a bank supported me giving them a public cert to encrypt use for all communications to me &#8212; and published a public cert that I could use to validate all communications from them.</p>
<p>They all handle SSL in the browser and they all support some kind of email-based notifications.</p>
<p>Then, ideally, I could configure my mail client to binfile anything from their domain that isn&#8217;t signed with the right key and encrypted to me.</p>
<p>On the other hand, it may be dangerous to stop training people that clicking on a link in email is never a good idea.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.notes.xythian.net/2010/01/18/banks-and-smime-and-other-public-key-encrypted-mail-options/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Thunderbird 3</title>
		<link>http://www.notes.xythian.net/2009/12/08/thunderbird-3/</link>
		<comments>http://www.notes.xythian.net/2009/12/08/thunderbird-3/#comments</comments>
		<pubDate>Wed, 09 Dec 2009 07:55:37 +0000</pubDate>
		<dc:creator>Ken</dc:creator>
				<category><![CDATA[Experience]]></category>

		<guid isPermaLink="false">http://www.notes.xythian.net/?p=277</guid>
		<description><![CDATA[Not perfect. A clear improvement, however. I particularly dig the new search. Once I figured out I could configure the Archive function to put archives from all my accounts into my local Linux box&#8217;s IMAP server I also liked the new Archive function. It nearly matches the system I maintained by hand anyway (manually periodically [...]]]></description>
			<content:encoded><![CDATA[<p>Not perfect.</p>
<p>A clear improvement, however.  I particularly dig the new search.  Once I figured out I could configure the Archive function to put archives from all my accounts into my local Linux box&#8217;s IMAP server I also liked the new Archive function.   It nearly matches the system I maintained by hand anyway (manually periodically moving a bunch of mail into suitably named folders on my local Linux box).</p>
<p>Also nice is the &#8220;smart&#8221; Inbox &#8212; a feature I&#8217;ve liked in Mail.app and kind of missed in Thunderbird.</p>
<p>I&#8217;m not yet sure if I like the rest of the UI changes but I&#8217;m going to try them out for a bit before trying to reconfigure them back from whence they came.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.notes.xythian.net/2009/12/08/thunderbird-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cineform NeoScene, Adobe Premiere Pro CS4, 5D mark II, and Timecode.cpp</title>
		<link>http://www.notes.xythian.net/2009/11/19/cineform-neoscene-adobe-premiere-pro-cs4-5d-mark-ii-and-timecode-cpp/</link>
		<comments>http://www.notes.xythian.net/2009/11/19/cineform-neoscene-adobe-premiere-pro-cs4-5d-mark-ii-and-timecode-cpp/#comments</comments>
		<pubDate>Fri, 20 Nov 2009 02:10:14 +0000</pubDate>
		<dc:creator>Ken</dc:creator>
				<category><![CDATA[Experience]]></category>

		<guid isPermaLink="false">http://www.notes.xythian.net/?p=274</guid>
		<description><![CDATA[Suppose you&#8217;ve recorded some video with your Canon 5D mark II. It is in a format that is annoying to edit using Adobe Premiere Pro CS4. Suppose further that you have purchased Cineform Neoscene to transcode that video into a nice-to-edit format. Further suppose that this workflow was working fine on your old Vista 64-bit [...]]]></description>
			<content:encoded><![CDATA[<p>Suppose you&#8217;ve recorded some video with your Canon 5D mark II.  It is in a format that is annoying to edit using Adobe Premiere Pro CS4.</p>
<p>Suppose further that you have purchased Cineform Neoscene to transcode that video into a nice-to-edit format.</p>
<p>Further suppose that this workflow was working fine on your old Vista 64-bit machine.</p>
<p>Now, you&#8217;ve installed CS4, Cineform, and transcoded some video.  Then you import it into Adobe Premiere Pro CS4 and prepare to edit!</p>
<p>And PPro crashes.  With an error referring to Timecode.cpp.  Around line 930.</p>
<p>You are sad.  You scour the entire internet in tens of milliseconds and find several posts talking about crashes in that location, but they have nothing to do with importing files created by NeoScene.</p>
<p>You try to play the files in Windows Media Player and they do not crash but they also are not playing at the right speed.  Ah ha!  That does rather smell timecode related.</p>
<p>Cutting this story short, install Quicktime 7.  This workflow requires Quicktime to be installed or crazy broken things will happen.  The requirements page for NeoScene does not talk about needing Quicktime on Windows.</p>
<p>With Quicktime installed, you re-run NeoScene and birds burst into song.  Or rather, the output files are right and can play back in Quicktime and WMP.  They can also be imported into PPro without mysterious crashing.</p>
<p>The day is saved.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.notes.xythian.net/2009/11/19/cineform-neoscene-adobe-premiere-pro-cs4-5d-mark-ii-and-timecode-cpp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows 7 might be cool if the upgrade worked</title>
		<link>http://www.notes.xythian.net/2009/10/24/windows-7-might-be-cool-if-the-install-worked/</link>
		<comments>http://www.notes.xythian.net/2009/10/24/windows-7-might-be-cool-if-the-install-worked/#comments</comments>
		<pubDate>Sun, 25 Oct 2009 01:39:56 +0000</pubDate>
		<dc:creator>Ken</dc:creator>
				<category><![CDATA[Experience]]></category>
		<category><![CDATA[Rants]]></category>

		<guid isPermaLink="false">http://www.notes.xythian.net/2009/10/24/windows-7-might-be-cool-if-the-install-worked/</guid>
		<description><![CDATA[I preordered Win7 Pro from Amazon. I&#8217;ve been using 64-bit Vista for almost a year now and it&#8217;s been nice enough. I decide to do a clean install. The Windows 7 installer works great right up until it won&#8217;t accept the product key that came in the package. The &#8220;Upgrade&#8221; Win7 cannot install to a [...]]]></description>
			<content:encoded><![CDATA[<p>I preordered Win7 Pro from Amazon.  I&#8217;ve been using 64-bit Vista for almost a year now and it&#8217;s been nice enough.</p>
<p>I decide to do a clean install.  The Windows 7 installer works great right up until it won&#8217;t accept the product key that came in the package.  The &#8220;Upgrade&#8221; Win7 cannot install to a clean disk and then take the Vista product key to satisfy the upgrade.    It&#8217;s not even clear how to get a clean install of Win7 now, since it seems the ONLY valid path is to have a copy of Vista installed already.  Furthermore, it puzzles me why Win7 Pro Upgrade can&#8217;t tell me this instead of offering to do a clean install and then failing 45 minutes in.</p>
<p>It does work with a clean, unactivated Vista install immediately followed by a Win7 Pro upgrade.  This was a needlessly frustrating introduction to Windows 7.</p>
<p>Once it is installed Win7 seems nice enough &#8212; an incremental upgrade from Vista.   It&#8217;s not at all clear why Microsoft decided to inconvenience such a small population of people.  The vast majority of users will get Win 7 with a new machine purchase.  Very few, relatively, will buy Win 7 as an upgrade, but those are exactly the users Microsoft can least afford to make frustrated.  These are the users most likely to be the people advising their friends and family about what to buy.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.notes.xythian.net/2009/10/24/windows-7-might-be-cool-if-the-install-worked/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Credit card security</title>
		<link>http://www.notes.xythian.net/2009/09/13/credit-card-security/</link>
		<comments>http://www.notes.xythian.net/2009/09/13/credit-card-security/#comments</comments>
		<pubDate>Mon, 14 Sep 2009 01:52:16 +0000</pubDate>
		<dc:creator>Ken</dc:creator>
				<category><![CDATA[Experience]]></category>
		<category><![CDATA[Rants]]></category>

		<guid isPermaLink="false">http://www.notes.xythian.net/?p=266</guid>
		<description><![CDATA[I received a letter from &#8220;Network Solutions LLC&#8221; claiming they had a security breach and some transactions made via &#8220;a web merchant&#8221; &#8220;may&#8221; have been compromised on a particular date. I only had one transaction with a &#8220;web merchant&#8221; on the date they list with that card. I wonder if this letter is entirely legitimate [...]]]></description>
			<content:encoded><![CDATA[<p>I received a letter from &#8220;Network Solutions LLC&#8221; claiming they had a security breach and some transactions made via &#8220;a web merchant&#8221; &#8220;may&#8221; have been compromised on a particular date.   I only had one transaction with a &#8220;web merchant&#8221; on the date they list with that card.</p>
<p>I wonder if this letter is entirely legitimate since it seems pretty desperate to convince me to sign up for a &#8220;free credit monitoring&#8221; period &#8212; but that doesn&#8217;t seem like a useful response to a single card number being compromised.  Furthermore, I&#8217;d expect that the credit card issuer was also notified and their usual response to this kind of thing is &#8220;cancel all the cards and issue new ones&#8221; and that didn&#8217;t happen.  Though maybe they didn&#8217;t bother because that card had already expired by the time &#8220;Network Solutions LLC&#8221; reported the breach.</p>
<p>Nevertheless I&#8217;m looking over statements since that date more carefully than usual to see if there&#8217;s any fishy transactions.</p>
<p>It&#8217;s not the same card as the one a credit card provider recently replaced mysteriously due to &#8220;a security breach with a merchant&#8221; that they naturally didn&#8217;t explain.  <b>That</b> is the kind of behavior I expect from a bank.</p>
<p>I suspect that credit card companies aren&#8217;t interested in increasing the security of cards because paying for the fraud is cheaper than the lost sales due to lower convenience.  </p>
<p>Of course, every time I get a new card number I would have to go change the umpty-jillion places that have the card number for automatic billing if most of those places didn&#8217;t have single-merchant numbers.  This is a case where the issuer with the capability to issue single-merchant card numbers wins.  I&#8217;ll probably switch the rest of them over next time the card number from the company that doesn&#8217;t support single-merchant numbers gets compromised.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.notes.xythian.net/2009/09/13/credit-card-security/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu 9.04 and python-virtualenv</title>
		<link>http://www.notes.xythian.net/2009/05/31/ubuntu-904-and-python-virtualenv/</link>
		<comments>http://www.notes.xythian.net/2009/05/31/ubuntu-904-and-python-virtualenv/#comments</comments>
		<pubDate>Sun, 31 May 2009 19:26:17 +0000</pubDate>
		<dc:creator>Ken</dc:creator>
				<category><![CDATA[Experience]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.notes.xythian.net/?p=245</guid>
		<description><![CDATA[I recently upgraded a bunch of physical and virtual machines from various Ubuntu v.older version to Ubuntu 9.04. Naturally, this broke my Python development environment since Python was upgraded from 2.5 to 2.6. I had instructed easy_install to put things into /usr/local. The upgrades from Ubuntu v.older to 9.04 went quite smoothly on every machine [...]]]></description>
			<content:encoded><![CDATA[<p>I recently upgraded a bunch of physical and virtual machines from various Ubuntu v.older version to Ubuntu 9.04.   Naturally, this broke my Python development environment since Python was upgraded from 2.5 to 2.6.  I had instructed easy_install to put things into /usr/local.</p>
<p>The upgrades from Ubuntu v.older to 9.04 went quite smoothly on every machine including the ones where I had to do several stepped upgrades since on various machines I skipped one or more upgrades prior to 9.04.</p>
<p>Rather than return to my old ways of just hosing packages (and, worse, &#8220;setup.py develop&#8221; symlinks) into /usr/local I&#8217;ve decided to use python-virtualenv to create some non-root-owned Python environments to work on my various Python-y apps.  The main difference to me is being able to keep things I&#8217;m working on separate from one another.</p>
<p>We&#8217;ll see how it goes.</p>
<p>I&#8217;m afraid all these years of using package-managed software has made me soft &#8212; now a piece of software not having a nice package means I need to think a bit harder about if it&#8217;s worth dealing with the hassle of having that software outside of the package manager.  (That applies to when I&#8217;d like to be using a more recent version of the package, too, though generally on Ubuntu I run into that a lot less frequently than I did on Debian.)   I have mixed feelings about setuptools and easy_install.</p>
<p>I am pleased that now mod_wsgi is in a package so I can switch to that version rather than the one I installed by hand.   mod_wsgi was worth it to install by hand to use until there was a nice package available.  It&#8217;s Just Better than my previous mechanisms for running WSGI apps in, under, or behind Apache.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.notes.xythian.net/2009/05/31/ubuntu-904-and-python-virtualenv/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Singleshot and Git and first steps</title>
		<link>http://www.notes.xythian.net/2009/03/04/singleshot-and-git-and-first-steps/</link>
		<comments>http://www.notes.xythian.net/2009/03/04/singleshot-and-git-and-first-steps/#comments</comments>
		<pubDate>Wed, 04 Mar 2009 08:12:18 +0000</pubDate>
		<dc:creator>Ken</dc:creator>
				<category><![CDATA[Experience]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Singleshot]]></category>

		<guid isPermaLink="false">http://www.notes.xythian.net/?p=240</guid>
		<description><![CDATA[Singleshot is the photo album software I use to host photos.xythian.com. The last release was .. rather a while ago though I have been making minor enhancements and bug fixes since then for my own use (including flash video support which extracts thumbnails using mplayer and embeds flowplayer to play) though there&#8217;s no video on [...]]]></description>
			<content:encoded><![CDATA[<p>Singleshot is the photo album software I use to host <a href="http://photos.xythian.com/">photos.xythian.com</a>.  The last release was .. rather a while ago though I have been making minor enhancements and bug fixes since then for my own use (including flash video support which extracts thumbnails using mplayer and embeds flowplayer to play) though there&#8217;s no video on my public photo site).</p>
<p>Prior to today every time I took the time to try and update the source tree on Sourceforge I ran into a snag such as &#8220;Sourceforge CVS is unavailable.&#8221;   Months ago, when I tried to migrate from CVS to SVN on Sourceforge I ran into errors.  I didn&#8217;t even try to investigate what went awry as I was low on patience and time.</p>
<p>As a result, my own tree (first in Perforce and now in Subversion) has gotten pretty out of sync from that tree.  I decided to try GitHub and try using Git for something &#8220;real&#8221; &#8212; so I&#8217;m going to move Singleshot&#8217;s source to GitHub and then push all my changes to there.</p>
<p>I followed (mostly) the steps from <a href="http://stackoverflow.com/questions/584522/how-to-export-revision-history-from-mercurial-or-git-to-cvs/584567">How to export revision history from mercurial or git to cvs</a> which describes how to use the git cvsimport command to pull Singleshot&#8217;s revision history from its Sourceforge CVS repository, testing making a tiny change to a README, and pushing that change back to the Sourceforge CVS tree.</p>
<p>(After backing up the source tree on Sourceforge using rsync.)</p>
<pre>
% export CVS_RSH=ssh
% git cvsimport -d :ext:xythian@singleshot.cvs.sourceforge.net:/cvsroot/singleshot -C test1 \
    -r cvs -k -A /home/fox/src/singleshot-import/authors.txt  singleshot
Initialized empty Git repository in /home/fox/src/singleshot-import/test1/.git/
[longish pause]
Counting objects: 561, done.
Compressing objects: 100% (502/502), done.
Writing objects: 100% (561/561), done.
Total 561 (delta 317), reused 0 (delta 0)
</pre>
<p>(Some poking around to see if things look reasonable, making a small change to the README, commiting it first to the git repository and then back to Sourceforge using git cvsexportcommit.)</p>
<p>Then I pushed the whole thing to a GitHub tree:</p>
<p>http://github.com/xythian/singleshot/tree/master</p>
<pre>
% git remote add origin git@github.com:xythian/singleshot.git
% git push origin master
</pre>
<p>That was pretty straightforward and appears to have worked.</p>
<p>My plan is to merge my changes into the out of date tree and then push the new code to GitHub.  If it all works out I&#8217;ll probably indicate that the Sourceforge project is defunct there and host the code on GitHub henceforth. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.notes.xythian.net/2009/03/04/singleshot-and-git-and-first-steps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pyrex and libyahoo2 (or not)</title>
		<link>http://www.notes.xythian.net/2008/10/27/pyrex-and-libyahoo2-or-not/</link>
		<comments>http://www.notes.xythian.net/2008/10/27/pyrex-and-libyahoo2-or-not/#comments</comments>
		<pubDate>Tue, 28 Oct 2008 04:24:58 +0000</pubDate>
		<dc:creator>Ken</dc:creator>
				<category><![CDATA[Experience]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.notes.xythian.net/2008/10/27/pyrex-and-libyahoo2-or-not/</guid>
		<description><![CDATA[I had something I wanted to try in Python running against Yahoo! Messenger. The obvious choice of library for talking to Yahoo! Messenger was libyahoo2.&#160;&#160; I could not find a Python binding for it, so I started sketching one together with SWIG.&#160; The first step is creating a bunch of empty callbacks. The libyahoo2 in [...]]]></description>
			<content:encoded><![CDATA[<p>I had something I wanted to try in Python running against Yahoo! Messenger.  The obvious choice of library for talking to Yahoo! Messenger was <a href="http://libyahoo2.sourceforge.net/">libyahoo2</a>.&#160;&#160; I could not find a Python binding for it, so I started sketching one together with SWIG.&#160; The first step is creating a bunch of empty callbacks.  The libyahoo2 in Ubuntu&#8217;s package is compiled without USE_CALLBACK_STRUCT, so libyahoo2 expects to find a bunch of extern functions defined to interact with the host.&#160;I made empty callbacks in a C file and started reading more about the API. </p>
<p>It rapidly became clear that I was going to want a layer on top of the library to make interacting with it from Python more palatable.&#160;&#160; I switched to Pyrex, since I wanted to write that wrapper in Python (or something Python-like) rather than building a straight-C wrapper so using SWIG would continue to make sense.&#160;&#160; SWIG&#8217;s big benefit in my mind over Pyrex is easy support for more languages and better tools for defining straight wrappers.&#160; I wasn&#8217;t going to get &quot;free&quot; use in other languages and it wasn&#8217;t going to be a straight wrapper now but rather a module that exposed the functionality of libyahoo2 to Python. </p>
<p> I kept the callbacks.c I had defined but started migrating the definitions to the Pyrex file as I implemented.&#160; This way my library would continue to link without complaint about functions I didn&#8217;t have yet.</p>
<p>Following the usual pattern for Python bindings to libraries that need wrappers to be more Pythonic, I planned to have a &#8216;yahoo2&#8242; module in Python and a &#8216;_yahoo2.so&#8217; extension module.&#160; The _yahoo2 module is written in Pyrex. </p>
<p>libyahoo2 appears not to adhere to the documentation it defines.&#160; It&#8217;ll call ext_yahoo_remove_handler with a tag that was never returned by ext_yahoo_add_handler&#8230; (0).&#160; It looks like an undocumented (that I found) part of the charter of ext_yahoo_add_handler is not to add a given handler more than once. </p>
<p>This also made defining the callbacks the way libyahoo2 expected easier.</p>
<p>D&#8217;oh, I got it far enough along to get this:</p>
<blockquote>
<p>libyahoo2.c:620: debug: Key: 4          Value: Yahoo_Messenger<br />
	    libyahoo2.c:620: debug: Key: 5          Value: hodorbot<br />
	    libyahoo2.c:620: debug: Key: 14         Value: This version of Messenger expired on April 2, 2008. Please upgrade now to the latest supported version: http://messenger.yahoo.com Learn more: http://messenger.yahoo.com/eol<br />
	    libyahoo2.c:620: debug: Key: 15         Value: 1225167367<br />
	    libyahoo2.c:620: debug: Key: 97         Value: 1
      </p>
</blockquote>
<p>I&#8217;ve learned what I wanted to, so instead of seeing if a more recent libyahoo2 than what&#8217;s in Ubuntu works (&gt; 0.7.5+dfsg-3), I&#8217;m just going to call it here.&#160; I&#8217;ll post it in case someone can learn something useful from it.</p>
<p>You can pull a working repository with a command like: </p>
<blockquote>
<p>git clone http://notes.xythian.net/media/2008/10/pythonlibyahoo2.git/ mydirectory </p>
</blockquote>
<p>There&#8217;s three files that do anything: </p>
<ul>
<li>yahoo2.py &#8211; wraps some of the lower level details from the Pyrex layer, including exposing the IO bits as an asyncore dispatcher</li>
<li>_yahoo2.pyx &#8211; is the binding</li>
<li>callbacks.c &#8211; exists to have empty functions defined to satisfy the linker until those have implementations in the Python binding  </li>
</ul>
<p>Not much works, really; there&#8217;s implementations of connect and async_connect, but only async_connect is called by libyahoo2 before it gets far enough along to not log in with the error message above.&#160;There&#8217;s a wrapper for setting the log level (which was key to discovering the above fact&#8230;).</p>
<p>This is a typical definition of one of the library callbacks: </p>
<blockquote class="code"><pre>
cdef public int ext_yahoo_connect_async(int id, char *host, int port, \
  yahoo_connect_callback callback, void *callback_data):
   cdef ConnectionHandle handle
   handle = ConnectionHandle(id, host, port)
   handle.connect_callback = callback
   handle.connect_data = callback_data
   handle.async_connect(callback, callback_data)
   HANDLER_MAP[id].connections.append(handle)
   MANAGER.add(handle)
   return handle.fileno()
</pre>
</blockquote>
<p>ConnectionHandle is an extension class which wraps a Python socket object and can make the callbacks the libyahoo2 IO layer expect.&#160;&#160; MANAGER is the connection manager, which is implemented in the higher level layer (yahoo2.py) so it could be replaced with something that interacted with a GUI event loop. </p>
<p>I&#8217;m probably done with this for the forseeable future and hope publishing it along with a git repoistory may allow someone to build on or learn from what I&#8217;ve done.&#160;&#160; I stumbled upon Cython while working on this, but didn&#8217;t want to derail any progress to something working by playing with it.</p>
<p>So what did I learn?</p>
<ul>
<li>Write toy bots against open protocols with existing libraries in your language of choice, such as XMPP, lest your project get hijacked working on a binding rather than the toy.</li>
<li>Pyrex is pretty nice for building wrappers that have more meat than a typical SWIG binding.</li>
<li>Cython is probably worth checking out.</li>
<li>git is worth playing with more</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.notes.xythian.net/2008/10/27/pyrex-and-libyahoo2-or-not/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VirtualBox 2.0.0</title>
		<link>http://www.notes.xythian.net/2008/09/04/virtualbox-200/</link>
		<comments>http://www.notes.xythian.net/2008/09/04/virtualbox-200/#comments</comments>
		<pubDate>Fri, 05 Sep 2008 06:13:49 +0000</pubDate>
		<dc:creator>Ken</dc:creator>
				<category><![CDATA[Experience]]></category>

		<guid isPermaLink="false">http://www.notes.xythian.net/?p=222</guid>
		<description><![CDATA[Virtualization is still shiny. I&#8217;ve been playing with VirtualBox 2.0.0 tonight. I&#8217; m writing this from an Ubuntu 8.04 VM running on my Windows XP desktop machine in &#8220;seamless windows&#8221; mode. It&#8217;s not quite as &#8220;seamless&#8221; as VMWare Fusion&#8217;s Unity mode on the Mac, but it&#8217;s still pretty neat. VirtualBox 2.0.0 is as smooth to [...]]]></description>
			<content:encoded><![CDATA[<p>Virtualization is still shiny.   I&#8217;ve been playing with VirtualBox 2.0.0 tonight.  I&#8217; m writing this from an Ubuntu 8.04 VM running on my Windows XP desktop machine in &#8220;seamless windows&#8221; mode.  It&#8217;s not quite as &#8220;seamless&#8221; as VMWare Fusion&#8217;s Unity mode  on the Mac, but it&#8217;s still pretty neat.</p>
<p>VirtualBox 2.0.0 is as smooth to install on WIndows as the 1.x build I tried on the Mac was (I&#8217;ll try 2.0.0 on the Mac soon) and either adds a bunch of cool features or I noticed some features that were in 1.0 the first time with 2.0.   I know seamless mode is new in 2.0, but I don&#8217;t know if the &#8220;headless mode&#8221; (= run as a daemon and display only as an RDP server; not interesting on my Windows box but quite interesting for Linux) is new or not.</p>
<p>&#8220;Seamless mode&#8221; is not as seamless as Unity mode: the tab order (and task bar) do not show the virtual machine&#8217;s apps as first class windows.  Instead, the entire VM appears to be a single app to Windows not unlike running in full screen mode.  It&#8217;s essentially as if the desktop background of the VM was replaced with an transparent texture, so I can see all the windows apps wherever the desktop would been visible.  It&#8217;s handy but a little confusing.  Also the system menu bar is considered a window and thus shows up at the top of the Windows desktop machine (compared to Unity mode, where it can be turned off entirely and replaced with Fusion-provided navigation functions).  It&#8217;s not quite fair to compare Fusion running Windows to VirtualBox on Windows running Linux since it may be that &#8220;seamless mode&#8221; is more seamless with Windows guests (and, of course, VirtualBox is free for personal use and Fusion isn&#8217;t, but Fusion is cheap enough to be essentially free for the sake of a tool I use as much as virtualization).</p>
<p>It looks like Fusion 2.0 is nearing release (as well as VMWare Workstation 6.5, which finally adds support for Ubuntu 8.04 guests &#8212; this lack in Workstation 6.0.4 is how I ended up playing with VirtualBox in the first place).</p>
<p>I suspect VMWare is going to remain the virtualization tool I reach for &#8220;in anger&#8221; (especially once Fusion 2.0 and Workstation 6.5 and Server 2.0 finally all ship, which will give me good solutions for running the same virtual machine images on any machine I might desire).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.notes.xythian.net/2008/09/04/virtualbox-200/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Idea: Visualize wikipedia trails</title>
		<link>http://www.notes.xythian.net/2008/08/26/idea-visualize-wikipedia-trails/</link>
		<comments>http://www.notes.xythian.net/2008/08/26/idea-visualize-wikipedia-trails/#comments</comments>
		<pubDate>Wed, 27 Aug 2008 05:30:33 +0000</pubDate>
		<dc:creator>Ken</dc:creator>
				<category><![CDATA[Experience]]></category>

		<guid isPermaLink="false">http://www.notes.xythian.net/?p=219</guid>
		<description><![CDATA[A browser extension that watches you surf through Wikipedia, and then generates a pretty graph with some kind of representation for how long you spent on each page. On the other hand, maybe not, because I&#8217;m not sure I really want to know where that time just went. It would be a pretty branching tree, [...]]]></description>
			<content:encoded><![CDATA[<p>A browser extension that watches you surf through Wikipedia, and then generates a pretty graph with some kind of representation for how long you spent on each page.</p>
<p>On the other hand, maybe not, because I&#8217;m not sure I really want to know where that time just went.   It would be a pretty branching tree, though.   I should know better than to click through links to Wikipedia &#8212; it really doesn&#8217;t matter where the link goes.  They&#8217;re all dangerous.  Howstuffworks, too.  And if any of the Wikipedia articles link TO Howstuffworks (or visa versa) then it really is hopeless.</p>
<p>And THEN, you get a LOT of people to install it (or Wikipedia to run it on their access logs) and let people surf through the trees starting from some arbitrary page.   That would be cool.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.notes.xythian.net/2008/08/26/idea-visualize-wikipedia-trails/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
