41554 blogs · [ { "id": "01a0821f-3d27-70ca-8fcb-21e6a639061f", "title": "Moziversary #8", "url": "https://williamdurand.fr/2026/05/01/moziversary-8/", "published_at": "2026-05-01T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfab2a1522a", "title": "My process for pitching projects as an engineer", "url": "https://williamdurand.fr/2025/12/30/my-process-for-pitching-projects-as-an-engineer/", "published_at": "2025-12-30T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfab3843fac", "title": "You can lead a horse to water but you can't force it to drink", "url": "https://williamdurand.fr/2025/12/24/you-can-lead-a-horse-to-water-but-you-cant-force-it-to-drink/", "published_at": "2025-12-24T00:00:00+00:00" }, { "id": "01a0821f-3d27-70ca-8fcb-21e6a67442b7", "title": "Moziversary #7", "url": "https://williamdurand.fr/2025/05/05/moziversary-7/", "published_at": "2025-05-05T00:00:00+00:00" }, { "id": "01a0821f-3d27-70ca-8fcb-21e6a7161c8a", "title": "Firefox AI & WebExtensions", "url": "https://williamdurand.fr/2025/03/24/firefox-ai-and-webextensions/", "published_at": "2025-03-24T00:00:00+00:00" }, { "id": "01a0821f-3d27-70ca-8fcb-21e6a7a512a6", "title": "Senior Staff.", "url": "https://williamdurand.fr/2025/03/01/senior-staff/", "published_at": "2025-03-01T00:00:00+00:00" }, { "id": "01a0821f-3d27-70ca-8fcb-21e6a7ed099c", "title": "Moziversary #6", "url": "https://williamdurand.fr/2024/05/01/moziversary-6/", "published_at": "2024-05-01T00:00:00+00:00" }, { "id": "01a0821f-3d27-70ca-8fcb-21e6a80c1c6f", "title": "Introducing xpidump", "url": "https://williamdurand.fr/2024/04/08/introducing-xpidump/", "published_at": "2024-04-08T00:00:00+00:00" }, { "id": "01a0821f-3d27-70ca-8fcb-21e6a8e03d3e", "title": "Moziversary #5", "url": "https://williamdurand.fr/2023/05/01/moziversary-5/", "published_at": "2023-05-01T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfab782020c", "title": "GitHub Container Registry, Proxy and Synology", "url": "https://williamdurand.fr/2023/03/18/github-container-registry-proxy-and-synology/", "published_at": "2023-03-18T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfab7875614", "title": "Containers and micro virtual machines", "url": "https://williamdurand.fr/2022/07/11/containers-and-micro-virtual-machines/", "published_at": "2022-07-11T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfab81a3c45", "title": "Deep dive into containers", "url": "https://williamdurand.fr/2022/06/21/deep-dive-into-containers/", "published_at": "2022-06-21T00:00:00+00:00" }, { "id": "01a0821f-3d27-70ca-8fcb-21e6a914f349", "title": "Developing Firefox in Firefox with Gitpod", "url": "https://williamdurand.fr/2022/05/03/developing-firefox-in-firefox-with-gitpod/", "published_at": "2022-05-03T00:00:00+00:00" }, { "id": "01a0821f-3d27-70ca-8fcb-21e6a9b8f571", "title": "Moziversary #4", "url": "https://williamdurand.fr/2022/05/01/moziversary-4/", "published_at": "2022-05-01T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfab9f11974", "title": "On writing a network stack (2/2)", "url": "https://williamdurand.fr/2022/04/11/on-writing-a-network-stack-part-2/", "published_at": "2022-04-11T00:00:00+00:00" }, { "id": "01a0821f-3d27-70ca-8fcb-21e6aa9a2375", "title": "Some non-production tools I wrote", "url": "https://williamdurand.fr/2022/03/29/some-non-production-tools-i-wrote/", "published_at": "2022-03-29T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfaba4b6f73", "title": "SPI flash content analysis and firmware reconstruction", "url": "https://williamdurand.fr/2022/03/10/spi-flash-content-analysis-and-firmware-reconstruction/", "published_at": "2022-03-10T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfabaf856cc", "title": "On writing a network stack (1/2)", "url": "https://williamdurand.fr/2022/02/17/on-writing-a-network-stack-part-1/", "published_at": "2022-02-17T00:00:00+00:00" }, { "id": "01a0821f-3d27-70ca-8fcb-21e6ab6b15d2", "title": "I joined a new team (at Mozilla)", "url": "https://williamdurand.fr/2022/01/25/new-team-mozilla/", "published_at": "2022-01-25T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfabb6d6b1f", "title": "ArvernOS in 2021", "url": "https://williamdurand.fr/2021/12/29/arvernos-in-2021/", "published_at": "2021-12-29T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfabb757522", "title": "On pretty printers", "url": "https://williamdurand.fr/2021/07/23/on-pretty-printers/", "published_at": "2021-07-23T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfabc63df86", "title": "An introduction to `git worktree`", "url": "https://williamdurand.fr/2021/05/05/an-introduction-to-git-worktree/", "published_at": "2021-05-05T00:00:00+00:00" }, { "id": "01a0821f-3d27-70ca-8fcb-21e6abf9057c", "title": "Moziversary #3", "url": "https://williamdurand.fr/2021/05/01/moziversary-3/", "published_at": "2021-05-01T00:00:00+00:00" }, { "id": "01a0821f-3d27-70ca-8fcb-21e6ac97819e", "title": "Yes, it happened on Slack", "url": "https://williamdurand.fr/2021/04/29/yes-it-happened-on-slack/", "published_at": "2021-04-29T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfabe54e4af", "title": "Introducing srht.vim", "url": "https://williamdurand.fr/2021/03/01/introducing-srht-vim/", "published_at": "2021-03-01T00:00:00+00:00" }, { "id": "01a0821f-3d27-70ca-8fcb-21e6acbcdfab", "title": "I got a promotion!", "url": "https://williamdurand.fr/2021/02/26/i-got-a-promotion/", "published_at": "2021-02-26T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfabf18fb62", "title": "First patch in the Linux kernel", "url": "https://williamdurand.fr/2021/02/22/first-patch-in-the-linux-kernel/", "published_at": "2021-02-22T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfabfc5ac7d", "title": "Rebasing without `git rebase`", "url": "https://williamdurand.fr/2021/02/02/rebasing-without-git-rebase/", "published_at": "2021-02-02T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfac03c9bd5", "title": "Introducing chipolata: a CHIP-8 interpreter", "url": "https://williamdurand.fr/2021/01/27/introducing-chipolata-a-chip8-interpreter/", "published_at": "2021-01-27T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfac1355a3b", "title": "Bare-metal Raspberry Pi 2 programming", "url": "https://williamdurand.fr/2021/01/23/bare-metal-raspberry-pi-2-programming/", "published_at": "2021-01-23T00:00:00+00:00" }, { "id": "01a0821f-3d27-70ca-8fcb-21e6ad248b50", "title": "Feature flags in real life", "url": "https://williamdurand.fr/2020/09/22/feature-flags-in-real-life/", "published_at": "2020-09-22T00:00:00+00:00" }, { "id": "01a0821f-3d27-70ca-8fcb-21e6ad86bc9d", "title": "Moziversary #2", "url": "https://williamdurand.fr/2020/05/01/moziversary-2/", "published_at": "2020-05-01T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfac2c85ea2", "title": "Suggested changes in code reviews", "url": "https://williamdurand.fr/2020/01/27/suggested-changes-in-code-reviews/", "published_at": "2020-01-27T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfac3005df2", "title": "Unit testing C code with LD_PRELOAD", "url": "https://williamdurand.fr/2020/01/07/unit-testing-with-ld-preload/", "published_at": "2020-01-07T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfac36a8fde", "title": "SIGCONT", "url": "https://williamdurand.fr/2019/12/20/sigcont/", "published_at": "2019-12-20T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfac3911d14", "title": "Malware analysis writeup: Heodo (2/2)", "url": "https://williamdurand.fr/2019/05/27/malware-analysis-writeup-heodo-part-2/", "published_at": "2019-05-27T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfac3a6243b", "title": "Malware analysis writeup: Heodo (1/2)", "url": "https://williamdurand.fr/2019/05/24/malware-analysis-writeup-heodo-part-1/", "published_at": "2019-05-24T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfac3f53585", "title": "Reviewing the FlexiSpot Desktop Workstation 27 inches", "url": "https://williamdurand.fr/2017/03/13/reviewing-the-flexispot-workstation/", "published_at": "2017-03-13T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfac4e02dc1", "title": "PhD: ✔️", "url": "https://williamdurand.fr/2016/05/16/phd-check/", "published_at": "2016-05-16T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfac52c4b57", "title": "Patching the Linux kernel (Raspbian & CVE-2016-0728)", "url": "https://williamdurand.fr/2016/01/21/patching-linux-kernel-raspbian/", "published_at": "2016-01-21T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfac5787b8d", "title": "My life on The Internets: a year later", "url": "https://williamdurand.fr/2016/01/16/my-life-on-the-internets-a-year-later/", "published_at": "2016-01-16T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfac57e6720", "title": "Level up", "url": "https://williamdurand.fr/2015/09/08/level-up/", "published_at": "2015-09-08T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfac63dea9e", "title": "[Video] Nobody understands REST but that's OK ;-)", "url": "https://williamdurand.fr/2015/06/02/video-nobody-understands-rest/", "published_at": "2015-06-02T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfac6c6ba48", "title": "On capifony and its future", "url": "https://williamdurand.fr/2015/04/11/on-capifony-and-its-future/", "published_at": "2015-04-11T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfac6cd7a88", "title": "Playing with a ESP8266 WiFi module", "url": "https://williamdurand.fr/2015/03/17/playing-with-a-esp8266-wifi-module/", "published_at": "2015-03-17T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfac765b710", "title": "Je n'ai rien a cacher (I've got nothing to hide)", "url": "https://williamdurand.fr/2015/01/31/je-n-ai-rien-a-cacher/", "published_at": "2015-01-31T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfac7e8a314", "title": "Rethinking My Life (On The Internets)", "url": "https://williamdurand.fr/2015/01/16/rethinking-my-life-on-the-internets/", "published_at": "2015-01-16T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfac8019df5", "title": "A year in pictures", "url": "https://williamdurand.fr/2014/12/29/a-year-in-pictures/", "published_at": "2014-12-29T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfac80d823c", "title": "Configuring SSL/TLS With Hipache (And Node.js)", "url": "https://williamdurand.fr/2014/12/23/configuring-ssl-tls-with-hipache-and-nodejs/", "published_at": "2014-12-23T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfac8a747e4", "title": "Elasticsearch, Logstash & Kibana with Docker", "url": "https://williamdurand.fr/2014/12/17/elasticsearch-logstash-kibana-with-docker/", "published_at": "2014-12-17T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfac9882426", "title": "[Video] Software testing: past, present, future", "url": "https://williamdurand.fr/2014/11/09/video-software-testing-past-present-future/", "published_at": "2014-11-09T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfaca49662f", "title": "[Video] REST dans le monde Symfony", "url": "https://williamdurand.fr/2014/07/16/video-rest-dans-le-monde-symfony/", "published_at": "2014-07-16T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfaca8ba845", "title": "RESTing with Symfony: SOS", "url": "https://williamdurand.fr/2014/07/02/resting-with-symfony-sos/", "published_at": "2014-07-02T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfacad85ad2", "title": "Standing Desk Do It Yourself (DIY)", "url": "https://williamdurand.fr/2014/03/17/standing-desk-do-it-yourself/", "published_at": "2014-03-17T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfacb81899e", "title": "The story behind Clermont'ech", "url": "https://williamdurand.fr/2014/02/21/the-story-behind-clermontech/", "published_at": "2014-02-21T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfacbb0640a", "title": "Please. Don't Patch Like That.", "url": "https://williamdurand.fr/2014/02/14/please-dont-patch-like-that/", "published_at": "2014-02-14T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfacc0158d1", "title": "Numbers. Gifts. Money.", "url": "https://williamdurand.fr/2013/12/31/numbers-gifts-money/", "published_at": "2013-12-31T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfacc65f37c", "title": "Enforcing Data Encapsulation with Symfony Forms", "url": "https://williamdurand.fr/2013/12/16/enforcing-data-encapsulation-with-symfony-forms/", "published_at": "2013-12-16T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfacd3add85", "title": "On Creating Pull Requests", "url": "https://williamdurand.fr/2013/11/20/on-creating-pull-requests/", "published_at": "2013-11-20T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfacdbddcd0", "title": "DDD with Symfony2: Basic Persistence & Testing", "url": "https://williamdurand.fr/2013/11/13/ddd-with-symfony2-basic-persistence-and-testing/", "published_at": "2013-11-13T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfacdd829f1", "title": "Taking Geocoder to the next level", "url": "https://williamdurand.fr/2013/08/29/taking-geocoder-to-the-next-level/", "published_at": "2013-08-29T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dface9324f4", "title": "DDD with Symfony2: Making Things Clear", "url": "https://williamdurand.fr/2013/08/20/ddd-with-symfony2-making-things-clear/", "published_at": "2013-08-20T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dface942ac0", "title": "DDD with Symfony2: Folder Structure And Code First", "url": "https://williamdurand.fr/2013/08/07/ddd-with-symfony2-folder-structure-and-code-first/", "published_at": "2013-08-07T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfacf537cc8", "title": "From STUPID to SOLID Code!", "url": "https://williamdurand.fr/2013/07/30/from-stupid-to-solid-code/", "published_at": "2013-07-30T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfad026c3bb", "title": "I am a sponge", "url": "https://williamdurand.fr/2013/07/19/i-am-a-sponge/", "published_at": "2013-07-19T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfad06b3bbe", "title": "On Open Sourcing Libraries", "url": "https://williamdurand.fr/2013/07/04/on-open-sourcing-libraries/", "published_at": "2013-07-04T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfad14e34c1", "title": "Teaching is the best way to learn", "url": "https://williamdurand.fr/2013/06/07/teaching-is-the-best-way-to-learn/", "published_at": "2013-06-07T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfad219661f", "title": "Object Calisthenics", "url": "https://williamdurand.fr/2013/06/03/object-calisthenics/", "published_at": "2013-06-03T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfad2f72e79", "title": "On being a .NET developer for a weekend", "url": "https://williamdurand.fr/2013/05/09/on-being-a-net-developer-for-a-weekend/", "published_at": "2013-05-09T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfad3e29b91", "title": "Burnout.", "url": "https://williamdurand.fr/2013/02/20/burnout/", "published_at": "2013-02-20T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfad4cf566c", "title": "New year, new life, new job", "url": "https://williamdurand.fr/2013/01/02/new-year-new-life-new-job/", "published_at": "2013-01-02T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfad4e41aa1", "title": "On being a frontend developer for a weekend", "url": "https://williamdurand.fr/2012/12/24/on-being-a-frontend-developer-for-a-weekend/", "published_at": "2012-12-24T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfad5696a5a", "title": "Installing Vagrant in a restricted environment", "url": "https://williamdurand.fr/2012/12/06/installing-vagrant-in-a-restricted-environment/", "published_at": "2012-12-06T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfad6690622", "title": "Testing Capistrano recipes for dummies", "url": "https://williamdurand.fr/2012/11/06/testing-capistrano-recipes-for-dummies/", "published_at": "2012-11-06T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfad6b81b84", "title": "REST APIs with Symfony2: The Right Way", "url": "https://williamdurand.fr/2012/08/02/rest-apis-with-symfony2-the-right-way/", "published_at": "2012-08-02T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfad6e9db5b", "title": "Capifony, the cool Capistrano recipes for Symfony applications", "url": "https://williamdurand.fr/2012/06/22/capifony-the-cool-capistrano-recipes-for-symfony-applications/", "published_at": "2012-06-22T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfad71abc23", "title": "Introduction to Propel2 at Symfony Live 2012", "url": "https://williamdurand.fr/2012/06/08/introduction-to-propel2-at-symfony-live-2012/", "published_at": "2012-06-08T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfad77bcc5a", "title": "Geocoder: the missing PHP library", "url": "https://williamdurand.fr/2012/05/31/geocoder-the-missing-php5-library/", "published_at": "2012-05-31T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfad7ebe338", "title": "Propel and Symfony: a year ago", "url": "https://williamdurand.fr/2012/04/25/propel-and-symfony-a-year-ago/", "published_at": "2012-04-25T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfad82121a4", "title": "I will be speaking at Symfony Live 2012", "url": "https://williamdurand.fr/2012/04/11/i-will-be-speaking-at-symfony-live-2012/", "published_at": "2012-04-11T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfad8b37101", "title": "Converting my blog posts to audio files", "url": "https://williamdurand.fr/2012/02/29/converting-my-blog-posts-to-audio-files/", "published_at": "2012-02-29T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfad916d204", "title": "Deploying with Git", "url": "https://williamdurand.fr/2012/02/25/deploying-with-git/", "published_at": "2012-02-25T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfad9abfc5c", "title": "Component Driven Development: it's like Lego!", "url": "https://williamdurand.fr/2012/02/01/component-driven-development-it-s-like-lego/", "published_at": "2012-02-01T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfadaa10b36", "title": "Designing software by naming things", "url": "https://williamdurand.fr/2012/01/24/designing-software-by-naming-things/", "published_at": "2012-01-24T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfadb22b052", "title": "My Git branching model", "url": "https://williamdurand.fr/2012/01/17/my-git-branching-model/", "published_at": "2012-01-17T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfadb29cfd7", "title": "Services status dashboard", "url": "https://williamdurand.fr/2012/01/16/services-status-dashboard/", "published_at": "2012-01-16T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfadb3d5bb7", "title": "Did I tell you open source was awesome?", "url": "https://williamdurand.fr/2012/01/16/did-i-tell-you-open-source-was-awesome/", "published_at": "2012-01-16T00:00:00+00:00" }, { "id": "01a08c62-c23a-7366-9495-1dfadb770370", "title": "Hello, World!", "url": "https://williamdurand.fr/2012/01/15/hello-world/", "published_at": "2012-01-15T00:00:00+00:00" } ] posts Claim your blog
Back to Mozilla // William Durand
Blog · corpus.blog/blogs/williamdurand.fr/posts

Mozilla // William Durand

williamdurand.fr

2026

2025

2024

2023

2022

2021

2020

2019

2017

2016

2015

2014

2013

2012