<?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>The Olle Jonsson Morningstar &#187; olleolleolle</title>
	<atom:link href="http://ollehost.dk/blog/author/olleolleolle/feed/" rel="self" type="application/rss+xml" />
	<link>http://ollehost.dk/blog</link>
	<description>Special interest.</description>
	<lastBuildDate>Fri, 10 Sep 2010 09:21:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Vintage tools: ffmpeg</title>
		<link>http://ollehost.dk/blog/2010/09/05/vintage-tools-ffmpeg/</link>
		<comments>http://ollehost.dk/blog/2010/09/05/vintage-tools-ffmpeg/#comments</comments>
		<pubDate>Sun, 05 Sep 2010 15:43:22 +0000</pubDate>
		<dc:creator>olleolleolle</dc:creator>
				<category><![CDATA[Forskningsavdelningen]]></category>
		<category><![CDATA[ffmpeg]]></category>

		<guid isPermaLink="false">http://ollehost.dk/blog/?p=807</guid>
		<description><![CDATA[There is a Swiss army knife of video handling that&#8217;s called ffmpeg. A real workhorse. See examples of what it can do. Those are 19 real-world use-cases for this command-line tool. ffmpeg&#8217;s website says: FFmpeg is a complete, cross-platform solution &#8230; <a href="http://ollehost.dk/blog/2010/09/05/vintage-tools-ffmpeg/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>There is a Swiss army knife of video handling that&#8217;s called <a href="http://ffmpeg.org/">ffmpeg</a>. A real workhorse. See <a href="http://www.catswhocode.com/blog/19-ffmpeg-commands-for-all-needs">examples of what it can do</a>. Those are 19 real-world use-cases for this command-line tool.</p>
<p>ffmpeg&#8217;s website says:</p>
<blockquote><p>FFmpeg is a complete, cross-platform solution to record, convert and stream audio and video.</p></blockquote>
<p>It might sound smug, but it&#8217;s quite true. &#8220;Complete.&#8221; Here is a short, reconstructed snapshot of how me and some friends used it, a few weeks ago. </p>
<p>One night, a while ago, me and friends at recreational programming collective Forskningsavdelningen got a very well-defined and fun problem to solve. &#8220;Send a video to this custom-built screen over the Net.&#8221; And the inventor added &#8220;I&#8217;ll be done receiving the bytes you send me in, say 10 minutes.&#8221;</p>
<p>Frantic activity on our side. Us? Yes, me and <a href="http://andthennothing.net/">Jonas</a>.</p>
<p>Should we build a video player plugin? We looked at building plugins for VLC. Hmm. Would take us more than one night. Hard. Then ffmpeg came on the table; my friend was right in just assuming that there&#8217;d be some option to extract frames from a video. <a href="http://www.ffmpeg.org/ffmpeg-doc.html#SEC20">So, we went to the documentation</a>. A flag &#8220;-f&#8221; meant &#8220;apply a filter&#8221;. </p>
<h2>An aside: Creating a film from a series of images</h2>
<p><code>ffmpeg -f image2 -i foo-%03d.jpeg -r 28 -s 96x54 foo.avi</code></p>
<ul>
<li>Use the image2 filter to create a video from a bunch of still images</li>
<li>The existing images have names that match the form foo-001.jpeg, foo-002.jpeg, and so forth</li>
<li>The framerate of the created video should be 28 frames per second</li>
<li>The resulting video should be 96 pixels wide and 54 pixels tall</li>
<li>The output video is named foo.avi</li>
</ul>
<p>Pretty soon we were using Ruby to factor out configuration. When we knew that ffmpeg was able to do the video frame-grabbing, we said &#8220;let&#8217;s create random data, to have something to send over the Net&#8221;. Borrowing <a href="http://snippets.dzone.com/posts/show/4541">code from a snippet website</a>, we skipped reading <a href="http://ruby-doc.org/core/classes/UDPSocket.html">the API for the UDP Socket library</a>.</p>
<p>Trying it, we actually got pixels sent to the screen. &#8220;But we don&#8217;t know if it&#8217;s <em>our</em> noise.&#8221;</p>
<p>Then, the task of reading the image files began. We had begun with JPEG. Difficult format, much compression. Then, PNG. Hmm. Still compressed. RAW didn&#8217;t exist. But, snooping around at the <em>Cats Who Code</em> article about ffmpeg tricks, we found this pearl of wisdom:</p>
<blockquote><p>The following image formats are also availables : PGM, PPM, PAM, PGMYUV, JPEG, GIF, PNG, TIFF, SGI.</p></blockquote>
<p><a href="http://en.wikipedia.org/wiki/.pgm#PPM_example">Wikipedia explains PPM</a>. Wonderful format. From there on out, it was a walk in the park &#8211; apart from wrangling with Ruby strings for a confusing bit.</p>
<p>Well, this was an incomplete and belated recap &#8211; I am not the BBC. &#8211; but I wanted to share it with you, anyway. The kind of fast-paced fun Forskningsavdelningen can provide is hard to get elsewhere.</p>
]]></content:encoded>
			<wfw:commentRss>http://ollehost.dk/blog/2010/09/05/vintage-tools-ffmpeg/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Web tools link dump from last night</title>
		<link>http://ollehost.dk/blog/2010/09/01/web-tools-link-dump-from-last-night/</link>
		<comments>http://ollehost.dk/blog/2010/09/01/web-tools-link-dump-from-last-night/#comments</comments>
		<pubDate>Wed, 01 Sep 2010 08:25:53 +0000</pubDate>
		<dc:creator>olleolleolle</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://ollehost.dk/blog/?p=896</guid>
		<description><![CDATA[Yesterday, at Forskningsavdelningen (geeking every Tuesday night!) we had a blazingly fast run-through of web tools. This link-dump will probably be amended. I had time to set up a Redis, and do a test run with Rediska &#8211; a PHP &#8230; <a href="http://ollehost.dk/blog/2010/09/01/web-tools-link-dump-from-last-night/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Yesterday, at <a href="http://forskningsavd.se/" title="Homepage of hackerspace Forskningsavdelningen">Forskningsavdelningen</a> (geeking every Tuesday night!) we had a blazingly fast run-through of web tools. This link-dump <strong>will probably be amended</strong>.</p>
<p>I had time to set up a <a href="http://code.google.com/p/redis/wiki/QuickStart">Redis</a>, and do a test run with <a href="http://rediska.geometria-lab.ru/" title="Rediska homepage">Rediska</a> &#8211; a PHP interface to Redis. It worked, and it&#8217;s in PHP. I was more impressed with the redis-cli experience. There are many atomic commands in Redis, and the datatypes are quite helpful.</p>
<p>We spent some time walking through a BDD tool for async web framework Node.js: <a href="http://vowsjs.org/">VowsJS</a>. When that was done, we looked at kyuri, the library that can transform a Cucumber feature spec into a skeleton VowsJS &#8220;vow&#8221;. kyuri was used for prenup, a web tool to create Cucumber specs for Node.js projects. prenup was quite alpha, but we sympathized with the concept.</p>
<p>Joel pointed to PHP-based web frameworks &#8220;like <a href="http://www.sinatrarb.com/" title="Ruby web framework">Sinatra</a>&#8220;, and found a few that he rejected. The last man standing was named <a href="http://gluephp.com/" title="Glue is a PHP micro-framework">GluePHP</a>. He can list his gripes with all the others. We looked at Troels&#8217; <a href="http://konstrukt.dk/" title="Konstrukt is a PHP5 web framework">Konstrukt</a>, as well, and it got good reactions. It&#8217;s good, but it&#8217;s nothing like Sinatra.</p>
<p><a href="http://flask.pocoo.org/">Flask is a web microframework</a> which was used at Forskningsavdelningen last night. &#8220;I don&#8217;t know how to use this, so let&#8217;s begin.&#8221; And we begun, and had a website up and running pretty soon. A roadblock in the form of &#8220;convert a regular font file to a PIL-font format&#8221; appeared, and a hell-of-Portfiles ensued. I should start using <a href="http://mxcl.github.com/homebrew/" title="Pretty website for it">Homebrew</a>&#8230;</p>
<p>Oskar had referenced Windows hacker Scott Hanselman, and we praised his <a href="http://www.hanselman.com/blog/HowToChangeTheDefaultBrowserInVisualStudioProgrammaticallyWithPowerShellAndPossiblyPokeYourselfInTheEye.aspx">article on changing default web browser in Visual Studio</a> for it&#8217;s complete hacker attitude. <a href="http://www.hanselman.com/blog/CategoryView.aspx?category=PowerShell">Here is a link to his PowerShell category on his blog.</a></p>
<p>Oh, Hanselman <a href="http://www.hanselman.com/blog/ScottHanselmans2009UltimateDeveloperAndPowerUsersToolListForWindows.aspx">lists Windows tools he uses.</a> </p>
<p>Other stuff, that should be mentioned, so as not to forget:</p>
<p><a href="http://github.com/flogic/whiskey_disk">Whiskey Disk is embarrasingly fast deployments</a> &#8211; their videos, presentations, etc, are very convincing, and &#8220;keep it easy.&#8221; Someone who takes Capistrano down a notch for &#8220;not being simple enough&#8221; should be listened to. The system seems quite capable.</p>
<p><strong>Inspiration</strong>: This morning I saw that <a href="http://github.com/technosophos/DrupalDistroBuilder">some Drupal folks</a> were using <a href="http://github.com/technosophos/DrupalDistroBuilder/blob/master/build.xml#L71">a Phing task</a> to automate fetching and building a customized version of Drupal, for their deployment. They included two useful tasks: help and explain, where help informed about the available options, and explain printed all the variables that would be used when running a phing build. Also, they informed the user of how to change those variables right on the commandline, and gave the tip that they should run the explain task with changed command-line settings. This would verify that Phing had understood the user&#8217;s invocation correctly. </p>
<p><img src="http://img.skitch.com/20100901-nyxqwfwjgk86nhbur6y9h8y396.png" alt="Usage of Phing explain" /></p>
]]></content:encoded>
			<wfw:commentRss>http://ollehost.dk/blog/2010/09/01/web-tools-link-dump-from-last-night/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I&#8217;m Porticus! I&#8217;m Porticus!</title>
		<link>http://ollehost.dk/blog/2010/09/01/im-porticus-im-porticus/</link>
		<comments>http://ollehost.dk/blog/2010/09/01/im-porticus-im-porticus/#comments</comments>
		<pubDate>Wed, 01 Sep 2010 07:59:17 +0000</pubDate>
		<dc:creator>olleolleolle</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://ollehost.dk/blog/?p=887</guid>
		<description><![CDATA[I have yet to start using the popular package management system Homebrew (brew install postgres), so I was happy to find the simple, graphical Porticus package browser, written by a Richard Laing. Porticus is a Cocoa GUI for the MacPorts &#8230; <a href="http://ollehost.dk/blog/2010/09/01/im-porticus-im-porticus/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I have yet to start using the popular package management system <a title="Blog post detailing Homebrew" href="http://www.engineyard.com/blog/2010/homebrew-os-xs-missing-package-manager/">Homebrew</a> (brew install postgres), so I was happy to find the simple, graphical <a href="http://porticus.alittledrop.com/">Porticus package browser</a>, written by a Richard Laing.</p>
<blockquote><p>Porticus is a Cocoa GUI for the MacPorts package manager</p></blockquote>
<p><img src="http://porticus.alittledrop.com/main.jpg" alt="Porticus screenshot" /></p>
<p><a href="http://www.linux.com/archive/articles/126854">A longer Linux Journal article</a> has details. Oh, like journalism.</p>
<p>I can&#8217;t find Mr Laing&#8217;s web presence anywhere. A helpful soul, who hides. Wonderful. A moment later, I found <a href="http://www.linkedin.com/pub/dir/Richard/Laing" title="LinkedIn list of Richard Laings">a long list of Dicks</a> (Laing, that is). Great, now there&#8217;s a haystack of Laingses.</p>
<p>Problem compunded. Done.</p>
]]></content:encoded>
			<wfw:commentRss>http://ollehost.dk/blog/2010/09/01/im-porticus-im-porticus/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Reminds me, I don&#8217;t watch TV</title>
		<link>http://ollehost.dk/blog/2010/09/01/reminds-me-i-dont-watch-tv/</link>
		<comments>http://ollehost.dk/blog/2010/09/01/reminds-me-i-dont-watch-tv/#comments</comments>
		<pubDate>Wed, 01 Sep 2010 07:17:48 +0000</pubDate>
		<dc:creator>olleolleolle</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://ollehost.dk/blog/2010/09/01/reminds-me-i-dont-watch-tv/</guid>
		<description><![CDATA[IMG_8811 Originally uploaded by David Tolnem But, as a wise woman often says: &#8220;&#8230;it&#8217;s not television, it&#8217;s HBO.&#8221;]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin-left: 10px; margin-bottom: 10px;">
<a href="http://www.flickr.com/photos/dlade/4865917671/" title="photo sharing"><img src="http://farm5.static.flickr.com/4095/4865917671_44196a240d_m.jpg" alt="" style="border: solid 2px #000000;" /></a><br />
<br />
<span style="font-size: 0.9em; margin-top: 0px;"><br />
<a href="http://www.flickr.com/photos/dlade/4865917671/">IMG_8811</a><br />
<br />
Originally uploaded by <a href="http://www.flickr.com/people/dlade/">David Tolnem</a><br />
</span>
</div>
<p>But, as a wise woman often says: &#8220;&#8230;it&#8217;s not television, it&#8217;s HBO.&#8221;<br />
<br clear="all" /></p>
]]></content:encoded>
			<wfw:commentRss>http://ollehost.dk/blog/2010/09/01/reminds-me-i-dont-watch-tv/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Weaving at home</title>
		<link>http://ollehost.dk/blog/2010/08/30/weaving-at-home/</link>
		<comments>http://ollehost.dk/blog/2010/08/30/weaving-at-home/#comments</comments>
		<pubDate>Mon, 30 Aug 2010 15:21:31 +0000</pubDate>
		<dc:creator>olleolleolle</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://ollehost.dk/blog/2010/08/30/weaving-at-home/</guid>
		<description><![CDATA[Weaving at home Originally uploaded by olleolleolle This picture is now a part of a huge collection of images of looms. I just love the Internet for that.]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin-left: 10px; margin-bottom: 10px;">
<a href="http://www.flickr.com/photos/olleolleolle/4881671998/" title="photo sharing"><img src="http://farm5.static.flickr.com/4096/4881671998_1fdf7f1bdf_m.jpg" alt="" style="border: solid 2px #000000;" /></a><br />
<br />
<span style="font-size: 0.9em; margin-top: 0px;"><br />
<a href="http://www.flickr.com/photos/olleolleolle/4881671998/">Weaving at home</a><br />
<br />
Originally uploaded by <a href="http://www.flickr.com/people/olleolleolle/">olleolleolle</a><br />
</span>
</div>
<p>This picture is now a part of a huge collection of images of looms. I just love the Internet for that.<br />
<br clear="all" /></p>
]]></content:encoded>
			<wfw:commentRss>http://ollehost.dk/blog/2010/08/30/weaving-at-home/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using find</title>
		<link>http://ollehost.dk/blog/2010/08/30/880/</link>
		<comments>http://ollehost.dk/blog/2010/08/30/880/#comments</comments>
		<pubDate>Mon, 30 Aug 2010 09:05:41 +0000</pubDate>
		<dc:creator>olleolleolle</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://ollehost.dk/blog/?p=880</guid>
		<description><![CDATA[When not using ack, my favorite search tool, you can still exclude SVN folders. Here is an example of me looking for a file: $ find . -not \( -name .svn -prune \) -name 'EosController*' ./web/models/controllers/EosController.php ./web/models/controllers/EosControllerTest.php This mode of &#8230; <a href="http://ollehost.dk/blog/2010/08/30/880/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>When not using <a href="http://betterthangrep.com/">ack</a>, my favorite search tool, you can still exclude SVN folders. Here is an example of me looking for a file:</p>
<p><code>$ find . -not \( -name .svn -prune \) -name 'EosController*'<br />
    ./web/models/controllers/EosController.php<br />
    ./web/models/controllers/EosControllerTest.php<br />
</code></p>
<p>This mode of expression might be better for your scripting needs.</p>
]]></content:encoded>
			<wfw:commentRss>http://ollehost.dk/blog/2010/08/30/880/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Contribute: Low-hanging fruit in PEAR</title>
		<link>http://ollehost.dk/blog/2010/08/09/low-hanging-fruit-in-pear/</link>
		<comments>http://ollehost.dk/blog/2010/08/09/low-hanging-fruit-in-pear/#comments</comments>
		<pubDate>Mon, 09 Aug 2010 08:36:27 +0000</pubDate>
		<dc:creator>olleolleolle</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://ollehost.dk/blog/?p=835</guid>
		<description><![CDATA[Here is a list of very simple bugs to fix, to make PEAR better: Deprecation bugs for PEAR code. I fixed two. The list was a wee bit shorter when I reloaded its tab. How many of these bugs remain?]]></description>
			<content:encoded><![CDATA[<p>Here is a list of very simple bugs to fix, to make <a href="http://pear.php.net">PEAR</a> better: <a href="http://test.pear.php.net/unit-test-results/deprecated.txt">Deprecation bugs for PEAR code</a>.</p>
<p>I fixed two. The list was a wee bit shorter when I reloaded its tab.</p>
<p><a href="http://ollehost.dk/media/pear-bugs/">How many of these bugs remain?</a></p>
]]></content:encoded>
			<wfw:commentRss>http://ollehost.dk/blog/2010/08/09/low-hanging-fruit-in-pear/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Workstyle: Add vendor tests before using new library code</title>
		<link>http://ollehost.dk/blog/2010/08/03/workstyle-add-vendor-tests-before-using-new-library-code/</link>
		<comments>http://ollehost.dk/blog/2010/08/03/workstyle-add-vendor-tests-before-using-new-library-code/#comments</comments>
		<pubDate>Tue, 03 Aug 2010 09:19:05 +0000</pubDate>
		<dc:creator>olleolleolle</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jstestdriver]]></category>
		<category><![CDATA[legacy]]></category>
		<category><![CDATA[maintenance]]></category>

		<guid isPermaLink="false">http://ollehost.dk/blog/?p=809</guid>
		<description><![CDATA[Hello again. Here is a snag-resolving article about a maintenance problem. There should be a thick volume called &#8220;Web Maintenance Pearls&#8221;, which everyone should be forced to read. Here&#8217;s the situation: You want to throw out a dependency. It&#8217;s an &#8230; <a href="http://ollehost.dk/blog/2010/08/03/workstyle-add-vendor-tests-before-using-new-library-code/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Hello again. Here is a snag-resolving article about a maintenance problem. There should be a thick volume called &#8220;Web Maintenance Pearls&#8221;, which everyone should be forced to read.</p>
<p>Here&#8217;s the situation: You want to <strong>throw out a dependency</strong>. It&#8217;s an older JavaScript library, and <strong>you have a replacement lined up</strong>. Some plugin for a popular framework that you already depend on.</p>
<p>Add a couple of <a href="http://code.google.com/p/js-test-driver/wiki/GettingStarted" title="Getting started with jsTestDriver">jsTestDriver</a> <strong>&#8220;VendorTests&#8221; test cases</strong>: proof that the new library works as advertised, defined without the noise of your application&#8217;s behavior. This test will run faster than manually testing your web GUI.</p>
<p>Write the vendor behavior test:</p>
<pre><code>
/** Tests of used vendor framework functions. */
var VendorTests = TestCase("VendorTests", {

    /**
     * MochiKit &#038; the jQuery BBQ plugin should have the same URL querystring-
     * parsing functionality.
     */
    testMochiKitAndJqueryBBQWorkTheSame : function(){
        var qs = 'elvis=1977&#038;reagan=2004&#038;lee=1973',
            ob = {elvis:1977, reagan:2004, lee:1973},
            mObj = MochiKit.Base.parseQueryString(qs),
            jObj = jQuery.deparam(qs),
            mQs = '',
            jQs = '';

        //jstestdriver.console.log("JsTestDriver", "Elvis died in 1977:"+jObj.elvis);
        assertEquals(1977, jObj.elvis);
        assertEquals(2004, mObj.reagan);
        assertEquals(mObj, jObj);

        mQs = MochiKit.Base.queryString(ob);
        jQs = jQuery.param(ob);
        assertEquals(mQs, jQs);
    }
});
</code></pre>
<p>If you want to learn much more about hard maintenance problems, and how to crawl out from under them, <a href="http://www.michaelfeathers.com/">read Michael Feathers</a>.</p>
<p>That was the gist of it.</p>
<p><strong>Snag expansion: Perhaps the jsTestDriver functions get overwritten, by code you import</strong></p>
<p>As you include your target dependency &#8211; MochiKit &#8211; in your list of imported JavaScript files, all your tests still pass. A good sign. You add an empty test-case, with a <tt>fail("Good. If this is NOT seen, it means is trouble!");</tt>, just to see if the testing tool picks it up. All tests, including the new one, pass. A bad sign. <em>Good thing you were suspicious. Paranoid, almost.</em></p>
<p>What just happened, and how to fix it:</p>
<ul>
<li>MochiKit exported all its functions to the global namespace, by default. This includes name-clashing functions that thrash jsTestDriver&#8217;s same-name functions. <em>Thanks to <a href="http://stackoverflow.com/users/230253/alex-brasetvik">brasetvik</a> for noting!</em></li>
<li>You can turn off that default behavior. Add this single line of code to a file, say <tt>initMochiKitWithoutGlobals.js</tt>: <tt>MochiKit = {__export__: false};</tt></li>
<li><del datetime="2010-08-03T09:29:27+00:00">Include the new JS file in the <tt>jsTestDriver.conf</tt> &#8220;load&#8221; section, just before MochiKit:</del></li>
</ul>
<pre><code>
<del datetime="2010-08-03T09:29:27+00:00">server: http://localhost:9876

load:
  - web/scripts/jquery.js
  - web/scripts/tk/mochikit/initMochiKitWithoutGlobals.js
  - web/scripts/tk/mochikit/packed/MochiKit/MochiKit.js
  - web/scripts/jquery.ba-bbq.js
  - web/scripts/your_web_application.js
  - tests/js/your_web_application/*.js
</del></code>
</pre>
<p><strong>Update</strong>: Currently, my way of making MochiKit.js be non-export configured, is to add the <tt>MochiKit = {__export__: false};</tt> line instead of the initial <tt>MochiKit = {};</tt> in the <tt>MochiKit.js</tt> file itself. (Since I&#8217;m moving away from that library, I figured it&#8217;s a cost I can take. It&#8217;s not like I&#8217;ll upgrade it, anyway.) Researching why that variable does not seem to get persisted, perhaps it&#8217;s a load order snag of some kind. <tt>window.MochiKit</tt> did not work. Hm. I&#8217;ll let you know when I nail it.</p>
<p>So, now your testing library runs correctly again. <strong>Cursed be global namespace pollution.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://ollehost.dk/blog/2010/08/03/workstyle-add-vendor-tests-before-using-new-library-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Thank you, MacPorts: How to add OpenSSL support to your PHP</title>
		<link>http://ollehost.dk/blog/2010/07/23/thank-you-macports-php5-ssl/</link>
		<comments>http://ollehost.dk/blog/2010/07/23/thank-you-macports-php5-ssl/#comments</comments>
		<pubDate>Fri, 23 Jul 2010 07:43:29 +0000</pubDate>
		<dc:creator>olleolleolle</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[macports]]></category>
		<category><![CDATA[thankyou]]></category>

		<guid isPermaLink="false">http://ollehost.dk/blog/?p=794</guid>
		<description><![CDATA[Many interesting web APIs require SSL, for instance Google&#8217;s GData API. This adds OpenSSL support to your MacPorts-installed PHP, so that you can use the &#8220;ssl&#8221; transport layer: sudo port install php5-openssl Done. Thanks, jmr_mp in the MacPorts IRC channel, &#8230; <a href="http://ollehost.dk/blog/2010/07/23/thank-you-macports-php5-ssl/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Many interesting web APIs require SSL, for instance Google&#8217;s GData API. This adds OpenSSL support to your MacPorts-installed PHP, so that you can use the &#8220;ssl&#8221; transport layer:</p>
<p><tt>sudo port install php5-openssl</tt></p>
<p><em>Done.</em></p>
<p>Thanks, <tt>jmr_mp</tt> in the MacPorts IRC channel, for telling me about the existence of this short and neat patch-applying port, so that I could spare you, dear reader, from an introductory tutorial on how to edit Portfiles that don&#8217;t add the bells and whistles that you want. I had one written, but the above is saner. There&#8217;s always another hood underneath the hood. You don&#8217;t have to fix everything. Some things should just be fixed by the package system.</p>
<p>Here&#8217;s that Portfile:</p>
<pre>
$ port cat php5-openssl
# $Id: Portfile 69619 2010-07-11 03:00:23Z ryandesign@macports.org $

PortSystem              1.0
PortGroup               php5extension 1.0

php5extension.setup     openssl 5.3.2 bundled
revision                1
categories-append       devel security
platforms               darwin
maintainers             ryandesign

description             a PHP interface to OpenSSL signature-generation \
                        and -verification and data-encryption and \
                        -decryption functions

long_description        ${description}

checksums               md5     46f500816125202c48a458d0133254a4 \
                        sha1    79ea4ee3da3a7542d1e348ac963a5b38bcbb4b6b \
                        rmd160  60a8aac0d51511ecaf8dcad9d31bdf072c0c99cf

depends_lib-append      port:openssl

post-extract {
    move ${build.dir}/config0.m4 ${build.dir}/config.m4
}

configure.args-append   --with-openssl=${prefix}

platform macosx {
    configure.args-append --with-kerberos=/usr
}

use_parallel_build      yes
</pre>
]]></content:encoded>
			<wfw:commentRss>http://ollehost.dk/blog/2010/07/23/thank-you-macports-php5-ssl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Discourse</title>
		<link>http://ollehost.dk/blog/2010/07/07/discourse/</link>
		<comments>http://ollehost.dk/blog/2010/07/07/discourse/#comments</comments>
		<pubDate>Wed, 07 Jul 2010 11:23:16 +0000</pubDate>
		<dc:creator>olleolleolle</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[words]]></category>

		<guid isPermaLink="false">http://ollehost.dk/blog/?p=789</guid>
		<description><![CDATA[How to be immortal: become a word. Maes-Garreau Law. Via article about AI.]]></description>
			<content:encoded><![CDATA[<p>How to be immortal: become a word. <a href="http://en.wikipedia.org/wiki/Maes-Garreau_Law">Maes-Garreau Law</a>.</p>
<p>Via <a href="http://blog.steinberg.org/?p=11">article about AI</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ollehost.dk/blog/2010/07/07/discourse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
