The blog has a new look! After several years on Hugo, I decided to rethink everything: new logo, new framework, new design. Here’s the story of this transformation.
The new logo: when AI becomes part of the identity
The new logo now incorporates the symbolism of artificial intelligence:
- Neural networks visible on the left side, with their glowing pink and blue connections
- The text “AI” explicitly added to assert this dimension
- Printed circuits integrated into the design, evoking the hardware that runs the models
- An organic shape that evokes both a brain and a heart — the fusion of intelligence and passion
This new logo was generated with the help of AI — fitting for a blog that covers AI and now uses these tools heavily every day to move faster.
Migration from Hugo to Astro
Why change?
I wanted a change. I had started my blog with what I had: a free Hugo template found online and my articles. I had already customized it a bit by hand, then with the arrival of AI I was able to go further. But now, with code agents like Claude Code — it’s amazing! Code generation has become so easy that I thought a more modern and customizable framework was within reach. Me, more DevOps/infra than a pure web developer, I went for it.
The before/after is really different. The new design is beautiful, clean, modern — and this in both themes (light and dark).
The migration process
The migration was done fairly quickly, over two evenings, in collaboration with Claude Code.
Here’s how it went:
- Setting up the plan: I asked Claude Code to propose a migration strategy, using the Astro MCP to access the official documentation
- Preparing the Astro project: creating the structure, i18n configuration for 15 languages
- Migrating the FR content: all posts, projects and pages converted from Hugo format to Astro/MDX
- Migrating the assets: logos, essential images
- New design: complete overhaul of the layouts (Header, Footer, ArticleCard…) with a modern style
- Integrating the news: I had already started an Astro site dedicated to AI news. I finally merged the news into my blog for more coherence — everything in one place. Claude migrated the content and adapted the automated article creation workflow
- Mass translation: I took advantage of this migration to redo all my translations with my improved Python script (see next section)
- Browser testing: Claude tested the site as we progressed to fix issues at each step
Automatic translation into 15 languages
I’ve been using my Python script ai-powered-markdown-translator since January 2024. This project has evolved a lot since then — I talk about it in several articles on this blog.
A major challenge
I could have reused my old translations, but I wanted to put my script to a real test: translate the entire blog content in a single pass. We first tested on 2–3 articles and a few languages to refine the Python code, then I asked Claude Code to create a bash script to launch the mass translations — 10 files in parallel. Once the script was validated, we launched the full batch.
Script improvements
With this migration, I was able to add essential features:
- Option
--keep_filename: keep the same output filename - Support
.env: no longer need to export API keys manually - Preservation of inline code: backticks are no longer lost during translation
- Economy mode: use less expensive models for large volumes
The script supports multiple providers (OpenAI, Anthropic, Mistral, Gemini) and intelligently handles code blocks, LaTeX formulas and YAML frontmatter.
Statistics
For this blog, here are the numbers:
- 22 blog posts
- 4 projects
- × 14 languages = 364 files translated
- 0 translation failures
Deployment strategy
To migrate without risk, I created a parallel infrastructure on AWS:
- New S3 bucket dedicated to the Astro site
- New CloudFront distribution
- New ACM certificate
- Preview DNS (
preview.jls42.org) to test under real conditions
This approach allowed me to have both sites in parallel during testing. Once validated, the switch was done via Route 53 — with the possibility of an instant rollback if necessary. Everything went smoothly, and the old infrastructure could be removed.
What this project reveals
This migration illustrates my way of working:
- Mastery of code agents: after months of use, I know these tools well enough to entrust them with a full migration project
- Stepping out of my comfort zone: as a DevOps/infra profile, diving into a modern web framework was a challenge — and that’s what makes the project interesting
- Experimentation with AI: I wanted to see if I could do everything just with prompts — and yes, I succeeded. Everything was done with Claude Code, Gemini CLI and Codex (but mainly Claude Code)
- Automation: never do manually what a script can do, and above all have an automatic verification workflow
- Open source: the translator is available on GitLab
I also added an AI news section to the blog — I will talk about it in a dedicated post.
Thanks for reading this far! If you have questions or feedback, feel free to contact me. All the best and see you soon on the blog!
This document was translated from the fr version into the en language using the gpt-5-mini model. For more information on the translation process, see https://gitlab.com/jls42/ai-powered-markdown-translator