Month summary - December 2021

Posted by Tobiasz Kedzierski on 31.12.2021

December 2021

I am aggregating here some more or less interesting stuff of various IT related materials which I came across this month. Some of them are strictly related to the things I did or am currently doing.

Some thoughts

Blog

Last month I stumbled upon the Jack De Winter blog where he published a few articles about Pelican, a static website generator written in Python which powers my blog as well. Inspired by those articles I made some improvements, like:

  • enabling website crawling
  • adding a RSS channel
  • small styling improvements

I also wrote some small sloppy Python script which verifies all links on the website (there may be some typos or pages that were turned down etc.). I had a good time playing with configuration and scripting.

Posts

I published two blog posts this month:

  • Productivity course - this post waited in the queue for a few months to be published
  • Django application on Google Cloud Platform - the idea for this post was born in 2020, however since so many unexpected things happened last year it was not the highest priority to complete it. I published it successfully this year.

Presentation: Terraform

While working on Django application on Google Cloud Platform I spent some time playing with Terraform. Since I like it very much, it led me to this thought: why not make some small presentation about it? I contacted folks from Brival, agreed on the date, and it went pretty well in my opinion. I not only described some theory but also spun up and tore down some examples of infrastructure on GCP. It was pretty nice to meet with people, and I had a good time giving the talk. Cheers and Happy Terraforming.

Brival Tech Talk - Terraform

Articles

How to read a code

More common is to be thrown into an ongoing project. Or even more common is to be added to a project because key personnel left. With no time for handover. So how do you get up to speed and make changes with confidence then?

Overview mode

were not spending enough time upfront explicitly stating and understanding what the problem we're solving really is. Once well understood we can then propose a solution and assessing whether that solution actually solves the proposed problem. It involves writing things down. A lot.

The boring technology behind a one-person Internet company - The Official Listen Notes Blog

After reading this post, you should be able to replicate what I build for Listen Notes or easily do something similar. You don’t need to hire a lot of engineers.

Want to be great? Know a lot

To become better you need to know what's out there. You need to turn the unknown unknowns into known unknowns.

The Well-Maintained Test: 12 Questions for New Dependencies

Joel Spolsky’s infamous Joel Test is a quick heuristic test for checking a software engineering team’s technical chops. I’ve come up with a similar test that we can use to decide whether a new package we’re considering depending on is well-maintained.>

The Joel Test: 12 Steps to Better Code

I’ve come up with my own, highly irresponsible, sloppy test to rate the quality of a software team.

Unconfusing Unicode: What is Unicode?

Unicode can be very confusing and I see a lot of questions and problems based on the same misconceptions.

~jpetazzo/Anti-Patterns When Building Container Images

This is a list of recurring anti-patterns that I see when I help folks with their container build pipelines, and suggestions to avoid them or refactor them into something better.

Against the Trap of Efficiency: The Counterintuitive Antidote to the Time-Anxiety That Haunts and Hampers Our Search for Meaning

“Productivity is a trap. Becoming more efficient just makes you more rushed, and trying to clear the decks simply makes them fill up again faster… Since finitude defines our lives… living a truly authentic life — becoming fully human — means facing up to that fact.”

By Maria Popova

Python

Writing Simple Python GUIs for your Command-Line-Phobe Coworkers

Why add a GUI? Simple: your coworkers know GUIs, and they love GUIs. They love them, even if they’ve never heard the term “GUI” and don’t know what “GUI” means.

Fine Tuning Pelican: Enabling Website Crawling

It is worthwhile to ensure that the website is properly set up to regulate any web crawling that does occur. This article details the setup required to enable this regulation.

Internals of sets and dicts

Understand how Python dictionaries and sets are built with hash tables to make sense of their strengths and limitations.

Writing fast async HTTP requests in Python

I do a lot of web scraping in my spare time, and have been chasing down different formats and code snippets to make a large amount of network requests locally, with controls for rate limiting and error handling.

Handling exceptions in Python like a PRO 🐍 💣

One of the downsides of a flexible language like python is that people often assume that as long as something works then it's probably the proper way of doing so. I would like to write this humble guide on how to effectively use python exceptions and how to handle exceptions and log them correctly.

Structuring exceptions in Python like a PRO 🐍 🏗️ 💣

Given now you know how to properly handle your exceptions with Tryceratops 🦖 help, the next step is to structure them effectively so you can scale and reuse them.

The One Python Library Everyone Needs

Use attrs. Use it. Use it for everything.

Django

The definitive guide to modeling polymorphism in Django

Polymorphism allows you to use one type of object to work with multiple kinds of data. Django makes it super easy to model your database, including polymorphism. However, it also makes it too easy to design a poor performing database.

Python libraries

sitemap - Pelcian plugin

Generates a site map for Pelican-powered sites.

attrs

attrs is the Python package that will bring back the joy of writing classes by relieving you from the drudgery of implementing object protocols (aka dunder methods).

cluegen

Cluegen is a library that allows you to define data classes using Python type clues.

Cloud

AWS Organizations with Terraform Workspaces

How to use AWS Organizations to your advantage with meaningful examples, and how to use terraform to manage it and replicate resources across them.

Other stuff

Awesome-Selfhosted

A list of Free Software network services and web applications which can be hosted on your own servers.

joplin

Joplin - an open source note taking and to-do application with synchronization capabilities for Windows, macOS, Linux, Android and iOS.

ALL about RSS

A list of RSS related stuff: tools, services, communities and tutorials, etc.

adamchainz/mac-ansible

Configuring my mac with Ansible

cat -v harmful stuff

Encyclopedia of things considered harmful.

Podcasts

Porozmawiajmy o IT #143: Pasja informatyki

Dziś moim gościem jest Mirosław Zelent – programista freelancer, nauczyciel, współtwórca kanału Pasja informatyki na YouTube, podcaster. Fan filozofii, psychologii, rozwoju i ludzi.

Darknet Diaries: EP 101: Lotería

In 2014 the Puerto Rico Lottery was mysteriously losing money. Listen to this never before told story about what happened and who did it.

PythpnBytes - Episode #264: We're just playing games with Jupyter at this point

Special guest: Kim van Wyk

The Real Python Podcast - Episode 90: A Python Journey: Cyber Security, Automating AWS, and TDD

Hugh has a background in programming C and Perl and started to use Python in a cyber security job. He explains the way he used Python to search for malware. Hugh provides some suggestions for security packages and tools.

Videos

Travis Fischer, Esther Nam: Character encoding and Unicode in Python - PyCon 2014

Playback on other websites has been disabled by the video owner. Watch on YouTube

Hammock Driven Development - Rich Hickey

Playback on other websites has been disabled by the video owner. Watch on YouTube

HS Talks w Hackerspace Silesia! #2

Raymond Hettinger - Dataclasses: The code generator to end all code generators - PyCon 2018