Older blog entries for Monty (starting at number 7)

I wanted to let everyone know about the upcoming ANTLR conference. A brand new version, ANTLR 3, is in the works. The upcoming workshop will be heavily focused on refining the design of this -- see http://www.antlr.org/blog/index.tml for design notes.

The workshop is free, even parking is free! It'll be hosted at USF, where Terence Parr, the creator of ANTLR is now a professor. Anyone with the interest is welcome to participate. Please send us an email letting us know you are coming.

The formal announcement page is here: http://www.cs.usfca.edu/ANTLR2004.shtml

I've been meaning to write about this for a while. I still don't have the time to do it up right, but here's a quick core dump.

A couple of weekends ago Terence Parr and Loring Craymer spent a long weekend with me drafting a proposal for new features in ANTLR 3. Notes are here http://www.antlr.org/workshop/cabal-2003/index.html.

It was more intense than any conference I've been to because it was so focused. These are two very bright guys. We came away with a good outline for a document and some interesting solutions to common ANTLR problems. Loring has been hard at work on tree building enhancements which are really powerful. I helped come up with a scheme for code generation from an Abstract Syntax Tree based loosely on lout's galley targets. Aftewards I did some research and found that I "discovered" a way to do dynamic scoping, abandonded years ago by the LISP community because it is so hard to reason about code which changes because of who is calling it. But when you are generating code that can't be called directly it sure is nice. I vaguely recall from the '97 Python conference that Zope does a similar thing.

ANTLR 3 is still quite a ways off, but with Ter at his faculty position now he should be able to devote some serious time to getting it going.

Way cool is that ANTLR the grammar analyzer will produce its results as an intermediate file format which can be used to generate the code. This will allow one to write the Python code generator in Python, etc. I can't wait!

I won!

Qutoed from Bruce Sterling's Viridian Note 00374:

The Viridian "Embrace the Decay" Contest has a winner!
Note these spectacular entries by
David Nelson Epstein, Duncan Stewart, Monty
Zukowski, and Aubrey LaPuerta. http://www.levitated.net/sterling/contest/index.html

Viridian Contest Judge Lola Brine mellifluously remarks:

"'Spore Ink' Monty Zukowski

gets my vote.

"His generative generations flow and grow so smoothly, like a fluid spill, like time lapse in summer, a winner with his conscious technical merit alone.

"But more.

"This decay, growth instead, reminding me of something inside my head == of critical rhetorical analysis of text:

"the way it sumptuously, greedily takes a mere scan of a text and sprouts tangential assertions from every unexpecting line and angle.

"And from every noun, from every cultural observation... in a self-asserting stroke of genius masturbation, it grows stems and branches and thickens them into trunks of intellectual ballet and philosophical gunk,

"a dance, a sport, which departs so utterly from the text at hand strangling the life from the author's gest, making it a trellis for the critic's best,

"the text becoming a brick wall in effect, a blackened host, for a parasitic, narcissistic growth of a boast.

"A flagrant display of literature's helpless decay, in the mind of the reader who reads words into words into words into dogma into historical relevance and theoretical smegma, "'Death to the Author' the fractals declare.

"Yes this is my choice: embrace Monty, the winner!"

Bruce Sterling said "Wow" about my entry for the Embrace Decay Contest. I'm stoked! And I'm working on more entries. This time with color.

Unfortunately that particular Viridian Note is not in the archive yet. I'll post a link when I can.

I've been having quite a bit of fun goofing off and programming my entry for Bruce Sterling's Embrace Decay Contest. The contest starts with a 612x800 jpeg of a typing excersize. The contest is to make a series of images that will fade to each other, showing decay.

I started with Diffusion-limited aggregation and then tweaked it to get something interesting. Take a look at my entry! I used to work at Trilobyte, a game company Graeme Devine cofounded. I had forgotten how much fun it is to program graphics. And how tedious. Consider entering.

My other claim to fame in the ANTLR world is the AREV to VB translator I wrote. This was not open source, but it was a whole lot of fun! AREV BASIC is a knockoff of PICK BASIC. There were no reserved keywords; IF IF=ELSE THEN ELSE=IF ELSE IF=ELSE is valid code; it used less-than and greater-than in condtions as well as delimiters for array access; a CASE statement really translated to a series of IF/ELSE statements, etc.

In the end I translated 240,000 lines of AREV into VB with an eight-pass translator. Each pass was an ANTLR tree parser which transformed the tree a bit at a time. One of the really cool things about trees and ANTLR's subclassing was having a supergrammar with rules for both AREV and VB in the same tree (using distinct node types) and as I translated I would have a tree with both languages represented. Each pass would inherit from that supergrammar and then specialize certain rules to have translation actions. For instance one pass would change expressions into VB-compatible expressions but leave control structures as AREV. Each intermediate stage was a mixture of AREV and VB nodes in the tree, but the tree parser could handle both simultaneously because each node has a type. Try writing a parser that simultaneously parses two languages -- you can't because you don't know if that IF is from AREV or VB. But in a tree you know because you have the type as well as the text.

Although what I did was essential, the real work was done by nine others who wrote the VB libraries to emulate AREV functionality such as screen handling or string processing. My part of it was definately the most fun, though! Read my article about this project at http://www.codetransform.com/fun_with_antlr.html

My favorite tool is ANTLR. It implements lexers, parsers and tree parsers via the same conceptual framework: LL(k) analysis. The generated code is designed to be very close to what you would write by hand, which makes it straightforward to debug and understand. ANTLR is a tool for programmers by programmers, with an emphasis not on theory but on problem solving.

My main contributions have been some source code, including an ANSI C and GCC C translation framework including lexer, parser, tree parser, and tree emitter. The GCC Translation Toolkit goes from preprocessed source to tree and back to source and makes it easier to get to the fun part -- the actual translations.

I'm also the primary answerer of questions on the antlr-interest list, which is currently the main forum for ANTLR questions. I have a lot of fun solving those types of problems.

Also, thanks to Bram for pointing out BitTorrent for movie distribution. If I understand correctly, it seems BitTorrent is best suited to a "release" instead of occasional downloading, but I'll still make sure it's one of the primary options for getting it.

I've been researching p2p stuff to help distribute a movie I interned on, described on a page about Tom Hayes. So far Alluvium and Open Content Network look reasonable. The main thing I need is to reduce the bandwidth costs for distributing it.

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!