Home Page

Category: programming

cfgtrack: A simpel tool that tracks and reports diffs in files between invocations.

Sometimes other people change configurations on machines that I help administer. Unfortunately, I wouldn't know when they changed something or what they changed. There are many tools available to track configuration changes, but most are way overpowered. As a result they require too much time to set up and configure properly. All I want is […]

Exploring UPnP with Python

UPnP stands for Universal Plug and Play. It's a standard for discovering and interacting with services offered by various devices on a network. Common examples include: Discovering, listing and streaming media from media servers Controlling home network routers: e.g. automatic configuration of port forwarding to an internal device such as your Playstation or XBox. In this […]

Alien Deb to RPM convert fails with error: "Use of uninitialized value in split…" [FIXED]

TL;DR: Run alien under the script tool. I was trying to get my build server to build packages for one of my projects. One step involves converting a Debian package to a RPM by means of the Alien tool. Unfortunately it failed with the following error: alien -r -g ansible-cmdb-9.99.deb Warning: alien is not running as root! […]

Ansible-cmdb v1.14: Generate a host overview of Ansible facts.

I've just released ansible-cmdb v1.14. Ansible-cmdb takes the output of Ansible's fact gathering 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. This release includes the following bugfixes and feature improvements: Look for ansible.cfg and use hostfile setting. html_fancy: […]

mdpreview, a Markdown previewer to be used with an external editor

There are many Markdown previewers out there, from the simplest commandline tool + webbrowser to full-fledged Markdown IDE's. I've tried quite a few, and I like none of them. I write my Markdown in an external editor (Vim), something very few Markdown previewers take in account. The ones that do are buggy. So I wrote mdpreview, […]

Manually scrolling a Python GTK Webview

I was trying to manually scroll a (Python) GTK embedded Webview in order to position the webview back to where it was after setting new contents with webview.load_html_string(html, 'file:///'). I couldn't get it to work, and Google wasn't of much help either. I could scroll the Webview just fine from a key-press-event handler on the main window […]

Multithreaded dev web server for the Python Bottle web framework

I'm writing a simple web application in the Bottle framework. I ran into an issue where I had a single long-running request, but needed to make some additional requests from the browser to the server. It turns out that Bottle's built in development web server is single-threaded, and can't handle multiple requests at the same […]

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 […]