README.md

erl_tools
=========

Misc Erlang Tools

Sequences / Iterators:

* fold:       folds
* pfold:      partial folds
* sink:       push-style data consumer callbacks
* igen:       impure generators
* iseq:       infinite sequences implemented as thunks
* source:     pure, idempotent sequences


Core abstractions and algorihtms

* obj:        processes with Map state
* type_base:  serializable data types
* tools:      grab bag of function
* diff:       compute datastructure diffs
* run:        running scripts


Distributed systems:

* epid:       multi-hop pids for fine grained objects / processes + dataflow abstraction
* throttle:   data throttling

TCP

* serv:         simple server tools
* serv_tcp:     simple tcp server with connection list
* http:         gen_tcp wrappers
* cowboy_wrap:  wrappers for cowboy web server

Networking tools

* reverse_tunnel: e.g. for reverse SSH (not what you think)
* socks_proxy:    socks5 proxy server
* bert_rpc:       BERT RPC support
* ssh_leaf:       interacti with ssh machine (commands, rsync, log events)

Web

* ws:         erl<->js comm protocol based on WebSockets on top of cowboy
* ws_widget:  actor based web widgets on top of ws
* ws_layout:  layout functions for ws_widget style web widgets.
* exml:       misc exml functions
* serv_ws:    stand-alone websocket server
* stack_ws:   forth-based websocket protocol for serv_ws

Database

* sqlite:          SQLite wrappers
* kvstore:         generic key value store interface
* sqlite_kvstore:  kvstore on top of sqlite wrapper
* sqlite3_ckeys:   composite key store on top of sqlite


Microcontroller development, See also uc_tools/gdb

* rsp:         GDB RSP protocol
* gdbstub:     gdb stub in Erlang (wip)
* gdbstub_hub: server for gdbstubs
* gdb:         gdb MI access
* lab_board:   driver for uc_tools/gdb based lab control boards
* tag_u32:     Simple structured binary message format + directory structure
* leb128:      Efficient storage format for tag_u32 structures based on LEB128 integers
* epid_cproc:  C code generation for cproc.h dataflow networks
* epid_dag:    Erlang-embedded higher order abstract syntax for distributed dataflow networks

Logging

* recorder:   log file recording (also used for a/v recording)
* player:     log file player (also for a/v playback)

Development support

* expect:      Use Erlang parser to create "expect tests"
* hs:          Haskell bindings
* redo:        implementation of Redo build system in Erlang
* reflection:  Code handling Erlang and other language compilation
* ghcid/ghci:  interact with GHCId and GHCI
* emacs:       emacs interfacing

Low level drivers

* gpio_poll:      map gpio events to Erlang events (erl/C)
* v4l:            Video For Linux (erl/C)
* ftdi/ftdi_hub:  manage multiple FTDI connections (e.g. uC dev boards)
* rigol:          interface with Rigol oscilloscope
* linux:          misc linux system interfacing




And some doodles that are not worth mentioning.