<?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/"
	xmlns:media="http://search.yahoo.com/mrss/"
>

<channel>
	<title>Yabfog &#187; programming</title>
	<atom:link href="http://yabfog.com/blog/tag/programming/feed" rel="self" type="application/rss+xml" />
	<link>http://yabfog.com/blog</link>
	<description>Yet another blog full of gas</description>
	<lastBuildDate>Thu, 29 Jul 2010 20:33:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
<cloud domain='yabfog.com' port='80' path='/blog/?rsscloud=notify' registerProcedure='' protocol='http-post' />
		<item>
		<title>Delete Empty Folders</title>
		<link>http://yabfog.com/blog/2009/09/17/delete-empty-folders</link>
		<comments>http://yabfog.com/blog/2009/09/17/delete-empty-folders#comments</comments>
		<pubDate>Fri, 18 Sep 2009 03:03:49 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[uncategorized]]></category>
		<category><![CDATA[dos]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://yabfog.com/blog/?p=240</guid>
		<description><![CDATA[I recently found that I had a lot of empty folders in my MP3 folder after a wayward ripping session. So I whipped up this quick DOS one-liner to remove all empty folders. From a command prompt, just change to the folder containing all the empty folders and enter the following: FOR /f "tokens=*" %G [...]]]></description>
			<content:encoded><![CDATA[<p>I recently found that I had a lot of empty folders in my MP3 folder after a wayward ripping session. So I whipped up this quick DOS one-liner to remove all empty folders.</p>
<p>From a command prompt, just change to the folder containing all the empty folders and enter the following:</p>
<p><code>FOR /f  "tokens=*" %G IN ('dir /ad /b /s') DO rd /q "%G"</code></p>
<p>The command "rd /q" will be executed on every folder, but "rd" only deletes empty folders -- "rd" does not delete non-empty folders.</p>
]]></content:encoded>
			<wfw:commentRss>http://yabfog.com/blog/2009/09/17/delete-empty-folders/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
	</item>
		<item>
		<title>XMPP vCard Python Script</title>
		<link>http://yabfog.com/blog/2009/06/03/xmpp-vcard-python-script</link>
		<comments>http://yabfog.com/blog/2009/06/03/xmpp-vcard-python-script#comments</comments>
		<pubDate>Wed, 03 Jun 2009 16:39:31 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[uncategorized]]></category>
		<category><![CDATA[gtalk]]></category>
		<category><![CDATA[jabber]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[vcard]]></category>
		<category><![CDATA[xmpp]]></category>

		<guid isPermaLink="false">http://yabfog.com/blog/?p=231</guid>
		<description><![CDATA[Couldn't find a script to update my Jabber/XMPP vCard photo (a/k/a avatar), so I wrote one. It requires xmpppy (a/k/a python-xmpp). It should work with gTalk, but I have not tested it. Credit to pastebin for some code snippets. Hope this saves someone some time and effort. #!/usr/bin/python '''vcard.py - Update your XMPP vcard photo [...]]]></description>
			<content:encoded><![CDATA[<p>Couldn't find a script to update my Jabber/XMPP vCard photo (a/k/a avatar), so I wrote one. It requires xmpppy (a/k/a python-xmpp). It should work with gTalk, but I have not tested it.</p>
<p>Credit to <a href="http://en.pastebin.ca/1237241">pastebin</a> for some code snippets.</p>
<p>Hope this saves someone some time and effort.</p>
<pre>
#!/usr/bin/python
'''vcard.py - Update your XMPP vcard photo with the image you provide

Usage: vcard.py image_file jid password
'''

from xmpp import JID, Client, Iq, Presence, NS_VERSION, NS_VCARD
import sys
import os
import time
from base64 import encode, decode
from hashlib import sha1

try:
    file=os.path.expanduser(sys.argv[1])
    jid=sys.argv[2]
    password=sys.argv[3]
    resource='vcard'
except:
    print >>sys.stderr, __doc__
    sys.exit(2)

NS_VCARD_UPDATE = 'vcard-temp:x:update'
NS_NICK = 'http://jabber.org/protocol/nick'

def hash_img(img):
    return sha1(img).hexdigest()

def base64_img(img):
    return img.encode('base64')

def get_img(file):
    try:
        os.stat(file)[6]
        fh = open(file, 'rb')
        img = fh.read()
        return img
    except Exception, e:
        print >>sys.stderr, e
        sys.exit(2)

def get_mime_type(file):
    try:
        ext = file[-4:]
        if ext == '.png':
            mime_type = 'image/png'
        elif ext == '.gif':
            mime_type = 'image/gif'
        elif ext == '.jpg' or ext == '.jpeg':
            mime_type = 'image/jpeg'
        else:
            raise ValueError, "Wrong mime-type detected. Check file suffix."
    except ValueError, e:
        print >>sys.stderr, e
        sys.exit(2)
    return mime_type

def send_vcard(conn, base64_img, mime_type, nick):
    iq_vcard = Iq(typ='set')
    vcard = iq_vcard.addChild(name='vCard', namespace=NS_VCARD)
    vcard.addChild(name='NICKNAME', payload=[nick])
    photo = vcard.addChild(name='PHOTO')
    photo.setTagData(tag='TYPE', val=mime_type)
    photo.setTagData(tag='BINVAL', val=base64_img)
    conn.send(iq_vcard)

def send_presence(conn, status, hash1, nick):
    presence = Presence(status = status, show = 'xa', priority = '-1')
    presence.setTag(name='x',namespace=NS_VCARD_UPDATE).setTag(name='photo',namespace=NS_VCARD_UPDATE).setData(hash1)
    presence.setTag(name='nick',namespace=NS_NICK).setData(nick)
    conn.send(presence)

if __name__ == '__main__':
    img = get_img(file)
    j=JID(jid)
    cl=Client(j.getDomain(),debug=[])
    conn=cl.connect()
    if not conn:
        raise Exception, 'failed to start connection'
    auth=cl.auth(j.getNode(),password,resource,sasl=1)
    if not auth:
        raise Exception, 'could not authenticate'
    send_vcard(cl, base64_img(img), get_mime_type(file), j.getNode())
    send_presence(cl, 'Updated vCard Image', hash_img(img), j.getNode())
    time.sleep(1)
    cl.disconnect()
</pre>
]]></content:encoded>
			<wfw:commentRss>http://yabfog.com/blog/2009/06/03/xmpp-vcard-python-script/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
	
	</item>
		<item>
		<title>On Bootstrapping</title>
		<link>http://yabfog.com/blog/2009/04/13/on-bootstrapping</link>
		<comments>http://yabfog.com/blog/2009/04/13/on-bootstrapping#comments</comments>
		<pubDate>Mon, 13 Apr 2009 16:12:02 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[uncategorized]]></category>
		<category><![CDATA[bootstrap]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[language]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://yabfog.com/blog/?p=225</guid>
		<description><![CDATA[On Friday, Dave Winer released a terrific thought-piece-of-a-podcast on how journalists need to learn about bootstraps. In his most recent podcast with NYU's Jay Rosen, he and Jay discussed the topic, as well, but I want to focus on bootstrapping, the metaphor. Dave offered the well-worn phrase "haul yourself up by your bootstraps" as the [...]]]></description>
			<content:encoded><![CDATA[<p>On Friday, Dave Winer released a terrific <a href="http://www.scripting.com/stories/2009/04/10/journalistsNeedToLearnAbou.html">thought-piece-of-a-podcast</a> on how journalists need to learn about bootstraps. In his <a href="http://www.scripting.com/stories/2009/04/12/thisWeeksPodcastWithJayRos.html">most recent podcast with NYU's Jay Rosen</a>, he and Jay discussed the topic, as well, but I want to focus on bootstrapping, the metaphor.</p>
<p><img src="http://yabfog.com/blog/wp-content/uploads/2009/04/bootstrap.jpg" alt="bootstrap" title="bootstrap" width="115" height="130" class="alignleft size-full wp-image-226" />Dave offered the well-worn phrase "haul yourself up by your bootstraps" as the mental image we should have when we use the bootstrapping metaphor. Imagine that you're wearing your boots, you grab your bootstraps and pull on them. Well, the best outcome I can imagine is that you'd fail to accomplish anything. If you could accomplish anything, I think all you'd do is pull your feet out from under yourself. But the phrase is supposed to connote (I think) strength by self-determination and self-motivation. That's why MBA-types say they're going to "bootstrap" their start-ups when what they really mean is that their start-ups will be self-funded at the outset.</p>
<p>But I recall learning that before bootstraps became merely decorative, they actually served a useful purpose: namely, to strap your boots to the top of heavy items so you could carry them. Maybe it's apocryphal, but here's MY mental image of bootstrapping: a person on a horse, laden with a pack on its rump, and a heavy wooden storage box strapped to each of the rider's boots.</p>
<p>And that more closely matches what bootstrapping means to me: taking advantage of what's already up-and-running and using that existing momentum to get something else moving.</p>
]]></content:encoded>
			<wfw:commentRss>http://yabfog.com/blog/2009/04/13/on-bootstrapping/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:thumbnail url="http://yabfog.com/blog/wp-content/uploads/2009/04/bootstrap.jpg" />
		<media:content url="http://yabfog.com/blog/wp-content/uploads/2009/04/bootstrap.jpg" medium="image">
			<media:title type="html">bootstrap</media:title>
		</media:content>
	</item>
		<item>
		<title>Character Encoding Help</title>
		<link>http://yabfog.com/blog/2007/11/17/character-encoding-help</link>
		<comments>http://yabfog.com/blog/2007/11/17/character-encoding-help#comments</comments>
		<pubDate>Sat, 17 Nov 2007 15:58:02 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[uncategorized]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://yabfog.com/wp/2007/11/17/character-encoding-help</guid>
		<description><![CDATA[Tom Morris is pulling his hair out dealing with XML character encoding issues. I've gone through this myself. I found that the SimplePie feed parser has great logic for dealing with this, so I adapted it to my needs in my PHP class XMLParseIntoArray. I think I've expanded on SimplePie's approach a bit, but it's [...]]]></description>
			<content:encoded><![CDATA[<p>Tom Morris is <a href="http://tommorris.org/blog/2007/11/17#When:10:15:19">pulling his hair out dealing with XML character encoding</a> issues. I've gone through this myself. I found that the <a href="http://simplepie.org">SimplePie</a> feed parser has great logic for dealing with this, so I adapted it to my needs in my PHP class <a href="https://code.yabfog.com/svn/feedparser/trunk/class.xmlparseintoarray.php">XMLParseIntoArray</a>. I think I've expanded on SimplePie's approach a bit, but it's still a work in progress. YMMV. Hope this helps.</p>
]]></content:encoded>
			<wfw:commentRss>http://yabfog.com/blog/2007/11/17/character-encoding-help/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
	</item>
		<item>
		<title>PHP command line mode detection</title>
		<link>http://yabfog.com/blog/2007/08/23/php-command-line-mode-detection</link>
		<comments>http://yabfog.com/blog/2007/08/23/php-command-line-mode-detection#comments</comments>
		<pubDate>Thu, 23 Aug 2007 13:41:32 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[uncategorized]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://yabfog.com/wp/2007/08/23/php-command-line-mode-detection/</guid>
		<description><![CDATA[Use a block like this in PHP code to detect whether or not it's running in command line mode as opposed to web server script mode. // if $_ENV['SHELL'] exists, we're probably in command line mode if (array_key_exists('SHELL', $_ENV)) { $this->setOutputMode(MYSQLICIOUS_OUTPUT_CMD); } else { $this->setOutputMode(MYSQLICIOUS_OUTPUT_HTML); }]]></description>
			<content:encoded><![CDATA[<p>Use a block like this in PHP code to detect whether or not it's running in command line mode as opposed to web server script mode.<br />
<code><br />
        // if $_ENV['SHELL'] exists, we're probably in command line mode<br />
        if (array_key_exists('SHELL', $_ENV)) {<br />
            $this->setOutputMode(MYSQLICIOUS_OUTPUT_CMD);<br />
        } else {<br />
            $this->setOutputMode(MYSQLICIOUS_OUTPUT_HTML);<br />
        }<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://yabfog.com/blog/2007/08/23/php-command-line-mode-detection/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
	</item>
		<item>
		<title>Juice-y Python</title>
		<link>http://yabfog.com/blog/2007/06/21/juice-y-python</link>
		<comments>http://yabfog.com/blog/2007/06/21/juice-y-python#comments</comments>
		<pubDate>Fri, 22 Jun 2007 02:09:11 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[uncategorized]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://yabfog.com/blog/2007/06/21/juice-y-python/</guid>
		<description><![CDATA[I use Juice to manage my podcasts. But it doesn't do everything I need, and it's a little buggy, and I want to learn Python anyway. So I decided to download the latest source code and see if I could fix some of the bugs I've noticed and figure out how to extend it to [...]]]></description>
			<content:encoded><![CDATA[<p>I use <a href="http://juicereceiver.sourceforge.net/">Juice</a> to manage my podcasts. But it doesn't do everything I need, and it's a little buggy, and I want to learn Python anyway. So I decided to download the <a href="http://juicereceiver.svn.sourceforge.net/viewvc/juicereceiver/trunk/">latest source code</a> and see if I could fix some of the bugs I've noticed and figure out how to extend it to do everything I need.</p>
<p>So step one was just getting to a point where I could compile it. The source code documentation is incomplete, so here's what I did, starting from scratch.</p>
<ol>
<li>Install <a href="http://www.python.org/">Python 2.5.1</a></li>
<li>Install <a href="https://sourceforge.net/projects/pywin32/">pywin32</a> (I'm on Windows)</li>
<li>Install <a href="http://starship.python.net/crew/mhammond/win32/">mfc71.dll</a> (needed by pywin32)</li>
<li>Install <a href="http://www.py2exe.org/">py2exe</a> (needed to compile Python source code to executable bytecode)</li>
<li>Install <a href="http://www.wxpython.org/">wxPython</a> (for the gui)</li>
<li>Install <a href="http://initd.org/tracker/pysqlite/wiki/pysqlite">pysqlite</a> (may not be necessary, but I knew I'd need it eventually)</li>
<li>Install <a href="http://nsis.sourceforge.net/">NSIS</a> (Nullsoft Scriptable Install System)</li>
<li>Install <a href="http://nsis.sourceforge.net/FindProcDLL_plug-in">NSIS FindProcDLL plug-in</a></li>
</ol>
<p>PHEW!</p>
<p><a href='http://yabfog.com/blog/wp-content/uploads/2007/06/juice223djm.gif' title='Juice v.2.2.3.djm'><img src='http://yabfog.com/blog/wp-content/uploads/2007/06/juice223djm.thumbnail.gif' alt='Juice v.2.2.3.djm'/></a> After all of that, it was actually fairly easy to build and install. However, I made the mistake of trying to upgrade the <a href="http://feedparser.org/">Universal Feed Parser</a>, only to find that although Juice would still compile, install and run, it was silently crapping out while trying to read feeds so it would not actually update my podcasts. I reverted back to the version of UFP bundled with Juice and everything was fine (except for the UFP bugs I was hoping to have solved by using a later version, of course).</p>
<p>I should update this as things progress.</p>
]]></content:encoded>
			<wfw:commentRss>http://yabfog.com/blog/2007/06/21/juice-y-python/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:thumbnail url="http://yabfog.com/blog/wp-content/uploads/2007/06/juice223djm.thumbnail.gif" />
		<media:content url="http://yabfog.com/blog/wp-content/uploads/2007/06/juice223djm.thumbnail.gif" medium="image">
			<media:title type="html">Juice v.2.2.3.djm</media:title>
		</media:content>
	</item>
		<item>
		<title>Leash and Feedparser</title>
		<link>http://yabfog.com/blog/2007/06/03/leash-and-feedparser</link>
		<comments>http://yabfog.com/blog/2007/06/03/leash-and-feedparser#comments</comments>
		<pubDate>Mon, 04 Jun 2007 02:26:21 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[uncategorized]]></category>
		<category><![CDATA[opml]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://yabfog.com/wp/2007/06/03/leash-and-feedparser/</guid>
		<description><![CDATA[Maybe I'll write up something a little more formal in the future. For now, I just want to publish this in case it's useful to someone. Les Orchard posted a blurb that indicated that he was looking for a PHP class to perform HTTP requests with conditional GET support. Well, a while ago I was [...]]]></description>
			<content:encoded><![CDATA[<p>Maybe I'll write up something a little more formal in the future. For now, I just want to publish this in case it's useful to someone.</p>
<p><a href="http://blogs.opml.org/decafbad/2007/05/21#When:10:05:41PM">Les Orchard posted a blurb</a> that indicated that he was looking for a PHP class to perform HTTP requests with conditional GET support. Well, a while ago I was looking for that, too. Because I was working on a replacement for Magpie RSS (see below), I decided to use <a href="http://snoopy.sourceforge.net/">Snoopy</a> as my HTTP client. I then wrote a brief extension, Leash, to provide a cache-enabled front end to Snoopy. Leash automatically caches the HTTP results, the time of the request, and the Last Modified and Etag HTTP headers. When you request a page you've previously requested, Leash first checks to see if the cached copy is older than the maximum cache age you've specified (or the default of 1 hour), and if the cache is too old, Leash performs a conditional GET. The <a href="https://code.yabfog.com/svn/feedparser/trunk/class.leash.php">latest version of Leash</a> (which I bundle with Snoopy) is in my Subversion repository.</p>
<p>Also in that repository is my replacement for <a href="http://magpierss.sourceforge.net/">Magpie RSS</a>. I always liked Magpie, but it didn't quite work for me and I also wanted an OPML parser. So I wrote one. Actually, first I wrote a <a href="https://code.yabfog.com/svn/feedparser/trunk/class.xmlparseintoarray.php">generic PHP XML parser</a>. Then I wrote the <a href="https://code.yabfog.com/svn/feedparser/trunk/class.opmlparse.php">OPML parser</a> and <a href="https://code.yabfog.com/svn/feedparser/trunk/class.feedparse.php">Feed parser</a>.</p>
<p>Sorry, but I currently don't have time for documentation. Or support. That probably makes this of very limited utility to all but the most daring. If you're a PHP junkie, you'll probably be able to peruse the code and get the gist. And here's <a href="http://yabfog.com/files/podcast-add.phps">an example of how I'm using it to help manage my podcasts</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://yabfog.com/blog/2007/06/03/leash-and-feedparser/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
	</item>
		<item>
		<title>WordPress and JavaScript Hijacking</title>
		<link>http://yabfog.com/blog/2007/04/13/wordpress-and-javascript-hijacking</link>
		<comments>http://yabfog.com/blog/2007/04/13/wordpress-and-javascript-hijacking#comments</comments>
		<pubDate>Fri, 13 Apr 2007 15:56:25 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[uncategorized]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://yabfog.com/blog/2007/04/13/wordpress-and-javascript-hijacking/</guid>
		<description><![CDATA[I read this paper that Bruce Schneier linked to regarding JavaScript hijacking. Seems to me that WordPress plugin developers who piggyback on WordPress's builtin security features shouldn't have anything to worry about. Judging from what little buzz there was, I think that's probably true, but I'm interested in others' thoughts.]]></description>
			<content:encoded><![CDATA[<p>I read this <a href="http://www.fortifysoftware.com/servlet/downloads/public/JavaScript_Hijacking.pdf">paper</a> that Bruce Schneier linked to regarding <a href="http://www.schneier.com/blog/archives/2007/04/javascript_hija.html">JavaScript hijacking</a>. Seems to me that WordPress plugin developers who piggyback on WordPress's builtin <a href="http://codex.wordpress.org/Hardening_WordPress">security</a> <a href="http://codex.wordpress.org/Plugin_API/Action_Reference#Advanced_Actions">features</a> shouldn't have anything to worry about.</p>
<p>Judging from what <a href="http://technorati.com/search/www.schneier.com%2Fblog%2Farchives%2F2007%2F04%2Fjavascript_hija.html?sub=toolsearch">little</a> <a href="http://technorati.com/search/www.fortifysoftware.com%2Fnews-events%2Freleases%2F2007%2F2007-04-02.jsp?sub=toolsearch">buzz</a> there was, I think that's probably true, but I'm interested in <a href="http://yabfog.com/blog/2007/04/13/wordpress-and-javascript-hijacking/#respond" rel="nofollow">others' thoughts</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://yabfog.com/blog/2007/04/13/wordpress-and-javascript-hijacking/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
	</item>
		<item>
		<title>Alex King on WordPress Theme Development</title>
		<link>http://yabfog.com/blog/2007/01/25/alex-king-on-wordpress-theme-development</link>
		<comments>http://yabfog.com/blog/2007/01/25/alex-king-on-wordpress-theme-development#comments</comments>
		<pubDate>Thu, 25 Jan 2007 14:39:27 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[uncategorized]]></category>
		<category><![CDATA[blogging]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[themes]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://yabfog.com/wp/2007/01/25/alex-king-on-wordpress-theme-development/</guid>
		<description><![CDATA[tecosystems Redesign &#124; alexking.org: Another good post by Alex King, this one about developing a new theme (and also about mixing business and friendship).]]></description>
			<content:encoded><![CDATA[<p><a href="http://alexking.org/blog/2007/01/19/tecosystems-redesign">tecosystems Redesign | alexking.org</a>: Another good post by Alex King, this one about developing a new theme (and also about mixing business and friendship). </p>
]]></content:encoded>
			<wfw:commentRss>http://yabfog.com/blog/2007/01/25/alex-king-on-wordpress-theme-development/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
	</item>
		<item>
		<title>Answer the door</title>
		<link>http://yabfog.com/blog/2006/11/01/answer-the-door</link>
		<comments>http://yabfog.com/blog/2006/11/01/answer-the-door#comments</comments>
		<pubDate>Thu, 02 Nov 2006 00:28:08 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[uncategorized]]></category>
		<category><![CDATA[opml]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://yabfog.com/wp/2006/11/01/answer-the-door/</guid>
		<description><![CDATA[Dave Winer is looking for a developer to work on Share Your OPML. If you're interested, I strongly urge you to pick up the baton. I can vouch for what Dave says in his post: he's demanding, but he really invests in the people with whom he works. As long as you're not a prima [...]]]></description>
			<content:encoded><![CDATA[<p>Dave Winer is <a href="http://www.scripting.com/2006/11/01.html#opportunityKnocks">looking for a developer</a> to work on <a href="http://share.opml.org">Share Your OPML</a>.</p>
<p>If you're interested, I strongly urge you to pick up the baton. I can vouch for what Dave says in his post: he's demanding, but he really invests in the people with whom he works. As long as you're not a prima donna who cannot handle tough questions about your work, Dave has a lot to offer as a teacher and a boss. Actually, boss is a terrible word for the working relationship you can expect to have with Dave. He's an articulate collaborator with an insight into users' wants and needs that I find amazing.</p>
<p>Opportunity knocks. Answer the door.</p>
]]></content:encoded>
			<wfw:commentRss>http://yabfog.com/blog/2006/11/01/answer-the-door/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
	</item>
	</channel>
</rss>
