# Chaining Lasers In Submission Tools for LJ

Alright everybody, ready for some fun? Here comes The Piping And Plumbing Your Way To The Top Show!

You're going to push so many points to this laser it will hog and cry...

BOOM | WIIIIIZ :: PHHHHHRACKRACKRACK ~~ WOOP ~~###~~ WIIT


## The basic loop
```
python3 generators/dummy.py -f 2 | filters/kaleidoscope.py  | exports/toRedis.py -v 
 ------------------------------     ---------------------      -------------------
             \/                              \/                        \/
          Generator                       Filter                      Export
```

1. The Generator

Use it to produce some points in any manner, orderly or total chaos.

Don't be that boring Sinusoids bugger! Flash Maps of Dooms, Disbitnic sprites, Dismorphic HexaFonts all over the walls! 

2. The Filter(s)

These babies will modify data on the wire by passing around the points and modifying them in sequence. 

Want your Double Heavy Laser Cannons to bounce together like they been drinking Jagerbombs for two hours? That's the place.

3. The Exporter

Now, this IS the most boring part. Send your points to whatever output system. Yawn. Are we there yet?

## Hacking around

Say what!? Why, this is exactly the place for that!

Take a seat and copy paste the "dummy.py" files, they present the basic structure you need to play around.

Just be cautious to use the `debug` method if you're the kind of miss that debugs by outputing data structures (who does not, yah know, sometimes?). Or you'll break the chain.

### Generators 

They must send list of points to standard out. Don't forget the "flush" argument, or the piping will be breaking, ain't no Mario lazering.

* dummy.py : sends always the same list of points. The Monomaniac.
* @todo : read texts from redis and others

### Filters

These do listen and read on STDIN and do the same print'n'flush on STDOUT.

* kaleidoscope.py : mirrors the points based on a pivot
* @todo : fourier analysis and other realtime reaction

### Export

Read from STDIN and send to redis mostly

* toRedis.py : provide a key, server IP, etc.

### Common parameters

Every command can be called with a `-h/--help` flag to get some help

Every command has a `-v/--verbose` flag to send debug info to STDERR. 

Generators have a `-f/--fps` param for FPS, to be fast but not so furious on your machine

Filters and Exports are their own beasts
