Month summary - October 2023

Posted by Tobiasz Kedzierski on 31.10.2023

October 2023

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

This month, I spruced up my Python API and background workers on Google Cloud Platform repo. It's a neat package with a simple app and all the setup for FastAPI, CloudRun, and PubSub. Just a fun little project showcasing Python on Google Cloud – check it out!

By the way, last month I gave a lightning talk at PyCon CZ based on this repository.

PyCon CZ.

Articles

What is a merge queue, and does your team need one?

Merge queues aren’t right for every team and whether or not your team needs a merge queue depends on a number of factors.

How “It works in my machine” turns “It works in my container”?

Let’s dive into why the “It works in my container” situation arises.

When Taylor Swift crashed Ticketmaster: A lesson on scaling for spikes

In general, it is a good practice to brace for 10 billion system calls by deploying all the mitigation tactics mentioned above (caching, elastic demand, graceful degradation, etc.).

How to get more interviews, offers, and higher compensation at top tech companies

Main takeaways from the live event discussion from over 35 years of experience.

You don't hate JIRA, you hate your manager

I'm usually not one to run to the defense of a specific technology, especially one I hate. Though, I think it's important that people hate things for the right reason.

Managing difficult software engineers

This guide is born out of those countless interactions, conversations, and experiences.

Designing Accessible Text Over Images: Best Practices, Techniques, And Resources (Part 1)

In this two-part series of articles, Hannah Milan covers the best practices when using various accessible text over images techniques for designing your web and mobile app content. These practices can help you to make the text over images more accessible while retaining an aesthetically pleasing look. Get ready to deep-dive through the subtle changes in your design, such as the text’s position, size, and background style, and explore the importance of using real text for accessibility purposes, as opposed to using images of text.

3 Git Configuration Tips I Use Every Day

If you want to move past add, commit, and push, keep reading.

Automatic HTTPS

Caddy is the first and only web server to use HTTPS automatically and by default.

Amazon Prime Video reduced costs by 90% by ditching Microservices

This article is not sponsored by the World Monolith Supremacy Association.

My solopreneur story: zero to $45K/mo in 2 years

Today is exactly 2 years since I quit my job and become a full-time indie hacker.

A Visual Guide to Sed

Mastering the text substitution tool.

Dominik Szczepaniak: Mermaid – Diagrams as a Code

Dobrze zaprojektowany diagram może stanowić lepsze przedstawienie kodu lub architektury niż obszerne opisy, interfejsy czy komentarze w kodzie. W tym artykule przedstawię Ci kilka argumentów za tym, dlaczego warto korzystać z diagramów, jakie są główne problemy z pracą z diagramami. Pokażę Ci narzędzie Mermaid, które pozwala w prosty i przyjemny sposób zarządzać diagramami w postaci kodu, a także pokażę Ci jak szybko postawić aplikację serwującą dokumentację wzbogaconą o diagramy wykonane w Mermaid.

Productivity

Maybe you should do less 'work'

Working in tech, I've observed developers who work as hard as possible when they don't need to. I'm here today to tell you that it's a bad idea and you shouldn't do it.

Learning at work - Julia Evans

Here are some things me & people on twitter came up with. Everything in here is stuff I can do during my workday.

How I learned to program in 10 years - Julia Evan

Anyway, this is mostly to say – if you’re programming and just starting out, and worrying that people say you can learn to program in 24 hours or 12 weeks… whatever. It’s taken me 11 years so far, and I’m not done :)

15 principles for managing up

When your boss loves you, you have options. Here's how to help your manager get what they need, so you get what you want.

The top 7 software engineering workflow tips I wish I knew earlier 🧰

Your time matters.

Python

6 Cool Things You Can Do With The Functools Module

In conclusion, the functools module in Python’s Standard Library is a treasure trove of tools, especially for those who frequently work with functions and decorators.

What is Inversion of Control and Why Does it Matter?

Three Techniques for Inverting Control, in Python

Inversion of Control is a principle for improving the modularity of software. It's a powerful strategy for simplifying systems that might otherwise become tangled and difficult to understand.

We Have To Talk About Flask

Flask 3.0 was released on September 30th, 2023, along with a parallel 3.0 release of Werkzeug, its main dependency. That day, the Flask-Login extension, one of the most popular of all Flask extensions, stopped working due to a backwards incompatible change introduced in Werkzeug. It is October 19th when I'm writing this, and Flask-Login remains broken.

Building Custom Middleware in FastAPI

In this article you’ll see how to build custom middleware, enabling you to extend the functionality of your APIs in unique ways by building function-based and class-based middleware to modify request and response objects to suit your need and to handle rate limiting. You’ll also see how to write test cases and the best practices to follow.

Services vs Command Handlers - Szymon Miks

Organizing code in an application is crucial for its maintainability and scalability. Two common approaches for structuring code are services and command handlers. In this blog post, we will explore these approaches and discuss when it is appropriate to use each one.

Asyncio, twisted, tornado, gevent walk into a bar...

... they pay, they leave, they drink, they order.

Make Each Line Count, Keeping Things Simple in Python

Simplicity in your code means fewer possibilities for bugs to hide and easier debugging when they do arise 📈

asyncio: real world coroutines - Michał Klich

In this article, I’ll be writing about working with coroutines, handling errors, retrying them automatically, and tracking execution progress.

An Intro to Protocol Buffers with Python

Protocol buffers are a data serialization format that is language agnostic. They are analogous to Python’s own pickle format, but one of the advantages of protocol buffers is that they can be used by multiple programming languages.

Do not use requirements.txt

However, pip was designed to be a package installer and not a full-fledged project workflow tool. pip lacks two essential features, dependency lockfiles and automatic management of virtualenvs

The most performant timestamp functions in Python

Use time.time() for epoch timestamps.

Use datetime.utcnow() for datetime timestamps.

For tz-aware datetimes, you should do your own research. I only skimmed the surface here

Django

Supercharge Your Django App: 7 Sneaky Tricks to Crush Slow Database Queries

Django provides many tools and methods for optimizing database queries in its Database access optimization documentation. In this blog post, we will explore a collection of additional and essential tips I’ve compiled over the years to help you pinpoint and resolve your inefficient Django queries.

Why is the Django Admin “Ugly”?

While talking with people at Djangocon US, one question kept coming up: “why is the Django admin so ‘ugly’?”. I’m paraphrasing here, so pardon the click-bait title, but the question came in many forms. Why does the Django admin have a “dated” UI? Why has the Django admin not changed much in all these years? Why is the Django admin missing ?

Python libraries

loguru

Loguru is a library which aims to bring enjoyable logging in Python.

Diagrams

Diagram as Code

Diagrams lets you draw the cloud system architecture in Python code.

hypothesis

Hypothesis is a powerful, flexible, and easy to use library for property-based testing.

RenderCV

LaTeX CV generator from a YAML/JSON input file.

Prefect

Prefect is a workflow orchestration tool empowering developers to build, observe, and react to data pipelines

Cloud

Wait, is cloud bad?

I regret to inform you that there is discourse

GoogleCloudPlatform/cloud-run-hello

Demo container for Google Cloud Run.

Other stuff

Social Cooling

LIKE OIL LEADS TO GLOBAL WARMING...

DATA LEADS TO SOCIAL COOLING

Open Developer Tools (press F12)

Go to the Console tool

Enter (or copy and paste) the following: console.table($$('a'),['innerHTML','href'])

Killed by Google

Google Graveyard

A Senior Engineer's CheckList

This is a simple checklist, and while it is useful to any software engineer, it is especially useful to senior engineers.

The Book of Secret Knowledge

This repository is a collection of various materials and tools that I use every day in my work. It contains a lot of useful information gathered in one piece. It is an invaluable source of knowledge for me that I often look back on.

Videos

"Design Patterns for Data Pipelines" - Lisa Dusseault (PyBay 2023)

Tmux has forever changed the way I write code.