Anatomy of a Jenkinsfile – Tutorial

Why should you use a Jenkinsfile? The biggest advantage of a Jenkinsfile is the ability to use version control to manage your build system. When you use freestyle jobs you can loose you configuration due to limit history depth. Descriptive vs Scripted Jenkinsfiles come in two flavours: Declarative pipelines always begin with the word pipeline…

How to use Python shutil

Sometimes you want to delete a folder in Python. You know that os.rmdir() can do that for you. But then you realize it can only remove empty folders. If you want to remove the content before deleting the folder you come up with: def remove_non_empty_dir(path_to_dir): if os.path.exists(path_to_dir): files_in_dir = os.listdir(path_to_dir) for file in files_in_dir: os.remove(os.path.join(path_to_dir,…

Logging in Python – Cheat Sheet

I’ve written a piece about logging Log4j2 for Kotlin and the motivation to use logging in Python is the same: Logging is a common good practice in software engineering. It enables you to monitor applications in production to gather information about crashes and other malfunctions for further analysis. It is the “little brother” of debugging…

Books about Space

Motivation Over the years I gathered some nice books about space exploration, rocketry and space in general. The List To Space and Back Endurance: My Year in Space, A Lifetime of Discovery Von Braun: Dreamer of Space, Engineer of War Elon Musk: Tesla, SpaceX, and the Quest for a Fantastic Future Flying to the Moon:…

New Blog Post

Books about Artificial Intelligence & Data Science

Foundation Annotated Turing Statistics For Dummies The Practically Cheating Statistics Handbook Artificial Intelligence: A Modern Appoach Prediction & Data Science The Signal and the Noise: The Art and Science of Prediction The Elements of Statistical Learning: Data Mining, Inference, and Prediction Philosophical Hello World: How to be Human in the Age of the Machine The…

Getting the file extension from a file path in Python

Determine the file extension os.path.splitext() is used to split the path name into a pair root and ext. e.g. C:\Users\memyselfandi\projects\file_extension_test\data.csv is split into C:\Users\memyselfandi\projects\file_extension_test\data and .csv Here is a working snippet for identifying CSV and XLS: import os if os.path.isfile(input_file): file_extension = os.path.splitext(input_file)[1].lower() if file_extension == “.csv”: logger.info(“It’s a CSV”) # do something with CSV…

SQL-Tutorial

I really like SQL. But sometimes I struggle to undestand some of the concepts. So I write about it. Meanwhile there are a bunch of articles, so time for a overview page: SQL-Basics: Create, Read, Update & Delete SQL-Basics: Relations SQL-Functions – SQL-Basics 3 SQLite3: Python and SQL Subqueries: Update column with values from another…