Welcome to part 2 of my Jinja2 Tutorial. In part 1 we learned what Jinja2 is, what are its uses, and we started looking at templating basics. Coming up next are loops and conditionals, sprinkled with tests and a healthy dose of examples! Jinja2 Tutorial series Jinja2 Tutorial - Part 1 - Introduction and variable substitution Jinja2 Tutorial - Part 2 - Loops and conditionals Contents Control structures Loops Looping over dictionaries Conditionals and tests Comparisons Logical operators Truthiness Tests Loop filtering in Operator References GitHub repository with resources for this post Control structures In Jinja2 loops and conditionals come...

Continue reading »

This post is the first of the Jinja tutorial series where I'll provide an overview of the language, discussion of its features and a healthy dose of example use cases. If you're new to the world of templating, know what templates are but never used Jinja before, or simply need to refresh your memory, then you should found this series useful. Jinja2 Tutorial series Jinja2 Tutorial - Part 1 - Introduction and variable substitution Jinja2 Tutorial - Part 2 - Loops and conditionals Contents Introduction What is Jinja2? Where is it used? What is so good about it? Why would...

Continue reading »

Welcome to the second, and final, part of blog posts showing how to use Python to work with IP addresses. In part one we learned how ipaddress library can help us when working with IP addresses. We then learned about Address and Network objects and operations we can perform on them. Here I'll present Interface object, and its methods, before moving onto module level functions. After that I'll show how we can compare and sort ipaddress objects. We'll finish our journey with the module by talking about validation and exception handling. Working with IP addresses in Python series: Working with...

Continue reading »

If you work with computer networks sooner or later you will have to learn how to efficiently work with IP addresses and networks. As you probably guessed from the title of this post, we'll be learning how to create, modify and perform operations on IP objects using Python. Having to manipulate IP objects is common enough that Python ended up with a built in library dedicated to these tasks. It's name is... you probably guessed it, the name of the module is ipaddress. That's right, all you have to do to start working with IP goodness is one line,import...

Continue reading »

In this blog post I want to share, and talk about, Python program I wrote to solve problem of filtering out child prefixes. Contents Problem description Solution Naïve algorithm Patricia tree aka binary radix tree Python implementation Load testing Module and cli version Closing thoughts References Problem description So what exactly is the problem we're trying to solve? Imagine that you have a group of prefixes, assigned to servers, or clients, and you want to only keep prefixes that are not subnets of any other prefix. This could be because of your routing requirements or because you want to minimise...

Continue reading »