Python recipe: Combine multiple images into one PDF

Many a times, you come across the need to combine multiple image files (.jpg, .png, etc.) into one single portable document format (.pdf). Maybe, you have a bunch of handwritten notes which you want to organize into one file. Doing that is very trivial if you know python. To being... Read More

How to implement URL routing in vanilla javascript

In this post, I’ll show you how to implement dynamic URL routing in vanilla JavaScript without using any heavy frameworks like angular, vue, react, ember, etc. in less than 30 lines of code! The important attributes you need to know are window.location and more specifically to our purpose, window.location.hash. This... Read More

The gimp, the git and the sacred rules that govern offensive behavior

Yesterday, I was reading this heated debate on the GIMP issue tracker which was also perhaps the most discussed topic of the day. Offensive behavior is a very serious and delicate topic, and needs to be handled with care. More importantly, rules should be codified which can objectively determine whether... Read More

Agile manifesto is problematic

After reading the agile manifesto, I felt like it is too one-sided and imbalanced, it gives too much importance to some aspects of software development and belittles the other. The stuff they give prominence to isn’t any extraordinary new age rocket science (though the practitioners of agile try very hard... Read More

Announcing gh_announce - A python bot that posts a tweet each time you make a release on github

I happen to maintain a lot of python projects on github such as distroverify and vtscan. And each time I make a tagged release on Github, I have to make a status tweet like this to let people know: So today I thought why not automate this process by writing... Read More

listdir vs scandir vs glob - The one and preferably only way to do it

You know, sometimes when I read those python aphorisms like “beautiful is better than ugly” I wonder whether the makers were being sarcastic or real, and I’m not kidding! Its not just about listdir and scandir, a whole lot of things are ambiguous and you’ll find a lot of different... Read More

CodeMirror - A simple and efficient code editor component for your web applications

I’m a huge fan of simple things in life, things that achieve a lot with minimal efforts or configuration from the user’s end. And whenever I come across such simple things, I like to share it with everyone and that’s what I’m doing now. In my recent flask based web... Read More

Building a convention for configuration saver and reader module in Python

I maintain several python projects on github and some of them like VTScan has a need for user configuration. Now python has a plethora of ways and standards for parsing of configuration files like json, *.ini files, etc., but there is no standard about where to save them on the... Read More

How to enforce conventional commit messages using git hooks

Conventional git commit messages are not just nice to have but great to have. In fact, once you get to know them, you’ll start feeling that they are essential in any serious programming project. Consider the difference between following two commit messages for instance: git commit -m "added social login... Read More

Package signing in PIP - It works, in a roundabout sort of way

A few days ago, I made this post about how Python’s PIP lacks GPG package signing. Well, it turns out that I’m wrong! It does have a package signing process after all, only its one of the most manual, archaic and cumbersome security practices I’ve seen till date. I... Read More