Month summary - September 2024

Posted by Tobiasz Kedzierski on 30.09.2024

September 2024

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

GitHub Actions

This month I delved deep into the world of GitHub Actions, a tool that I've grown to love and become an expert in. Previously I've not only worked extensively with GitHub Actions but also created my own custom actions, such as the GitHub Forks Sync Action and the Label When Approved Action.

In addition to this I utilized GitHub Actions for scraping data related to GitHub Actions for the Apache Software Foundation. This allowed me to calculate valuable statistics. My dedication to mastering GitHub Actions led me to pass a certification exam with minimal preparation, earning the badge of a certified GitHub Actions expert, which I proudly display here.

GitHub Actions Certification

Me a while back, full of hair and excitement, giving a presentation on GitHub Actions:

Brival Tech Talk - tips & tricks

GitHub Action + Hugo = Photoblog

After achieving this milestone, I decided to channel my expertise into a personal project. One weekend evening I finally created a photoblog using Hugo and GitHub Actions. To maintain the privacy of the original-size photos and their metadata I kept the source code in a private repository. With the help of a GitHub Actions workflow, a static website was generated using Hugo and pushed to a public repository, where my photoblog is now available for viewing at photos.tobked.dev.

Here’s the GitHub Actions workflow: gh-pages.yaml

name: github pages

on:
  push:
    branches:
      - master
  pull_request:

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          submodules: true

      - name: Setup Hugo
        uses: peaceiris/actions-hugo@75d2e84710de30f6ff7268e08f310b60ef14033f  # v3
        with:
          hugo-version: '0.134.3'
          extended: true

      - name: Build
        run: hugo --minify

      - name: Setup Exiftool
        uses: woss/exiftool-action@f592e36cc8d653b8f8ac3084b34403d0911236a3  # v12.87

      - name: Remove Exif data from images
        run: exiftool -r -all= -ext jpg -ext jpeg -ext png -ext webp -overwrite_original public

      - name: Deploy
        uses: peaceiris/actions-gh-pages@4f9cc6602d3f66b9c108549d475ec49e8ef4d45e  # v4
        if: github.ref == 'refs/heads/master'
        with:
          deploy_key: ${{ secrets.ACTIONS_PHOTOS_DEPLOY_KEY }}
          external_repository: TobKed/photos
          publish_dir: ./public
          cname: photos.tobked.dev

Photo from the photos.tobked.dev:

photos.tobked.dev photography

tmux

In addition to my GitHub Actions adventures, I also dived into learning tmux, a terminal multiplexer that brought me a lot of joy. I customized a configuration file to tailor the tmux experience to my liking, enabling features like mouse support and setting new panes to open in the current directory.

Here’s my configuration file: .tmux.conf

set -g mouse on
setw -g mode-keys vi

# List of plugins
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-continuum'

set -g @continuum-restore 'on'

# Set new panes to open in current directory
bind c new-window -c "#{pane_current_path}"
bind '"' split-window -c "#{pane_current_path}"
bind % split-window -h -c "#{pane_current_path}"

Resources

I'm excited to share some interesting materials I've gone through. Check them out below.

Articles

High Growth Engineer: My Tech Promotion Algorithm

Guest post by ex-Amazon Principal Engineer, Steve Huynh.

Architecture Weekly: Using S3 but not the way you expected. S3 as strongly consistent event store

Amazon S3 now supports conditional writes.

I will f(l)ail at your tech interviews, here's why you should care

In this post, I will attempt to break down my perspective on technical interviews (techs). What I see to be their real value and application. By the end of this, I hope you will know why as a Hiring Manager I’ve pushed back on using them and what I prefer to do instead.

Using your own product is a superpower

Why you should dogfood your product and how we do it at PostHog

I just crossed $1 million on GitHub Sponsors. 💰🎉

Want some tangible strategy? Do you too want to make a million bucks in open source? It's easy! 🙄 Let's dive in

Your company needs Junior devs

Getting coffee with a bunch of local tech leaders, I surprised myself with how stridently I argued why companies should hire junior engineers.

I've Built My First Successful Side Project, and I Hate It

In 2020, I built my first side project. I scratched my own itch, then started selling it, and since then, the project has earned me over $15,000. But a few months after releasing it, I was so tired of the maintenance that I wanted to shut it down. Here is a story about my short entrepreneurial adventure.

Advice From a Software Engineer With 8 Years of Experience

Practical tips for those who want to advance in their careers

The Most Heated Tech Job Market in History: Advice for Software Engineers

This piece covers advice for tech workers to make the most out of this heated market: whether you want to make a job change or not. A market where demand for employees outstrips supply is one where employees can do well for themselves with less-than-usual effort.

7 Must-Know Lessons To Be A Better Engineer From Top Industry Leaders

2024 Month of Collabs: Best lessons to take your career forward

Why Not Comments

Why not "why not" comments? Not why "not comments"

Release fatigue 😫 and going static

By virtue of being statically generated, the code for our website doesn't need to be kept up-to-date with the latest security release of every package and tool we use, it's just HTML!

Why Scrum is Stressing You Out

Back then, things would get crazy around deadlines, but at other times, I recall feeling pretty even. These days, however, the pressure seems omnipresent.

Makefiles for Web Work

make is a build tool that’s been around since the 1970s. It was originally designed for automating the building of C programs: installing dependencies, running tests, and compiling binaries.

The Art of War Applied To Software Development

In this post, Toptal Freelance Software Engineer Jose F. Maldonado explains why many of these ancient teachings still matter, and what you can do to make them work for you and your team.

A Life Engineered: The #1 Mistake You're Making with Your Mentor (And How You Can Avoid It)

Tips and resources on how to make the most out of your mentorship.

Using Bloom’s Taxonomy to Write Effective Learning Outcomes

Bloom’s Taxonomy is a classification of the different objectives and skills that educators set for their students (learning outcomes).

Productivity

Good software development habits

This post is not advice, it's what's working for me.

How to understand/retain complex concepts 10x better

The whole idea: compress the concept by repeatedly practicing explaining it until you understand it from first principles.

AI

danielmiessler/fabric

fabric is an open-source framework for augmenting humans using AI. It provides a modular framework for solving specific problems using a crowdsourced set of AI prompts that can be used anywhere.

Deep-Live-Cam

real time face swap and one-click video deepfake with only a single image

DataLine

DataLine is an AI-driven open source and privacy-first platform for data exploration. Your data is accessed using your device and stored on your device. No clouds, only sunshine.

How to Get Samantha from Her or TARS from Interstellar on Your iPhone/Android

Change your AI from Siri to an interactive and realistic AI from Her or Interstellar that you can have long conversations with.

MacGPT

ChatGPT on your Mac and Menubar.

MacWhisper

Quickly and easily transcribe audio files into text with OpenAI's state-of-the-art transcription technology Whisper.

Security

Hacking misconfigured AWS S3 buckets: A complete guide

You've probably already come across an AWS S3 bucket, maybe even a misconfigured one too, and if you ignored them before, we hope this article shines some light on the most common security misconfigurations present in this storage bucket service.

Fake recruiter coding tests target devs with malicious Python packages

RL found the VMConnect campaign continuing with malicious actors posing as recruiters, using packages and the names of financial firms to lure developers.

Python

Why I Still Use Python Virtual Environments in Docker

As an overarching theme, my goal is not to mindlessly follow some ~best practices~ that add complexity for questionable payoffs because a big tech developer advocate said so at a conference. But I spend a lot of time thinking about the secondary effects of what I do.

SuperFastPython!: Asyncio gather() Limit Concurrency

We can limit concurrency when using asyncio.gather() via a semaphore.

In this tutorial, you will discover how to limit concurrency with asyncio.gather().

How to Build a Perfect Docker Image for a Poetry Project

This article describes how to build a perfect Docker image for your Poetry-based project

Docker images using uv's python

uv has changed the landscape

Django

This post is part of Create A One-Product Shop With Django, Htmx, and Stripe Series

This is the first of a two-part series using Django, htmx, and Stripe to create a one-product e-commerce website. In this part, we'll start our Django project and integrate it with htmx.

Django-allauth: Site Matching Query Does Not Exist

The issue is that the quickstart guide leaves ou pullt a critical piece of configuration: setting a SITE_ID in the settings.py file.

Custom Error Messages on Model Deletion in the Django Admin

I have been working on a project where we might want to delete models even just for testing purposes, but we don't want to accidentally delete models.

Django: hoist repeated decorator definitions

Django provides us with a rich set of view decorators. In this post, we’ll look at a technique for hoisting repeated use of these decorators to reduce repetition.

Python libraries

cbfa

Class-based views for the FastAPI

humanize

This modest package contains various common humanization utilities, like turning a number into a fuzzy human-readable duration ("3 minutes ago") or into a human-readable size or throughputs

Django libraries

radiac/nanodjango

Full Django in a single file - views, models, API ,with async support. Automatically convert it to a full project.

Tools

pigsty

Battery-Included, Local-First PostgreSQL Distribution as a Free & Better RDS Alternative!

"PostgreSQL In Great STYle": Postgres, Infras, Graphics, Service, Toolbox, it's all Yours.

C4 model

The C4 model for visualising software architecture

Exiftool Github action

Action for Exiftool. Include it in the path without installing, run multiple versions

Cloud

Technical Guide: End-to-End CI/CD DevOps with Jenkins, Terraform, Docker, Kubernetes, SonarQube, ArgoCD, AWS EC2, EKS, and GitHub Actions (Django Deployment)

Building an end-to-end CI/CD pipeline for Django applications using Jenkins, Docker, Kubernetes, EKS, ArgoCD, GitHub Actions, AWS EC2, and Terraform can be quite a robust setup. In this article, we will guide you through setting up a comprehensive CI/CD pipeline using AWS EC2, AWS EKS, Jenkins, Github actions, Docker, trivy scan, SonarQube, ArgoCD, Kubernetes cluster of your choice, and terraform.

Architecture Weekly: Show me the money! Practically navigating the Cloud Costs Complexity

Today, we’ll grab a calculator to discuss the costs of building an event store on S3.

Announcing IAM group authentication in Cloud SQL

IAM group authentication extends existing IAM database authentication functionality by allowing database access to be managed at the group level instead of the individual user level.

Stevey's Google Platforms Rant

Yegge wrote this in 2011 and posted it on Google+. He intended to make it visible internally to Google only, but accidentally made it public.

What are the main Cloud Design Patterns?

and how they help fighting with fallacies of Distributed Computing

Other stuff

The 512KB Club

The 512KB Club is a collection of performance-focused web pages from across the Internet.

Videos

Zasypiaj z poczuciem, że to był dobry dzień. Startujemy Productivity by Heart! 💚

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

How to Negotiate a Big Tech Offer as a Software Engineer - with ‪@RahulPandeyrkp‬

Fireship: Tmux in 100 Seconds

NetworkChuck: you need to learn tmux RIGHT NOW!!

NetworkChuck: 18 Weird and Wonderful ways I use Docker

NetworkChuck: You've been using AI Wrong

DjangoCon US: Django & Celery - A love story of async proportions - Hugo Bessa

Unsupervised Learning: Introducing Fabric — A Human AI Augmentation Framework