Month summary - January 2025

Posted by Tobiasz Kedzierski on 31.01.2025

January 2025

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.

Articles

Ken Whitesell: Database optimization isn't always obvious

One of the issues of working with abstractions is that what you think may be logically true, isn’t.

Why Big Tech And Their 9–5 Jobs Are Not Tempting Anyone Anymore

"Climbing the corporate ladder only to realize it was leaning against the wrong wall"

The Hitchhiker’s Guide to Online Anonymity

Or “How I learned to start worrying and love privacy anonymity”

The Ars Technica guide to mechanical keyboards

Want a mechanical keyboard but don't know where to start? We've got you covered.

How to create your own VPN server using OpenVPN and AWS?

Building your own VPN may sound technical, but with the right guidance, it becomes straightforward and highly rewarding.

225. Systems Ideas that Sound Good But Almost Never Work—"Let's just…"

Some engineering patterns that sound good but almost never work as intended.

Rules for Writing Software Tutorials

You can stand out in a sea of mediocre guides by following a few simple rules.

Allegro Tech Blog: Circuit Breaker not only for HTTP calls! (based on resilience4j)

... we show how to use Circuit Breaker from Resilience4j for handling cases other than HTTP calls. With that ~70 lines of code, we were able to significantly improve our response time to failures, redirect users to functioning payment providers, meet business requirements regarding reliability, and take the manual switching off of payment methods off from developers’ shoulders.

An Efficient Framework to Approach System Design Problems

In my experience as either a software developer or a mentor for software developers, the buzz word “system design” has been popped up quite frequently. Actually, no matter for real-life software development or software engineering interviews, “system design” is right in the center of the stage.

I Feel Like a Hacker Using These Cool Linux Terminal Tools

Get ready to look like a hacker with me using these Linux terminal tools!

Making Beautiful API Keys

tl;dr - Since developers are our customers, we wanted them to have beautiful API keys. We couldn't find a suitable standard solution so we made our own package - uuidkey - that you can use to encode & format UUIDs into human-readable keys. If you use UUIDv7, you can also decode the keys to store them as sortable, indexable IDs in your database.

Today I learned that bash has hashmaps

I was horrified to find out that bash has hashmaps, and decided to write this note to tell you how to use them.

Categories of leadership on technical teams

One framework I’ve referenced repeatedly is to break down team leadership into a few different categories of responsibility.

System Design Codex: Eventual Consistency is Tricky

But there are great patterns to handle it...

A free upgrade could let Philips Hue and other Zigbee bulbs act as motion sensors

The secret is technology which can detect the interference in radio signals created by someone walking into a room. This interference can then be used as a trigger to control the light bulbs in the same way as existing motion sensors.

architecture notes: Database Sharding Explained

Many people don't understand database sharding, which could solve their difficulties. This article explains database sharding, its benefits, including ho

blinry: Building a tiny Linux from scratch

Last week, I built a tiny Linux system from scratch, and booted it on my laptop!

Productivity

Cassidy Williams: The Productivity apps I use in 2024

I often get asked what my favorite tools are and how I use them to get my work done, and I’m writing this both to answer that question, and also for me to just paste a link to this post next time I’m asked. Efficiency!

How to improve your WFH lighting to reduce eye strain

Having a working environment that’s as easy on my eyes as possible is of critical importance

AI

ChatGPT search vs. Google: A deep dive analysis of 62 queries

A detailed analysis of ChatGPT search and Google's performance across 62 queries, with scoring metrics and practical examples.

How to Create a Claude Chat with Dynamic Knowledge (No API Required!)

Let's Cook Up Some Basic AI Automation Magic.

Security

Building AI Agents to Solve Security Challenges

this article, I would like to bring closer a topic of AI Agents and demonstrate how to build an agent that can solve security challenges...

Python

Adam Johnson: Python: create temporary files and directories in unittest

Sometimes, tests need temporary files or directories. You can do this in Python’s unittest with the standard library tempfile module.

heapq — Heap queue algorithm

This module provides an implementation of the heap queue algorithm, also known as the priority queue algorithm.

Heaps are binary trees for which every parent node has a value less than or equal to any of its children. We refer to this condition as the heap invariant.

Django

Show Django flash messages as toasts with Htmx

Learn how to display Django messages as user friendly toasts with Htmx

Complex Django filters with Subquery

Django’s Subquery expression is one of the most powerful tools in the ORM. The documentation does a good job of explaining it at a high level, but unless you have a decent understanding of SQL, you may not fully understand it’s power.

How to show a modal in Django + HTMX

Learn how to show a modal with minimal Javascript in Django + HTMX

Database Indexing in Django

This article explores the basics of database indexing, its advantages and disadvantages, and how to apply it in a Django application.

Tools

👻 Ghostty

👻 Ghostty is a fast, feature-rich, and cross-platform terminal emulator that uses platform-native UI and GPU acceleration.

k3d

Little helper to run CNCF's k3s in Docker.

dsRAG

High-performance retrieval engine for unstructured data.

A log file viewer for the terminal

Merge, tail, search, filter, and query log files with ease.

No server. No setup. Still featureful.

Portainer Templates

The largest single collection, of ready-to-go Portainer templates

Cloud

Pub/Sub to BigQuery with BigQuery Subscription

Real-time data ingestion and analysis are becoming increasingly critical for modern businesses, whether in retail, finance, or logistics.

Create a CI/CD Pipeline using GitHub Actions and Google Cloud

In this guide, I’m going to show you how to create a CI/CD pipeline that automates the test and build of our application code, and then deploys to Google Cloud services.

Exposing GKE Apps Using GCP HTTP Load Balancer, Cloud Armor, Cloud CDN, and Istio — part 1

But deploying on GKE is just the first step. The true challenge lies in ensuring your applications are accessible to users — securely, efficiently, and reliably. That’s where the magic happens!

Cloud Build + Cloud Deploy

Cloud Build and Cloud Deploy, in particular, are essential components for implementing a strong CI/CD (Continuous Integration/Continuous Delivery) pipeline.

Other stuff

Template0

All the free web templates you need for product, business, landing pages, blogs, portfolios, ecommerce, and admin dashboards.

t3dotgg/stripe-recommendations

How I Stay Sane Implementing Stripe

Doodles-as-A-Service Repo

I am trying to describe complex matters in simple doodles!

Dan McKinley: Egoless Engineering

Digging the Ditch Towards Enlightenment

GitPodcast

Convert any git repository into an engaging podcast.

Professional Programming

A collection of learning resources for curious software engineers

letsnotdothat.com

Master the Art of the Product Manager "No"

Keep your meetings smooth and your priorities on track!

devnoname120/My macOS setup.md

Quality of life improvements

Podcasts

The Real Python Podcast: Episode 236: Simon Willison: Using LLMs for Python Development

Simon has been researching LLMs over the past two and a half years and documenting the results on his blog. He shares which models work best for writing Python versus JavaScript and compares coding tools and environments.

Videos

MIT 6.824 Distributed Systems (Spring 2020)

6.824 is a core 12-unit graduate subject with lectures, readings, programming labs, an optional project, a mid-term exam, and a final exam. It will present abstractions and implementation techniques for engineering distributed systems. Major topics include fault tolerance, replication, and consistency. Much of the class consists of studying and discussing case studies of distributed systems.

MIT 6.006 Introduction to Algorithms, Spring 2020

This course is an introduction to mathematical modeling of computational problems, as well as common algorithms, algorithmic paradigms, and data structures used to solve these problems. It emphasizes the relationship between algorithms and programming and introduces basic performance measures and analysis techniques for these problems.

David Amos: Graph Theory With Python

Join me as we explore the world of Graph Theory with a focus on graph algorithms and using Python as a tool for mathematical research!

Liber Indigo: The Affordances of Magic

Liber Indigo leads us down a winding path through interface design, semantics, dreams, rainbows, materialism, magic, divination, and poetry, intersecting with the ideas of Aldous Huxley, Carl Jung, Albert Einstein, Max Planck, William James, Alan Turing, and others along the way.

38C3: Illegal Instructions

The 38th Chaos Communication Congress (38C3) takes place in Hamburg, 27.-30.12.2024, and is the 2024 edition of the annual four-day conference on technology, society and utopia organised by the Chaos Computer Club (CCC) and volunteers. Congress offers lectures and workshops and various events on a multitude of topics including (but not limited to) information technology and generally a critical-creative attitude towards technology and the discussion about the effects of technological advances on society.

Jakub Mrugalski: Asystent AI z bazą wiedzy w 3 minuty — Claude 3.5 Sonnet

Continuous Delivery: Yes... Microservices REALLY ARE Technical Debt

Docker Image BEST Practices - From 1.2GB to 10MB