41554 blogs · [ { "id": "01a087e9-f655-700c-8996-81576e963ebd", "title": "PyData London 2026 TDDA Tutorial", "url": "https://tdda.info/pydata-london-2026-tdda-tutorial.html", "published_at": "2026-06-19T09:00:00+00:00" }, { "id": "01a087e9-f655-700c-8996-81576f70ce49", "title": "TDDA Book Online Serialization", "url": "https://tdda.info/tdda-book-online-serialization.html", "published_at": "2026-05-27T09:00:00+00:00" }, { "id": "01a087e9-f655-700c-8996-81576f918bf6", "title": "Data Validation with tdda Constraints: A Guide for LLMs and Coding Agents", "url": "https://tdda.info/data-validation-with-tdda-constraints-a-guide-for-llms-and-coding-agents.html", "published_at": "2026-05-22T11:00:00+00:00" }, { "id": "01a087e9-f655-700c-8996-81576ffdbee0", "title": "CSV Metadata and tdda.serial: A Guide for LLMs and Coding Agents", "url": "https://tdda.info/csv-metadata-and-tddaserial-a-guide-for-llms-and-coding-agents.html", "published_at": "2026-05-21T11:00:00+00:00" }, { "id": "01a087e9-f655-700c-8996-815770b75efb", "title": "Reference Testing with TDDA: A Guide for LLMs and Coding Bots", "url": "https://tdda.info/reference-testing-with-tdda-a-guide-for-llms-and-coding-bots.html", "published_at": "2026-05-20T11:00:00+00:00" }, { "id": "01a087e9-f655-700c-8996-8157715d331b", "title": "TDDA: The Book, the 3.0 Library, and the PyData London 2026 Tutorial", "url": "https://tdda.info/tdda-the-book-the-30-library-and-the-pydata-london-2026-tutorial.html", "published_at": "2026-05-19T17:00:00+00:00" }, { "id": "01a087e9-f655-700c-8996-8157719e4cb4", "title": "Test-Driven Document Development", "url": "https://tdda.info/test-driven-document-development.html", "published_at": "2025-09-02T15:00:00+00:00" }, { "id": "01a087e9-f655-700c-8996-815771c96e47", "title": "tdda.serial: Metadata for Flat Files (CSV Files)", "url": "https://tdda.info/tddaserial-metadata-for-flat-files-csv-files.html", "published_at": "2025-06-23T09:00:00+00:00" }, { "id": "01a087e9-f655-700c-8996-815772c72597", "title": "TDDA and Quality for LLMs", "url": "https://tdda.info/tdda-and-quality-for-llms.html", "published_at": "2024-12-23T16:00:00+00:00" }, { "id": "01a087e9-f655-700c-8996-815772c8152f", "title": "Best Practices for Notebook Users", "url": "https://tdda.info/best-practices-for-notebook-users.html", "published_at": "2024-12-17T16:00:00+00:00" }, { "id": "01a087e9-f655-700c-8996-81577395e694", "title": "Log Graphs and Grokkability", "url": "https://tdda.info/log-graphs-and-grokkability.html", "published_at": "2024-12-12T16:00:00+00:00" }, { "id": "01a087e9-f655-700c-8996-815773ca7da4", "title": "Jupyter Notebooks Considered Harmful: The Parables of Anne and Beth", "url": "https://tdda.info/jupyter-notebooks-considered-harmful-the-parables-of-anne-and-beth.html", "published_at": "2024-11-14T18:30:00+00:00" }, { "id": "01a087e9-f655-700c-8996-81577493ac36", "title": "An Adware Malware Story Featuring Safari, Notification Centre, and Box Plots", "url": "https://tdda.info/an-adware-malware-story-featuring-safari-notification-centre-and-box-plots.html", "published_at": "2024-09-22T15:00:00+00:00" }, { "id": "01a087e9-f655-700c-8996-8157757c60ac", "title": "PyData London 2024 TDDA Tutorial", "url": "https://tdda.info/pydata-london-2024-tdda-tutorial.html", "published_at": "2024-07-21T15:00:00+00:00" }, { "id": "01a087e9-f655-700c-8996-815775e41160", "title": "Learning the Hard Way: Regression to the Mean", "url": "https://tdda.info/learning-the-hard-way-regression-to-the-mean.html", "published_at": "2024-06-20T19:00:00+00:00" }, { "id": "01a087e9-f655-700c-8996-815776ab61f2", "title": "Name Styles", "url": "https://tdda.info/name-styles.html", "published_at": "2024-03-04T16:00:00+00:00" }, { "id": "01a087e9-f655-700c-8996-8157773394f7", "title": "TOMLParams: TOML-based parameter files made better", "url": "https://tdda.info/tomlparams-toml-based-parameter-files-made-better.html", "published_at": "2023-07-16T15:00:00+00:00" }, { "id": "01a087e9-f655-700c-8996-815778099200", "title": "TDDA on the Coding for Thought Podcast", "url": "https://tdda.info/tdda-on-the-coding-for-thought-podcast.html", "published_at": "2023-07-11T15:00:00+00:00" }, { "id": "01a087e9-f655-700c-8996-815778c72744", "title": "Overcast Logged-in iCloud Users: Self-Selection Bias and Customer Stickiness", "url": "https://tdda.info/overcast-logged-in-icloud-users-self-selection-bias-and-customer-stickiness.html", "published_at": "2023-01-08T16:00:00+00:00" }, { "id": "01a087e9-f655-700c-8996-81577944307c", "title": "Gentest Talk at 2022 Toronto Workshop on Reproducibility", "url": "https://tdda.info/tdda-gentest-toronto-2022.html", "published_at": "2022-02-25T16:00:00+00:00" }, { "id": "01a087e9-f655-700c-8996-81577a1832b4", "title": "Unix & Linux Survival Guide for Data Science etc.", "url": "https://tdda.info/2.html", "published_at": "2022-02-21T21:00:00+00:00" }, { "id": "01a087e9-f655-700c-8996-81577ad87d1e", "title": "One Tiny Bug Fix etc.", "url": "https://tdda.info/1.html", "published_at": "2022-02-16T16:00:00+00:00" }, { "id": "01a087e9-f655-700c-8996-81577ba0f7eb", "title": "Why Code Rusts", "url": "https://tdda.info/why-code-rusts.html", "published_at": "2022-02-07T16:00:00+00:00" }, { "id": "01a087e9-f655-700c-8996-81577bb36b7a", "title": "Flat Files (a.k.a. CSV files)", "url": "https://tdda.info/flat-files-aka-csv-files.html", "published_at": "2021-07-16T17:00:00+00:00" }, { "id": "01a087e9-f655-700c-8996-81577c6daecd", "title": "Sharing Tests across Implementations by Externalizing Test Data", "url": "https://tdda.info/sharing-tests-across-implementations-by-externalizing-test-data.html", "published_at": "2020-08-30T16:30:00+00:00" }, { "id": "01a087e9-f655-700c-8996-81577c7366b0", "title": "Reference Testing Exercise 2 (pytest flavour)", "url": "https://tdda.info/reference-testing-exercise-2-pytest-flavour.html", "published_at": "2019-10-31T09:30:00+00:00" }, { "id": "01a087e9-f655-700c-8996-81577ce7f987", "title": "Reference Testing Exercise 2 (unittest flavour)", "url": "https://tdda.info/reference-testing-exercise-2-unittest-flavour.html", "published_at": "2019-10-30T08:30:00+00:00" }, { "id": "01a087e9-f655-700c-8996-81577d9f7fdb", "title": "Reference Testing Exercise 1 (pytest flavour)", "url": "https://tdda.info/reference-testing-exercise-1-pytest-flavour.html", "published_at": "2019-10-29T12:00:00+00:00" }, { "id": "01a087e9-f655-700c-8996-81577e8a2a76", "title": "Reference Testing Exercise 1 (unittest flavour)", "url": "https://tdda.info/reference-testing-exercise-1-unittest-flavour.html", "published_at": "2019-10-28T08:15:00+00:00" }, { "id": "01a087e9-f655-700c-8996-81577ee9b07a", "title": "Screencasts and Exercises", "url": "https://tdda.info/screencasts-and-exercises.html", "published_at": "2019-10-25T14:00:00+00:00" }, { "id": "01a087e9-f655-700c-8996-81577f462df0", "title": "Installation", "url": "https://tdda.info/installation.html", "published_at": "2019-10-24T14:00:00+00:00" }, { "id": "01a087e9-f655-700c-8996-81577f70d10d", "title": "Rexpy for Generating Regular Expressions: Postcodes", "url": "https://tdda.info/rexpy-for-generating-regular-expressions-postcodes.html", "published_at": "2019-02-20T18:20:00+00:00" }, { "id": "01a087e9-f655-700c-8996-81577feac046", "title": "Tagging PyTest Tests", "url": "https://tdda.info/tagging-pytest-tests.html", "published_at": "2018-05-22T11:00:00+00:00" }, { "id": "01a087e9-f655-700c-8996-81578010f723", "title": "Detecting Bad Data and Anomalies with the TDDA Library (Part I)", "url": "https://tdda.info/detecting-bad-data-and-anomalies-with-the-tdda-library-part-i.html", "published_at": "2018-05-04T09:30:00+00:00" }, { "id": "01a087e9-f655-700c-8996-8157810484f8", "title": "Saving Time Running Subsets of Tests with Tagging", "url": "https://tdda.info/saving-time-running-subsets-of-tests-with-tagging.html", "published_at": "2018-05-01T09:30:00+00:00" }, { "id": "01a087e9-f655-700c-8996-8157811b4f43", "title": "Our Approach to Data Provenance", "url": "https://tdda.info/our-approach-to-data-provenance.html", "published_at": "2017-12-12T15:30:00+00:00" }, { "id": "01a087e9-f655-700c-8996-815782142aa8", "title": "Data Provenance and Data Lineage: the View from the Podcasts", "url": "https://tdda.info/data-provenance-and-data-lineage-the-view-from-the-podcasts.html", "published_at": "2017-11-30T15:30:00+00:00" }, { "id": "01a087e9-f655-700c-8996-815782cdc5ca", "title": "Automatic Constraint Generation and Verification White Paper", "url": "https://tdda.info/automatic-constraint-generation-and-verification-white-paper.html", "published_at": "2017-10-06T14:30:00+00:00" }, { "id": "01a087e9-f655-700c-8996-81578339082b", "title": "Constraint Generation in the Presence of Bad Data", "url": "https://tdda.info/constraint-generation-in-the-presence-of-bad-data.html", "published_at": "2017-09-21T16:30:00+00:00" }, { "id": "01a087e9-f655-700c-8996-815784074734", "title": "Obtaining the Python tdda Library", "url": "https://tdda.info/obtaining-the-python-tdda-library.html", "published_at": "2017-09-14T14:30:00+00:00" }, { "id": "01a087e9-f655-700c-8996-815784472e0a", "title": "GDPR, Consent and Microformats: A Half-Baked Idea", "url": "https://tdda.info/gdpr-consent-and-microformats-a-half-baked-idea.html", "published_at": "2017-09-08T10:00:00+00:00" }, { "id": "01a087e9-f655-700c-8996-81578505ec13", "title": "Quick Reference for TDDA Library", "url": "https://tdda.info/quick-reference-for-tdda-library.html", "published_at": "2017-05-04T14:30:00+00:00" }, { "id": "01a087e9-f655-700c-8996-815785c5f3c4", "title": "Improving Rexpy", "url": "https://tdda.info/improving-rexpy.html", "published_at": "2017-03-09T15:30:00+00:00" }, { "id": "01a087e9-f655-700c-8996-815785fcd548", "title": "An Error of Process", "url": "https://tdda.info/an-error-of-process.html", "published_at": "2017-03-08T13:00:00+00:00" }, { "id": "01a087e9-f655-700c-8996-8157865d05c9", "title": "Errors of Interpretation: Bad Graphs with Dual Scales", "url": "https://tdda.info/errors-of-interpretation-bad-graphs-with-dual-scales.html", "published_at": "2017-02-20T15:30:00+00:00" }, { "id": "01a087e9-f655-700c-8996-8157871ff76e", "title": "TDDA 1-pager", "url": "https://tdda.info/tdda-1-pager.html", "published_at": "2017-02-10T15:00:00+00:00" }, { "id": "01a087e9-f655-700c-8996-815787f9fcd3", "title": "Coverage information for Rexpy", "url": "https://tdda.info/coverage-information-for-rexpy.html", "published_at": "2017-01-31T15:00:00+00:00" }, { "id": "01a087e9-f655-700c-8996-815788b4c4fc", "title": "The New ReferenceTest class for TDDA", "url": "https://tdda.info/the-new-referencetest-class-for-tdda.html", "published_at": "2017-01-26T15:30:00+00:00" }, { "id": "01a087e9-f655-700c-8996-815789b3b7b3", "title": "Introducing Rexpy: Automatic Discovery of Regular Expressions", "url": "https://tdda.info/introducing-rexpy-automatic-discovery-of-regular-expressions.html", "published_at": "2016-11-11T15:00:00+00:00" }, { "id": "01a087e9-f655-700c-8996-815789c3ecea", "title": "The TDDA Constraints File Format", "url": "https://tdda.info/the-tdda-constraints-file-format.html", "published_at": "2016-11-04T14:30:00+00:00" }, { "id": "01a087e9-f655-700c-8996-815789e04ee5", "title": "Constraint Discovery and Verification for Pandas DataFrames", "url": "https://tdda.info/constraint-discovery-and-verification-for-pandas-dataframes.html", "published_at": "2016-11-03T15:30:00+00:00" }, { "id": "01a087e9-f655-700c-8996-81578a504904", "title": "WritableTestCase: Example Use", "url": "https://tdda.info/writabletestcase-example-use.html", "published_at": "2016-09-18T14:30:00+00:00" }, { "id": "01a087e9-f655-700c-8996-81578aafdfdd", "title": "Slides and Rough Transcript of TDDA talk from PyCon UK 2016", "url": "https://tdda.info/slides-and-rough-transcript-of-tdda-talk-from-pycon-uk-2016.html", "published_at": "2016-09-17T14:30:00+00:00" }, { "id": "01a087e9-f656-7232-9483-2676561bebaf", "title": "Extracting More Apple Health Data", "url": "https://tdda.info/extracting-more-apple-health-data.html", "published_at": "2016-04-20T14:30:00+00:00" }, { "id": "01a087e9-f656-7232-9483-2676561d8485", "title": "Unit Tests", "url": "https://tdda.info/unit-tests.html", "published_at": "2016-04-19T20:05:00+00:00" }, { "id": "01a087e9-f656-7232-9483-2676571c02b6", "title": "First Test", "url": "https://tdda.info/first-test.html", "published_at": "2016-04-18T15:20:00+00:00" }, { "id": "01a087e9-f656-7232-9483-26765758b45e", "title": "In Defence of XML: Exporting and Analysing Apple Health Data", "url": "https://tdda.info/in-defence-of-xml-exporting-and-analysing-apple-health-data.html", "published_at": "2016-04-15T14:35:00+00:00" }, { "id": "01a087e9-f656-7232-9483-26765824deb3", "title": "Lessons Learned: Bad Data and other SNAFUs", "url": "https://tdda.info/lessons-learned-bad-data-and-other-snafus.html", "published_at": "2016-02-15T13:30:00+00:00" }, { "id": "01a087e9-f656-7232-9483-267658be3127", "title": "How far in advance are flights cheapest? An error of interpretation", "url": "https://tdda.info/how-far-in-advance-are-flights-cheapest-an-error-of-interpretation.html", "published_at": "2016-01-06T15:00:00+00:00" }, { "id": "01a087e9-f656-7232-9483-267659203cd5", "title": "Tools and Tooling", "url": "https://tdda.info/tools-and-tooling.html", "published_at": "2015-12-16T08:30:00+00:00" }, { "id": "01a087e9-f656-7232-9483-26765a1f6735", "title": "Generalized Overfitting: Errors of Applicability", "url": "https://tdda.info/generalized-overfitting-errors-of-applicability.html", "published_at": "2015-12-14T11:00:00+00:00" }, { "id": "01a087e9-f656-7232-9483-26765aa07961", "title": "Overview of TDDA in Predictive Analytics Times", "url": "https://tdda.info/overview-of-tdda-in-predictive-analytics-times.html", "published_at": "2015-12-11T16:20:00+00:00" }, { "id": "01a087e9-f656-7232-9483-26765b9f3436", "title": "Anomaly Detection", "url": "https://tdda.info/anomaly-detection.html", "published_at": "2015-12-01T08:30:00+00:00" }, { "id": "01a087e9-f656-7232-9483-26765c8db24b", "title": "Unit Testing", "url": "https://tdda.info/unit-testing.html", "published_at": "2015-11-28T08:30:00+00:00" }, { "id": "01a087e9-f656-7232-9483-26765d31c53e", "title": "Constraints and Assertions", "url": "https://tdda.info/constraints-and-assertions.html", "published_at": "2015-11-26T11:00:00+00:00" }, { "id": "01a087e9-f656-7232-9483-26765e1122ed", "title": "Site News: Glossary; Table of Contents; Feeds", "url": "https://tdda.info/site-news-glossary-table-of-contents-feeds.html", "published_at": "2015-11-23T11:40:00+00:00" }, { "id": "01a087e9-f656-7232-9483-26765e1501d3", "title": "Infinite Gain: The First Test", "url": "https://tdda.info/infinite-gain-the-first-test.html", "published_at": "2015-11-16T19:00:00+00:00" }, { "id": "01a087e9-f656-7232-9483-26765ed3939c", "title": "How is this Misleading Data Misleading Me?", "url": "https://tdda.info/how-is-this-misleading-data-misleading-me.html", "published_at": "2015-11-13T17:15:00+00:00" }, { "id": "01a087e9-f656-7232-9483-26765fc80c48", "title": "Test-Driven Development: A Review", "url": "https://tdda.info/test-driven-development-a-review.html", "published_at": "2015-11-09T10:30:00+00:00" }, { "id": "01a087e9-f656-7232-9483-26765fce8330", "title": "Why Test-Driven Data Analysis?", "url": "https://tdda.info/why-test-driven-data-analysis.html", "published_at": "2015-11-05T08:42:00+00:00" }, { "id": "01a087e9-f656-7232-9483-26765fdc05c8", "title": "Test-Driven Data Analysis", "url": "https://tdda.info/test-driven-data-analysis.html", "published_at": "2015-11-05T08:30:00+00:00" } ] posts Claim your blog
Back to tdda.info
Blog · corpus.blog/blogs/tdda.info/posts

tdda.info

tdda.info

2026

2025

2024

2023

2022

2021

2020

2019

2018

2017

2016

2015