<?xml version="1.0"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">

<!-- RSS as a "standard" is terrible; use Atom. -coyled -->
<!-- http://coyled.com/atom.xml -->

  <channel>
    <title>coyled.com</title>
    <link>http://coyled.com/</link>
    <atom:link href="http://coyled.com/rss.xml" rel="self" type="application/rss+xml" />
    <description>stuff from coyled</description>
    <language>en-us</language>
    <pubDate>Tue, 18 Oct 2011 21:15:23 -0400</pubDate>
    <lastBuildDate>Tue, 18 Oct 2011 21:15:23 -0400</lastBuildDate>

    
    <item>
      <title>A hearty welcome to #bshellz</title>
      <link>http://coyled.com/2011/01/27/a-hearty-welcome-to-bshellz.html</link>
      <pubDate>Thu, 27 Jan 2011 15:29:16 -0500</pubDate>
      <author>coyled@coyled.com (Dave Coyle)</author>
      <guid>http://coyled.com/2011/01/27/a-hearty-welcome-to-bshellz</guid>
      <description>&lt;p&gt;There's been a request to me to bring the bot into #bshellz for
helping with users that don't speak english very well. So i'm
writing up a small tutorial for them on how to use the translation
api in Farnsworth. Here is a list of languages currently supported.
Any more that google adds to it's translation service I will add as
I get time.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Arabic  Bulgarian  Catalan  Czech  Danish  German
Greek  English  Spanish  Estonian  Finnish  French  Galician
Hindi  Croatian  Hungarian  Indonesian  Italian Hebrew
Japanese  Korean  Lithuanian  Latvian  Maltese  Dutch
Norwegian  Polish  Portuguese  Romanian  Russian
Slovak  Slovenian  Albanian  Serbian  Swedish  Thai
Filipino  Turkish  Ukrainian  Vietnamese  Chinese  Chinese_Traditional
&lt;/code&gt;&lt;/pre&gt;

&lt;!--more--&gt;

&lt;p&gt;How you use these is like this.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;(you) farnsworth: &amp;quot;I do not speak your language&amp;quot; -&amp;gt; Spanish
(farnsworth) you: &amp;quot;Yo NOTY hablan su idioma&amp;quot;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Now this is all very well and good if you know what language they
are speaking, but what if you don't?&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;(you) farnsworth: &amp;quot;Jinsi gani mimi kupata shell yako na kukimbia exploits mizizi juu yake&amp;quot; -&amp;gt; DetectLanguage
(farnsworth) you:  &amp;quot;Swahili&amp;quot;
(you) farnsworth: &amp;quot;Jinsi gani mimi kupata shell yako na kukimbia exploits mizizi juu yake&amp;quot; -&amp;gt; English
(farnsworth) you:  &amp;quot;How do I get your shell to run exploits on his roots&amp;quot;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Now there are also other features on the bot, math related that you
can explore here on the rest of my site.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Hire Me!</title>
      <link>http://coyled.com/2011/01/07/hire-me.html</link>
      <pubDate>Fri, 07 Jan 2011 19:12:33 -0500</pubDate>
      <author>coyled@coyled.com (Dave Coyle)</author>
      <guid>http://coyled.com/2011/01/07/hire-me</guid>
      <description>&lt;p&gt;I've come into the need of some employment so I'm posting my resume
up here for all to see, and offer me a job. You can view
&lt;a href=&quot;http://simcop2387.info/resume.pdf&quot;&gt;my resume here&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>¡Ándale! ¡Ándale! ¡Arriba! ¡Arriba!</title>
      <link>http://coyled.com/2010/09/28/andale-andale-arriba-arriba.html</link>
      <pubDate>Tue, 28 Sep 2010 19:21:32 -0400</pubDate>
      <author>coyled@coyled.com (Dave Coyle)</author>
      <guid>http://coyled.com/2010/09/28/andale-andale-arriba-arriba</guid>
      <description>&lt;p&gt;Thanks to a
&lt;a href=&quot;http://symkat.com/105/cookieless-domains/&quot;&gt;friend of mine&lt;/a&gt; I've
now got something like a
&lt;a href=&quot;http://symkat.com/118/introducing-sympullcdn/&quot;&gt;CDN&lt;/a&gt; setup to help
accelerate the site no matter where I end up hosting it. This means
that the site should go quite a bit faster than it used to and It's
given me a reason to actually learn
&lt;a href=&quot;http://www.python.org/&quot;&gt;Python&lt;/a&gt;. This has given me a few ideas for
possible syntax and features that might be useful for both the
module system and other things for the language.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>And we’re back in 3 2 …</title>
      <link>http://coyled.com/2010/09/23/and-were-back-in-3-2.html</link>
      <pubDate>Thu, 23 Sep 2010 11:54:37 -0400</pubDate>
      <author>coyled@coyled.com (Dave Coyle)</author>
      <guid>http://coyled.com/2010/09/23/and-were-back-in-3-2</guid>
      <description>&lt;p&gt;Ok i've been struggling with my webhost for a while now, it was
free but the service was getting horrible and I think they've gone
down for the count. As such i'm now hosting it elsewhere and we'll
hope this one is more stable (though i do know they don't have very
much backup power but it shouldn't be a problem).&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Has it been that long already?</title>
      <link>http://coyled.com/2010/09/11/has-it-been-that-long-already.html</link>
      <pubDate>Sat, 11 Sep 2010 00:00:41 -0400</pubDate>
      <author>coyled@coyled.com (Dave Coyle)</author>
      <guid>http://coyled.com/2010/09/11/has-it-been-that-long-already</guid>
      <description>&lt;p&gt;As of today, it's been two years since the first commit I made to
start this project. It started out as an open source clone of
another program so that people (mostly me) could use it for doing
some math on IRC and have all kinds of fun figuring out how many
farts it would take to power a laptop. Since then the project has
grown wildly out of control and I couldn't be happier about it.
It's still not even close to anything that I'd call stable or ready
for production BUT it's getting there. With this project I've
learned a considerable amount about creating a testing suite. I've
also had to do a number of redesigns because what I had made wasn't
quite as flexible as I later needed it to be.&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;I've got a number of plans for the future and some of them can be
seen on the Todo page, but there's one big one that isn't on there.
I am planning on writing a compiler for the Parrot VM and I'm
intending to have that as the canonical version of the language
once I've finished defining most of the features inside the Perl
modules.&lt;/p&gt;

&lt;p&gt;I'd like to thank all of you that visit, (not counting spammers
that appears to be about 3 of you, maybe); and please register and
leave a comment if you're out there.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Version 0.7.6 released</title>
      <link>http://coyled.com/2010/09/03/version-0-7-6-released.html</link>
      <pubDate>Fri, 03 Sep 2010 09:59:01 -0400</pubDate>
      <author>coyled@coyled.com (Dave Coyle)</author>
      <guid>http://coyled.com/2010/09/03/version-0-7-6-released</guid>
      <description>&lt;p&gt;This version brings very few changes from the 0.7.5 release (that i forgot to announce).  Most notably is that the tests are fixed, I SWEAR they worked here!  Along with that I made the date parsing stuff save time zones when given rather than converting everything to UTC by default, this means when you tell it #2010-03-14 1:59:26am EST5EDT# it'll keep it in the EST5EDT timezone for you.  I also removed a single reference to Date::Manip which hasn't been strictly needed for some time and I just kept missing the reference.&lt;/p&gt;

&lt;p&gt;The 0.7.5 release brought the new function syntax and the depreciated &amp;amp; operator.&lt;/p&gt;

&lt;p&gt;This release is because I'm planning on doing something special for the 2 year anniversary of the project next Saturday, keep an eye out!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>What does it take to become useful?</title>
      <link>http://coyled.com/2010/08/22/what-does-it-take-to-become-useful.html</link>
      <pubDate>Sun, 22 Aug 2010 13:54:53 -0400</pubDate>
      <author>coyled@coyled.com (Dave Coyle)</author>
      <guid>http://coyled.com/2010/08/22/what-does-it-take-to-become-useful</guid>
      <description>&lt;p&gt;I'm getting ready to prepare a new release of Language::Farnsworth with some of the new features I've added before I start work on the module system.  The reason being is that the module system is going to require some massive changes to the whole interpreter.  These changes will cause me to have to refactor lots of code and end up with a more complete design for an interpreter.  I'm updating the &lt;a title=&quot;TODO&quot; href=&quot;/todo/&quot;&gt;TODO&lt;/a&gt; on here to reflect what I need to do before I finish this.  I've also added a minor design document on how I plan on adding &amp;quot;lazy&amp;quot; type evaluations at &lt;a title=&quot;Magic Value Library&quot; href=&quot;/todo/magic-values/&quot;&gt;todo/magic-values/&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Someone check the temperature of hell</title>
      <link>http://coyled.com/2010/08/19/someone-check-the-temperature-of-hell.html</link>
      <pubDate>Thu, 19 Aug 2010 09:38:09 -0400</pubDate>
      <author>coyled@coyled.com (Dave Coyle)</author>
      <guid>http://coyled.com/2010/08/19/someone-check-the-temperature-of-hell</guid>
      <description>&lt;p&gt;Ok I've gotten my notes up as a preliminary spec on how modules are going to work in Language::Farnsworth.  You can view it at &lt;a href=&quot;/docs/module-draft-spec/&quot;&gt;docs/module-draft-spec/&lt;/a&gt; . I'd like you guys to check it out and leave me some comments on it.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Request For Comments</title>
      <link>http://coyled.com/2010/08/10/request-for-comments.html</link>
      <pubDate>Tue, 10 Aug 2010 18:06:50 -0400</pubDate>
      <author>coyled@coyled.com (Dave Coyle)</author>
      <guid>http://coyled.com/2010/08/10/request-for-comments</guid>
      <description>&lt;p&gt;I've been considering how i want to make namespaces in farnsworth and the way i've used them is quite considerably influenced by my experience with perl.  On the filesystem I think the way perl handles it (e.g. POE::Component::IRC is the file POE/Component/IRC.pm, by convention and by the fact that C&amp;lt;use&amp;gt; expects to find them there) is probably the way to go.  But should I have the actual creation of the namespace up to the file, or should i have it enforced like in java?  Just some things for me to mull over but I would love to hear from anybody out there on the topic.  So PLEASE leave a comment?&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Free CPU time</title>
      <link>http://coyled.com/2010/08/08/free-cpu-time.html</link>
      <pubDate>Sun, 08 Aug 2010 16:04:48 -0400</pubDate>
      <author>coyled@coyled.com (Dave Coyle)</author>
      <guid>http://coyled.com/2010/08/08/free-cpu-time</guid>
      <description>&lt;p&gt;I've finally gotten an Evaluator working here so that you guys can play with the language without having to spend large amounts of time figuring out how to get the damned thing running yourself!  This means you can spend my money and cpu time (in 25 second increments) to play around and have fun!&lt;/p&gt;

&lt;p&gt;[eval-form 1 &amp;quot;Contact form 1&amp;quot;]
There is a 25 second timeout setup so any infinite loops will still  halt.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Intentionally Unsupported</title>
      <link>http://coyled.com/2010/08/07/intentionally-unsupported.html</link>
      <pubDate>Sat, 07 Aug 2010 23:59:35 -0400</pubDate>
      <author>coyled@coyled.com (Dave Coyle)</author>
      <guid>http://coyled.com/2010/08/07/intentionally-unsupported</guid>
      <description>&lt;p&gt;&lt;strong&gt;The following feature is intentionally unsupported since it has come into being while being considered depreciated until a more permanent and logical system can be created.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To go along with all the other changes I've made I have added in a
new operator that lets you get at the actual value for a function
so that you can do some rather nifty things with it&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;amp;push
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;And what you'll get is something like&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;{`arr byref isa \[\] , x isa ...` arr = arr + x; }
&lt;/code&gt;&lt;/pre&gt;

&lt;!--more--&gt;

&lt;p&gt;While this might seem a little pointless at first it'll let you do
things like alias one function to another without having to create
a new stack frame and function to accomplish it.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;defun foo={`x` x * x};
defun bar=?
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Now that too seems a little pointless since you could just define
both of them to be the same to begin with, BUT when you've got a
large function that you don't want to have to copy and paste to
multiple places it ends up very nice since you can have the
interpreter do it for you. Now the really nifty part is that you
can redefine an existing function while keeping around a copy of
the original so that you can call back to it. This lets you create
an automatically memoized version of an arbitrary function
(assuming you know the inputs) and other really nifty and nasty
things. I'm going to write a quick and dirty little memoization
system in a bit to demonstrate this.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Speech Impediments</title>
      <link>http://coyled.com/2010/08/07/speech-impediments.html</link>
      <pubDate>Sat, 07 Aug 2010 20:00:20 -0400</pubDate>
      <author>coyled@coyled.com (Dave Coyle)</author>
      <guid>http://coyled.com/2010/08/07/speech-impediments</guid>
      <description>&lt;p&gt;I've finally gotten all the work done on merging the lambda and
function code. This resulted in a slight API change that nobody
cared about because there isn't anyone else out there doing
anything with this. The new syntax looks like this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;defun function=lambda
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;What this means is that you can define a function by creating ANY
expression that evaluates out to a lambda and assign it to the
function. So you can do something like this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;defun count={`` var count=0; {`` ++count}} \[\];
&lt;/code&gt;&lt;/pre&gt;

&lt;!--more--&gt;

&lt;p&gt;Then when you use the function count[] it'll increment the
variable every single time and return the value. This makes for a
slightly nicer looking way to make static values between function
calls since before you'd have to do something like:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;{``  var count=0; count{} := {++count}} \[\];
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Which can start getting rather nasty looking to work with and debug
when you start to have large functions or large amounts of static
variables (Though when you have multiple functions sharing the same
variables you can still use this form).&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Planned obsolescence</title>
      <link>http://coyled.com/2010/08/04/planned-obsolescence.html</link>
      <pubDate>Wed, 04 Aug 2010 22:50:11 -0400</pubDate>
      <author>coyled@coyled.com (Dave Coyle)</author>
      <guid>http://coyled.com/2010/08/04/planned-obsolescence</guid>
      <description>&lt;p&gt;I've decided that i'm going to be removing the &lt;code&gt;unit\[\]&lt;/code&gt; &amp;quot;function&amp;quot;
since its using a different part of the api that I don't like
anymore. I also suspect that none of you are using it (who are you
guys anyway?). I'll be replacing it with an operator instead since
that's really what it was. I don't know if i'll keep that operator
around forever or not but it will most certainly be with more
notice and more thought about removing it. Let the complaints
begin, (pretty please? someone? is there anyone out there?)&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>That's it I'm turning this car around right now!</title>
      <link>http://coyled.com/2010/07/30/thats-it-im-turning-this-car-around-right-now.html</link>
      <pubDate>Fri, 30 Jul 2010 13:36:41 -0400</pubDate>
      <author>coyled@coyled.com (Dave Coyle)</author>
      <guid>http://coyled.com/2010/07/30/thats-it-im-turning-this-car-around-right-now</guid>
      <description>&lt;p&gt;Ok, I've just pushed some changes to the git repo
(&lt;a href=&quot;http://github.com/simcop2387/Farnsworth&quot; title=&quot;http://github.com/simcop2387/Farnsworth&quot;&gt;http://github.com/simcop2387/Farnsworth&lt;/a&gt;
) that FINALLY adds code for doing &lt;code&gt;return\[\]&lt;/code&gt; finally. I've also
added tests for it, since I'm sure I'm going to break it. This
marks a wonderful day for Farnsworth since it now allows you to
write code that isn't perfectly rigidly structured! I've got one
more error message to rewrite and to add the new function syntax so
that I can finally get other things I want in place (mostly
objects).&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Error messages and the values of functions.</title>
      <link>http://coyled.com/2010/07/25/error-messages-and-the-values-of-functions.html</link>
      <pubDate>Sun, 25 Jul 2010 17:13:42 -0400</pubDate>
      <author>coyled@coyled.com (Dave Coyle)</author>
      <guid>http://coyled.com/2010/07/25/error-messages-and-the-values-of-functions</guid>
      <description>&lt;p&gt;I've spent a good deal of time recently getting rid of all the
calls to &lt;code&gt;die&lt;/code&gt; and friends in the code and switching them to the
error reporting module i've made so that i can start adding
exceptions and a proper &lt;code&gt;return\[\]&lt;/code&gt; to the language. I've also
finally cleaned up the massively strange looking error when you try
to convert between incompatible units,
&lt;code&gt;Conformance error, left side has different units than right side $VAR1 = bless( \[ 'kg' \], 'Fetch' );&lt;/code&gt;
that didn't even tell you about both sides to one that's much more
readable and understandable
&lt;code&gt;Conformance error, can't convert from length to mass&lt;/code&gt;.&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;I still have one more error message that i know of that is incredibly
obtuse and that will come next. Now that i've switched away from
using &lt;code&gt;die&lt;/code&gt; directly i can start making an error object that i pass
around instead so that i can differentiate between an error and a
return value. I needed this because i need to use &lt;code&gt;die&lt;/code&gt; in perl to
smash the stack and go back to the point where the function or
lambda was called. This is all because currently I'm using a
recursive descent pattern to evaluate the AST from the parser (I'm
not doing any processing on the AST for optimization or even to
order operations directly so that i can avoid deep recursion, it is
a design flaw but it makes hacking on it SO easy.) After i finish
this error code stuff i'm going to begin working on the rest of the
stuff needed for merging the lambda code and function code which
amounts to creating an operator (currently thinking of using &lt;code&gt;~&lt;/code&gt;)
to get a reference to a function and then moving to the new syntax,
&lt;code&gt;defun foo={`bar` bar ** 2};&lt;/code&gt; I'll keep the old style syntax
around for some time though.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Documentation, documentation, documentation</title>
      <link>http://coyled.com/2010/06/03/documentation-documentation-documentation.html</link>
      <pubDate>Thu, 03 Jun 2010 10:03:13 -0400</pubDate>
      <author>coyled@coyled.com (Dave Coyle)</author>
      <guid>http://coyled.com/2010/06/03/documentation-documentation-documentation</guid>
      <description>&lt;p&gt;I'm getting ready to reorganize/restructure the units in Farnsworth
so that they can all be documented (and make it so that ancient
units and things can be easily excluded/included in a script).
While I'm doing this I want to be able to make some nice
documentation and make an official way to include and document code
written in the language. To that end I'm getting ready to start
extending
&lt;a href=&quot;http://www.stack.nl/~dimitri/doxygen/&quot; title=&quot;doxygen&quot;&gt;doxygen&lt;/a&gt; so that
it can be used to document all the code written in Farnsworth can
have documentation included fairly easily. I'd also love any
comments and suggestions for other systems if someone knows one
that's better; the only other one I'm very familiar with is
&lt;a href=&quot;http://perldoc.perl.org/perlpod.html&quot; title=&quot;POD&quot;&gt;POD&lt;/a&gt; and that would be
a real pain in the ass to get into the parser to handle things
correctly.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>A place for all your stuff</title>
      <link>http://coyled.com/2010/05/08/a-place-for-all-your-stuff.html</link>
      <pubDate>Sat, 08 May 2010 14:31:30 -0400</pubDate>
      <author>coyled@coyled.com (Dave Coyle)</author>
      <guid>http://coyled.com/2010/05/08/a-place-for-all-your-stuff</guid>
      <description>&lt;p&gt;Okay, I'm anticipating a few users coming here that may have
written neat little functions and things in Farnsworth. And I'd
love for you guys to show off the snippets you've written. I'm
going to do another article here in a bit about some changes I made
last night to the latest WIP version of Farnsworth that let you do
neat things with lambdas and unit conversions that'll let more
things work in as natural a fashion as possible. So come show off
your snippets!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Google Groups</title>
      <link>http://coyled.com/2010/05/07/google-groups.html</link>
      <pubDate>Fri, 07 May 2010 03:30:12 -0400</pubDate>
      <author>coyled@coyled.com (Dave Coyle)</author>
      <guid>http://coyled.com/2010/05/07/google-groups</guid>
      <description>&lt;p&gt;I've gone and opened up a google group for the development of the
language, come join us if you'd like to follow things. At the
moment it'll be fairly sparse considering i'm the only developer,
and the only member of the list too.
&lt;a href=&quot;http://groups.google.com/group/farnsworth-dev&quot;&gt;http://groups.google.com/group/farnsworth-dev&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Language::Farnsworth::Functions::GoogleTranslate v0.9.1</title>
      <link>http://coyled.com/2010/05/01/languagefarnsworthfunctionsgoogletranslate-v0-9-1.html</link>
      <pubDate>Sat, 01 May 2010 22:47:56 -0400</pubDate>
      <author>coyled@coyled.com (Dave Coyle)</author>
      <guid>http://coyled.com/2010/05/01/languagefarnsworthfunctionsgoogletranslate-v0-9-1</guid>
      <description>&lt;p&gt;I've just uploaded a new copy of
&lt;code&gt;Language::Farnsworth::Functions::GoogleTranslate&lt;/code&gt; to cpan, this
update brings in a few more languages such as Yiddish,
HatianCreole, Welsh, Afrikaans and a few others that weren't
supported by the last release. Not a lot else to say about this
release, no bugs fixed (i'm not aware of any) and no new features
(I have some plans but haven't even come close to thinking about
how to make it work right). I've been mulling over an idea about
how to make what amounts to a set of paths for doing translations
with multiple services but haven't come up with a good idea on how
to design it all yet.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Dirty Hungarian Dictionaries</title>
      <link>http://coyled.com/2010/04/30/dirty-hungarian-dictionaries.html</link>
      <pubDate>Fri, 30 Apr 2010 02:21:04 -0400</pubDate>
      <author>coyled@coyled.com (Dave Coyle)</author>
      <guid>http://coyled.com/2010/04/30/dirty-hungarian-dictionaries</guid>
      <description>&lt;p&gt;&lt;MTMarkdownOptions output='raw'&gt;
&lt;code&gt;Language::Farnsworth::Functions::GoogleTranslate&lt;/code&gt; has been spun off into its own dist on cpan, i've done that simply because it won't be updated except to add new languages for the time being. (unless i break it, or make a proper plugin system).  So if you're wanting to use those nice fancy translation features, you'll want to install it also, and for those of you who are wondering i'll also provide here a copy of the string mangling function that the bot uses.
&lt;pre lang=&quot;farnsworth&quot; escaped=&quot;true&quot;&gt;{``
var steps = [];
var languages = [&amp;quot;Arabic&amp;quot;,&amp;quot;Bulgarian&amp;quot;,&amp;quot;Catalan&amp;quot;,&amp;quot;Czech&amp;quot;,&amp;quot;Danish&amp;quot;,&amp;quot;German&amp;quot;,
&amp;quot;Greek&amp;quot;,&amp;quot;English&amp;quot;,&amp;quot;Spanish&amp;quot;,&amp;quot;Estonian&amp;quot;,&amp;quot;Finnish&amp;quot;,&amp;quot;French&amp;quot;,&amp;quot;Galician&amp;quot;,&amp;quot;Hindi&amp;quot;,
&amp;quot;Croatian&amp;quot;,&amp;quot;Hungarian&amp;quot;,&amp;quot;Indonesian&amp;quot;,&amp;quot;Italian&amp;quot;,&amp;quot;Hebrew&amp;quot;,&amp;quot;Japanese&amp;quot;,&amp;quot;Korean&amp;quot;,
&amp;quot;Lithuanian&amp;quot;,&amp;quot;Latvian&amp;quot;,&amp;quot;Maltese&amp;quot;,&amp;quot;Dutch&amp;quot;,&amp;quot;Norwegian&amp;quot;,&amp;quot;Polish&amp;quot;,&amp;quot;Portuguese&amp;quot;,
&amp;quot;Romanian&amp;quot;,&amp;quot;Russian&amp;quot;,&amp;quot;Slovak&amp;quot;,&amp;quot;Slovenian&amp;quot;,&amp;quot;Albanian&amp;quot;,&amp;quot;Serbian&amp;quot;,&amp;quot;Swedish&amp;quot;,
&amp;quot;Thai&amp;quot;,&amp;quot;Filipino&amp;quot;,&amp;quot;Turkish&amp;quot;,&amp;quot;Ukrainian&amp;quot;,&amp;quot;Vietnamese&amp;quot;,&amp;quot;Chinese&amp;quot;,&amp;quot;Chinese_Traditional&amp;quot;];&lt;/p&gt;

&lt;p&gt;var getlang = {`` languages@random[]*(length[languages])$};&lt;/p&gt;

&lt;p&gt;mangle{x} := {steps = [];
              var origlang = x -&amp;gt; DetectLanguage;
              push[steps, x];
              var targetlangs = int[random[]*42]+1;&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;          while (targetlangs=targetlangs-1)
          {
            push[steps, eval[&amp;quot;steps@-1$ -&amp;amp;gt; &amp;quot;+getlang[]]];
          };

          push[steps, eval[&amp;quot;steps@-1$ -&amp;amp;gt; &amp;quot;+origlang]];
          steps@-1$};
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;tracemangle{} := {steps};&lt;/p&gt;

&lt;p&gt;} []; /&lt;em&gt;this bit makes the lambda we just finished making get executed rather than storing it somewhere&lt;/em&gt;/
&lt;/pre&gt;
What's going on in it is that we've got two main variables that we don't really want to expose to the world, for pollution and protection reasons (a bit like using an object!).  So what we do is we make a lambda since it has its own scope and define everything inside of it, event the functions that are exposed to the outside world by virtue of going into the function namespace.&lt;/p&gt;

&lt;p&gt;Even though they're accessible to the world they still live inside the scope of the original lambda allowing them to use the two variables &lt;code&gt;steps&lt;/code&gt;, &lt;code&gt;languages&lt;/code&gt; and &lt;code&gt;getlang&lt;/code&gt;.  &lt;code&gt;languages&lt;/code&gt; should be fairly self explanatory, its a list of all the languages that the google translate library supports.  &lt;code&gt;getlang&lt;/code&gt; is a little harder but still somewhat easy to figure out, its a lambda that gets a random language from the &lt;code&gt;languages&lt;/code&gt; variable.  &lt;code&gt;steps&lt;/code&gt; is a little strange, we store each and every result that we get from google translate so that we can later examine them with the &lt;code&gt;tracemangle[]&lt;/code&gt; function (i.e. to figure out where it got &amp;quot;purple monkey dishwasher&amp;quot; from).&lt;/p&gt;

&lt;p&gt;The two functions it exports out to the world, &lt;code&gt;tracemangle[]&lt;/code&gt; and &lt;code&gt;mangle[]&lt;/code&gt; are pretty simple to understand. &lt;code&gt;tracemangle[]&lt;/code&gt; is just a simple getter for the internal &lt;code&gt;steps&lt;/code&gt; variable. &lt;/p&gt;

&lt;p&gt;&lt;code&gt;mangle[]&lt;/code&gt; starts by clearing the last &lt;code&gt;steps&lt;/code&gt; we took, and then by using the &lt;code&gt;DetectLanguage[]&lt;/code&gt; function provided by the translation library to find out what language we're starting with, this will be used later on.  After that we pick a random number of languages to translate to (we use the 42 simply because it seems to work well when played with, other values work fine but well 42...).  Then we go into a fairly simple while loop (the language still does not have any for loops, which will be recitfied) that uses the &lt;code&gt;eval[]&lt;/code&gt; function to create and run a simple snippet of code that looks something like:
&lt;pre&gt;steps@-1$ -&amp;gt; Japanese&lt;/pre&gt;
The reason we use the variable &lt;code&gt;steps&lt;/code&gt; is that it helps prevent someone from inserting their own code to be run.  We do this until we've done the requisite number of translations that we decided on before, and then we do ONE more translation.  This time we go and do a translation into the original source language found from &lt;code&gt;DetectLanguage[]&lt;/code&gt;.  This allows us to mangle things from any language into any language and makes a few of the Dutch people that use the bot happy.
&lt;/MTMarkdownOptions&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>New release being prepared, 0.7.2</title>
      <link>http://coyled.com/2010/04/26/new-release-being-prepared-0-7-2.html</link>
      <pubDate>Mon, 26 Apr 2010 20:05:58 -0400</pubDate>
      <author>coyled@coyled.com (Dave Coyle)</author>
      <guid>http://coyled.com/2010/04/26/new-release-being-prepared-0-7-2</guid>
      <description>&lt;p&gt;I'm getting ready to upload a new version of farnsworth, 0.7.2 to
CPAN, it contains a fix in the parser for equations like 2a**2
correctly parsing as 2 * (a ** 2) and more like it. This fixes
the last known issue with the parser and makes me very happy. I'll
be working on 0.7.3 after exams and it should contain mostly only
documenation updates and fixes. (there is also experimental support
for a new lambda syntax in the same vein as ruby, e.g. {|x|
x**2}, i don't know if it'll stay or not but it'd be nice to get
the backticks back for other uses.) EDIT: apparently i missed
something when adding the alternate syntax lambda support, so its
not correctly in there and doesn't work, i did say it was
experimental didn't i?&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Farnsworth</title>
      <link>http://coyled.com/2010/04/26/farnsworth.html</link>
      <pubDate>Mon, 26 Apr 2010 12:00:46 -0400</pubDate>
      <author>coyled@coyled.com (Dave Coyle)</author>
      <guid>http://coyled.com/2010/04/26/farnsworth</guid>
      <description>&lt;p&gt;Ok, now that I've got things setup here I plan on using this place
for keeping track of what's going on in the Farnsworth community
(i.e. me, there's only me right now). I'll be making official
announcements and posts about the current state of what I'm working
on in the interpreter. (since this is also a personal page for
myself i'll also eventually have a copy of my resume and everything
else here but that'll come a bit later), here's hoping that things
turn out well.&lt;/p&gt;
</description>
    </item>
    

  </channel>
</rss>

