I use open source tools nearly all the time and I’m always on the look out for new and useful tools to help make my life easier, so in this post I’m going to list some of the ones I’ve found recently.

MailHog

MailHog is an email testing took for developers. That doesn’t sound like much but when you are trying to configure a program to send you email notifications then it can be a life saver especially if you don’t happen to have an open SMTP server (or you are using AWS SES which requires all the addresses to be pre-validated in sandbox mode). You simply run MailHog on your local machine (or add the docker container to your swarm) and then set that machine as the SMTP server and the port to 1025. Then when ever your program sends an email you can check the web page at port 8025 to see the mail that was sent.

MailHog is released under an MIT licence and does the one thing it does very well.

Paperless-ngx

I am a book collector, especially with technical books and since discovering Humble Bundle some years ago it has only got worse. At last count I had over 300 technical e-books and I have read fewer than 20 of them completely (and those are mostly Manning ones that I bought as a paper book and got the e-book for free). This is actually fine as mostly I own the books as reference material to help me solve problems when they come up in the future. The problem is remeasuring which books I own and knowing which one will be helpful to solving the current problem. I was always planning in the back of my mind to write a “simple” python program to read the books and generate an index I could search when I had a problem to solve, but I never got very far with it.

However, I recently came across Paperless-ngx which is a document management system that transforms your physical documents into a searchable online archive so you can keep, well, less paper. So I think the developers think that it is for managing paper documents but I’m using it more like an Electric Monk:

“The Electric Monk was a labour-saving device, like a dishwasher or a video recorder. Dishwashers washed tedious dishes for you, thus saving you the bother of washing them yourself, video recorders watched tedious television for you, thus saving you the bother of looking at it yourself; Electric Monks believed things for you, thus saving you what was becoming an increasingly onerous task, that of believing all the things the world expected you to believe.”

― Douglas Adams, Dirk Gently’s Holistic Detective Agency

Paperless is easily installed using Docker and provides an easy to use web interface. I simply pointed it at my books folder and it (over the next day or so) read all my books for me and created an index so I can search all of them by title and content. It also allows me to tag them (and is slowly learning to suggest tags for new books) so I can limit searches to specific groups of books. It also has a consumption directory that I can save new documents into and it will automatically ingest them into the system. I’m pretty sure it can do all sorts of other clever things but I haven’t fully explored it (or read the manual). Any way I can now buy new e-books with a clear conscience as I know the books will get read now.

Pandoc

I’m easily distracted when writing so I prefer to use vim to do my writing so I don’t spend half the morning playing with the styling of my headings and leave myself 10 minutes to finish the document. However, the management team are very much into nicely formatted documents in word or Google Docs, so I write my documents in markdown. I also keep my daily journal/work log in markdown so it’s easy to cut and paste from that to a report, but to convert that markdown to a format that I can import in Google docs or word (or whatever) I use pandoc which describes it self as your swiss-army knife for documents. Its fantastic and can even generate the right type of wiki markup to allow me to paste formatted text in to what ever weird format Basecamp uses. Sadly, it still can’t match whatever Atlassian use for their wiki editor in Jira but you can’t have everything (though I believe we may have found a Jira plugin that reads markdown).

But even better I can read in a word doc and convert that to markdown (it’s best if the person generating the file knows how styles work but it’s easier to reformat the markdown than the word document.) You can even use it to generate presentations for you.

It can even produce PDF which means that I can print out the recipe for tea directly from the markdown file I store on github (or when I get organised to put a spare laptop/raspberryPi in the kitchen directly display it).

Give it a try next time you get a document in a format you can’t handle.