56,966 blogs · [ { "id": "01a0877b-e385-709b-92db-85c2ab86be14", "title": "No value Software Engineer", "url": "https://gautier.difolco.dev/2024-10/no-value-swe/", "published_at": "2024-10-22T00:00:00+00:00" }, { "id": "01a0877b-e385-709b-92db-85c2ac3a3291", "title": "Coding challenges retrospective", "url": "https://gautier.difolco.dev/2024-10/coding-challenges/", "published_at": "2024-10-15T00:00:00+00:00" }, { "id": "01a0877b-e385-709b-92db-85c2ad086384", "title": "Event sourcing migrations retrospective", "url": "https://gautier.difolco.dev/2024-10/event-sourcing-migration/", "published_at": "2024-10-08T00:00:00+00:00" }, { "id": "01a0877b-e385-709b-92db-85c2ad69392a", "title": "10 years mark", "url": "https://gautier.difolco.dev/2024-10/10-years/", "published_at": "2024-10-02T00:00:00+00:00" }, { "id": "01a0877b-e385-709b-92db-85c2adf202af", "title": "Designing strongly typed range", "url": "https://gautier.difolco.dev/2024-09/range/", "published_at": "2024-09-24T00:00:00+00:00" }, { "id": "01a0877b-e385-709b-92db-85c2ae60dd6a", "title": "Bowling kata as a zipper", "url": "https://gautier.difolco.dev/2024-09/bowling-zipper/", "published_at": "2024-09-17T00:00:00+00:00" }, { "id": "01a0877b-e385-709b-92db-85c2aef2d851", "title": "Haskell Legacy: Adding features", "url": "https://gautier.difolco.dev/2024-09/api-legacy-adding-features/", "published_at": "2024-09-10T00:00:00+00:00" }, { "id": "01a0877b-e385-709b-92db-85c2afb9f25e", "title": "Retrospective of my time at Autogriff", "url": "https://gautier.difolco.dev/2024-09/autogriff-retrospective/", "published_at": "2024-09-03T00:00:00+00:00" }, { "id": "01a0877b-e385-709b-92db-85c2afe6d81a", "title": "Haskell Legacy: Pure projection", "url": "https://gautier.difolco.dev/2024-08/api-legacy-pure-projection/", "published_at": "2024-08-27T00:00:00+00:00" }, { "id": "01a0877b-e385-709b-92db-85c2b0a74b05", "title": "Haskell Legacy: CQRS", "url": "https://gautier.difolco.dev/2024-08/api-legacy-cqrs/", "published_at": "2024-08-20T00:00:00+00:00" }, { "id": "01a0877b-e385-709b-92db-85c2b0d9d855", "title": "Haskell Legacy: Going event-first", "url": "https://gautier.difolco.dev/2024-08/api-legacy-event-first/", "published_at": "2024-08-13T00:00:00+00:00" }, { "id": "01a0877b-e385-709b-92db-85c2b1cea1f3", "title": "Haskell Legacy: Reversing writes", "url": "https://gautier.difolco.dev/2024-08/api-legacy-reversing-writes/", "published_at": "2024-08-06T00:00:00+00:00" }, { "id": "01a0877b-e385-709b-92db-85c2b2862c27", "title": "Haskell Legacy: Creating events", "url": "https://gautier.difolco.dev/2024-07/api-legacy-extract-events/", "published_at": "2024-07-30T00:00:00+00:00" }, { "id": "01a0877b-e385-709b-92db-85c2b37163a6", "title": "Haskell Legacy: Extracting business logic and introducing effects", "url": "https://gautier.difolco.dev/2024-07/api-legacy-extract-effects/", "published_at": "2024-07-23T00:00:00+00:00" }, { "id": "01a0877b-e385-709b-92db-85c2b3c4dd1e", "title": "Haskell Legacy: Testing", "url": "https://gautier.difolco.dev/2024-07/api-legacy-testing/", "published_at": "2024-07-16T00:00:00+00:00" }, { "id": "01a0877b-e385-709b-92db-85c2b3e3b0ac", "title": "Haskell Legacy: Introduction", "url": "https://gautier.difolco.dev/2024-07/api-legacy-introduction/", "published_at": "2024-07-09T00:00:00+00:00" }, { "id": "01a0877b-e385-709b-92db-85c2b3f22e79", "title": "Pace in pair programming", "url": "https://gautier.difolco.dev/2024-07/pair-programming-pace/", "published_at": "2024-07-02T00:00:00+00:00" }, { "id": "01a0877b-e385-709b-92db-85c2b474a0ce", "title": "In-depth programming language is not the point", "url": "https://gautier.difolco.dev/2024-06/pl-knowledge/", "published_at": "2024-06-25T00:00:00+00:00" }, { "id": "01a0877b-e385-709b-92db-85c2b4d7f4b7", "title": "Haskell Ecosystem Workshop & ZuriHac 2024", "url": "https://gautier.difolco.dev/2024-06/zurihac/", "published_at": "2024-06-18T00:00:00+00:00" }, { "id": "01a0877b-e385-709b-92db-85c2b51dea0e", "title": "The end of a 666 days streak", "url": "https://gautier.difolco.dev/2024-03/streak/", "published_at": "2024-03-24T00:00:00+00:00" }, { "id": "01a0877b-e385-709b-92db-85c2b59f8722", "title": "Introduction to GHC's Generics", "url": "https://gautier.difolco.dev/2024-03/generics-introduction/", "published_at": "2024-03-20T00:00:00+00:00" }, { "id": "01a0877b-e385-709b-92db-85c2b62cb7e3", "title": "Fix aeson ToJSONKey/FromJSONKey derivation", "url": "https://gautier.difolco.dev/2024-03/aeson-key/", "published_at": "2024-03-17T00:00:00+00:00" }, { "id": "01a0877b-e385-709b-92db-85c2b6f8f3c6", "title": "Fizzbuzz kata: branchless version", "url": "https://gautier.difolco.dev/2024-03/fizzbuzz/", "published_at": "2024-03-13T00:00:00+00:00" }, { "id": "01a0877b-e385-709b-92db-85c2b7e2ccdc", "title": "OOP has not invented encapsulation", "url": "https://gautier.difolco.dev/2024-03/c-encapsulation/", "published_at": "2024-03-10T00:00:00+00:00" }, { "id": "01a0877b-e385-709b-92db-85c2b7f8350c", "title": "Types for building and types for running", "url": "https://gautier.difolco.dev/2024-03/types-building-running/", "published_at": "2024-03-06T00:00:00+00:00" }, { "id": "01a0877b-e385-709b-92db-85c2b8b9444b", "title": "Types strengthening", "url": "https://gautier.difolco.dev/2024-03/types-strengthening/", "published_at": "2024-03-03T00:00:00+00:00" }, { "id": "01a0877b-e385-709b-92db-85c2b94ada73", "title": "eDSLs for tests", "url": "https://gautier.difolco.dev/2024-02/edsls-tests/", "published_at": "2024-02-28T00:00:00+00:00" }, { "id": "01a0877b-e385-709b-92db-85c2b9f12546", "title": "Type-driven development applied: librarian", "url": "https://gautier.difolco.dev/2024-02/tydd-applied-librarian/", "published_at": "2024-02-25T00:00:00+00:00" }, { "id": "01a0877b-e385-709b-92db-85c2ba017fcb", "title": "Types and Tests", "url": "https://gautier.difolco.dev/2024-02/types-tests/", "published_at": "2024-02-21T00:00:00+00:00" }, { "id": "01a0877b-e385-709b-92db-85c2ba34e3d2", "title": "Architecture Heuristic YNIA: Events metadata", "url": "https://gautier.difolco.dev/2024-02/architecture-heuristic-ynia-events-metadata/", "published_at": "2024-02-18T00:00:00+00:00" }, { "id": "01a0877b-e385-709b-92db-85c2bb1a2603", "title": "Haskell: imports vs exports", "url": "https://gautier.difolco.dev/2024-02/haskell-imports-exports/", "published_at": "2024-02-14T00:00:00+00:00" }, { "id": "01a0877b-e385-709b-92db-85c2bbf64010", "title": "Haskell refactorings", "url": "https://gautier.difolco.dev/2024-02/haskell-refactorings/", "published_at": "2024-02-11T00:00:00+00:00" }, { "id": "01a0877b-e385-709b-92db-85c2bce45aa8", "title": "Bypassing Prometheus SDK push model", "url": "https://gautier.difolco.dev/2024-02/bypassing-prometheus/", "published_at": "2024-02-07T00:00:00+00:00" }, { "id": "01a0877b-e385-709b-92db-85c2bd583d43", "title": "Naming has a social convention", "url": "https://gautier.difolco.dev/2024-02/naming-social-convention/", "published_at": "2024-02-04T00:00:00+00:00" }, { "id": "01a0877b-e385-709b-92db-85c2bda3d9f5", "title": "Prescriptivism and Descriptivism", "url": "https://gautier.difolco.dev/2024-01/prescriptivism-descriptivism/", "published_at": "2024-01-31T00:00:00+00:00" }, { "id": "01a0877b-e385-709b-92db-85c2be622b28", "title": "Software inventory", "url": "https://gautier.difolco.dev/2024-01/software-inventory/", "published_at": "2024-01-28T00:00:00+00:00" }, { "id": "01a0877b-e385-709b-92db-85c2be86c3b8", "title": "Screaming Architecture", "url": "https://gautier.difolco.dev/2024-01/screaming-architecture/", "published_at": "2024-01-24T00:00:00+00:00" }, { "id": "01a0877b-e385-709b-92db-85c2bf187160", "title": "Personal README", "url": "https://gautier.difolco.dev/2024-01/readme/", "published_at": "2024-01-21T00:00:00+00:00" }, { "id": "01a0877b-e385-709b-92db-85c2bf912230", "title": "NeoViM: Improve Telescope (last edited) find files", "url": "https://gautier.difolco.dev/2024-01/neovim-telescope-last-edited/", "published_at": "2024-01-17T00:00:00+00:00" }, { "id": "01a0877b-e385-709b-92db-85c2c041b842", "title": "Access Control: Biscuit", "url": "https://gautier.difolco.dev/2024-01/access-control-biscuit/", "published_at": "2024-01-14T00:00:00+00:00" }, { "id": "01a0877b-e385-709b-92db-85c2c0dea7e1", "title": "Access Control: topaz", "url": "https://gautier.difolco.dev/2024-01/access-control-topaz/", "published_at": "2024-01-10T00:00:00+00:00" }, { "id": "01a0877b-e385-709b-92db-85c2c1221310", "title": "Access Control: Open Policy Agent", "url": "https://gautier.difolco.dev/2024-01/access-control-opa/", "published_at": "2024-01-07T00:00:00+00:00" }, { "id": "01a0877b-e385-709b-92db-85c2c20512ef", "title": "Access Control: Capabilities", "url": "https://gautier.difolco.dev/2024-01/access-control-capabilities/", "published_at": "2024-01-03T00:00:00+00:00" }, { "id": "01a0877b-e385-709b-92db-85c2c2faf77d", "title": "Access Control: Mandatory vs Discretionary", "url": "https://gautier.difolco.dev/2023-12/access-control-dac-mac/", "published_at": "2023-12-31T00:00:00+00:00" }, { "id": "01a0877b-e385-709b-92db-85c2c3b8a31e", "title": "Access Control: Relationship-based Access control", "url": "https://gautier.difolco.dev/2023-12/access-control-rebac/", "published_at": "2023-12-27T00:00:00+00:00" }, { "id": "01a0877b-e385-709b-92db-85c2c4ab5c50", "title": "Access Control: Organisation-based Access control", "url": "https://gautier.difolco.dev/2023-12/access-control-orbac/", "published_at": "2023-12-24T00:00:00+00:00" }, { "id": "01a0877b-e385-709b-92db-85c2c59e270b", "title": "Access Control: Graph-based Access control", "url": "https://gautier.difolco.dev/2023-12/access-control-gbac/", "published_at": "2023-12-20T00:00:00+00:00" }, { "id": "01a0877b-e386-739f-8d87-217ac7b20b95", "title": "Access Control: Attribute-based Access control", "url": "https://gautier.difolco.dev/2023-12/access-control-abac/", "published_at": "2023-12-17T00:00:00+00:00" }, { "id": "01a0877b-e386-739f-8d87-217ac85c3f06", "title": "Access Control: Role-based Access control", "url": "https://gautier.difolco.dev/2023-12/access-control-rbac/", "published_at": "2023-12-13T00:00:00+00:00" }, { "id": "01a0877b-e386-739f-8d87-217ac94b22d7", "title": "Access Control: Context-based Access control", "url": "https://gautier.difolco.dev/2023-12/access-control-cbac/", "published_at": "2023-12-10T00:00:00+00:00" }, { "id": "01a0877b-e386-739f-8d87-217ac9b06297", "title": "Access Control: ACL", "url": "https://gautier.difolco.dev/2023-12/access-control-acl/", "published_at": "2023-12-06T00:00:00+00:00" }, { "id": "01a0877b-e386-739f-8d87-217aca51476d", "title": "Homelab: Monthly certificate regeneration deployment issue", "url": "https://gautier.difolco.dev/2023-12/homelab-agenix-nginx-monthly-regen/", "published_at": "2023-12-03T00:00:00+00:00" }, { "id": "01a0877b-e386-739f-8d87-217acada37b2", "title": "Architecture Heuristic YNIA: Participants", "url": "https://gautier.difolco.dev/2023-11/architecture-heuristic-ynia-participants/", "published_at": "2023-11-29T00:00:00+00:00" }, { "id": "01a0877b-e386-739f-8d87-217acbb88f76", "title": "Game of Life kata: branchless Grid", "url": "https://gautier.difolco.dev/2023-11/gol-branchless-grid/", "published_at": "2023-11-26T00:00:00+00:00" }, { "id": "01a0877b-e386-739f-8d87-217acbee6d9e", "title": "GDCR 2023: My participation summary", "url": "https://gautier.difolco.dev/2023-11/gdcr-summary/", "published_at": "2023-11-05T00:00:00+00:00" }, { "id": "01a0877b-e386-739f-8d87-217acbf196da", "title": "Hacktoberfest 2023: My contributions", "url": "https://gautier.difolco.dev/2023-11/hacktoberfest-contributions/", "published_at": "2023-11-01T00:00:00+00:00" }, { "id": "01a0877b-e386-739f-8d87-217acc73ae65", "title": "From custom Monad to Polysemy", "url": "https://gautier.difolco.dev/2023-10/polysemy-migration/", "published_at": "2023-10-29T00:00:00+00:00" }, { "id": "01a0877b-e386-739f-8d87-217acd4d7427", "title": "Implementation-oriented Monad", "url": "https://gautier.difolco.dev/2023-10/implementation-oriented-monad/", "published_at": "2023-10-25T00:00:00+00:00" }, { "id": "01a0877b-e386-739f-8d87-217acd63482f", "title": "Homelab: client certificates CRL regeneration", "url": "https://gautier.difolco.dev/2023-10/homelab-client-certificates-crl-regeneration/", "published_at": "2023-10-22T00:00:00+00:00" }, { "id": "01a0877b-e386-739f-8d87-217ace51e590", "title": "Architecture Heuristic YNIA: Queues", "url": "https://gautier.difolco.dev/2023-10/architecture-heuristic-ynia-queues/", "published_at": "2023-10-18T00:00:00+00:00" }, { "id": "01a0877b-e386-739f-8d87-217ace80079a", "title": "Haskell Type Reflection Anti-pattern", "url": "https://gautier.difolco.dev/2023-10/haskell-type-reflection-anti-pattern/", "published_at": "2023-10-15T00:00:00+00:00" }, { "id": "01a0877b-e386-739f-8d87-217acf47dfb1", "title": "QuasiQuoting Smart Constructors", "url": "https://gautier.difolco.dev/2023-10/haskell-quasiquoting-smart-constructors/", "published_at": "2023-10-11T00:00:00+00:00" }, { "id": "01a0877b-e386-739f-8d87-217acffd7d9d", "title": "Nix: optimizing Haskell build size", "url": "https://gautier.difolco.dev/2023-10/nix-build-optimization/", "published_at": "2023-10-08T00:00:00+00:00" }, { "id": "01a0877b-e386-739f-8d87-217ad0bcd39c", "title": "Haskell contributions kick-start", "url": "https://gautier.difolco.dev/2023-10/haskell-contributions-kickstart/", "published_at": "2023-10-04T00:00:00+00:00" }, { "id": "01a0877b-e386-739f-8d87-217ad15b0937", "title": "Team owned architecture", "url": "https://gautier.difolco.dev/2023-10/team-owned-architecture/", "published_at": "2023-10-01T00:00:00+00:00" }, { "id": "01a0877b-e386-739f-8d87-217ad1af78e1", "title": "Witness functions", "url": "https://gautier.difolco.dev/2023-09/witness-functions/", "published_at": "2023-09-27T00:00:00+00:00" }, { "id": "01a0877b-e386-739f-8d87-217ad2672c2b", "title": "Homelab: Monitoring Withings", "url": "https://gautier.difolco.dev/2023-09/homelab-monitoring-withings/", "published_at": "2023-09-24T00:00:00+00:00" }, { "id": "01a0877b-e386-739f-8d87-217ad2ee77cc", "title": "Announcing grafana-dashboards.nix", "url": "https://gautier.difolco.dev/2023-09/announcing-grafana-dashboard-nix/", "published_at": "2023-09-20T00:00:00+00:00" }, { "id": "01a0877b-e386-739f-8d87-217ad392dfdd", "title": "Homelab: Monitoring alerting through AlertManager", "url": "https://gautier.difolco.dev/2023-09/homelab-monitoring-alerting-through-alertmanager/", "published_at": "2023-09-17T00:00:00+00:00" }, { "id": "01a0877b-e386-739f-8d87-217ad3e9a5a4", "title": "Homelab: Monitoring alerting", "url": "https://gautier.difolco.dev/2023-09/homelab-monitoring-alerting/", "published_at": "2023-09-13T00:00:00+00:00" }, { "id": "01a0877b-e386-739f-8d87-217ad3f47344", "title": "Homelab: Monitoring dashboards", "url": "https://gautier.difolco.dev/2023-09/homelab-monitoring-dashboards/", "published_at": "2023-09-10T00:00:00+00:00" }, { "id": "01a0877b-e386-739f-8d87-217ad4ca7e24", "title": "Homelab: Monitoring introduction", "url": "https://gautier.difolco.dev/2023-09/homelab-monitoring-introduction/", "published_at": "2023-09-06T00:00:00+00:00" }, { "id": "01a0877b-e386-739f-8d87-217ad529c05c", "title": "Homelab: Secrets management", "url": "https://gautier.difolco.dev/2023-09/homelab-secrets-management/", "published_at": "2023-09-03T00:00:00+00:00" }, { "id": "01a0877b-e386-739f-8d87-217ad5ded9af", "title": "Homelab: Regenerating certificates", "url": "https://gautier.difolco.dev/2023-08/homelab-certificate-regeneration/", "published_at": "2023-08-30T00:00:00+00:00" }, { "id": "01a0877b-e386-739f-8d87-217ad68e8c66", "title": "Homelab: Intermediate CA", "url": "https://gautier.difolco.dev/2023-08/homelab-intermediate-ca/", "published_at": "2023-08-27T00:00:00+00:00" }, { "id": "01a0877b-e386-739f-8d87-217ad6f75138", "title": "Homelab: client certificates", "url": "https://gautier.difolco.dev/2023-08/homelab-client-certificates/", "published_at": "2023-08-23T00:00:00+00:00" }, { "id": "01a0877b-e386-739f-8d87-217ad71bc083", "title": "Homelab: server certificates", "url": "https://gautier.difolco.dev/2023-08/homelab-server-certificates/", "published_at": "2023-08-20T00:00:00+00:00" }, { "id": "01a0877b-e386-739f-8d87-217ad8112c92", "title": "Homelab: current state and plan", "url": "https://gautier.difolco.dev/2023-08/homelab-init/", "published_at": "2023-08-16T00:00:00+00:00" }, { "id": "01a0877b-e386-739f-8d87-217ad871a6e3", "title": "Test-Driven Development Freedom", "url": "https://gautier.difolco.dev/2023-08/tdd-freedom/", "published_at": "2023-08-13T00:00:00+00:00" }, { "id": "01a0877b-e386-739f-8d87-217ad8badb55", "title": "What a good design is", "url": "https://gautier.difolco.dev/2023-08/good-design/", "published_at": "2023-08-09T00:00:00+00:00" }, { "id": "01a0877b-e386-739f-8d87-217ad92c7a42", "title": "My history with ViM", "url": "https://gautier.difolco.dev/2023-08/vim/", "published_at": "2023-08-06T00:00:00+00:00" }, { "id": "01a0877b-e386-739f-8d87-217ad97bc126", "title": "Dependencies management", "url": "https://gautier.difolco.dev/2023-08/dependencies-management/", "published_at": "2023-08-02T00:00:00+00:00" }, { "id": "01a0877b-e386-739f-8d87-217ada70df3d", "title": "A case against Haskell immersion", "url": "https://gautier.difolco.dev/2023-07/haskell-immersion/", "published_at": "2023-07-30T00:00:00+00:00" }, { "id": "01a0877b-e386-739f-8d87-217adb3726fa", "title": "My encounter with Caddy", "url": "https://gautier.difolco.dev/2023-07/caddy/", "published_at": "2023-07-26T00:00:00+00:00" }, { "id": "01a0877b-e386-739f-8d87-217adb405ec7", "title": "Bloodhound redesign progress", "url": "https://gautier.difolco.dev/2023-07/bloodhound-redesign/", "published_at": "2023-07-23T00:00:00+00:00" }, { "id": "01a0877b-e386-739f-8d87-217adbd243eb", "title": "Haskell macros", "url": "https://gautier.difolco.dev/2023-07/haskell-macros/", "published_at": "2023-07-19T00:00:00+00:00" }, { "id": "01a0877b-e386-739f-8d87-217adc3ca1b5", "title": "Nix: optimizing Haskell-based Docker-size", "url": "https://gautier.difolco.dev/2023-07/nix-docker-optimization/", "published_at": "2023-07-16T00:00:00+00:00" }, { "id": "01a0877b-e386-739f-8d87-217adc7ac57c", "title": "New library: kill-bool", "url": "https://gautier.difolco.dev/2023-07/lib-kill-bool/", "published_at": "2023-07-12T00:00:00+00:00" }, { "id": "01a0877b-e386-739f-8d87-217adc7bb19c", "title": "Abaks: OpenAPI", "url": "https://gautier.difolco.dev/2023-07/abaks-openapi/", "published_at": "2023-07-09T00:00:00+00:00" }, { "id": "01a0877b-e386-739f-8d87-217add618f5b", "title": "Abaks: Views", "url": "https://gautier.difolco.dev/2023-07/abaks-views/", "published_at": "2023-07-07T00:00:00+00:00" }, { "id": "01a0877b-e386-739f-8d87-217addf4d1c2", "title": "Abaks: A word on testing", "url": "https://gautier.difolco.dev/2023-07/abaks-testing-strategy/", "published_at": "2023-07-02T00:00:00+00:00" }, { "id": "01a0877b-e386-739f-8d87-217ade13d1b8", "title": "Abaks: Drivers", "url": "https://gautier.difolco.dev/2023-06/abaks-drivers/", "published_at": "2023-06-28T00:00:00+00:00" }, { "id": "01a0877b-e386-739f-8d87-217aded7f75f", "title": "Abaks: Interface Adapters - API", "url": "https://gautier.difolco.dev/2023-06/abaks-interface-adapters-api/", "published_at": "2023-06-25T00:00:00+00:00" }, { "id": "01a0877b-e386-739f-8d87-217adf33c53d", "title": "Abaks: Testing Use Cases", "url": "https://gautier.difolco.dev/2023-06/abaks-testing-use-cases/", "published_at": "2023-06-21T00:00:00+00:00" }, { "id": "01a0877b-e386-739f-8d87-217adfb2e238", "title": "Abaks: Use Cases", "url": "https://gautier.difolco.dev/2023-06/abaks-use-cases/", "published_at": "2023-06-18T00:00:00+00:00" }, { "id": "01a0877b-e386-739f-8d87-217adfbce4a6", "title": "Abaks: testing core domain", "url": "https://gautier.difolco.dev/2023-06/abaks-testing-core/", "published_at": "2023-06-14T00:00:00+00:00" }, { "id": "01a0877b-e386-739f-8d87-217adfecb5d2", "title": "Abaks: commands", "url": "https://gautier.difolco.dev/2023-06/abaks-commands/", "published_at": "2023-06-11T00:00:00+00:00" }, { "id": "01a0877b-e386-739f-8d87-217ae0062080", "title": "Abaks: events", "url": "https://gautier.difolco.dev/2023-06/abaks-events/", "published_at": "2023-06-07T00:00:00+00:00" }, { "id": "01a0877b-e386-739f-8d87-217ae0c7a6fb", "title": "Abaks: initial requirements", "url": "https://gautier.difolco.dev/2023-06/abaks-initial-requirements/", "published_at": "2023-06-04T00:00:00+00:00" }, { "id": "01a0877b-e386-739f-8d87-217ae0e6580e", "title": "Zsh: debugging git remotes completion", "url": "https://gautier.difolco.dev/2023-05/zsh-git-debug/", "published_at": "2023-05-31T00:00:00+00:00" } ] posts Claim your blog
Back to gautier.difolco.dev
Blog · corpus.blog/blogs/gautier.difolco.dev/posts

gautier.difolco.dev

gautier.difolco.dev

2024

2023