user
cogent
<h1> Who am i? </h1>
<p>
Well, for starters, that's me with the PowerBook on my lap at <a href="http://www.yapc.org/America/previous-years/2001/">YAPC::America::North::2001</a>. <i>(Photo Credit: <a href="http://www.openinteract.org/yapc2001/">Nathaniel Haas</a>.)</i>
</p>
<!--
<p>
I'm a Coder. The previous version of this page claimed that I was a Perl hacker. I am not. As Eric Raymond <a href="http://www.tuxedo.org/~esr/faqs/hacker-howto.html#WHAT_IS">says</a>:
</p>
<blockquote>
Hackers built the Internet. Hackers made the Unix operating system what it is today. Hackers run Usenet. Hackers make the World Wide Web work. If you are part of this culture, if you have contributed to it and other people in it know who you are and call you a hacker, you're a hacker.
</blockquote>
<p>
I have not built anything of much worth. I have not given back to the community which has given me so much. This'll be remedied.
</p>
<h1>Projects</h1>
<h2><tt>JavaScript::Parser</tt></h2>
<p>
At the moment, my goal is to write a parser for JavaScript, then use that parser to write a utility to munge the heck out of JavaScript source files. Why JavaScript? Mostly, to enable high-quality URL-rewriting Web proxies, such as were used on <a href="http://safeweb.com/">Safeweb</a>. I can see at least two other uses, without trying: semicolon insertion, and de-obfuscation.
</p>
<p>
Also, JavaScript is pretty common, and more complicated to parse than, say, Scheme. I wanted a real challenge.
</p>
<p>
Note that <a href="http://search.cpan.org/search?dist=JavaScript">JavaScript.pm</a> does not satisfy my (practical) needs, since <a href="http://www.mozilla.org/js/spidermonkey/">SpiderMonkey</a>, the library on which it's based, gives no access to the parse tree. (Of course, it also does not satisfy my need to make something. But if that were the only problem, of course I would pick another project.)
</p>
<p>
I have my work cut out for me: I am currently working my way through the <a href="http://www.amazon.com/exec/obidos/ASIN/0201100886/qid=1016878858/sr=8-1/ref=sr_8_67_1/002-5184524-8172023">Dragon Book</a>. I have to decide between <a href="http://search.cpan.org/search?dist=Parse-RecDescent">Parse::RecDescent</a> and <a href="http://search.cpan.org/search?dist=Parse-Yapp">Parse::Yapp</a> (I'm leaning towards the latter, but I don't have hard facts on which to justify this). Then, if I end up going with [Parse::RecDescent|RecDescent], I need to [Eliminating Left Recursion in Parse::RecDescent|Eliminate Left-Recursion], while preserving associativity. Else, I need to learn tokenization. Which should be the easier of the two things, really.
</p>
<h2><tt>JavaScript::Munger</tt>, <tt>JavaScript::</tt>*</h2>
<p>
So, once we have the parse tree, it's time to do stuff with it. I intend to write a generalized munger, and some specialized modules, like a de-obfuscator and a semicolon inserter (as I mentioned above).
</p>
<h2><tt>Grammar::Munger</tt> (<tt>Parse::Grammar::Munger</tt>?)</h2>
<p>
Grammars are suddenly becoming very interesting to me. You can do all sorts of algorithmic but really difficult (for humans) manipulations to grammars, like [Eliminating Left Recursion in Parse::RecDescent|eliminating left-recursion], conversion to <a href="http://www.google.com/search?hl=en&q=chomsky+normal+form">Chomsky Normal Form</a>, etc. So I'd like to do this. Also, it'd be nice to be able to convert things that look like grammars into things that work for <a href="http://search.cpan.org/search?dist=Parse-RecDescent">Parse::RecDescent</a> and <a href="http://search.cpan.org/search?dist=Parse-Yapp">Parse::Yapp</a>.
</p>
<h2><tt>Imager::Stereogram</tt></h2>
<p>
When I have a chance, here, I intend to write a <a href="http://www.google.com/search?q=sirds">stereogram</a> generator, using <a href="http://search.cpan.org/search?dist=Imager">Imager.pm</a>.
</p>
<h2><tt>Imager::MoveChunk</tt></h2>
<p>
I wonder if I could figure out an algorithm for moving/removing fragments of images. Like, you have frames one and five of a ball flying in a straight line. Or maybe you have a parametric equation for the position of the ball. You want me to put the ball in the right place in frames two through four.
</p>
<h2>Crossword puzzle construction application</h2>
<p>
My girlfriend is into crossword puzzles. Big-time. And not just solving them, either, but constructing them. For crossword constructors in Windows, the <a href="http://www.x-word.com/">Crossword Compiler</a> is a fairly good program. There's nothing for Linux or Mac, though. Nor is anything Free Software. Nor did I write it. All of these things need to be remedied.
</p>
-->
<h1> Random Data </h1>
<!-- location:latitude=40.46.38,longitude=-73.54.15 -->
<!-- os:Debian, Mac OS X -->
<!-- birthday:1978/04/11 -->
<!-- email:perlmonk@davidhand.com -->
<pre>
<!-- location:latitude=40.46.38,longitude=-73.54.15 -->
<!-- os:Debian, Mac OS X -->
<!-- birthday:1978/04/11 -->
<!-- email:perlmonk@davidhand.com -->
</pre>
2011-02-28 12:51:31
457
358924
images/userincoming/cogent.jpeg
19
<a href="http://ny.pm.org/">NY.pm</a>
-5
80
on