20 September 2005

I've been meaning to put up a photo of the offices latest painting for a couple of weeks now. It's called "4bit Argot" and is my version of a self describing painting. It has turned out to be a nice way to give a visual view of what Argot is all about. The painting is a binary view of all the information required to describe the information on the painting. Still confused? Maybe the meta description will help.

Each definition following has been encoded onto the painting using only descriptions included:

  • definition( 0 "u4" , basic( 4, 0 ) );
  • definition( 1 "basic" , sequence([ reference( #u4 ), reference( #u4 )]));
  • definition( 2 "abstract", sequence([]));
  • definition( 3 "expression", abstract() );
  • definition( 4 "sequence", array( reference( #u4 ), reference( #expression ) ) );
  • definition( 5 "reference", sequence( [ reference( #u4 ) ] );
  • definition( 6 "array", sequence( [ reference( #expression ), reference( #expression ) ] ) );
  • definition( 7 "expr#ref", map( #expression, #reference ) );
  • definition( 8 "expr#seq", map( #expression, #sequence ) );
  • definition( 9 "expr#ary", map( #expression, #array ) ) );
  • definition( 10 "map", sequence([ reference( #u4 ), reference( #u4 )]));
  • definiiton( 11 "expr#map", map( #expression, #map ) );
  • definition( 12 "expr#abstract", map( #expression, #abstract ) );
  • definition( 13 "definition", sequence([reference( #u4 ), reference( #expression )]));
  • definition( 14 "expr#basic", map( #expression, #basic ) );
  • definition( 15 "dictionary", array( reference( #u4 ), reference( #definition )));

The painting contains a dictionary definition. white is 1, black is 0. Can you decode the painting using the definitions above? There could be a bit or two wrong, let me know if you can find any errors. :)

The painting has some similar attributes and problems to what I've been working on the last week. The challenge has been to see how small Argot can go. The aim is to embed Argot in devices like light switches. As I mentioned last week, the target is 8kb AVR microprocessors. I was a little surprised at how easy it was. The data marshalling code finished up at 1kb and the Argot description at around 3kb. This was much smaller than I expected and leaves 4kb in an 8kb processor for functionality.

The aim of the light switch exercise was to allow a new device to be entered into a home network and have the device contain a description of all of its functionality. The home network controller is then able to configure itself appropriately to communicate with that device. Doing the excerise reminded me that I wanted/needed to put Interfaces and Object descriptions into Argot.

The focus this week is now Interfaces and Objects. After that is done I can have another go at creating a working prototype for the light switch.

Copyright 2005 © Live Media Pty Ltd
Legal Notice