[Photo by Pixabay](https://www.pexels.com/photo/books-in-black-wooden-book-shelf-159711/)

Create a Virtual Bookshelf with Hugo and PaperMod

TL;DR If you don’t care about my reasoning, just jump to the description of installation and usage . Click here for a demo . I try to read at least one book each month. It’s not much, but that’s what I can afford. I read a lot of technical books, building my technical skill set, but a lot of random topics from business, psychology or fantasy. It happen to me many times that when I’ve been asked about specific book, I couldn’t remember “Where did I read it?...

2024-04-26 · 4 min · timor

Automatically setting 'lastmod' in Hugo pages with Git modification date

Following my recent SEO issues , I’m actively exploring ways to bolster my website’s ranking. One aspect I’m keen to address is expediting Search Engine indexing for pages that have been altered or updated. This is precisely the purpose of Sitemaps, a feature fully supported by Hugo1. However, there’s a limitation in how Hugo handles this by default. It sets the lastmod parameter to either the page’s creation time or the last build time....

2024-03-24 · 2 min · timor
[Photo by Harrison Haines](https://www.pexels.com/photo/rusty-ships-on-rippling-water-6292339/)

How old are Official Docker images? 2024 Edition

Around 3 years ago I’ve checked the age of various base images available on Docker Hub. Curiosity recently got the better of me, prompting another investigation into the current state of affairs. Since then, there have been significant changes: CentOS 8 has reached its end of life  external link , prompting a shift to CentOS 8 Stream  external link , which is also nearing its demise 🤣 OpenJDK images have been deprecated  external link and no longer receiving updates....

2024-03-24 · 2 min · timor

Zed Code Editor as an Atom reincarnation

I was a big fan of the Atom1 code editor, so when it was discontinued and replaced by M$’s VS Code2, I was both sad and dissapointed. While I can admit that VS Code is a solid editor, my personal preference always leaned towards Atom. However, over time, Atom started to feel sluggish. I collected numerous plugins over the years and it began to weigh heavily on performance, not just during startup but also during regular usage....

2024-03-19 · 2 min · timor
[Photo by Pixabay](https://www.pexels.com/photo/orange-and-white-seashell-on-white-surface-33234/)

The power of extensive command history in Bash and Zsh

I rely heavily on shell usage. For over 15 years, I was a devoted user of Bash until I discovered Zsh and made the switch. One thing that remained constant throughout my transition was my configuration to maintain an extensive commands history. This setup is replicated across all my systems. When you spend a lot of time coding, you often find yourself repeating commands or running variations of them. Remembering all these commands can be challenging, but with resources like Google and ChatGPT, it’s not always necessary....

2024-03-05 · 3 min · timor

Adding Mermaid diagrams to Hugo

I used Chart.js charts on one of my Hugo blogs for few years already. Recently I needed to add few diagrams and I started glueing them in Chart.js but then I found that Hugo supports GoAT and Mermaid diagrams  external link . They’re not working out of the box, but it’s easy to extend. Much easier than my custom shortcodes. I tried to follow up the instruction1 but failed. After few minutes I found slightly simpler solution....

2024-02-25 · 2 min · timor
AI generated

How to run x86-64 Docker images on Apple's MacBook with M1/M2/M3 CPU

Working with Docker environments amid diverse architectures, like Apple’s arm64 and x86-64/AMD64, presents challenges. I’ve encountered the clash between my Mac’s M1 arm64 architecture and my x86-centric server workloads. The solution? Just use DOCKER_DEFAULT_PLATFORM 1 2. Just run in the terminal: Enforce platform for all commands export DOCKER_DEFAULT_PLATFORM=linux/amd64 With this command, Docker enforces x86 architecture by default on commands supporting --platform parameter, streamlining workflows and sparing the need for repetitive --platform specifications....

2024-02-06 · 1 min · timor

My pre-commit config for Hugo blog

I love blogging with Hugo  external link and I have two blogs already that use it. The good thing about static sites is that you have all the data in the files. You can optimize them locally, batch process, amend, etc. Powerful templating engine allows to quickly pre fill documents in the format I like. I have some steps in the Makefile for things like image optimization, but I often don’t remember to run them 😃...

2024-01-29 · 2 min · timor
[Generated by AI](https://www.bing.com/images/create/potrzebujc499-obrazek-dla-posta-na-blogu-o-temacie3a-g/1-65b520c6d817444ea0a5f4ed3dd8843a?id=QFgGAr6fEgEMEJSm0T45XQ%3d%3d&view=detailv2&idpp=genimg&FORM=GCRIDP&mode=overlay)

Git hacks - a set of my favorite git aliases

I use Git a lot, even writing this article i will commit text few times. There’s a set of aliases I rely on daily and they’re first I add in new place. Some Git commands are unnecessarily verbose. You can make your life much easier with bash-completions, but if you write it tens of times per day, it’s anyway a lot of typing… and I’m a lazy man 😄 Simple status/log checks git s s = status --short --branch --untracked-files Shows a short, branch-focused status with untracked files....

2024-01-27 · 6 min · timor
[Photo by Ann H](https://www.pexels.com/photo/blue-tape-measure-on-yellow-surface-10894941/)

Checking compressed size of Docker image

One day, I was looking for some gains to improve the startup time for Jenkins agents. We run them as containers and because images are quite big, I was thinking about cutting the size, by cutting less frequently used features. I was looking for the metrics I could use to decide which changes are most valuable. I could think about two: download time and startup time. Together they combine to the gap between the request to start agent and the moment you can start to use it....

2024-01-24 · 2 min · timor