Home Page

Category: programming

Introducing ScriptForm: Stand-alone webserver that generates forms to serve as frontends to scripts

I've just releases v1.0 of ScriptForm. ScriptForm is a stand-alone webserver that automatically generates forms from JSON to serve as frontends to scripts. It takes a JSON file which contains form definitions, constructs web forms from this JSON and serves these to users over HTTP. The user can select a form and fill it out. When […]

Interesting links: October 4th 2015

Here's a bunch of links I found interesting in the last few weeks: List of Python Report Generation Tools jstat – Java Virtual Machine Statistics Monitoring Tool How To Protect WordPress with Fail2Ban on Ubuntu 14.04 | DigitalOcean Shiny Turn your analyses into interactive web applicationsNo HTML, CSS, or JavaScript knowledge required logtail(8) – Linux […]

Batch create new users on Linux

A while ago I had to create many new users on a Linux machine. Since I'm lazy, I opted to automate this process. The newusers command combined with pwgen (to generate new passwords) was the solution. First I installed pwgen, a utility to automatically generate passwords: $ sudo apt-get install pwgen I created a file […]

A new Material design for Ansible-cmdb v1.5

Ansible-cmdb takes the output of Ansible's setup module and converts it into a static HTML overview page containing system configuration information. While the previous generated overview page was functional, it didn't look very good. So for the v1.5 release (which is now available), I gave it an overhaul. I decided on Material design because it gives […]

Ansible-cmdb v1.4: a host overview generator for ansible-managed hosts

Ansible-cmdb takes the output of Ansible's setup module and converts it into a static HTML overview page containing system configuration information. It supports multiple templates and extending information gathered by Ansible with custom data. You can visit the Github repo, or view an example output here. This is the v1.4 release of ansible-cmdb, which brings a bunch of bug […]

Ansible-cmdb v1.3: a host overview generator for ansible-managed hosts

A few days ago I released ansible-cmdb. Ansible-cmdb takes the output of Ansible's setup module and converts it into a static HTML overview page containing system configuration information. It supports multiple templates and extending information gathered by Ansible with custom data. The tool was positively received and I got lots of good feedback. This has resulted in […]

Introducing ansible-cmdb: a host overview generator for ansible-managed hosts

For those of you that are using Ansible to manage hosts, you may have noticed you can use the setup module to gather facts about the hosts in your inventory: $ ansible -m setup –tree out/ all $ ls out centos.dev.local eek.electricmonk.nl zoltar.electricmonk.nl debian.dev.local jib.electricmonk.nl $ head out/debian.dev.local  {     "ansible_facts": {     […]

I've released cfgtrack v1.0: Get notified of changes on your server

I needed a simple way of being notified when configuration files had been changed on some servers. Nothing fancy. No configuration management, no intrusion detection, no centralised versioning control repositories. Just a simple email saying what's been changed. I couldn't find a tool that did just that, and didn't require massive amounts of configuration, so I […]

Chrome’s Console API: Greatest Hits

The Chrome debugger is the best tool for locating problematic code in a JavaScript application, but there are times that diving into your code line-by-line isn’t the fastest or most convenient means to that end. We all know about console.log(), but I thought I’d write about a few of its lesser-known cousins that are more […]

Dependency Injection in web.py

web.py is a lightweight Python web framework that gets out of your way and just let's you write Python. Here's a simple program written in web.py: import web class index: def GET(self): return "Hello, World!`" urls = ( '/', 'index', ) if __name__ == "__main__": app = web.application(urls, globals()) app.run() I quickly ran into the […]