<?xml version="1.0" encoding="utf-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/prismjs-and-angularjs/</loc>
        
          <lastmod>2013-10-18T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/angularsjs-ui-router-and-in-modal-nested-states/</loc>
        
          <lastmod>2014-01-15T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/add-more-form-style-the-nice-way-with-angularjs/</loc>
        
          <lastmod>2014-02-15T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/smurfing-a-bot/</loc>
        
          <lastmod>2015-02-10T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/tshirt-a-day-serie/</loc>
        
          <lastmod>2015-07-06T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/bdd-and-domain-code/</loc>
        
          <lastmod>2015-07-06T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/project-macro-structure/</loc>
        
          <lastmod>2015-07-12T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/why-are-404-pages-still-a-thing/</loc>
        
          <lastmod>2015-07-20T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/refactoring-votevalidator-with-tests/</loc>
        
          <lastmod>2015-07-21T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/testing-for-behaviour-not-for-implementation/</loc>
        
          <lastmod>2015-08-30T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/oop-layers/</loc>
        
          <lastmod>2015-09-16T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/travis-and-different-php-versions-in-the-same-repo/</loc>
        
          <lastmod>2015-11-22T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/removing-ifs/</loc>
        
          <lastmod>2016-05-08T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/write-code-for-the-dumbest-person-you-know/</loc>
        
          <lastmod>2016-05-27T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/stop-using-database/</loc>
        
          <lastmod>2016-06-07T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/unique-instance-anti-pattern/</loc>
        
          <lastmod>2016-06-10T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/extra-readable-tests/</loc>
        
          <lastmod>2016-08-10T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/it-should-not-throw-an-exception/</loc>
        
          <lastmod>2016-08-27T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/ask-about-the-freelance/</loc>
        
          <lastmod>2016-11-26T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/what-if-someday/</loc>
        
          <lastmod>2017-04-15T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/naming-collision/</loc>
        
          <lastmod>2017-08-28T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/using-data-provider-to-express-business-rules-in-tests/</loc>
        
          <lastmod>2017-09-25T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/faster-environment-with-xDebug-and-Docker/</loc>
        
          <lastmod>2020-05-05T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/being-lazy-with-postman/</loc>
        
          <lastmod>2020-09-28T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/passing-data-to-session-in-elixir-tests/</loc>
        
          <lastmod>2020-12-01T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/testing-that-a-genserver-exited/</loc>
        
          <lastmod>2020-12-14T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/phoenix-liveview-event-sourced-game-intro/</loc>
        
          <lastmod>2020-12-22T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/phoenix-liveview-event-sourced-game-architecture/</loc>
        
          <lastmod>2020-12-23T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/phoenix-liveview-event-sourced-game-event-sourced-model/</loc>
        
          <lastmod>2021-01-13T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/phoenix-liveview-event-sourced-game-handling-errors/</loc>
        
          <lastmod>2021-01-20T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/phoenix-liveview-event-sourced-game-expressing-domain-concepts-in-code/</loc>
        
          <lastmod>2021-01-28T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/phoenix-liveview-event-sourced-game-making-game-states-explicit/</loc>
        
          <lastmod>2021-02-04T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/phoenix-liveview-event-sourced-game-game-server/</loc>
        
          <lastmod>2021-02-15T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/phoenix-liveview-event-sourced-game-acting-on-the-game-from-the-views/</loc>
        
          <lastmod>2021-02-22T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/phoenix-liveview-event-sourced-game-building-views-states-and-reacting-to-changes/</loc>
        
          <lastmod>2021-03-01T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/phoenix-liveview-event-sourced-game-building-decrementing-the-timer/</loc>
        
          <lastmod>2021-03-08T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/phoenix-liveview-event-sourced-game-unit-testing-patterns/</loc>
        
          <lastmod>2021-04-07T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/an-alias-to-learn-aliases/</loc>
        
          <lastmod>2021-06-11T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/generating-dates-and-uuids-easily-in-phpstorm/</loc>
        
          <lastmod>2021-08-13T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/an-alias-to-easily-debug-php-scripts/</loc>
        
          <lastmod>2021-12-28T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/composing-data-using-postgres-foreign-data-wrapper/</loc>
        
          <lastmod>2022-02-18T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/using-property-based-testing-to-test-priorities/</loc>
        
          <lastmod>2022-02-28T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/test-suite-guidelines/</loc>
        
          <lastmod>2022-03-09T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/comment-tester-une-methode-privee/</loc>
        
          <lastmod>2022-09-20T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/le-dummy-un-indice-pas-si-con/</loc>
        
          <lastmod>2022-09-28T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/des-tests-super-lisibles/</loc>
        
          <lastmod>2022-10-10T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/tests-en-parallele-et-base-de-donnees/</loc>
        
          <lastmod>2022-10-25T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/tags-fonctionnalite-oubliee-des-lanceurs-de-tests/</loc>
        
          <lastmod>2022-11-02T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/coder-ses-tests-sans-les-mains-grace-aux-live-templates-de-phpstorm/</loc>
        
          <lastmod>2022-11-17T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/facilitation-nightmares-how-to-escape-a-workshop-not-going-on-as-planned/</loc>
        
          <lastmod>2023-01-11T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/approval-testing-3-technics-to-deal-with-randomness/</loc>
        
          <lastmod>2023-01-17T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/3-hacks-for-a-magical-code-kata-in-php/</loc>
        
          <lastmod>2023-02-07T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/display-a-message-when-you-enter-a-directory/</loc>
        
          <lastmod>2023-02-20T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/quickly-jump-to-periodic-file-in-obsidian/</loc>
        
          <lastmod>2023-05-13T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/article/system-thinking-causal-loop-asymmetrical-level-pattern/</loc>
        
          <lastmod>2023-06-06T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/remove-all-services-arguments-configuration-from-symfony-with-a-script/</loc>
        
          <lastmod>2023-07-05T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/expected-actual-and-super-fast-assertion-creation/</loc>
        
          <lastmod>2023-07-23T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/pipdecks-iphone-widget/</loc>
        
          <lastmod>2023-08-23T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/how-test-frameworks-work-a-basic-mental-model/</loc>
        
          <lastmod>2023-09-13T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/how-test-frameworks-work-a-basic-mental-model-expecting-exception/</loc>
        
          <lastmod>2023-10-15T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/change-the-problem-to-write-simpler-tests/</loc>
        
          <lastmod>2023-11-15T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/creating-databases-when-starting-the-postgres-docker-ontainer/</loc>
        
          <lastmod>2023-11-21T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/testing-that-generated-PDFs-are-visually-similar/</loc>
        
          <lastmod>2023-12-03T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/PBC-A-Christmas-Tale/</loc>
        
          <lastmod>2023-12-17T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/quickly-check-for-duplication-with-your-ide-refactoring-tools/</loc>
        
          <lastmod>2024-01-05T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/3-techniques-pour-gerer-laleatoire-en-approval-testing/</loc>
        
          <lastmod>2024-03-23T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/tester-les-extraits-de-code-dans-un-livre/</loc>
        
          <lastmod>2024-04-19T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/generating-a-file-without-blocking-form-submission/</loc>
        
          <lastmod>2024-05-20T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/embed-code-from-external-source-via-HTTP-with-11ty/</loc>
        
          <lastmod>2024-05-27T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/getting-your-secret-password-from-1password-in-a-script/</loc>
        
          <lastmod>2024-05-29T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/how-i-divided-a-phpunit-test-suite-execution-by-5/</loc>
        
          <lastmod>2024-06-07T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/tags-the-forgotten-feature-of-test-runners/</loc>
        
          <lastmod>2024-07-23T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/3-and-a-half-heuristics-to-avoid-putting-business-logic-in-the-wrong-place-when-doing-event-sourcing/</loc>
        
          <lastmod>2024-08-09T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/reading-a-story-across-multiple-causal-links-without-losing-your-mind/</loc>
        
          <lastmod>2024-08-30T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/collecting-data-via-google-form-and-apple-shortcuts/</loc>
        
          <lastmod>2024-09-06T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/create-a-new-file-at-the-right-place-with-prefilled-content-thanks-to-jetbrains-ides/</loc>
        
          <lastmod>2024-09-13T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/a-quick-introduction-to-process-behavior-charts/</loc>
        
          <lastmod>2024-09-26T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/building-a-pbc-in-google-sheet/</loc>
        
          <lastmod>2024-10-04T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/run-laravel-artisan-test-directly-from-phpstorm/</loc>
        
          <lastmod>2024-10-11T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/streamlining-development-with-custom-shell-functions/</loc>
        
          <lastmod>2024-10-18T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/displaying-process-behavior-charts-on-iphone-with-charty-and-google-sheets/</loc>
        
          <lastmod>2024-11-06T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/a-clean-commit-history-with-git-wipsquash/</loc>
        
          <lastmod>2025-01-10T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/how-test-frameworks-work-cleaning-after-a-failure-the-birth-of-teardown-and-setup/</loc>
        
          <lastmod>2025-03-31T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/quickly-open-google-calendar-tab-in-google-chrome-from-alfred/</loc>
        
          <lastmod>2025-07-04T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/testing-rule-of-thumb-if-it-looks-too-much-like-the-real-implementation-doubt-it/</loc>
        
          <lastmod>2025-07-16T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/test-migration-from-mocks-to-real-database-with-test-switcher/</loc>
        
          <lastmod>2025-08-25T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/solving-obsidian-readwise-merge-conflicts-with-a-custom-git-driver/</loc>
        
          <lastmod>2026-01-12T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/articles/easily-use-multiple-git-identities-on-one-laptop/</loc>
        
          <lastmod>2026-02-01T00:00:00.000Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/archive/</loc>
        
          <lastmod>2026-02-01T18:17:43.928Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/</loc>
        
          <lastmod>2026-02-01T18:17:44.380Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/last-articles.json</loc>
        
          <lastmod>2026-02-01T18:17:44.380Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/robots.txt</loc>
        
          <lastmod>2026-02-01T18:17:44.380Z</lastmod>
        
        
        
      </url>
    
  
    
      <url>
        <loc>https://blog.charlesdesneuf.com/tags/posts/</loc>
        
          <lastmod>2026-02-01T18:17:44.380Z</lastmod>
        
        
        
      </url>
    
  
</urlset>
