| CARVIEW |
Select Language
HTTP/2 103
link: ; as=style; nopush; rel=preload, /gc.zgo.at/count.js>; as=script; nopush; rel=preload
HTTP/2 200
date: Thu, 29 Jan 2026 10:00:20 GMT
content-type: text/html; charset=utf-8
content-encoding: gzip
cache-control: max-age=0, private, must-revalidate
etag: W/"3fc17d78dc37955808bfb977e022f4fd"
link: ; rel=preload; as=style; nopush,/gc.zgo.at/count.js>; rel=preload; as=script; nopush
referrer-policy: strict-origin-when-cross-origin
rndr-id: f24561e1-a739-4c93
set-cookie: _pika_session=ydK2hVt8u3z01Rq7GtUm42rugD7cWYJp6nt9aDXmvwCowLGM9wcMn4LZhdknu0PrAqOVgGkVN8jSyM7GgcmUfEykGWfHvbbOF4cOJru6APG0z4z5gXlW8NKu0CAdqU53UjmDV3DrOF8jXd0sOzfEj5pXU%2BcxRaGWQbwriLgPA8E1jsZ5tIDhZGaImVZrRm3WT50ktbrOlvhUHpf1Ad6W0umFdYjb0f4DUr2RzZmngO8BSBbGPmKJ7%2FaGSbinFYHbw62IDbI17cnx13JMMZA4%2BO4mmV5w--KRmoI7Tz8Jj7l%2FNp--hKg9YZL8Yy7fFgBCvNsI%2Bw%3D%3D; path=/; httponly; samesite=lax
vary: Accept
vary: Accept-Encoding
x-content-type-options: nosniff
x-frame-options: SAMEORIGIN
x-permitted-cross-domain-policies: none
x-render-origin-server: Render
x-request-id: cb19aa31-4f13-4003-bf5c-4083efe11e2d
x-runtime: 0.041604
x-xss-protection: 0
cf-cache-status: DYNAMIC
server: cloudflare
cf-ray: 9c57e1c4bb891f95-BLR
alt-svc: h3=":443"; ma=86400
Gab's Notes
Skip to content
Hello ! 👋🏻
I’m Gabriel, technical lead in a software development team at OVHcloud and FOSS enthusiast. I enjoy tinkering with home automation, 3D printing, electronics, and tech in general. This is my corner of the internet. Welcome!
I mostly blog about technical topics, but you may also find occasional musings.
- 2025
- docker: DNS resolution failure
- Convert HEIC (iPhone) pictures to JPG on CLI
- I tried moving to GrapheneOS
- Cloud setup pricing update
- Custom Terraform linter rules with Rego
- Reduce Terraform plan time when using modules
- Hello, Pika!
- I’m moving to Linux, bye macOS
- Use semaphores to limit processing
- Moving the home server to a VPS
- Your code deserves better: give it a linter!
- 2024
- Terminal auto dark/light mode
- Distributing a Firefox extension
- Merge conflicts in go.sum
- Setup a (modern) Go development environment
- Go dependency management for Python developers
- I wrote a linter!
- Go dependencies and binary size
- Context-induced performance bottleneck in Go
- Check your websites for broken links
- Unmarshal JSON from HTTP request in Go
- 2023
- My subscriptions
- Gin Method Not Allowed
- Upgrade PostgreSQL in Docker
- find to the rescue
- To a new adventure!
- pip-tools for Python dependencies management
- Setup rtx with direnv for Python
- 2022
- Create a CSR with SAN
- Reduce your page load time with htmx in less than an hour
- Certificates chain correct order
- Optimize large Django migrations
- Releasing my works into the public domain
- 2021
- My Setup at Home (12/2021 update)
- Automate bug findings with git bisect
- Chowning files can take a lot of space in a Docker image
- Lighten your Python image with Docker multi-stage builds
- 2020
- Poetry for Python dependencies management
- How to use pipx with pyenv
- Docker images layers and cache
- Replacing my Synology NAS with a self-built server
- Designing and 3D Printing a Wall Mount for my ISP Modem
- Sourcehut
- Blog Statistics, Part 2
- I Needed a Budget, With Four Rules
- Chat Sceptique (French YouTube Channel)
- Adding Time to my Blog’s Statistics
- Bitwarden and Password Managers
- Pi Hole
- Cleantoots - Clean Your Toot History
- CodinGame Spring Challenge 2020 - Pacman
- Using Your YubiKey With SSH and Achieving Multifactor Authentication
- Raspberry Pi
- YouTube on Apple TV
- How to subscribe
- Synology NAS: Stream & Backup
- My Setup at Home
- I'm starting a blog
- 2018
- Hardware vulnerabilities
Subscribe to read future posts in your inbox (or grab the RSS feed)