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.
Me a while back, full of hair and excitement, giving a presentation on GitHub Actions:
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:
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
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 thesettings.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