My job isn't programming, but these are some stuff I wrote in my days as a system architect/sysadmin.

Scripts/Code       Sort by Name or Date

ZLogger - Log analysis and GUI for your mail logs   

A Zimbra log analysis and GUI, allowing you to search your logs and get details on emails. Work in progress. Last updated: 2015-09-29

This website -   

The code for this website. It mainly uses Python, Flask and Bootstrap.

People kept asking me why I'm writing a site manually instead of using the myriad of CMSs like Wordpress, Drupal or Blogspot. There were a lot of reasons:

- I hated the "blog" format, and I wanted something more document oriented
- I didn't want to involve any SQL databases, as it's unnecessary and makes it difficult to scale
- I wanted to have my documents, which I refer to myself, in a standard format like Markdown, instead of being in a database that would make it difficult to migrate elsewhere
- I much preferred Python over PHP or Ruby, so that took a good suggestion, Jekyll, out of the picture

My idea was simple, I just needed to write an app to parse directories containing a Markdown file (called so that I can still access my docs via if my site is down) and some metadata. It'd then parse all those to give you the site you are reading now. Last updated: 2016-03-01

AWS CloudWatch Nagios plugin   

This is a Nagios/Icinga plugin that queries your Amazon's CloudWatch metrics and compares them with your given thresholds. Why use this instead of CloudWatch Alarms? Well, other than not costing $0.10 per check after exceeding your free-tier, it allows you to retain your Nagios/Icinga/Centreon on-call and notification setup while still benefiting from CloudWatch metrics. Last updated: 2017-01-10

Upload Sievee - Job application site   

Ever put up a technical job posting and be inundated with CVs from people who claim to know a lot but actually could hardly even spell what they profess to be good at?

Upload Sievee (pronounced "Upload CV") is a simple open source job application/CV uploading site, designed to sieve candidates by asking them a set of compulsory questions (which they have to answer in order to continue). It's not unduly strict, in that it allows for an unlimited amount of retries as well as feedback of which particular question was answered wrong, but each incorrect attempt is noted in the final report.

You can see a demo of the app in action by clicking on the demo link in this github page. Last updated: 2016-02-29

Icinga email-ack: acknowledge alerts with expiry times by replying   

If you use a monitoring system like Icinga, you probably get your alerts via email. You might have already thought about the possibility of acknowledging emails by just replying to them, and may have even implemented it, but this script goes a step further than that and allows you to add expiration times to your acknowledgements, which is important so that you don't have your team forget about acknowledged alerts.

So if you get an warning email about low disk space, you could just reply to the email with Expire 21:00. Will free up space later. Last updated: 2014-09-10

SaltStack module for Zimbra 8   

A SaltStack module for Zimbra 8 configuration management.

It uses LDAP or the filesystem for reads, which is drastically faster than running zmprov/zmlocalconfig directly. However, zmprov/zmlocalconfig is still used for writes for reliability. Last updated: 2016-02-29