[oo scary pic]
[college grad pic]
[in the park]
[recent photo]

Hi, I'm Jared.

I live in West Florida [USA]. I like to use and write free and open source software. I'm happily married.

_contact_

Email me: jjenning (at) fastmail.fm.

cool blog posts

that I've read using Google Reader: atomfeed, full page. JavaScript users can see a few article links below.

_photos_

I've got a nice camera and I take a lot of pictures. You can see some of them on my flickr site (you can get your own). JavaScript users can also see a few photos below.

_software_

OFX

Open Financial eXchange (OFX) 1.x is (among other things) an SGML-based file format in which I can get records of my recent financial transactions from my bank. I want to get and use that information, in a simple way. (Think hledger, not gnucash.)

My Haskell OFX 1.x parser lives in a darcs repository. It doesn't build. A useful tool in developing it is the OFX 1.x censor, which replaces real financial information in a real OFX 1.x file with gibberish, so that it can be safely used in examples and parser tests. The censor is reasonably complete, and you can get the code at the ofx1-censor darcs repository.

An earlier tool to deal with OFX files was pokerglory, which takes transactions from an OFX file and puts them into an SQLite database. But it doesn't work with all OFX files, because it takes some shortcuts regarding whitespace. Source; darcs repo.

tweetable tweet command

Run this command in a terminal under Linux (replace USERNAME and PASSWORD):

cat >> ~/.bashrc <<<'tweet(){ curl --basic -u "USERNAME:PASSWORD" --data-urlencode "status=$*" "http://twitter.com/statuses/update.json";}'

Close the terminal and start it again. Now you have a tweet command that will update your Twitter status. Requires curl 7.18.0 or later; this means Ubuntu 8.04 [Hardy] or later, Fedora 9 or later, Debian 5.0.1 [lenny] or later. You must also use bash as your shell. Most Linux users do.

Boekkat

Boekkat can help you enable your web applications to use the CueCat, an old, very cheap barcode reader. (If you buy one for ten US dollars, you are being ripped off.) Boekkat is written in ECMA-262 (aka JavaScript), and requires a version-5 browser. It has a BSD-style license.

You can download Boekkat directly, or via darcs:

darcs get http://dingoskidneys.com/~jaredj/boekkat

See the README, or an example of its operation (requires CueCat to do anything interesting).

research

My senior research, mostly done in early 2003 at Stetson University, is about distributed web servers. My advisor kindly presented it at SNPD2005, in the middle of May 2005. (I was busy starting my job.) One of these days I'll release that code, and hope Stetson doesn't think it's their intellectual property or something.

wiretap

I'm one of the creators of wireTAP. wireTAP is software that enables digital artists (and anyone else) to use the network in their projects quickly and easily. It has found some use in my distributed web server. It seems to have been superseded by oscgroups.

googoo

Once upon a time I found an Object Formant Synthesizer on the web, by Jon Iles. I retooled it to take its parameters from the network via OSC instead of from a text file. It's released here as googoo. source tar.gz, README.new.

darcs get http://dingoskidneys.com/~jaredj/googoo

Version 0.1 works by subscribing to a wiretap channel, it has a reverb hard-coded in, and it outputs sound via PortAudio straight to the sound card.

ruby

ruby-audiofile reads and writes PCM audio files (e.g. AIFF, WAV).

ruby-shout lets you send compressed audio to an Icecast or Shoutcast server. I wrote it several years ago, and have passed maintainership to Niko Dittmann.

You can use freedb_query (gem, source tar.gz, documentation) to get artist and title info for things besides actual audio CD's (e.g. twelve wav files you just ripped off of a CD).

lua

I'm the author of cgi4.lua and cgi5.lua, which let you get at CGI form variables from Lua 4 and 5, respectively.

cgiX.lua doesn't (afaik) handle uploads, and it has no framework for outputting HTTP headers or creating HTML replies: use print() for that. :)

As an example (and the script i needed to work), I submit email-form.lua (for Lua 4, with loadmodule and the LuaSocket library; also requires the SMTP module included with LuaSocket).

If you have any questions or comments (security evaluations and patches welcome!) about these, get on the Lua mailing list and ask.

vecchio

Once upon a time, there was Espresso. When I say once upon a time, what I mean is that the contact email address is also given as a bang path. This thing is a logic simplifier of some sort. I don't actually know much about it - I just updated it from its pre-POSIX, nearly pre-ANSI C dialect so it would build on a modern Linux box. I decided to redub it Vecchio, because it's old and I feel clever.

darcs get http://dingoskidneys.com/~jaredj/vecchio

vecchio-2.tar.gz

Valid XHTML 1.0
        Transitional