Back in 2008 i was working to a middle-size software that allowed users to apply a digital signature to documents. The project was definitely low in budget and our salesman sold that it could also digitally sign medical data... The first medical image to sign was 1GB, the second 8GB, and our servers had at most 4GB of RAM. From here the necessity of having a long chain of streams that manipulated the data from the web to the database.
"Use pipes" they said. After having saved a certain number of truncated documents (because of bugs due the complexity of the code), and after spending some week-end fixing them, i decided to give the utilities to the community.
At this point started a long effort to cleanup and document the code.
The design goals of io-tools are: