Blog
A place to share knowledge, catalogue good ideas and practices, and surface thoughts gathered on the web.
Recent
- Why 12factor is still the best thing around?
Notes on what still holds up — and what doesn't — about the 12-factor app manifesto in 2026.
Backlog
Most entries below are TODO — titles I want to write about. Items move up to "Recent" as they get written.
Good practices
- Why 12factor is still the best thing around?
- How to set up a smart linter strategy with Vue (Prettier / ESLint)
- Why you should use VuePress for documentation
- Why you should at least try DBML and entity-relationship diagrams
- How to write a proper commit message (
commitlint) - Automatic release messages based on
standard-version/commitlint - i18n naming convention and why you should set it up
- Accessibility (a11y) — the parts that actually matter
- Values: e.g. GitLab handbook
- Decision-making: ZeroMQ, GitLab, W3C, RFC
- From full-time on-site to full-time remote
Git
- How to use several git users (work/home GitHub & GitLab)
- Git config and setup
- Why you should not use git-flow
- Why you should use
git --fixup/git commit --amend - How to do an interactive rebase
Tests
- What to test and what not to test
- Why you should use Cypress image diffing
- How to use Cypress image diffing locally inside Docker (cross-OS issues)
- How to really test for performance in the browser
- Why you should test for performance
Fonts
- Why and when to use SVG vs fonts
Vue
- Why you're not using
v-modelproperly with your forms (localModelsetter) - Why and how to create complex SVGs with Vue
- What's really a scaffolding template for Vue?
- Why you should probably not pass functions to props
- How to generate your Vue store from state based on convention
HTML
- How to improve your website with
defer/preload— what they really do - How to improve your website with efficient caching (HTTP headers)
iframepost/publish logic to setscrollHeightproperly
JavaScript / TypeScript
- Do you really need underscore/lodash?
CSS / SCSS
- Why CSS variables beat SCSS variables
- A small example of dynamic grid-layout vs flex-layout
Databases
- Database modelling and MongoDB
- Why Mongoose is probably not helping you
- How MongoDB indexes really work
- Storing a graph and writing queries in MongoDB
- Is Neo4j the answer? Let's test it
Ops
- Why you should not serve static files with Python or Express
- How to improve speed (DNS, TLS handshake, geo-distribution, route)
- When (not) to use a server-side generated website
- How to host your own page on a Raspberry Pi
- Why use an old Mac mini instead of a Raspberry Pi 2
- When you should (not) use analytics on your blog (GTM/GA)
- Why and how to write your own CI/CD pipeline
- Should you set up your own email server?
- Is it really worth it to secure your network behind a VPN?
Ops, terminal edition
- Why you should secure your SSH gate
- Why you should multiplex with
tmux - Terminal speed and how to measure it — why it matters
- Emacs, Vim, or Nano?
- How to avoid your logs filling all the space
- How to kill a process properly
- How to use the terminal to find what's taking so much space
Ops, infra
- Globbing in regex inside nginx routes
- Do I really need Kubernetes? (sometimes you need bare metal)
- How Kubernetes really works
- Alpine or Debian?
- Automated build script for
pierreguilbert.com - Installing Debian on macOS — yes, possible
Misc
- Running a simple app built as a microservice (multiple frontends / backends)
- Generating code that generates code with Jinja2
- Why you should generate several titles for your blog posts
- Why you should write your own graph library in JavaScript