41554 blogs · [ { "id": "01a087c9-7ffd-7011-aa40-46145db40e11", "title": "The Saff Squeeze", "url": "https://principal-it.eu/2026/06/the-saff-squeeze/", "published_at": "2026-06-10T08:00:00+00:00" }, { "id": "01a087c9-7ffd-7011-aa40-46145dec2a47", "title": "Fixing vs Preventing Defects", "url": "https://principal-it.eu/2026/03/fixing-vs-preventing-defects/", "published_at": "2026-03-12T09:00:00+00:00" }, { "id": "01a087c9-7ffd-7011-aa40-46145ee2ae2b", "title": "Tales Of TDD: One Test Double To Rule Them All", "url": "https://principal-it.eu/2026/03/tdd-tales-one-test-double/", "published_at": "2026-03-05T09:00:00+00:00" }, { "id": "01a087c9-7ffd-7011-aa40-46145f22ead0", "title": "Perspectives On Software Quality", "url": "https://principal-it.eu/2026/02/quality-perspectives/", "published_at": "2026-02-03T18:30:00+00:00" }, { "id": "01a087c9-7ffd-7011-aa40-46145f7d1e4a", "title": "The Five Underplayed Premises Of TDD", "url": "https://principal-it.eu/2025/08/five-underplayed-premises-of-tdd/", "published_at": "2025-08-08T17:30:00+00:00" }, { "id": "01a087c9-7ffd-7011-aa40-46146048ddca", "title": "Contract Tests - Parameterised Test Cases", "url": "https://principal-it.eu/2023/06/parameterised-contract-tests/", "published_at": "2023-06-28T13:00:00+00:00" }, { "id": "01a087c9-7ffd-7011-aa40-461460d4f13b", "title": "Contract Tests - Abstract Test Cases", "url": "https://principal-it.eu/2023/04/contract-tests-abstract-test-cases/", "published_at": "2023-04-12T13:00:00+00:00" }, { "id": "01a087c9-7ffd-7011-aa40-461460d76308", "title": "Contract Tests", "url": "https://principal-it.eu/2023/02/contract-tests/", "published_at": "2023-02-01T09:00:00+00:00" }, { "id": "01a087c9-7ffd-7011-aa40-461460fdcdac", "title": "The Testing Quadrant", "url": "https://principal-it.eu/2022/06/testing-quadrant/", "published_at": "2022-06-15T08:00:00+00:00" }, { "id": "01a087c9-7ffd-7011-aa40-461461df9bb3", "title": "Tales Of TDD: The Big Refactoring", "url": "https://principal-it.eu/2022/02/tdd-tales-the-big-refactoring/", "published_at": "2022-02-02T09:00:00+00:00" }, { "id": "01a087c9-7ffd-7011-aa40-4614629c09d8", "title": "Implementing Approval Tests For PDF Document Generation", "url": "https://principal-it.eu/2021/12/implementing-approval-tests_for_pdf_document_generation/", "published_at": "2021-12-15T09:00:00+00:00" }, { "id": "01a087c9-7ffd-7011-aa40-461462ea725d", "title": "Approval Tests For PDF Document Generation", "url": "https://principal-it.eu/2021/10/approval-tests_for_pdf_document_generation/", "published_at": "2021-10-07T08:00:00+00:00" }, { "id": "01a087c9-7ffd-7011-aa40-46146321e796", "title": "Ignoring Tests", "url": "https://principal-it.eu/2021/06/ignoring-tests/", "published_at": "2021-06-22T08:00:00+00:00" }, { "id": "01a087c9-7ffd-7011-aa40-461464138e96", "title": "Writing Maintainable Unit Tests In Print", "url": "https://principal-it.eu/2021/04/writing-maintainable-unit-tests-in-print/", "published_at": "2021-04-23T08:00:00+00:00" }, { "id": "01a087c9-7ffd-7011-aa40-46146417a85d", "title": "Tales Of TDD: The Case Of Overused Test Doubles", "url": "https://principal-it.eu/2021/03/tdd-tales-overused-test-doubles/", "published_at": "2021-03-31T12:00:00+00:00" }, { "id": "01a087c9-7ffd-7011-aa40-461464512884", "title": "Book Launch: Writing Maintainable Unit Tests", "url": "https://principal-it.eu/2021/02/writing-maintainable-unit-tests/", "published_at": "2021-02-17T10:00:00+00:00" }, { "id": "01a087c9-7ffd-7011-aa40-4614654aa40c", "title": "Avoid Inheritance For Test Classes", "url": "https://principal-it.eu/2021/01/avoid-inheritance-for-test-classes/", "published_at": "2021-01-06T09:00:00+00:00" }, { "id": "01a087c9-7ffd-7011-aa40-461465547c54", "title": "How To Write Unit Tests For Logging", "url": "https://principal-it.eu/2020/11/unit-tests-for-logging/", "published_at": "2020-11-11T10:00:00+00:00" }, { "id": "01a087c9-7ffd-7011-aa40-4614658edf40", "title": "Prevent Domain Knowledge From Sneaking Into Solitary Tests", "url": "https://principal-it.eu/2020/09/prevent-domain-knowledge-from-sneaking-into-solitary-tests/", "published_at": "2020-09-30T09:00:00+00:00" }, { "id": "01a087c9-7ffd-7011-aa40-46146664d51a", "title": "Why Solitary Tests Should Be Easy To Read", "url": "https://principal-it.eu/2020/09/why_solitary_tests_should_be_easy_to_read/", "published_at": "2020-09-09T12:00:00+00:00" }, { "id": "01a087c9-7ffd-7011-aa40-4614666545ed", "title": "Tales Of TDD: Stressed And Always In A Hurry", "url": "https://principal-it.eu/2020/08/tdd-tales-stressed-and-always-in-a-hurry/", "published_at": "2020-08-19T10:00:00+00:00" }, { "id": "01a087c9-7ffd-7011-aa40-4614672eaee8", "title": "Dealing With Date/Time In Solitary Tests", "url": "https://principal-it.eu/2020/08/dealing_with_date_time_in_solitary_tests/", "published_at": "2020-08-04T17:00:00+00:00" }, { "id": "01a087c9-7ffd-7011-aa40-461467cf61b3", "title": "Announcing Book: Writing Maintainable Unit Tests", "url": "https://principal-it.eu/2020/07/writing-maintainable-unit-tests/", "published_at": "2020-07-15T13:00:00+00:00" }, { "id": "01a087c9-7ffd-7011-aa40-4614687c7733", "title": "Only Test Through Public Interfaces", "url": "https://principal-it.eu/2020/07/only-test-public-interfaces/", "published_at": "2020-07-01T10:00:00+00:00" }, { "id": "01a087c9-7ffd-7011-aa40-4614689c74cf", "title": "Inside-Out and Outside-In TDD", "url": "https://principal-it.eu/2020/06/test-driven-development/", "published_at": "2020-06-16T10:00:00+00:00" }, { "id": "01a087c9-7ffd-7011-aa40-4614699b6a18", "title": "Test Double Heuristics", "url": "https://principal-it.eu/2020/05/test-double-heuristics/", "published_at": "2020-06-03T10:00:00+00:00" }, { "id": "01a087c9-7ffd-7011-aa40-461469eea7ff", "title": "Excessive Specification of Test Doubles", "url": "https://principal-it.eu/2020/05/excessive-specification-of-test-doubles/", "published_at": "2020-05-20T10:00:00+00:00" }, { "id": "01a087c9-7ffd-7011-aa40-46146a85a4b2", "title": "The Boundaries of Solitary Tests", "url": "https://principal-it.eu/2020/05/boundaries-of-solitary-tests/", "published_at": "2020-05-06T08:00:00+00:00" }, { "id": "01a087c9-7ffd-7011-aa40-46146a945dfe", "title": "Test Doubles", "url": "https://principal-it.eu/2020/04/test-doubles/", "published_at": "2020-04-08T10:30:00+00:00" }, { "id": "01a087c9-7ffd-7011-aa40-46146ab6759c", "title": "Indirect Inputs and Outputs", "url": "https://principal-it.eu/2020/04/indirect-inputs-and-outputs/", "published_at": "2020-04-01T10:30:00+00:00" }, { "id": "01a087c9-7ffd-7011-aa40-46146af04cd7", "title": "State versus Behaviour Verification", "url": "https://principal-it.eu/2020/03/state-versus-behaviour-verification/", "published_at": "2020-03-25T11:30:00+00:00" }, { "id": "01a087c9-7ffd-7011-aa40-46146b0b7fa3", "title": "Cascading Failures", "url": "https://principal-it.eu/2020/03/cascading-failures/", "published_at": "2020-03-18T11:30:00+00:00" }, { "id": "01a087c9-7ffd-7011-aa40-46146b630e6c", "title": "The Designing versus Testing Mindset", "url": "https://principal-it.eu/2020/03/designing-versus-testing-mindset/", "published_at": "2020-03-12T11:30:00+00:00" }, { "id": "01a087c9-7ffd-7011-aa40-46146c5fdb57", "title": "Why Write Maintainable Unit Tests?", "url": "https://principal-it.eu/2020/03/why-write-maintainable-unit-tests/", "published_at": "2020-03-04T17:00:00+00:00" }, { "id": "01a087c9-7ffd-7011-aa40-46146cc4729d", "title": "Announcing Video Course: Writing Maintainable Unit Tests", "url": "https://principal-it.eu/2020/02/writing-maintainable-unit-tests/", "published_at": "2020-02-26T11:00:00+00:00" }, { "id": "01a087c9-7ffd-7011-aa40-46146d69cd61", "title": "The Test Pyramid", "url": "https://principal-it.eu/2019/11/test-pyramid/", "published_at": "2019-11-07T09:00:00+00:00" }, { "id": "01a087c9-7ffd-7011-aa40-46146dd0a4f8", "title": "A Taxonomy Of Tests", "url": "https://principal-it.eu/2019/10/taxonomy-of-tests/", "published_at": "2019-10-08T08:00:00+00:00" }, { "id": "01a087c9-7ffd-7011-aa40-46146eb65bbc", "title": "Fast Feedback", "url": "https://principal-it.eu/2019/09/fast-feedback/", "published_at": "2019-09-03T08:00:00+00:00" }, { "id": "01a087c9-7ffd-7011-aa40-46146f97c32a", "title": "Debugability Considered Useful", "url": "https://principal-it.eu/2019/01/debugability-considered-useful/", "published_at": "2019-01-03T09:00:00+00:00" }, { "id": "01a087c9-7ffd-7011-aa40-46146fc6f9bf", "title": "Blaming Mocks For Bad Design", "url": "https://principal-it.eu/2018/12/blaming_mocks-for-bad-design/", "published_at": "2018-12-18T09:00:00+00:00" }, { "id": "01a087c9-7ffd-7011-aa40-4614702de886", "title": "Listening to the Vital Signs of TDD", "url": "https://principal-it.eu/2018/11/listening-to-the-vital-signs-of-tdd/", "published_at": "2018-11-08T09:00:00+00:00" }, { "id": "01a087c9-7ffd-7011-aa40-461470b45aa1", "title": "All in the Name of DRY", "url": "https://principal-it.eu/2018/09/all-in-the-name-of-dry/", "published_at": "2018-09-25T08:00:00+00:00" }, { "id": "01a087c9-7ffd-7011-aa40-46147161d9e3", "title": "Memo on O-Ring and Software Erosion", "url": "https://principal-it.eu/2016/03/memo-on-o-ring-and-software-erosion/", "published_at": "2016-03-03T09:00:00+00:00" }, { "id": "01a087c9-7ffd-7011-aa40-461471eef212", "title": "Learning F# - The Thunderdome Principle for Functions", "url": "https://principal-it.eu/2015/12/learning-fsharp-the-thunderdome-principle-for-functions/", "published_at": "2015-12-26T09:00:00+00:00" }, { "id": "01a087c9-7ffd-7011-aa40-461472aa72f9", "title": "Learning F# - Passing Parameters to Functions", "url": "https://principal-it.eu/2015/12/learning-fsharp-passing-parameters-to-functions/", "published_at": "2015-12-17T09:00:00+00:00" }, { "id": "01a087c9-7ffd-7011-aa40-461472b1542f", "title": "The Burden of Features in Software", "url": "https://principal-it.eu/2015/11/the-burden-of-features-in-software/", "published_at": "2015-11-21T11:00:00+00:00" }, { "id": "01a087c9-7ffd-7011-aa40-461472fe9a27", "title": "Product or Project Focused", "url": "https://principal-it.eu/2015/10/product-or-project-focused/", "published_at": "2015-10-24T10:00:00+00:00" }, { "id": "01a087c9-7ffd-7011-aa40-4614730e9007", "title": "Premature Abstraction", "url": "https://principal-it.eu/2015/10/premature-abstraction/", "published_at": "2015-10-17T18:00:00+00:00" }, { "id": "01a087c9-7ffd-7011-aa40-46147310b716", "title": "The Quest for the One True Static Site Generator", "url": "https://principal-it.eu/2015/10/the-quest-for-the-one-true-static-site-generator/", "published_at": "2015-10-10T08:00:00+00:00" }, { "id": "01a087c9-7ffd-7011-aa40-461473d5bfee", "title": "Using F# in Sublime Text on Linux Mint", "url": "https://principal-it.eu/2015/05/using-fsharp-in-sublime-text-on-linux-mint/", "published_at": "2015-06-05T08:00:00+00:00" } ] posts Claim your blog
Back to principal-it.eu
Blog · corpus.blog/blogs/principal-it.eu/posts

principal-it.eu

principal-it.eu

2026

2025

2023

2022

2021

2020

2019

2018

2016

2015