<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">
    <title>bulknews.typepad.com</title>
    
    <link rel="hub" href="http://hubbub.api.typepad.com/" />
    <link rel="alternate" type="text/html" href="http://bulknews.typepad.com/blog/" />
    <id>tag:typepad.com,2003:weblog-11218</id>
    <updated>2009-11-11T03:09:36-08:00</updated>
    <subtitle>Tatsuhiko Miyagawa's blog to discuss mostly tech and nerdy stuff.</subtitle>
    <generator uri="http://www.typepad.com/">TypePad</generator>
    <link rel="self" href="http://feeds.feedburner.com/typepad/blog" type="application/atom+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry>
        <title>Tatsumaki is now on CPAN</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/typepad/blog/~3/d6MFZmwyrNs/tatsumaki-is-now-on-cpan.html" />
        <link rel="replies" type="text/html" href="http://bulknews.typepad.com/blog/2009/11/tatsumaki-is-now-on-cpan.html" thr:count="1" thr:updated="2009-11-11T03:19:54-08:00" />
        <id>tag:typepad.com,2003:post-6a00d8345206d069e20120a6783feb970b</id>
        <published>2009-11-11T03:09:36-08:00</published>
        <updated>2009-11-11T19:21:20-08:00</updated>
        <summary>Tatsuhiko Miyagawa / Tatsumaki-0.1000 - search.cpan.org Tatsumaki, my tiny Perl port of Tornado using Plack and AnyEvent originally started as a proof of concept to test and demonstrate PSGI's streaming interface but its chat app using a simple long-poll Comet got a lot of attentions from people: Audrey Tang used the MessageQueue and comet interface to build multi-person SocialCalc, Daisuke Maki packaged the chat app, gugod is building an iPhone IRC client and jshirley is doing some interesting to stream content with YUI. Actually, by "tiny port" I mean Tatsumaki does most of the things Tornado does, but in a very limited but simple way: simple embedded Perl templates, non-blocking I/O for everything including built-in HTTP clients, long-poll Comet ready...</summary>
        <author>
            <name>miyagawa</name>
        </author>
        
        
<content type="xhtml" xml:lang="ja-JP" xml:base="http://bulknews.typepad.com/blog/">
<div xmlns="http://www.w3.org/1999/xhtml"><a href="http://search.cpan.org/~miyagawa/Tatsumaki-0.1000/">Tatsuhiko Miyagawa / Tatsumaki-0.1000 - search.cpan.org</a><p><a href="http://search.cpan.org/~miyagawa/Tatsumaki-0.1000/" /></p><p>Tatsumaki, my tiny Perl port of <a href="http://www.tornadoweb.org/">Tornado</a> using <a href="http://plackperl.org/">Plack</a> and <a href="http://search.cpan.org/dist/AnyEvent">AnyEvent</a> originally started as a proof of concept to test and demonstrate <a href="http://bulknews.typepad.com/blog/2009/10/psgiplack-streaming-is-now-complete.html">PSGI's streaming interface</a> but its chat app using a simple long-poll Comet got a lot of attentions from people: </p><p>Audrey Tang used the MessageQueue and comet interface to build <a href="http://www.audreyt.org/hopscotch-yapctiny.pdf">multi-person SocialCalc</a>, Daisuke Maki packaged <a href="http://github.com/lestrrat/Hamaki">the chat app</a>, gugod is building <a href="http://gugod.org/2009/11/the-tatsumaki-move.html">an iPhone IRC client</a> and <a href="http://www.coldhardcode.com/">jshirley</a> is doing some interesting to stream content with YUI.</p><p>Actually, by "tiny port" I mean Tatsumaki does most of the things Tornado does, but in a very limited but simple way: simple embedded Perl templates, non-blocking I/O for everything including built-in HTTP clients, long-poll Comet ready MessageQueue API, simple server side push (aka firehose) and Digg's multipart XHR push as a Comet replacement. Yes, it is really simple but exciting :)</p>

<p>I really didn't want to increase the number of modules/applications i maintain but now it has proven very useful when last night I wrote a new PubSubHubbub hub <a href="http://github.com/miyagawa/Subfeedr">Subfeedr</a> using Tatsumaki, Plack, AnyEvent and Redis in 3 hours: it's a polling PuSH proxy and everything works in the single process in the event loop non-blockingly (so nice).</p>

<p>So anyway, it's now <a href="http://search.cpan.org/~miyagawa/Tatsumaki/">on CPAN</a> as well as on <a href="http://github.com/miyagawa/Tatsumaki">github</a> , which makes it a little harder for me to change APIs and what not, but no worries, everything is undocumented, so you still have to peek at the code to do what you want to do :)</p><p /></div>
</content>


    <feedburner:origLink>http://bulknews.typepad.com/blog/2009/11/tatsumaki-is-now-on-cpan.html</feedburner:origLink></entry>
    <entry>
        <title>I/O bound HTTP clients in web frameworks</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/typepad/blog/~3/DGHXuMm2OoI/io-bound-http-clients-in-web-frameworks.html" />
        <link rel="replies" type="text/html" href="http://bulknews.typepad.com/blog/2009/11/io-bound-http-clients-in-web-frameworks.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a00d8345206d069e20128756e7008970c</id>
        <published>2009-11-10T00:09:25-08:00</published>
        <updated>2009-11-10T00:13:19-08:00</updated>
        <summary>If the server environment supports it the client will automatically run asynchronous and allow the server to handle more requests while waiting for the client. In environments such as CGI and FastCGI the client will simply fallback to blocking until it is finished. Multiple client requests will always be handled parallel though and never block each other. via labs.kraih.com Congrats sri on his progress on Mojo project. I'm really glad my Tatsumaki framework still has a relevant competitor :) Here's the code to do that non-blocking proxy request in his blog post, as a web handler in Tatsumaki. It's built on top of Plack and AnyEvent, so it handles multiple requests in parallel non-blockingly and you can use whatever Plack...</summary>
        <author>
            <name>miyagawa</name>
        </author>
        
        
<content type="xhtml" xml:lang="ja-JP" xml:base="http://bulknews.typepad.com/blog/">
<div xmlns="http://www.w3.org/1999/xhtml"><blockquote>If the server environment supports it the client will automatically run asynchronous and allow the server to handle more requests while waiting for the client. In environments such as CGI and FastCGI the client will simply fallback to blocking until it is finished. Multiple client requests will always be handled parallel though and never block each other.<p><a href="http://labs.kraih.com/blog/2009/11/mojolicious-0999901-released.html">via labs.kraih.com</a></p></blockquote>

<p>Congrats sri on his progress on Mojo project. I'm really glad my <a href="http://github.com/miyagawa/Tatsumaki">Tatsumaki framework</a> still has a relevant competitor :)</p>

<p>Here's the code to do that non-blocking proxy request in his blog post, as a web handler in Tatsumaki.</p>

<p /><script src="http://gist.github.com/230736.js" /><p />

<p>It's built on top of Plack and AnyEvent, so it handles multiple requests in parallel non-blockingly and you can use whatever Plack middleware components and AnyEvent aware modules to do non-blocking work, and Tatsumaki also falls back to the blocking mode in Apache, FastCGI and CGI if it makes sense.</p>

<p>You can see more examples of doing I/O bound response, server push (streaming or Multipart XHR) and Comet long-poll in <a href="http://github.com/miyagawa/Tatsumaki/tree/master/eg/">Tatsumaki's eg/ directory</a>.</p></div>
</content>


    <feedburner:origLink>http://bulknews.typepad.com/blog/2009/11/io-bound-http-clients-in-web-frameworks.html</feedburner:origLink></entry>
    <entry>
        <title>Historic Indie anime on Nico Nico</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/typepad/blog/~3/E175BuI7Oc0/historic-indie-anime-on-nico-nico.html" />
        <link rel="replies" type="text/html" href="http://bulknews.typepad.com/blog/2009/11/historic-indie-anime-on-nico-nico.html" thr:count="2" thr:updated="2009-11-11T15:58:49-08:00" />
        <id>tag:typepad.com,2003:post-6a00d8345206d069e20120a663f438970b</id>
        <published>2009-11-08T16:33:22-08:00</published>
        <updated>2009-11-08T16:33:22-08:00</updated>
        <summary>【ニコニコ動画】自主制作アニメ - フミコの告白 via www.nicovideo.jp A-Amazing indie Anime!</summary>
        <author>
            <name>miyagawa</name>
        </author>
        
        
<content type="xhtml" xml:lang="ja-JP" xml:base="http://bulknews.typepad.com/blog/">
<div xmlns="http://www.w3.org/1999/xhtml"><script src="http://ext.nicovideo.jp/thumb_watch/sm8750089" type="text/javascript" /><noscript><a href="http://www.nicovideo.jp/watch/sm8750089">【ニコニコ動画】自主制作アニメ - フミコの告白</a></noscript>

<p><small>via <a href="http://www.nicovideo.jp/watch/sm8750089">www.nicovideo.jp</a></small></p>

<p>A-Amazing indie Anime!</p></div>
</content>


    <feedburner:origLink>http://bulknews.typepad.com/blog/2009/11/historic-indie-anime-on-nico-nico.html</feedburner:origLink></entry>
    <entry>
        <title>AnyEvent::Redis</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/typepad/blog/~3/QniFoBzJdKU/anyeventredis.html" />
        <link rel="replies" type="text/html" href="http://bulknews.typepad.com/blog/2009/11/anyeventredis.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a00d8345206d069e201287564a3ce970c</id>
        <published>2009-11-08T15:48:21-08:00</published>
        <updated>2009-11-08T15:48:21-08:00</updated>
        <summary>miyagawa's AnyEvent-Redis at master - GitHub Last night I hacked a little bit on a non-blocking Perl client for Redis (#nosql Key-value store) using AnyEvent. It's now available on github and CPAN.</summary>
        <author>
            <name>miyagawa</name>
        </author>
        
        
<content type="xhtml" xml:lang="ja-JP" xml:base="http://bulknews.typepad.com/blog/">
<div xmlns="http://www.w3.org/1999/xhtml"><a href="http://github.com/miyagawa/AnyEvent-Redis">miyagawa's AnyEvent-Redis at master - GitHub</a>

<p>Last night I hacked a little bit on a non-blocking Perl client for Redis (#nosql Key-value store) using AnyEvent. It's now available on github and CPAN.</p></div>
</content>


    <feedburner:origLink>http://bulknews.typepad.com/blog/2009/11/anyeventredis.html</feedburner:origLink></entry>
    <entry>
        <title>Six Apart HQ</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/typepad/blog/~3/L39prCTiE1I/six-apart-hq.html" />
        <link rel="replies" type="text/html" href="http://bulknews.typepad.com/blog/2009/11/six-apart-hq.html" thr:count="1" thr:updated="2009-11-11T16:57:46-08:00" />
        <id>tag:typepad.com,2003:post-6a00d8345206d069e20120a6aff0f8970c</id>
        <published>2009-11-05T23:08:27-08:00</published>
        <updated>2009-11-05T23:08:27-08:00</updated>
        <summary>via www.flickr.com Cool that Google Maps now displays the building names on their maps. It's kind of odd our HQ is on the street though :)</summary>
        <author>
            <name>miyagawa</name>
        </author>
        
        
<content type="xhtml" xml:lang="ja-JP" xml:base="http://bulknews.typepad.com/blog/">
<div xmlns="http://www.w3.org/1999/xhtml"><img alt="loc: 178 Bluxome St. San Francisco CA US - Google Maps" height="212" src="http://farm4.static.flickr.com/3514/4079207309_54de15d1d5.jpg" width="305" />
<p><small>via <a href="http://www.flickr.com/photos/bulknews/4079207309/">www.flickr.com</a></small></p>

<p>Cool that Google Maps now displays the building names on their maps. It's kind of odd our HQ is on the street though :)</p></div>
</content>


    <feedburner:origLink>http://bulknews.typepad.com/blog/2009/11/six-apart-hq.html</feedburner:origLink></entry>
    <entry>
        <title>3D Dot Game Heroes</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/typepad/blog/~3/Kfq8ySqHOR4/3d-dot-game-heroes.html" />
        <link rel="replies" type="text/html" href="http://bulknews.typepad.com/blog/2009/11/3d-dot-game-heroes.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a00d8345206d069e20120a6afa4a1970c</id>
        <published>2009-11-05T20:07:01-08:00</published>
        <updated>2009-11-05T20:07:01-08:00</updated>
        <summary>via blog.livedoor.jp Collection of user-generated three-dimension dot game characters. Love it!</summary>
        <author>
            <name>miyagawa</name>
        </author>
        
        
<content type="xhtml" xml:lang="ja-JP" xml:base="http://bulknews.typepad.com/blog/">
<div xmlns="http://www.w3.org/1999/xhtml"><img src="http://image.blog.livedoor.jp/insidears/imgs/e/1/e186bc68.jpg" width="500" />

<p><small>via <a href="http://blog.livedoor.jp/insidears/archives/52061933.html">blog.livedoor.jp</a></small></p>

<p>Collection of user-generated three-dimension dot game characters. Love it!</p></div>
</content>


    <feedburner:origLink>http://bulknews.typepad.com/blog/2009/11/3d-dot-game-heroes.html</feedburner:origLink></entry>
    <entry>
        <title>Far Away</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/typepad/blog/~3/6l59qx3IFnU/far-away.html" />
        <link rel="replies" type="text/html" href="http://bulknews.typepad.com/blog/2009/11/far-away.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a00d8345206d069e20120a658e0c4970b</id>
        <published>2009-11-05T17:07:16-08:00</published>
        <updated>2009-11-05T17:07:16-08:00</updated>
        <summary>【ニコニコ動画】初音ミク Project DIVA 「Far Away（PV）」 I love this Miku song by kz livetune.</summary>
        <author>
            <name>miyagawa</name>
        </author>
        
        
<content type="xhtml" xml:lang="ja-JP" xml:base="http://bulknews.typepad.com/blog/">
<div xmlns="http://www.w3.org/1999/xhtml"><script src="http://ext.nicovideo.jp/thumb_watch/sm8513638" type="text/javascript" /><noscript><a href="http://www.nicovideo.jp/watch/sm8513638">【ニコニコ動画】初音ミク Project DIVA 「Far Away（PV）」</a></noscript>

<p>I love this Miku song by kz livetune.</p></div>
</content>


    <feedburner:origLink>http://bulknews.typepad.com/blog/2009/11/far-away.html</feedburner:origLink></entry>
    <entry>
        <title>Simon Cozens | I finally get PSGI and Plack!</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/typepad/blog/~3/j1i-Gz7pN4o/simon-cozens-i-finally-get-psgi-and-plack.html" />
        <link rel="replies" type="text/html" href="http://bulknews.typepad.com/blog/2009/11/simon-cozens-i-finally-get-psgi-and-plack.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a00d8345206d069e20120a658cecb970b</id>
        <published>2009-11-05T17:05:11-08:00</published>
        <updated>2009-11-05T17:05:11-08:00</updated>
        <summary>For the past few months I've been meaning to get around to understanding PSGI and Plack; for various reasons, I guess. First, because it's always good to keep abreast of what's going on in the programming world; second, because they're by Miyagawa, and really, anything by Miyagawa is worth looking into; third, because I've been writing a bunch of different web applications recently and wanted to know what the state of the art was. via www.simon-cozens.org Great post about PSGI and Plack by Simon Cozens. Must read.</summary>
        <author>
            <name>miyagawa</name>
        </author>
        
        
<content type="xhtml" xml:lang="ja-JP" xml:base="http://bulknews.typepad.com/blog/">
<div xmlns="http://www.w3.org/1999/xhtml"><blockquote>For the past few months I've been meaning to get around to understanding <a href="http://plackperl.org/">PSGI and Plack</a>; for various reasons, I guess. First, because it's always good to keep abreast of what's going on in the programming world; second, because they're by <a href="http://bulknews.typepad.com/">Miyagawa</a>, and really, anything by Miyagawa is worth looking into; third, because I've been writing a bunch of different web applications recently and wanted to know what the state of the art was.</blockquote>

<p><small>via <a href="http://www.simon-cozens.org/content/i-finally-get-psgi-and-plack">www.simon-cozens.org</a></small></p>

<p>Great post about PSGI and Plack by Simon Cozens. Must read.</p></div>
</content>


    <feedburner:origLink>http://bulknews.typepad.com/blog/2009/11/simon-cozens-i-finally-get-psgi-and-plack.html</feedburner:origLink></entry>
    <entry>
        <title>HOW TO: embed nicovideo.jp videos on your site</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/typepad/blog/~3/-q0D9vYr348/how-to-embed-nicovideojp-videos-on-your-site.html" />
        <link rel="replies" type="text/html" href="http://bulknews.typepad.com/blog/2009/11/how-to-embed-nicovideojp-videos-on-your-site.html" thr:count="3" thr:updated="2009-11-06T12:58:05-08:00" />
        <id>tag:typepad.com,2003:post-6a00d8345206d069e20120a64d86cf970b</id>
        <published>2009-11-02T21:47:05-08:00</published>
        <updated>2009-11-02T21:50:36-08:00</updated>
        <summary>Nico Nico Douga updated their site to version "(9)" a couple of days ago and apparently they got rid of the annoying restriction of the referral domain to embed their videos with the flash. Here's the tag to embed their video in any site (you should replace the sm123456789 with the actual Video ID: </summary>
        <author>
            <name>miyagawa</name>
        </author>
        
        
<content type="xhtml" xml:lang="ja-JP" xml:base="http://bulknews.typepad.com/blog/">
<div xmlns="http://www.w3.org/1999/xhtml"><p><a href="http://www.nicovideo.jp/">Nico Nico Douga</a> updated their site to version "(9)" a couple of days ago and apparently they got rid of the annoying restriction of the referral domain to embed their videos with the flash.</p>

<p>Here's the tag to embed their video in any site (you should replace the sm123456789 with the actual Video ID:</p>

<p /><pre>&lt;script type="text/javascript"
 src="http://ext.nicovideo.jp/thumb_watch/sm123456789"&gt;&lt;/script&gt;</pre></div>
</content>


    <feedburner:origLink>http://bulknews.typepad.com/blog/2009/11/how-to-embed-nicovideojp-videos-on-your-site.html</feedburner:origLink></entry>
    <entry>
        <title>Testing NicoVideo embed</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/typepad/blog/~3/GAanktK6iiQ/testing-nicovideo-embed.html" />
        <link rel="replies" type="text/html" href="http://bulknews.typepad.com/blog/2009/11/testing-nicovideo-embed.html" thr:count="1" thr:updated="2009-11-02T21:37:25-08:00" />
        <id>tag:typepad.com,2003:post-6a00d8345206d069e20120a64d8543970b</id>
        <published>2009-11-02T21:36:19-08:00</published>
        <updated>2009-11-02T21:36:19-08:00</updated>
        <summary>via www.nicovideo.jp Great OP from Bakemonogatari.</summary>
        <author>
            <name>miyagawa</name>
        </author>
        
        
<content type="xhtml" xml:lang="ja-JP" xml:base="http://bulknews.typepad.com/blog/">
<div xmlns="http://www.w3.org/1999/xhtml"><script src="http://ext.nicovideo.jp/thumb_watch/sm8373589" />
<p><small>via <a href="http://www.nicovideo.jp/watch/sm8373589">www.nicovideo.jp</a></small></p>

<p>Great OP from Bakemonogatari.</p></div>
</content>


    <feedburner:origLink>http://bulknews.typepad.com/blog/2009/11/testing-nicovideo-embed.html</feedburner:origLink></entry>
    <entry>
        <title>Updated the blog design</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/typepad/blog/~3/EaBWreRCOvc/updated-the-blog-design.html" />
        <link rel="replies" type="text/html" href="http://bulknews.typepad.com/blog/2009/10/updated-the-blog-design.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a00d8345206d069e20120a68e21ea970c</id>
        <published>2009-10-29T14:27:46-07:00</published>
        <updated>2009-10-29T14:27:46-07:00</updated>
        <summary>via www.flickr.com Yeah, the new theme rocks. The banner photo was taken in Koh Samui in 2006 with my pretty old Canon point-and-shoot camera. The photo is obviously retouched a little bit with Picasa to look better, though :)</summary>
        <author>
            <name>miyagawa</name>
        </author>
        
        
<content type="xhtml" xml:lang="ja-JP" xml:base="http://bulknews.typepad.com/blog/">
<div xmlns="http://www.w3.org/1999/xhtml"><img alt="20060920 Koh Samui 272" height="375" src="http://farm1.static.flickr.com/101/256237598_e5560dfe67.jpg" width="500" />
<p><small>via <a href="http://www.flickr.com/photos/bulknews/256237598/in/photostream/">www.flickr.com</a></small></p>

<p>Yeah, the new theme rocks.</p>

<p>The banner photo was taken in Koh Samui in 2006 with my pretty old Canon point-and-shoot camera. The photo is obviously retouched a little bit with Picasa to look better, though :)</p></div>
</content>


    <feedburner:origLink>http://bulknews.typepad.com/blog/2009/10/updated-the-blog-design.html</feedburner:origLink></entry>
    <entry>
        <title>perldoc-search</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/typepad/blog/~3/Slj_z4G0dEU/perldoc-search.html" />
        <link rel="replies" type="text/html" href="http://bulknews.typepad.com/blog/2009/10/perldoc-search.html" thr:count="3" thr:updated="2009-11-11T14:11:57-08:00" />
        <id>tag:typepad.com,2003:post-6a00d8345206d069e20120a63723a5970b</id>
        <published>2009-10-29T14:01:20-07:00</published>
        <updated>2009-10-29T14:01:20-07:00</updated>
        <summary>Joshua ben Jore / App-Perldoc-Search-0.03 - search.cpan.org I've been always having problems locating the right POD files when I deal with a big module/software/framework in Perl, for instance, Moose. They have a fairly good amount of document, but merely doing `perldoc Moose` doesn't give me what I want to know: I usually need to do `perldoc Moose::Manual` and then `perldoc Moose::Cookbook` to scan for the things by typing i want to know. It's tedious. perldoc-search is awesome: it gives you an ability to search your local POD files without building index like Spotlight. For instance, when I need to know how to mangle new() args in Moose, i can just type: `perldoc-search BUILDARGS -G Moose` (-G is a regular expression...</summary>
        <author>
            <name>miyagawa</name>
        </author>
        
        
<content type="xhtml" xml:lang="ja-JP" xml:base="http://bulknews.typepad.com/blog/">
<div xmlns="http://www.w3.org/1999/xhtml"><a href="http://search.cpan.org/~jjore/App-Perldoc-Search-0.03/">Joshua ben Jore / App-Perldoc-Search-0.03 - search.cpan.org</a>

<p>I've been always having problems locating the right POD files when I deal with a big module/software/framework in Perl, for instance, Moose. They have a fairly good amount of document, but merely doing `perldoc Moose` doesn't give me what I want to know: I usually need to do `perldoc Moose::Manual` and then `perldoc Moose::Cookbook` to scan for the things by typing i want to know. It's tedious.</p>

<p>perldoc-search is awesome: it gives you an ability to search your local POD files without building index like Spotlight. For instance, when I need to know how to mangle new() args in Moose, i can just type: `perldoc-search BUILDARGS -G Moose` (-G is a regular expression to match filenames to look for) and it gives you a fairly small amount of files, including Moose::Cookbook::Basics::Recipe10 which exactly tells me what I need to know.</p>

<p>install App::Perldoc::Search now and enjoy.</p></div>
</content>


    <feedburner:origLink>http://bulknews.typepad.com/blog/2009/10/perldoc-search.html</feedburner:origLink></entry>
    <entry>
        <title>New IRC channel for PSGI and Plack</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/typepad/blog/~3/rAhbfzAV60M/new-irc-channel-for-psgi-and-plack.html" />
        <link rel="replies" type="text/html" href="http://bulknews.typepad.com/blog/2009/10/new-irc-channel-for-psgi-and-plack.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a00d8345206d069e20120a611079e970b</id>
        <published>2009-10-21T17:09:37-07:00</published>
        <updated>2009-10-21T17:10:41-07:00</updated>
        <summary>We've been using #http-engine IRC channel for the convenience but we agree that PSGI/Plack talk invades the whole channel and is confusing to newcomers: so we made a new IRC channel dedicated for PSGI and plack talk (yes, another channel!) #plack on irc.perl.org Join now and let's chat!</summary>
        <author>
            <name>miyagawa</name>
        </author>
        
        
<content type="xhtml" xml:lang="ja-JP" xml:base="http://bulknews.typepad.com/blog/">
<div xmlns="http://www.w3.org/1999/xhtml"><p>We've been using #http-engine IRC channel for the convenience but we agree that PSGI/Plack talk invades the whole channel and is confusing to newcomers: so we made a new IRC channel dedicated for PSGI and plack talk (yes, another channel!)</p><p><a href="irc://irc.perl.org/#plack">#plack on irc.perl.org</a></p><p><a href="irc://irc.perl.org/#plack" />Join now and let's chat!</p></div>
</content>


    <feedburner:origLink>http://bulknews.typepad.com/blog/2009/10/new-irc-channel-for-psgi-and-plack.html</feedburner:origLink></entry>
    <entry>
        <title>Try::Tiny </title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/typepad/blog/~3/RnRRVgqB-7M/trytiny-.html" />
        <link rel="replies" type="text/html" href="http://bulknews.typepad.com/blog/2009/10/trytiny-.html" thr:count="6" thr:updated="2009-10-29T15:57:04-07:00" />
        <id>tag:typepad.com,2003:post-6a00d8345206d069e20120a65f6e5f970c</id>
        <published>2009-10-20T14:21:04-07:00</published>
        <updated>2009-10-20T14:40:18-07:00</updated>
        <summary>Try::Tiny rocks. Every perl programmer should start using it. Especially if you're a CPAN module author and wants to eval { } inside your module (often to check if an user of your module has some optional module installed, in which case you optimize stuff for it etc.), you're strongly suggested to use this module instead of your own eval { } stuff. Why? If you do eval { } in your module that clobbers the global $@, and to avoid that you need to local $@, and then if you want to die (rethrow) from local $@ then the exception gets cleared etc... Try::Tiny solves this endless yak shaving and there're no dependencies at all and works with perl...</summary>
        <author>
            <name>miyagawa</name>
        </author>
        
        
<content type="xhtml" xml:lang="ja-JP" xml:base="http://bulknews.typepad.com/blog/">
<div xmlns="http://www.w3.org/1999/xhtml"><p><a href="http://search.cpan.org/~nuffin/Try-Tiny-0.02/">Try::Tiny</a> rocks.</p><p>Every perl programmer should start using it. Especially if you're a CPAN module author and wants to eval { } inside your module (often to check if an user of your module has some optional module installed, in which case you optimize stuff for it etc.), you're strongly suggested to use this module instead of your own eval { } stuff. </p>

<p>Why? If you do eval { } in your module that clobbers the global $@, and to avoid that you need to local $@, and then if you want to die (rethrow) from local $@ then the exception gets cleared etc... Try::Tiny solves <a href="http://blog.woobling.org/2009/09/trytiny.html">this endless yak shaving</a> and there're no dependencies at all and works with perl back to 5.005x.</p>

<p>Anyway, i started using Try::Tiny (when nothingmuch himself added this :)) in <a href="http://plackperl.org/">Plack</a> and <a href="http://github.com/miyagawa/Tatsumaki">Tatsumaki</a> with so much fun, but last night I experienced one minor pitfall of this module that I might want to share with you.</p><p>I had this code:</p>

<p><code>sub write {<br />    my $self = shift;<br />    my $writer = $self-&gt;writer || $self-&gt;init_writer;<br />    $writer-&gt;write(@_);<br /><span>}</span></code></p>

<p>I wanted to catch Broken pipe exception from -&gt;write, so I changed to do this:</p>

<p><code>sub write {<br />    my $self = shift;<br />    my $writer = $self-&gt;writer || $self-&gt;init_writer;<br />    try {<br />        $writer-&gt;write(@_);<br />    } catch {<br />        /Broken pipe/ and $self-&gt;{client_disconnected} = 1;<br />    };<br />}</code></p>

<p>It might be obvious to you but for me it wasn't at first, and I wasted about 15 minutes to figure out what's wrong with that code.</p>

<p>Yeah, the use of @_ in the try { } clause. it's internally implemented as try sub { ... } so the content of @_ is changed when it's executed.</p>

<p>Lots of clever modules on CPAN that exports DSL sugars (including my own <a href="http://search.cpan.org/dist/Web-Scraper">Web::Scraper</a>) shares the same problem. At least you have to be careful not to use @_ in the block, by assigning the @_ content into some lexical variables before you construct the block,</p>

<p>(Well maybe Try::Tiny can add a workaround to save the @_ in the caller stack but i'm not sure if it's a doable without black magic like DB::args and whether it's right thing to do anyway)</p>

<p>Anyways, Try::Tiny is a great module if you care about this tiny thing. Enjoy.</p><p>UPDATE: this is now <a href="http://github.com/nothingmuch/try-tiny/commit/318cb1eb7cbaceb01b470f83c816b669885a1ec9">mentioned</a> in Try::Tiny POD docs.</p></div>
</content>


    <feedburner:origLink>http://bulknews.typepad.com/blog/2009/10/trytiny-.html</feedburner:origLink></entry>
    <entry>
        <title>Task::Plack now added git_clone</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/typepad/blog/~3/qy2_4WzYntA/taskplack-now-added-git_clone.html" />
        <link rel="replies" type="text/html" href="http://bulknews.typepad.com/blog/2009/10/taskplack-now-added-git_clone.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a00d8345206d069e20120a5ffc6ea970b</id>
        <published>2009-10-19T19:15:12-07:00</published>
        <updated>2009-10-19T19:15:12-07:00</updated>
        <summary>cpanf Task::Plack (install App::CPAN::Fresh if you haven't :)) and now you can call perl -MTask::Plack -e git_clone on your shell, which clones all Plack/PSGI relevant development git repositories for you. This is quite handy now that we split the Plack repo into multiple projects.</summary>
        <author>
            <name>miyagawa</name>
        </author>
        
        
<content type="xhtml" xml:lang="ja-JP" xml:base="http://bulknews.typepad.com/blog/">
<div xmlns="http://www.w3.org/1999/xhtml"><code>cpanf Task::Plack</code> (install <a href="http://bulknews.typepad.com/blog/2009/09/introducing-cpanf-appcpanfresh.html">App::CPAN::Fresh</a> if you haven't :)) and now you can call <code>perl -MTask::Plack -e git_clone</code> on your shell, which clones all Plack/PSGI relevant development git repositories for you. This is quite handy now that we split the Plack repo into multiple projects.</div>
</content>


    <feedburner:origLink>http://bulknews.typepad.com/blog/2009/10/taskplack-now-added-git_clone.html</feedburner:origLink></entry>
    <entry>
        <title>mod_reproxy for Apache and lighttpd</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/typepad/blog/~3/AX9IsJymir8/mod_reproxy-for-apache-and-lighttpd.html" />
        <link rel="replies" type="text/html" href="http://bulknews.typepad.com/blog/2009/10/mod_reproxy-for-apache-and-lighttpd.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a00d8345206d069e20120a5ff9ebb970b</id>
        <published>2009-10-19T18:14:05-07:00</published>
        <updated>2009-10-19T18:14:05-07:00</updated>
        <summary>typester's mod_reproxy at master - GitHub Kazuho made mod_reproxy for Apache2 and typester made one for lighttpd. They add a support for X-Reproxy-URL header, which is used in perlbal often in combination with mogilefs, so your web app can internally redirect static files to other static web server after the authentication etc. is done. It's more flexible than X-Sendfile since the file doesn't really have to live on the frontend proxy, which is not often the case in the user uploaded content like photos or videos. Good stuff.</summary>
        <author>
            <name>miyagawa</name>
        </author>
        
        
<content type="xhtml" xml:lang="ja-JP" xml:base="http://bulknews.typepad.com/blog/">
<div xmlns="http://www.w3.org/1999/xhtml"><a href="http://github.com/typester/mod_reproxy">typester's mod_reproxy at master - GitHub</a>

<p>Kazuho made mod_reproxy for <a href="http://github.com/kazuho/mod_reproxy">Apache2</a> and typester made one <a href="http://github.com/typester/mod_reproxy">for lighttpd</a>.</p>

<p>They add a support for X-Reproxy-URL header, which is used in perlbal often in combination with mogilefs, so your web app can internally redirect static files to other static web server after the authentication etc. is done. It's more flexible than X-Sendfile since the file doesn't really have to live on the frontend proxy, which is not often the case in the user uploaded content like photos or videos.</p>

<p>Good stuff.</p></div>
</content>


    <feedburner:origLink>http://bulknews.typepad.com/blog/2009/10/mod_reproxy-for-apache-and-lighttpd.html</feedburner:origLink></entry>
    <entry>
        <title>PSGI/Plack streaming is now complete</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/typepad/blog/~3/WDUNV0zx8w0/psgiplack-streaming-is-now-complete.html" />
        <link rel="replies" type="text/html" href="http://bulknews.typepad.com/blog/2009/10/psgiplack-streaming-is-now-complete.html" thr:count="2" thr:updated="2009-10-17T21:07:57-07:00" />
        <id>tag:typepad.com,2003:post-6a00d8345206d069e20120a5f14eef970b</id>
        <published>2009-10-17T20:53:01-07:00</published>
        <updated>2009-10-17T20:59:34-07:00</updated>
        <summary>In the last couple of (or even more :) days Yuval and I have been endlessly discussing what the asynchronous response API would look like in PSGI applications. And that was also becoming one of the most frequently asked questions on my side, since many people from AnyEvent, POE and perlbal (Danga::Socket) land are curious how to port their non-blocking application to let them run on PSGI servers. Thursday while having frodwith on board in the discussion (that was really helpful since he has a third person view as a POE developer) and we sorted out the nicely done middle ground, which is actually the revive of our original start_response callback we abandoned in favor of IO::Writer-like abstraction. So, basically...</summary>
        <author>
            <name>miyagawa</name>
        </author>
        
        
<content type="html" xml:lang="ja-JP" xml:base="http://bulknews.typepad.com/blog/">
&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;In the last couple of (or even more :) days &lt;a href="http://blog.woobling.org/"&gt;Yuval&lt;/a&gt; and I have been endlessly discussing what the asynchronous response API would look like in PSGI applications. And that was also becoming one of the most frequently asked questions on my side, since many people from AnyEvent, POE and perlbal (Danga::Socket) land are curious how to port their non-blocking application to let them run on PSGI servers.&lt;/p&gt;

&lt;p&gt;Thursday while having &lt;a href="http://twitter.com/frodwith"&gt;frodwith&lt;/a&gt; on board in the discussion (that was really helpful since he has a third person view as &lt;a href="http://github.com/frodwith/plack-server-poe"&gt;a POE developer&lt;/a&gt;) and we sorted out the nicely done middle ground, which is actually the revive of our original &lt;a href="http://bulknews.typepad.com/blog/2009/09/psgi-start_response-or-not.html"&gt;start_response callback&lt;/a&gt; we abandoned in favor of &lt;a href="http://bulknews.typepad.com/blog/2009/09/new-cgipsgi-start_response-out.html"&gt;IO::Writer-like abstraction&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;So, basically the idea is the same as the original Python WSGI's start_response but this callback is NOT an optional parameter to the app because that stands in the way of everybody in the chain including middleware and that sucks. Instead, an app can optionally return a callback that accepts another callback to which you can return the response array ref (code, headers and body) if you want to delay your response.&lt;/p&gt;

&lt;pre&gt;my $app = sub {
&amp;nbsp;&amp;nbsp;my $env = shift;
&amp;nbsp;&amp;nbsp;return sub {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my $respond = shift;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;# do some event stuff
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$event-&amp;gt;callback(sub { $respod-&amp;gt;([ $code, $headers, $body ]) });
&amp;nbsp;&amp;nbsp;};
};&lt;/pre&gt;

&lt;p&gt;If you also want to delay the content body delivery as well (i.e. streaming) you can omit the body, in which case you'll get the writer object that has write(), close() and poll_cb().&amp;nbsp;&lt;/p&gt;

&lt;pre&gt;my $app = sub {
&amp;nbsp;&amp;nbsp;my $env = shift;
&amp;nbsp;&amp;nbsp;return sub {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my $respond = shift;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my $w = $respond-&amp;gt;([ 200, [ 'Content-Type' =&amp;gt; 'text/plain' ]]); # no $body here
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;# do more event stuff
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$event-&amp;gt;callback(sub { $w-&amp;gt;write($body) });
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$event-&amp;gt;done_callback(sub { $w-&amp;gt;close });
&amp;nbsp;&amp;nbsp;};
};&lt;/pre&gt;

&lt;p&gt;I plan to update the PSGI specification to address this optional response style in a few days. Yuval also has &lt;a href="http://blog.woobling.org/2009/10/event-driven-psgi.html"&gt;a nicely summarized blog post&lt;/a&gt; on this, and we already added this callback style to our &lt;a href="http://github.com/miyagawa/Plack-Server-AnyEvent"&gt;AnyEvent&lt;/a&gt;, &lt;a href="http://github.com/typester/Plack-Server-Danga-Socket"&gt;Danga::Socket&lt;/a&gt;, &lt;a href="http://github.com/miyagawa/Plack-Server-Coro"&gt;Coro&lt;/a&gt; and &lt;a href="http://github.com/frodwith/plack-server-poe"&gt;POE&lt;/a&gt; backend as well as most middlewares, including &lt;a href="http://github.com/miyagawa/Plack/blob/master/lib/Plack/Middleware/Chunked.pm"&gt;automatic chunking middleware&lt;/a&gt;&amp;nbsp;(supposedly used by servers, not apps) which I line-by-line cloned from Rack :)&lt;/p&gt;

&lt;p&gt;Meanwhile Yuval is working on his data-pimping REST machine &lt;a href="http://github.com/nothingmuch/Hydrant"&gt;Hydrant&lt;/a&gt; and I've been working on Real-Time-optimized web framework &lt;a href="http://github.com/miyagawa/Tatsumaki"&gt;Tatsumaki&lt;/a&gt;, and both will be built on top of PSGI/Plack from the ground up. This will definitely be how web frameworks in Perl would look like in 2010.&lt;/p&gt;

&lt;p&gt;Friday night I was at my friend's party and five people talked to me how awesome Plack is and it's changing the world. (Disclosure: it was a party full of my Six Apart co-workers and alumni like &lt;a href="http://crucially.livejournal.com/"&gt;Artur&lt;/a&gt;, &lt;a href="http://twitter.com/rr"&gt;Randy&lt;/a&gt; and &lt;a href="http://twitter.com/deflatermouse"&gt;Simon&lt;/a&gt;, so that's not &lt;em&gt;that&lt;/em&gt; surprising :))&lt;/p&gt;&lt;/div&gt;
</content>


    <feedburner:origLink>http://bulknews.typepad.com/blog/2009/10/psgiplack-streaming-is-now-complete.html</feedburner:origLink></entry>
    <entry>
        <title>Plack and PSGI uploaded to CPAN</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/typepad/blog/~3/xEP15d9vKCo/plack-and-psgi-uploaded-to-cpan.html" />
        <link rel="replies" type="text/html" href="http://bulknews.typepad.com/blog/2009/10/plack-and-psgi-uploaded-to-cpan.html" thr:count="6" thr:updated="2009-11-10T23:33:00-08:00" />
        <id>tag:typepad.com,2003:post-6a00d8345206d069e20120a5dfa3ff970b</id>
        <published>2009-10-13T02:45:42-07:00</published>
        <updated>2009-10-13T02:47:32-07:00</updated>
        <summary>Tatsuhiko Miyagawa / Plack-0.9000 - search.cpan.org Some yak have been shaved and the last minute bikeshed of renaming things in Plack::Builder was done, and now Plack and PSGI are uploaded to CPAN! Some server backends like AnyEvent, FCGI::EV, Coro, Danga::Socket, ReverseHTTP and ServerSimple are removed from the core distribution and uploaded to CPAN separately. Actually there's no reason those implementations need to be named Plack::Server::* anymore since it doesn't inherit anything. I have more to write about naming your stuff on CPAN, hopefully soon to be posted here. I also uploaded Catalyst::Engine::PSGI but i keep other framework adapters like Maypole, Mason, Mojo, CGI::Application and Squatting in my github repos for now, since some of the implementations are pretty hacky, and...</summary>
        <author>
            <name>miyagawa</name>
        </author>
        
        
<content type="xhtml" xml:lang="ja-JP" xml:base="http://bulknews.typepad.com/blog/">
<div xmlns="http://www.w3.org/1999/xhtml"><a href="http://search.cpan.org/~miyagawa/Plack-0.9000/">Tatsuhiko Miyagawa / Plack-0.9000 - search.cpan.org</a>

<p>Some yak have been shaved and the last minute bikeshed of renaming things in Plack::Builder was done, and now Plack and PSGI are uploaded to CPAN!</p>

<p>Some server backends like AnyEvent, FCGI::EV, Coro, Danga::Socket, ReverseHTTP and ServerSimple are removed from the core distribution and uploaded to CPAN separately. Actually there's no reason those implementations need to be named Plack::Server::* anymore since it doesn't inherit anything. I have more to write about naming your stuff on CPAN, hopefully soon to be posted here.</p>

<p>I also uploaded Catalyst::Engine::PSGI but i keep other framework adapters like Maypole, Mason, Mojo, CGI::Application and Squatting in my github repos for now, since some of the implementations are pretty hacky, and I'm not confident nor comfortable maintaining those adapters when bugs are found etc. Anyone from the dev team of these frameworks want to take care of actually releasing this to CPAN or porting to the core? :)</p>

<p>Anyway, this is a big milestone. Thanks everybody for helping me this past month and let's celebrate the initial release, but let's continue hacking!<br />
</p></div>
</content>


    <feedburner:origLink>http://bulknews.typepad.com/blog/2009/10/plack-and-psgi-uploaded-to-cpan.html</feedburner:origLink></entry>
    <entry>
        <title>PlebGUI: WebGUI Meets Plack</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/typepad/blog/~3/EXDKlx3f11A/plebgui-webgui-meets-plack.html" />
        <link rel="replies" type="text/html" href="http://bulknews.typepad.com/blog/2009/10/plebgui-webgui-meets-plack.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a00d8345206d069e20120a5de3c93970b</id>
        <published>2009-10-12T16:13:21-07:00</published>
        <updated>2009-10-12T16:13:21-07:00</updated>
        <summary>The idea goes like this: Web applications, when all is said and done, are really just on about sending three pieces of information to web browsers: a HTTP status code, a list of HTTP headers, and some content (a file or some text, normally HTML). via blog.patspam.com Patrick from WebGUI has posted a wonderful introductory article on PSGI and Plack, and he actually shows his working code to run WebGUI framework on top of Plack stack. This is way too awesome to believe.</summary>
        <author>
            <name>miyagawa</name>
        </author>
        
        
<content type="xhtml" xml:lang="ja-JP" xml:base="http://bulknews.typepad.com/blog/">
<div xmlns="http://www.w3.org/1999/xhtml"><blockquote><p>The idea goes like this: Web applications, when all is said and done, are really just on about sending three pieces of information to web browsers: a HTTP status code, a list of HTTP headers, and some content (a file or some text, normally HTML).</p>
<p />

</blockquote>

<p><small>via <a href="http://blog.patspam.com/2009/plebgui-webgui-meets-plack/comment-page-1#comment-3702">blog.patspam.com</a></small></p>

<p>Patrick from WebGUI has posted a wonderful introductory article on PSGI and Plack, and he actually shows his working code to run WebGUI framework on top of Plack stack. This is way too awesome to believe.</p></div>
</content>


    <feedburner:origLink>http://bulknews.typepad.com/blog/2009/10/plebgui-webgui-meets-plack.html</feedburner:origLink></entry>
    <entry>
        <title>Devel::StackTrace::AsHTML</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/typepad/blog/~3/RQuRwBxMK3Q/develstacktraceashtml.html" />
        <link rel="replies" type="text/html" href="http://bulknews.typepad.com/blog/2009/10/develstacktraceashtml.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a00d8345206d069e20120a5d0e127970b</id>
        <published>2009-10-09T00:33:17-07:00</published>
        <updated>2009-10-09T00:33:17-07:00</updated>
        <summary>via www.flickr.com I combined all of the great works done by tokuhirom, kazuho, nipotan and Sartak: render Devel::StackTrace object as an HTML. As a bonus, if you render WithLexicals object it will display the lexical variables with JS toggle button. Plack middleware and plackup has now been converted to use this new StackTrace screen. Pretty slick! Available at github and CPAN shortly.</summary>
        <author>
            <name>miyagawa</name>
        </author>
        
        
<content type="xhtml" xml:lang="ja-JP" xml:base="http://bulknews.typepad.com/blog/">
<div xmlns="http://www.w3.org/1999/xhtml"><img alt="Error: Oops at eg/dot-psgi/error.psgi line 3." height="470" src="http://farm4.static.flickr.com/3488/3995141058_ea558c632e.jpg" width="471" />
<p><small>via <a href="http://www.flickr.com/photos/bulknews/3995141058/">www.flickr.com</a></small></p>

<p>I combined all of the great works done by tokuhirom, kazuho, nipotan and Sartak: render <a href="http://search.cpan.org/dist/Devel-StackTrace">Devel::StackTrace</a> object as an HTML. As a bonus, if you render <a href="http://search.cpan.org/~sartak/Devel-StackTrace-WithLexicals-0.03/">WithLexicals</a> object it will display the lexical variables with JS toggle button.</p>

<p>Plack middleware and plackup has now been converted to use this new StackTrace screen. Pretty slick!</p>

<p>Available at <a href="http://github.com/miyagawa/Devel-StackTrace-AsHTML">github</a> and <a href="http://search.cpan.org/dist/Devel-StackTrace-AsHTML">CPAN</a> shortly.</p></div>
</content>


    <feedburner:origLink>http://bulknews.typepad.com/blog/2009/10/develstacktraceashtml.html</feedburner:origLink></entry>
 
</feed><!-- ph=1 --><!-- nhm:dynamic-ssi -->
