<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
    <channel>
        <title>chronicles of leto</title>
        <link>http://leto.net/x/</link>
        <description></description>
        <language>en</language>
        <copyright>Copyright 2010</copyright>
        <lastBuildDate>Thu, 10 Jun 2010 12:59:00 -0800</lastBuildDate>
        <generator>http://www.sixapart.com/movabletype/</generator>
        <docs>http://www.rssboard.org/rss-specification</docs>
        
        <item>
            <title>C&apos;Dent - An Acmeist Adventure</title>
            <description><![CDATA[I saw <a href="http://ingy.net/">Ingy</a> talk at the <a href="http://pdx.pm.org/kwiki/index.cgi?June2010Meeting">Portland Perl Mongers last night</a>, and he introduced his <a href="http://github.com/ingydotnet/cdent">C'Dent</a> "programming language". It is not actually a new language, since it defines no new syntax. It is actually the union of a subset of the input languages it supports (currently Python, Javascript, Perl 6 and YAML) plus a "data model" for how represent and convert between them.<br /><br />Given a module in the C'dent subset of a supported input language, it can export to one of the current output languages, which are the input languages, plus Perl 5, Python 3, Java, Ruby and PHP.<br /><br />There are obviously many issues that will be interesting to address, such as dealing with concurrency and differences in object models, but I think the philosophy of the project is awesome: <a href="http://acmeism.org/">Acmeism</a> :<br /><br /><i><strong>Acmeism</strong> is the belief that language naturally tends to 
divide people and ideas, but that technology can overcome this tendency.
 People who create technology that is not limited to a particular 
language are known as <strong>Acmeists</strong>.<br /></i><br />We have plans to add <a href="http://en.wikipedia.org/wiki/Parrot_intermediate_representation">Parrot Intermediate Representation (PIR)</a> as an output and maybe an input language at the <a href="http://calagator.org/events/1250458631">PDX Hackathon</a> tonight. Come on by! PDX Hackathon has always been an Acmeist gathering, and it has been said that "Beer is our Bytecode."<br />]]></description>
            <link>http://leto.net/x/2010/06/cdent-an-acmeist-adventure.html</link>
            <guid>http://leto.net/x/2010/06/cdent-an-acmeist-adventure.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">acmeism</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">hackathon</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">acmeism</category>
            
            <pubDate>Thu, 10 Jun 2010 12:59:00 -0800</pubDate>
        </item>
        
        <item>
            <title>Sedtris - Tetris Written In Sed</title>
            <description><![CDATA[<br />Need I say more? <a href="http://uuner.doslash.org/forfun/sedtris.sed">Sedtris.</a><br /><br /><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://uuner.doslash.org/forfun/sedtris.sed" onclick="window.open('http://leto.net/x/2009/pics/sedtris.html','popup','width=600,height=800,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://leto.net/x/2009/pics/sedtris-thumb-300x400.jpg" alt="sedtris.jpg" class="mt-image-center" style="margin: 0pt auto 20px; text-align: center; display: block;" width="300" height="400" /></a></span><br />]]></description>
            <link>http://leto.net/x/2009/06/sedtris-tetris-written-in-sed.html</link>
            <guid>http://leto.net/x/2009/06/sedtris-tetris-written-in-sed.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">osbridge</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">osb09</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">osbridge</category>
            
            <pubDate>Fri, 19 Jun 2009 00:38:52 -0800</pubDate>
        </item>
        
        <item>
            <title>Find Files Who Have No Lines Matching a Regex</title>
            <description><![CDATA[I found myself in the situation of having a bunch of files and I needed to find out which one's did not include a certain header file. This turned out to be a great place for short-circuiting with grep. <br /><br /><b>for i in files/*; do grep PATTERN $i &gt;&gt;/dev/null || echo $i; done</b><br /><br />Grep returns false when it cannot find a match, which triggers the echo of the filename to STDOUT. The PATTERN can be any valid regular expression for your system's flavor of grep. This can save tons of time if you have dozens/hundreds of files and only a few are missing something. To edit these files in vim, it is nothing more than:<br /><br /><b>vim `for i in files/*; do grep PATTERN $i &gt;&gt;/dev/null || echo $i; done</b>`<br /><br />Happy Hacking!<br /> ]]></description>
            <link>http://leto.net/x/2009/02/find-files-who-have-no-lines-matching-a-re.html</link>
            <guid>http://leto.net/x/2009/02/find-files-who-have-no-lines-matching-a-re.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">bash</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">#timesaver</category>
            
            <pubDate>Tue, 17 Feb 2009 00:39:28 -0800</pubDate>
        </item>
        
        <item>
            <title>Primes, Primality and Pseudoprimes</title>
            <description><![CDATA[<a href="http://mathworld.wolfram.com/PrimeNumber.html">Primes </a>are simple, right? A <b>prime</b> is a number that is divisible by only 1 and itself. The devil is in the details, though. <br /><br />What if your number is really big and someone else does not believe you that it is prime? How do you <b>prove</b> it? It turns out to be really easy to prove something is <b>composite</b> ( the opposite of prime, a.k.a not prime ), all you have to do is show them a single factor of the number. <br /><br />If a shadowy figure emerges from a dark alley and shows you a strip of paper:<br /><br />$latex x =742376437546875526384762834762837468273648992$<br /><br />and says "I'll sell you this big fat prime for <b>only</b> five bucks" you can say "it is divisible by 2 and therefore composite. <a href="http://en.wikipedia.org/wiki/Q.E.D.">QED</a> and go away." <br /><br />But if you are trying to be an upstanding prime-number-selling business and therefore want to go the extra mile and prove that the numbers you sell are indeed prime, you will quickly go out of business. I guess that is why there are still sheisty guys selling primes in trench coats...<br /><br />The reason is that to prove that $latex x=N$ is a prime number, you are actually making a statement about $latex x=N$ as well as saying that all numbers $latex y$ such that $latex y &lt; N$ are <b>not</b> factors of $latex x$. This is a lot of information! <br /><br />Currently it takes at most a few seconds to prove that large numbers are composite, but to prove that a similarly-sized number is prime could take thousands of CPU-hours!!!&nbsp; For those that like specific numbers, it took 6 CPU-years to prove that&nbsp; the 20,562-digit <a href="http://en.wikipedia.org/wiki/Mills%27_prime" title="Mills' prime" class="mw-redirect">Mills' prime</a> was indeed prime.<br /><br />Even for numbers in the range of current cryptography systems (a few hundred digits), proving something is a prime is just too damn slow. Factoring integers is often a subalgorithm of many <a href="http://en.wikipedia.org/wiki/Number_theory">number theory</a> and cryptography algorithms, it has to be as fast as possible. When a software algorithm<a href="http://en.wikipedia.org/wiki/Integer_factorization"> factors a number,</a> it often does some kind of check that all of the numbers it is returning are indeed prime, but it cannot afford to <b>prove</b> it. This is where pseudoprimes and primality testing come in, stage left.<br /><br /><b>Primality testing</b> is mainly concerned with finding algorithms that are fast but have low probability to incorrectly declare that a composite number is prime. A <b>pseudoprime</b> is such a number that "fakes out" a primality test, also known as a false positive. Obviously, people developing cryptography software should be very concerned with how often they are going to produce pseudoprimes, more on this later.<br /><br />Modern primality testing started with <a href="http://en.wikipedia.org/wiki/Pierre_de_Fermat">Pierre de Fermat</a>, but Chinese mathematicians described the beginnings of these algorithms 2000 years before Fermat was on the scene. Numbers which "fake out" the <a href="http://en.wikipedia.org/wiki/Fermat_primality_test">Fermat Primality Test</a> are called <a href="http://en.wikipedia.org/wiki/Carmichael_number">Carmichael numbers</a>,&nbsp; and in 1994 a group of mathematicians proved that there are infinitely many of them, i.e. there is not only a few isolated numbers that "fake out" the test, the more your search for them, the more you find.<br /><br />Some software packages may still use the Fermat Primality test for some algorithms, but it has been mostly superceded by the <a href="http://en.wikipedia.org/wiki/Miller-Rabin_primality_test">Rabin-Miller primality test.</a> <br /><br />This test allows you to run $latex k$ repetitions of the algorithm and on average, the probability of it incorrectly concluding that a composite number is prime is $latex P = 4^{-k}$. For $latex k=20$ this is roughly a chance of one in a trillion (1000000000000, a 1 with 12 zeros) that it will be wrong. This ain't bad.<br /><br />But, as it turns out, there is a better way.<br /><br />The better way is called&nbsp; <a href="http://www.trnicely.net/misc/bpsw.html">The Baillie-PSW primality test</a> (BPSW) which is actually just four independent steps which can be parrallelized quite easily. The BPSW first checks that the number is not 1, 2 or an even number, then checks to see if it has any small prime divisors, where small is defined as $latex p &lt; 1000 $. It then performs a single Rabin-Miller primality test in base 2 and then a <a href="http://mathworld.wolfram.com/LucasPseudoprime.html">Lucas Primality test</a>, which is another primality test that I have not described that uses<a href="http://mathworld.wolfram.com/LucasNumber.html"> Lucas Numbers</a> (very closely related to <a href="http://mathworld.wolfram.com/FibonacciNumber.html">Fibonacci numbers</a>) as the basis for a test.<br /><br />According to MathWorld "the multiple Rabin-Miller test in bases 2
 and 3 combined with a Lucas pseudoprime test as the <a href="http://mathworld.wolfram.com/PrimalityTest.html" class="Hyperlink">primality test</a> have been used by the function <tt><a href="http://reference.wolfram.com/mathematica/ref/PrimeQ.html" class="Hyperlink">PrimeQ</a></tt>[<i>n</i>]" since Mathematica 2.2 . <br /><br />So why is the BPSW test so cool? For starters, people have looked hard and still cannot find one BPSW pseudoprime. According to recent findings, there are no BPSW pseudoprimes less than $latex N=10^{15} $. As for software that uses the Miller-Rabin test (for instance the <a href="http://gmplib.org/manual/Number-Theoretic-Functions.html#Number-Theoretic-Functions">mpz_probab_prime_p</a> function in <a href="http://gmplib.org/">GMP</a> ), <a href="http://www.trnicely.net/">Thomas R. Nicely</a> (of <a href="http://www.trnicely.net/pentbug/bugmail1.html">pentium fdiv bug fame</a>) has done extensive research and <a href="http://www.trnicely.net/misc/mpzspsp.html">discovered many pseudoprimes in GMP</a> as well as providing his data openly before publication, which is really cool! An example of <a href="http://pari.math.u-bordeaux.fr/dochtml/html.stable/Arithmetic_functions.html#isprime">GPL software that uses BPSW</a> is the <b>isprime() </b>function of GP/PARI, a number theory library originally written by<a href="http://www.math.u-bordeaux.fr/%7Ecohen/"> Henri Cohen</a> and other members of the <a href="http://www.math.u-bordeaux.fr/">University of Bordeaux Mathematics Department</a>.<br /><br />The problem with using software that use Miller-Rabin tests is such:&nbsp; the bases and number of repetitions used internally may change from one version of the software to the next, which means that different versions of your software may think the same number is either prime or composite. This is obviously Very Bad. If you always specify the bases and number of repetitions to use in the Miller-Rabin test then this will not occur, but that is not the case for most existing software.<br /><br />So it would almost seem that BPSW is the perfect primality test, it is pretty fast and perhaps there is no number can fake out all four steps of the test. All is not peaches and cream, though. <a href="http://math.dartmouth.edu/%7Ecarlp/">Carl Pomerance</a>, the P in BPSW and one of the mathematicians that proved there are infinitely many Carmichael numbers, <a href="http://leto.net/mt-static/html/www.pseudoprime.com/dopo.pdf">published a small article</a> in 1984 giving an informal proof that BPSW pseudoprimes <b>must exist</b>, even though no one has ever found one. He could not construct one then and no has been able to in last 25 years either, but that is why mathematicians prove stuff. To be sure. One day someone will find a BPSW pseudoprime, how long will it take?<br /><br />So what is the moral of the story? <b>Modern cryptography algorithms should be using some variant of the BPSW Primality Test for fast primality testing, always keeping a lookout for a pseudoprime and perhaps another step to add to the test to make it even better. <br /><br /><br /><br /></b><br />]]></description>
            <link>http://leto.net/x/2009/01/primes-primality-and-psuedopri.html</link>
            <guid>http://leto.net/x/2009/01/primes-primality-and-psuedopri.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">math</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">primes</category>
            
            <pubDate>Sun, 11 Jan 2009 10:44:04 -0800</pubDate>
        </item>
        
        <item>
            <title>CyborgCamp: Notes from Evolution of the Language of Technology</title>
            <description><![CDATA[<div><div><a href="http://www.pushclicktouch.com/" style="text-decoration: underline; ">Bill DeRouchey</a> (<a href="http://twitter.com/billder">@billder</a>) was the opening presentation at <a href="http://www.cyborgcamp.com">CyborgCamp</a> and was wonderfully entertaining and informative. Here are some quick notes I took:</div><div><br /></div><ul><li>How did the "Play/Pause" button become univerally understood?</li><li>Typewriters choose the winning "letter symbols"</li><li>Symbols evolve.</li><li>Are we losing some types/modes of literacy? Is that such a bad thing?</li><li>@ - commerce symbol "each at", then location, then identity</li><li># - means a group on twitter "context, topic"</li><li>Mouse pointer ~1984</li><li>Future directions in the evolution of tech languages?</li><li>Splintered groups of tech languages</li><li>Emotional bandwidth</li><li>Gatekeepers of knowledge, screening out less knowledgeable people</li></ul></div><div><div><br /></div><div><br /></div><div><br /></div><div><br /></div></div>]]></description>
            <link>http://leto.net/x/2008/12/evolution-of-the-language-of-t.html</link>
            <guid>http://leto.net/x/2008/12/evolution-of-the-language-of-t.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">conference</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">language</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">cyborgcamp</category>
            
            <pubDate>Sat, 06 Dec 2008 10:49:02 -0800</pubDate>
        </item>
        
        <item>
            <title>5 Minute Math Lesson: What is a metric tensor and what is it good for?</title>
            <description><![CDATA[A <a href="http://mathworld.wolfram.com/MetricTensor.html">metric tensor</a> $latex g_{mn} $  is used to measure distances based on a given coordinate system. In terms of the <a href="http://leto.net/x/2008/11/5-minute-math-lesson-what-is-a.html">Jacobian</a>, the <a href="http://en.wikipedia.org/wiki/Metric_tensor">metric tensor</a> can be found from $latex g_{mn} = (J^T J)_{mn} $  where $latex J^T $  is the transpose of the <a href="http://en.wikipedia.org/wiki/Carl_Gustav_Jakob_Jacobi">Jacobian</a>. Since $latex J^T J$ is a symmetric matrix for any matrix $latex J$, the metric tensor is always symmetric. (In fancy-pants math lingo this is called a <a href="http://mathworld.wolfram.com/SymmetricBilinearForm.html">symmetric bilinear form</a>.) What is the real-life consequences of this? The distance from $latex a$ to $latex b$ is always the same as the distance from $latex b$ to $latex a$, no matter what kind of <a href="http://mathworld.wolfram.com/BipolarCoordinates.html">crazy coordinate system</a> you are living in! 
<br>
If we want to calculate the length of a parameterized curve  $latex x^r = x^r(u) $  where $latex u $  is a parameter with respect to some coordinate system, then we can write an infintesmal displacement element as $latex dx^r = p^r(u) du $ . The length of this displacement is
$latex ds = \sqrt{g_{mn} p^m p^n} du  $ and the length of the curve from $latex u=u_1 $  to $latex u=u_2 $  is $latex L =  \int_{u_1}^{u_2} ds = \int_{u_1}^{u_2} \sqrt{g_{mn} p^m p^n} du $  .
<br>
So we need the metric tensor to define distance along a curve when we are in non-cartesian coordinate systems, such as <a href="http://mathworld.wolfram.com/SphericalCoordinates.html">spherical</a> or <a href="http://mathworld.wolfram.com/ToroidalCoordinates.html">toroidal</a>. From the metric tensor one can then start to study the "curvature" of a coordinate system. More soon!]]></description>
            <link>http://leto.net/x/2008/12/5-min-math-metric-tensor.html</link>
            <guid>http://leto.net/x/2008/12/5-min-math-metric-tensor.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">math</category>
            
            
            <pubDate>Tue, 02 Dec 2008 21:39:31 -0800</pubDate>
        </item>
        
        <item>
            <title>5 Minute Math Lesson: What is a Jacobian and what is it good for?</title>
            <description><![CDATA[In <a href="http://mathworld.wolfram.com/Tensor.html">Tensor</a> Calculus, a <a href="http://mathworld.wolfram.com/Jacobian.html">Jacobian</a> is a matrix defined as$latex J_{mn} = \frac{dy^m}{dx^n}  $ where the $latex y^i $ 's are a new coordinate system defined   in terms of the original coordinate system, the $latex x^i $ 's. (Note that we are using subscripts, $latex x^2 $  denotes the second element of the      $latex \mathbf{x} $  vector.) The determinant of this matrix $latex J=det([J_{mn}]) $  is important because this represents the constant of               proportionality between volumes in the old coordinates and in the new coordinates. As a simple example polar coordinates is the transformation  $latex  (x,y)= (r \cos {\theta} , r \sin {\theta} ) $ . When we want to perform an integration in cartesian coordinates by transforming into polar   coordinates, we write $latex \int f(x,y) dx dy = \int f(r,\theta) r dr d\theta  $ , the factor of $latex r $  is precisely the Jacobian. So in general, to convert an integral in the $latex x^i $  coordinate system to the $latex y^i $  coordinate system we have$latex  \int f(\mathbf{x}) d\mathbf{x} = \int    f(\mathbf{y}) J(\mathbf{y}) d\mathbf{y}  $  where $latex \mathbf{x}=(x^1,x^2,\cdots,x^n)  $ and $latex \mathbf{y}=(y^1,y^2,\cdots,y^n) $  .
<p>In differential equation theory, the Jacobian matrix plays a key role in defining the stability of solutions.  As a simple example, consider the matrix   ordinary differential equation $latex \dot{\mathbf{x}} = A \mathbf{x}  $  where $latex A = \left(\begin{array}{cc}a&b\\c&d\end{array} \right) $ . Because this is a linear system, the solution will always be a linear combination of exponentials $latex \mathbf{x} = \mathbf{v_1} e^{\lambda_1 t} + \mathbf{v_2} e^{\lambda_2 t } $   where $latex \mathbf{v_{1,2}} $  are the <a href="http://en.wikipedia.org/wiki/Eigenvalue">eigenvectors</a> and $latex \lambda_{1,2} $  are the <a href="http://en.wikipedia.org/wiki/Eigenvalue">eigenvalues</a>, and $latex t $  is time,      which is positive. Since$latex  t > 0 $ , we must have $latex  Re(\lambda_{1,2}) < 0 $  for the solution to decay to a steady state. If this is violated  for any$latex  \lambda_i $  then that exponential "blows up" as $latex t \rightarrow \infty $ , since it is an exponential with an ever-increasing        postive argument. Note that if the eigenvalues are complex then the imaginary part of the eigenvalue is related to the oscillatory part of the solution.

<p> A $latex  \lambda_i  $  would be called an unstable eigenvalue of the system and also forms part of the vector space called the  unstable manifold. Instability is defined as the tendency for a system to shoot away from a certain state when it is slightly disturbed (perturbed) from  that state. Stability is the feature of a system to come back to a certain state if it is slightly perturbed from that state. 
<p>
Stability has important consequences for applications, because it can determine if your chemical/combustion reaction will go out of control, of if the    species in your mathematical model go extinct, etc, depending on what the differential equations describe. Whatever your equations describe, knowing if   the solutions are stable is pretty important and usually the first step of an analysis. If you have stable solutions, then you can reasonably trust  numerics but if you are trying to numerically simulate an unstable solution of an equation, you must be much more careful. In these situations you want to use specialized integration algorithms that preserve certain properties of your solutions, like if it is <a href="http://en.wikipedia.org/wiki/Symplectic_integrator">symplectic</a>. More about this later!]]></description>
            <link>http://leto.net/x/2008/11/5-minute-math-lesson-what-is-a.html</link>
            <guid>http://leto.net/x/2008/11/5-minute-math-lesson-what-is-a.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">math</category>
            
            
            <pubDate>Sun, 30 Nov 2008 19:02:56 -0800</pubDate>
        </item>
        
        <item>
            <title>LaTeX finally works</title>
            <description><![CDATA[<div>Yes, now I can write <a href="http://en.wikipedia.org/wiki/Euler's_identity">Euler's Identity</a> properly: $latex e^{i \pi } + 1 = 0$. This required some heavy hacking on the <a href="http://www.raquo.net/fine-structure/latex/">MTLaTeX</a> plugin, mostly in telling LaTeX where to find style files and fonts. I fixed some glaring security bugs waiting to happen and improved error reporting. Once I started looking at the source, it was pretty apparent that it was translated from PHP <span class="Apple-style-span" style="font-weight: bold;">*wince*</span>. I started an overhaul, but it definitely needs a rewrite from the ground up. It would be nice to have config parameters viewable and changeable within MT. Thankfully MT has some pretty good <a href="http://www.movabletype.org/documentation/">documentation</a>.</div><div><br /></div><div>LaTeX makes math jokes so much more fun:</div><div><br /></div><div>$latex \int{ \frac{1}{cabin} } = \log{ cabin} + C$</div><div><br /></div><div>Don't forget the $latex + C $, it's important. </div><div><br /></div>]]></description>
            <link>http://leto.net/x/2008/11/testing-latex.html</link>
            <guid>http://leto.net/x/2008/11/testing-latex.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">movabletype</category>
            
            
            <pubDate>Sun, 30 Nov 2008 02:36:08 -0800</pubDate>
        </item>
        
        <item>
            <title>Thesis Revisited</title>
            <description><![CDATA[Enough time has passed after the defense of my masters that I can stand looking at it again, so I did a <span class="Apple-style-span" style="font-weight: bold;">git svn clone </span>of my old svn thesis repo and put it on my <a href="http://leto.net/gitweb/">gitweb</a>. The scary-sounding title of my thesis was: <a href="http://leto.net/x/2008/11/28/thesis.pdf">Solitary Wave Families In Two Non-Integrable Models Using Reversible Systems Theory</a>. It is 48 pages of gobbleygook unless you have some decent differential equations and linear algebra background. The <a href="http://leto.net/x/2008/11/28/thesis_presentation.pdf">presentation</a> that I gave during my defense is at least a tiny bit more digestible. It at least has a Sherlock Holmes quote and some pretty pictures. One sentence english translation of my thesis: <span class="Apple-style-span" style="text-decoration: underline;">I found some solutions to some equations that people hadn't found before</span>.<div><br /></div><div>One chapter of my thesis was accepted and published in <span class="Apple-style-span" style="border-collapse: collapse; color: rgb(43, 50, 68); font-family: verdana; font-size: 11px; "><a href="http://www.elsevier.com/wps/find/journaldescription.cws_home/622724/description#description">Communications in Nonlinear Science and Numerical Simulation</a><span class="Apple-style-span" style="border-collapse: separate; color: rgb(51, 51, 51); font-family: arial; font-size: 13px; "><span class="Apple-style-span" style="color: rgb(0, 0, 0); font-size: 12px; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; ">.<span class="Apple-style-span" style="color: rgb(51, 51, 51); font-size: 13px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; "> Here is the <a href="http://www.sciencedirect.com/science?_ob=ArticleURL&amp;_udi=B6X3D-4SFG4MB-1&amp;_user=10&amp;_coverDate=05%2F31%2F2009&amp;_rdoc=25&amp;_fmt=high&amp;_orig=browse&amp;_srch=doc-info(%23toc%237296%232009%23999859994%23703262%23FLA%23display%23Volume)&amp;_cdi=7296&amp;_sort=d&amp;_docanchor=&amp;_ct=76&amp;_acct=C000050221&amp;_version=1&amp;_urlVersion=0&amp;_userid=10&amp;md5=0785293922ab7d5140ab1c50972c026d">abstract</a>. The actual print publication date is <span class="Apple-style-span" style="color: rgb(0, 0, 0); font-size: 12px; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; "><a href="http://www.sciencedirect.com/science?_ob=PublicationURL&amp;_tockey=%23TOC%237296%232009%23999859994%23703262%23FLA%23&amp;_cdi=7296&amp;_pubType=J&amp;view=c&amp;_auth=y&amp;_acct=C000050221&amp;_version=1&amp;_urlVersion=0&amp;_userid=10&amp;md5=21a9cb35827bae338a0e83fe7c162fbe" style="text-decoration: none; ">Volume 14, Issue 5</a>, May 2009, Pages 1999-2005, but it is "pre-published" online.</span></span></span></span></span></div><div><br /></div><div><span class="Apple-style-span" style="border-collapse: collapse; color: rgb(43, 50, 68); font-family: verdana; font-size: 11px; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(51, 51, 51); font-family: arial; font-size: 13px; "><span class="Apple-style-span" style="color: rgb(0, 0, 0); font-size: 12px; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; "><span class="Apple-style-span" style="color: rgb(51, 51, 51); font-size: 13px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; ">Next on my list is to get LaTeX rendering to work in MovableType.</span></span></span></span></div>]]></description>
            <link>http://leto.net/x/2008/11/thesis-revisited.html</link>
            <guid>http://leto.net/x/2008/11/thesis-revisited.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">git</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">math</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">svn</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">thesis</category>
            
            <pubDate>Fri, 28 Nov 2008 01:01:47 -0800</pubDate>
        </item>
        
        <item>
            <title>People Pay for Oracle?</title>
            <description><![CDATA[I was utterly amazed when I had the pleasure of interacting with an Oracle database at work and realized that even the latest and greatest Oracle 10 command-line shell has no <a href="http://en.wikipedia.org/wiki/GNU_readline">readline</a> support.  Are we still in the days of <a href="http://www.computersciencelab.com/ComputerHistory/HtmlHelp/Images2/eniac3.gif">vacuum tubes</a>? Seriously people! Thankfully there is a spiffy utility called <a href="http://utopia.knoware.nl/~hlub/uck/rlwrap/">rlwrap</a> which saves the day. It acts as a buffer between another interactive program and provides proper command completion and history. ]]></description>
            <link>http://leto.net/x/2008/11/people-pay-for-oracle.html</link>
            <guid>http://leto.net/x/2008/11/people-pay-for-oracle.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">crapware</category>
            
            
            <pubDate>Wed, 26 Nov 2008 20:53:13 -0800</pubDate>
        </item>
        
        <item>
            <title>GitX 0.5 has Gravatar Support!</title>
            <description><![CDATA[<a href="http://gitx.frim.nl/index.html">GitX</a> just auto-upgraded itself and the interface just keeps getting prettier and more functional! Check out the spiffy <a href="http://www.gravatar.com">Gravatar</a> and one-click <a href="https://gist.github.com/ce970fb0702d30768bb6">gist </a> creation:

<a href="http://www.flickr.com/photos/28801292@N05/3048703735/" title="gitx-gravatar by jaleto, on Flickr"><img src="http://farm4.static.flickr.com/3237/3048703735_c8e1a5c451.jpg" width="500" height="476" alt="gitx-gravatar" /></a>]]></description>
            <link>http://leto.net/x/2008/11/gitx-05-has-gravatar-support.html</link>
            <guid>http://leto.net/x/2008/11/gitx-05-has-gravatar-support.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">git</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">osx</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">git</category>
            
            <pubDate>Fri, 21 Nov 2008 19:14:17 -0800</pubDate>
        </item>
        
        <item>
            <title>Running a Factor Script</title>
            <description><![CDATA[For those who are put off by the interactive UI part of Factor, you can run a script from the command-line like so<div><br /></div><div><div><span class="Apple-style-span" style="font-weight: bold;">#! /Users/leto/git/factor/factor  -script</span></div><div><span class="Apple-style-span" style="font-weight: bold;"><br /></span></div><div><span class="Apple-style-span" style="font-weight: bold;">USING: gsl gsl.sf.result gsl.sf.bessel gsl.sf.log kernel tools.test ;</span></div><div><span class="Apple-style-span" style="font-weight: bold;"><br /></span></div><div><span class="Apple-style-span" style="font-weight: bold;">"gsl.sf" test</span></div><div><br /></div><div>Note the space after the ! is necessary because every "word" in Factor must be separated by a space. The practice of running factor as a non-interactive script is not encouraged, but in certain  situations it wins the day. The above script could be factored to take an argument of a subsystem to test and then I would make a key-binding in vim (or emacs or whatever) so that when I am editing a file and I type <span class="Apple-style-span" style="font-weight: bold;">,t </span>it shows me the results of that subsystems tests.</div><div><br /></div><div>All of this stuff can be done in the interactive UI, but I think people will fiddle with Factor more  if they can easily bolt it onto their current workflow. People tend not to even try things that require totally changing their current tool chain. For me, I am editing the source of the GSL bindings in VIM, so having that script is invaluable. I hack on the source and whenever I change anything important I run the tests by hitting <span class="Apple-style-span" style="font-weight: bold;">2 keys. </span>It is really important to make running and writing tests as easy as possible, or they won't get written at all. </div><div><br /></div><div>Today ...... is a good day to hack.</div><div><br /></div></div>]]></description>
            <link>http://leto.net/x/2008/11/running-a-factor-script.html</link>
            <guid>http://leto.net/x/2008/11/running-a-factor-script.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">GSL</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">factor</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">factor</category>
            
            <pubDate>Thu, 06 Nov 2008 07:32:56 -0800</pubDate>
        </item>
        
        <item>
            <title>New Factor Git repo</title>
            <description><![CDATA[You can view my new factor repo's <a href="http://leto.net/gitweb/?p=factor.git;a=summary">gitweb</a>. Or you can clone my repo with<div><br /></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;"><span class="Apple-style-span" style="font-weight: bold;"><span class="Apple-style-span" style="font-family: '-editor-proxy';">git clone http://leto.net/code/factor.git</span></span></blockquote><div><br /></div>This should start getting pulled upstream into the main factor repo sometime soon.<div><br /></div><div>The GSL bindings are now in "extra/gsl", which is the <span class="Apple-style-span" style="font-weight: bold;">extra.gsl</span> namespace in Factor. I have bindings to all of GSL's special functions, I am currently working on documenting the Bessel functions and writing tests for the functions which take/return gsl_sf_result structures. If you would like to see another subsystem, just ask and I will let you know if it is doable. There are almost 50 subsystems, so if you want to help: clone, hack, commit and push!<br /><div><br /></div></div>]]></description>
            <link>http://leto.net/x/2008/11/new-factor-git-repo.html</link>
            <guid>http://leto.net/x/2008/11/new-factor-git-repo.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">GSL</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">factor</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">git</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">factor</category>
            
            <pubDate>Wed, 05 Nov 2008 23:41:36 -0800</pubDate>
        </item>
        
        <item>
            <title>CouchDB talk at OpenSourcery</title>
            <description><![CDATA[<div>I attended a presentation at <a href="http://www.opensourcery.com/">OpenSourcery</a> by <a href="http://jchris.mfdz.com/">Chris Anderson</a> about <a href="http://incubator.apache.org/couchdb/">CouchDB</a>. He showed off  <a href="http://wiki.apache.org/couchdb/Getting_started_with_Futon?action=show&amp;redirect=GettingStartedWithFuton">Futon</a>, which is CouchDB's online web interface, which allows one to do normal <a href="http://en.wikipedia.org/wiki/Create,_read,_update_and_delete">CRUD</a>, as well as set up replications, run tests and set configuration variables. It has some simple JavaScript functions which are basically map/reduce elements and it seems to be tightly integrated with <a href="http://jquery.com/">jQuery</a>. When I asked about <a href="http://www.prototypejs.org/">Prototype</a> I got the "Why are you still using Prototype?" spiel. Perhaps I should actually look into why people think jQuery is so much better.  Anyway, Here are my rough notes of the interesting features of CouchDB that caught my eye:</div><div><br /></div><div>HTTP server + JSON Doc DB (key/value pairs), RESTful</div><div><br /></div><div>Incremental Map reduce views</div><div><br /></div><div>peer-based replication</div><div><br /></div><div>multi-master  OR push all changes to one write-master and + read slaves</div><div><br /></div><div>concurrency over serial speed</div><div><br /></div><div>Ex: lotsofwords.com = 120GB database, 200ms response</div><div><br /></div><div>written in Erlang</div><div><br /></div><div>sharding via hash functions</div><div><br /></div><div>documents vs. relations</div><div><br /></div><div>each doc has a "revision"</div><div><br /></div><div>first in wins</div><div><br /></div><div>standalone apps via _external servers </div><div><br /></div><div>p2p replication - this is really cool and powerful</div><div><br /></div><div>_external servers - api to parse request as json, filter it and then return</div><div><br /></div><div>rollup = reduce </div><div><br /></div><div>re-reduce phase =~ aggregate</div><div><br /></div><div><br /></div><div><br /></div>]]></description>
            <link>http://leto.net/x/2008/11/couchdb-talk-at-opensourcery.html</link>
            <guid>http://leto.net/x/2008/11/couchdb-talk-at-opensourcery.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">couchdb</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">presentation</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">erlang couchdb</category>
            
            <pubDate>Wed, 05 Nov 2008 18:21:51 -0800</pubDate>
        </item>
        
        <item>
            <title>Bessel Functions in Factor</title>
            <description><![CDATA[<span class="Apple-style-span" style="color: rgb(85, 26, 139); text-decoration: underline;"><a href="http://leto.net/x/factor-gsl.html" onclick="window.open('http://leto.net/x/factor-gsl.html','popup','width=1440,height=900,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">View Screenshot</a><br /></span><div><br /></div><div>Click on the link above to see a screenshot of how to make plots of functions in Factor. I am showing off the Regular Bessel function J0(x) which is called gsl_sf_bessel_J0 in GSL. In the background I also have the source of the documentation.</div>]]></description>
            <link>http://leto.net/x/2008/11/bessel-functions-in-factor.html</link>
            <guid>http://leto.net/x/2008/11/bessel-functions-in-factor.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">factor</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">screenshot</category>
            
            
            <pubDate>Sat, 01 Nov 2008 22:08:41 -0800</pubDate>
        </item>
        
    </channel>
</rss>
