41554 blogs · [ { "id": "01a087a2-b5c0-734b-956d-3667ea7a6b10", "title": "Squill: my canvas for writing SQL", "url": "https://maxhalford.github.io/blog/squill-hello-world/", "published_at": "2026-09-08T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-3667eab74ebb", "title": "A brief guide to French polling data", "url": "https://maxhalford.github.io/blog/french-polling-data/", "published_at": "2026-09-01T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-3667eb16eb86", "title": "What's next for River (and myself)", "url": "https://maxhalford.github.io/blog/whats-next-for-river/", "published_at": "2026-07-20T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-3667ec0ae530", "title": "Will agents replace scripts?", "url": "https://maxhalford.github.io/blog/will-agents-replace-scripts/", "published_at": "2026-07-02T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-3667ec10a6db", "title": "My unvarnished guide to solution engineering", "url": "https://maxhalford.github.io/blog/solution-engineering-advice/", "published_at": "2026-06-04T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-3667ec20585d", "title": "Autonomous web scraping with Claude Code", "url": "https://maxhalford.github.io/blog/autonomous-web-scraping-claude-code/", "published_at": "2026-05-11T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-3667ec22ffe5", "title": "Lower your warehouse costs via DuckDB transpilation", "url": "https://maxhalford.github.io/blog/warehouse-cost-reduction-quack-mode/", "published_at": "2026-03-12T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-3667ec99ac45", "title": "Text classification with Python 3.14's zstd module", "url": "https://maxhalford.github.io/blog/text-classification-zstd/", "published_at": "2026-02-06T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-3667ed167a94", "title": "Solving Détrak with brute force", "url": "https://maxhalford.github.io/blog/detrak-solver/", "published_at": "2026-02-02T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-3667ed5b1abd", "title": "Row level lineage at Carbonfact", "url": "https://maxhalford.github.io/blog/row-level-lineage/", "published_at": "2026-01-09T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-3667ed8a6f59", "title": "Scraping Google Calendar events", "url": "https://maxhalford.github.io/blog/google-calendar-scraping/", "published_at": "2025-10-12T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-3667ee581048", "title": "Warmshowers sparks joy", "url": "https://maxhalford.github.io/blog/warmshowers-sparks-joy/", "published_at": "2025-08-24T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-3667ef34bb18", "title": "Do LLMs identify fonts?", "url": "https://maxhalford.github.io/blog/llm-font-identification/", "published_at": "2025-07-30T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-3667eff9776e", "title": "Thoughts on DuckLake", "url": "https://maxhalford.github.io/blog/ducklake-thoughts/", "published_at": "2025-06-09T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-3667f0a56ebe", "title": "The total derivative of a metric tree", "url": "https://maxhalford.github.io/blog/metric-tree-total-derivative/", "published_at": "2025-05-06T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-3667f0a98850", "title": "Minimizing the runtime of a SQL DAG", "url": "https://maxhalford.github.io/blog/minimizing-sql-dag-runtime/", "published_at": "2025-02-08T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-3667f0c8a414", "title": "Hard data integration problems at Carbonfact", "url": "https://maxhalford.github.io/blog/hard-data-integration-problems-at-carbonfact/", "published_at": "2025-01-02T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-3667f0e9aad9", "title": "Introducing icanexplain @ PyData Paris 2024", "url": "https://maxhalford.github.io/blog/icanexplain-pydata/", "published_at": "2024-09-26T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-3667f15f4957", "title": "@daily_cache implementation in Python", "url": "https://maxhalford.github.io/blog/python-daily-cache/", "published_at": "2024-08-27T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-3667f2390a35", "title": "LCA software: exit the matrix", "url": "https://maxhalford.github.io/blog/lca-exit-the-matrix/", "published_at": "2024-06-09T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-3667f296f9bd", "title": "Cutting up shoes to measure their footprint", "url": "https://maxhalford.github.io/blog/cutting-up-shoes/", "published_at": "2024-05-17T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-3667f35bced2", "title": "A training set for bike sharing forecasting", "url": "https://maxhalford.github.io/blog/bike-sharing-forecasting-training-set/", "published_at": "2024-04-04T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-3667f38da8bb", "title": "Fast Poetry and pre-commit with GitHub Actions", "url": "https://maxhalford.github.io/blog/fast-poetry-pre-commit-github-actions/", "published_at": "2024-02-27T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-3667f42ab4e7", "title": "Decomposing funnel metrics", "url": "https://maxhalford.github.io/blog/funnel-decomposition/", "published_at": "2023-12-14T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-3667f510e017", "title": "Efficient ELT refreshes", "url": "https://maxhalford.github.io/blog/efficient-data-transformation/", "published_at": "2023-12-01T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-3667f5199ebe", "title": "Online machine learning on the road @ IDE+A, TH Köln", "url": "https://maxhalford.github.io/blog/online-machine-learning-on-the-road/", "published_at": "2023-10-26T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-3667f5a61020", "title": "Sh*t flows downhill, but not at Carbonfact", "url": "https://maxhalford.github.io/blog/shit-flows-downhill-but-not-at-carbonfact/", "published_at": "2023-10-16T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-3667f5acf0d2", "title": "Answering \"Why did the KPI change?\" using decomposition", "url": "https://maxhalford.github.io/blog/kpi-evolution-decomposition/", "published_at": "2023-08-09T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-3667f626d9d8", "title": "Measuring the carbon footprint of pizzas", "url": "https://maxhalford.github.io/blog/carbon-footprint-pizzas/", "published_at": "2023-06-25T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-3667f712e76c", "title": "Graph components with DuckDB", "url": "https://maxhalford.github.io/blog/graph-components-duckdb/", "published_at": "2023-06-03T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-3667f77a1f42", "title": "For analytics, don't use dynamic JSON keys", "url": "https://maxhalford.github.io/blog/no-dynamic-keys-in-json/", "published_at": "2023-05-11T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-3667f845c03a", "title": "Metric correctness doesn't matter, consistency does", "url": "https://maxhalford.github.io/blog/consistent-metrics/", "published_at": "2023-04-28T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-3667f9212197", "title": "Online gradient descent written in SQL", "url": "https://maxhalford.github.io/blog/ogd-in-sql/", "published_at": "2023-03-07T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-3667f9d349b4", "title": "Using SymPy in Python doctests", "url": "https://maxhalford.github.io/blog/sympy-doctests/", "published_at": "2023-02-15T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-3667fa133052", "title": "Online active learning in 80 lines of Python", "url": "https://maxhalford.github.io/blog/online-active-learning-river-databutton/", "published_at": "2023-01-22T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-3667fa1c7360", "title": "Are Airbnb guests less energy efficient than their host?", "url": "https://maxhalford.github.io/blog/airbnb-energy-usage/", "published_at": "2023-01-17T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-3667fa758617", "title": "The future of River", "url": "https://maxhalford.github.io/blog/future-of-river/", "published_at": "2022-12-13T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-3667fb366b54", "title": "Parsing garment descriptions with GPT-3", "url": "https://maxhalford.github.io/blog/garment-parsing-gpt3/", "published_at": "2022-11-20T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-3667fb55530b", "title": "Dynamic on-screen TV keyboards", "url": "https://maxhalford.github.io/blog/dynamic-on-screen-keyboards/", "published_at": "2022-09-25T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-3667fb8ba2a8", "title": "NLP at Carbonfact: how would you do it?", "url": "https://maxhalford.github.io/blog/carbonfact-nlp-open-problem/", "published_at": "2022-09-06T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-3667fbed5b14", "title": "Matrix inverse mini-batch updates", "url": "https://maxhalford.github.io/blog/matrix-inverse-mini-batch/", "published_at": "2022-08-24T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-3667fc008de0", "title": "A rant against dbt ref", "url": "https://maxhalford.github.io/blog/dbt-ref-rant/", "published_at": "2022-06-28T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-3667fc8385ec", "title": "First IRL meetup with the River developers", "url": "https://maxhalford.github.io/blog/first-river-meetup/", "published_at": "2022-06-09T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-3667fd138af8", "title": "Online machine learning with River @ GAIA", "url": "https://maxhalford.github.io/blog/online-machine-learning-with-river/", "published_at": "2022-04-07T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-3667fd368a99", "title": "Fuzzy regex matching in Python", "url": "https://maxhalford.github.io/blog/fuzzy-regex-matching-in-python/", "published_at": "2022-04-04T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-3667fd7d78c3", "title": "OCR spelling correction is hard", "url": "https://maxhalford.github.io/blog/ocr-spelling-correction-is-hard/", "published_at": "2022-03-06T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-3667fdc35522", "title": "Comic book panel segmentation", "url": "https://maxhalford.github.io/blog/comic-book-panel-segmentation/", "published_at": "2022-03-05T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-3667fe40b1e6", "title": "Online machine learning in practice @ PyData PDX", "url": "https://maxhalford.github.io/blog/online-machine-learning-in-practice-pydata-pdx/", "published_at": "2022-02-09T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-3667fee4e859", "title": "The online machine learning predict/fit switcheroo", "url": "https://maxhalford.github.io/blog/predict-fit-switcheroo/", "published_at": "2022-01-06T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-3667ff38b445", "title": "Weighted sampling without replacement in pure Python", "url": "https://maxhalford.github.io/blog/weighted-sampling-without-replacement/", "published_at": "2021-12-24T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-3667ff892760", "title": "Online machine learning in practice @ Applied AI", "url": "https://maxhalford.github.io/blog/real-time-ml-next-frontier-applied-ai/", "published_at": "2021-12-17T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-366800745c54", "title": "Online machine learning in practice @ LVMH", "url": "https://maxhalford.github.io/blog/real-time-ml-next-frontier-lvmh/", "published_at": "2021-12-10T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-366800b014a7", "title": "Web scraping, upside down", "url": "https://maxhalford.github.io/blog/declarative-web-scraping/", "published_at": "2021-11-11T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-36680116f980", "title": "One year at Alan", "url": "https://maxhalford.github.io/blog/one-year-at-alan/", "published_at": "2021-10-26T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-3668014d40c1", "title": "Manipulating ephemeral data with git", "url": "https://maxhalford.github.io/blog/manipulating-ephemeral-data-with-git/", "published_at": "2021-10-07T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-3668018395c3", "title": "Dashboards and GROUPING SETS", "url": "https://maxhalford.github.io/blog/grouping-sets/", "published_at": "2021-09-10T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-366801d05093", "title": "Homoglyphs: different characters that look identical", "url": "https://maxhalford.github.io/blog/homoglyphs/", "published_at": "2021-08-19T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-366801d61c88", "title": "Automated document processing at Alan", "url": "https://maxhalford.github.io/blog/medium-document-processing/", "published_at": "2021-06-10T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-36680256c26a", "title": "Text classification by data compression", "url": "https://maxhalford.github.io/blog/text-classification-by-compression/", "published_at": "2021-06-08T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-36680256d159", "title": "Reducing the memory footprint of a scikit-learn text classifier", "url": "https://maxhalford.github.io/blog/sklearn-text-classifier-memory-footprint-reduction/", "published_at": "2021-04-11T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-3668027f33b0", "title": "An overview of dataset time travel", "url": "https://maxhalford.github.io/blog/dataset-time-travel/", "published_at": "2021-04-07T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-366802ed229a", "title": "The challenges of online machine learning in production @ Itaú Unibanco", "url": "https://maxhalford.github.io/blog/challenges-of-online-machine-learning-in-production/", "published_at": "2021-02-26T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-366803e22fd9", "title": "Quelle est l’empreinte écologique du Big Data? @ Toulouse Tech", "url": "https://maxhalford.github.io/blog/empreinte-ecologie-du-big-data/", "published_at": "2021-01-22T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-366804b185c7", "title": "Organising a Kaggle InClass competition with a fairness metric", "url": "https://maxhalford.github.io/blog/fairness-competition/", "published_at": "2021-01-21T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-366805437bf3", "title": "Converting Amazon Textract tables to pandas DataFrames", "url": "https://maxhalford.github.io/blog/textract-table-to-pandas/", "published_at": "2021-01-14T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-366805ce6ed1", "title": "What my PhD was about", "url": "https://maxhalford.github.io/blog/phd-about/", "published_at": "2021-01-06T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-3668060f68e9", "title": "Computing cross-correlations in SQL", "url": "https://maxhalford.github.io/blog/sql-cross-correlations/", "published_at": "2020-11-17T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-3668070344bf", "title": "Unsupervised text classification with word embeddings", "url": "https://maxhalford.github.io/blog/unsupervised-text-classification/", "published_at": "2020-10-03T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-366807da7c12", "title": "Focal loss implementation for LightGBM", "url": "https://maxhalford.github.io/blog/lightgbm-focal-loss/", "published_at": "2020-09-20T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-3668087b5d25", "title": "A few intermediate pandas tricks", "url": "https://maxhalford.github.io/blog/pandas-tricks/", "published_at": "2020-08-17T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-366808c0be71", "title": "A brief introduction to online machine learning @ Hong Kong Machine Learning Meetup", "url": "https://maxhalford.github.io/blog/brief-introduction-to-online-machine-learning/", "published_at": "2020-06-10T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-366809685da9", "title": "The correct way to evaluate online machine learning models", "url": "https://maxhalford.github.io/blog/online-learning-evaluation/", "published_at": "2020-06-07T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-366809df1cc0", "title": "Online machine learning with decision trees @ Toulouse AOC workgroup", "url": "https://maxhalford.github.io/blog/online-machine-learning-with-decision-trees/", "published_at": "2020-05-07T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-36680ac2076f", "title": "Server-sent events in Flask without extra dependencies", "url": "https://maxhalford.github.io/blog/flask-sse-no-deps/", "published_at": "2020-05-04T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-36680aeb88e5", "title": "I got plagiarized and Google didn't help", "url": "https://maxhalford.github.io/blog/plagiarism-google-didnt-help/", "published_at": "2020-04-17T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-36680b38bd10", "title": "Our solution to the IDAO 2020 qualifiers", "url": "https://maxhalford.github.io/blog/idao-2020-qualifiers-solution/", "published_at": "2020-04-12T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-36680c1c9d3d", "title": "Speeding up scikit-learn for single predictions", "url": "https://maxhalford.github.io/blog/speeding-up-sklearn-single-predictions/", "published_at": "2020-03-31T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-36680ccaf537", "title": "Machine learning for streaming data with creme", "url": "https://maxhalford.github.io/blog/medium-creme/", "published_at": "2020-03-26T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-36680dabe2ff", "title": "Global explanation of machine learning with sensitivity analysis @ MASCOT-NUM", "url": "https://maxhalford.github.io/blog/global-explanation-of-ml-with-sensitivity-analysis/", "published_at": "2020-03-10T00:00:00+00:00" }, { "id": "01a087a2-b5c0-734b-956d-36680e0c9edc", "title": "Bayesian linear regression for practitioners", "url": "https://maxhalford.github.io/blog/bayesian-linear-regression/", "published_at": "2020-02-26T00:00:00+00:00" }, { "id": "01a087a2-b5c1-729c-b284-fcfa5a270c57", "title": "Under-sampling a dataset with desired ratios", "url": "https://maxhalford.github.io/blog/undersampling-ratios/", "published_at": "2019-12-17T00:00:00+00:00" }, { "id": "01a087a2-b5c1-729c-b284-fcfa5aaef086", "title": "The benefits of online machine learning @ Quantmetry", "url": "https://maxhalford.github.io/blog/the-benefits-of-online-learning-quantmetry/", "published_at": "2019-10-29T00:00:00+00:00" }, { "id": "01a087a2-b5c1-729c-b284-fcfa5b799a0c", "title": "The benefits of online machine learning @ Element AI", "url": "https://maxhalford.github.io/blog/the-benefits-of-online-learning-element-ai/", "published_at": "2019-10-23T00:00:00+00:00" }, { "id": "01a087a2-b5c1-729c-b284-fcfa5b7b21b1", "title": "Finding fuzzy duplicates with pandas", "url": "https://maxhalford.github.io/blog/transitive-duplicates/", "published_at": "2019-09-16T00:00:00+00:00" }, { "id": "01a087a2-b5c1-729c-b284-fcfa5c0fef90", "title": "A smooth approach to putting machine learning into production", "url": "https://maxhalford.github.io/blog/machine-learning-production/", "published_at": "2019-07-13T00:00:00+00:00" }, { "id": "01a087a2-b5c1-729c-b284-fcfa5cc2f155", "title": "The benefits of online machine learning @ Airbus Bizlab", "url": "https://maxhalford.github.io/blog/the-benefits-of-online-learning-airbus-bizlab/", "published_at": "2019-06-28T00:00:00+00:00" }, { "id": "01a087a2-b5c1-729c-b284-fcfa5d7283fb", "title": "Machine learning incrémental: des concepts à la pratique @ Toulouse Data Science Meetup", "url": "https://maxhalford.github.io/blog/machine-learning-incremental-tds/", "published_at": "2019-05-28T00:00:00+00:00" }, { "id": "01a087a2-b5c1-729c-b284-fcfa5da80919", "title": "Skyline queries in Python", "url": "https://maxhalford.github.io/blog/skyline-queries/", "published_at": "2019-05-21T00:00:00+00:00" }, { "id": "01a087a2-b5c1-729c-b284-fcfa5db25fb7", "title": "Online machine learning with creme @ PyData Amsterdam", "url": "https://maxhalford.github.io/blog/online-machine-learning-with-creme-pydata/", "published_at": "2019-05-11T00:00:00+00:00" }, { "id": "01a087a2-b5c1-729c-b284-fcfa5df10c74", "title": "SQL subquery enumeration", "url": "https://maxhalford.github.io/blog/sql-subquery-enumeration/", "published_at": "2019-05-06T00:00:00+00:00" }, { "id": "01a087a2-b5c1-729c-b284-fcfa5e28ceac", "title": "An approach based on Bayesian networks for query selectivity estimation @ DASFAA", "url": "https://maxhalford.github.io/blog/an-approach-based-on-bayesian-networks-for-query-selectivity-estimation-slides/", "published_at": "2019-04-22T00:00:00+00:00" }, { "id": "01a087a2-b5c1-729c-b284-fcfa5e77ef88", "title": "Morellet crosses with JavaScript", "url": "https://maxhalford.github.io/blog/morellet/", "published_at": "2019-02-03T00:00:00+00:00" }, { "id": "01a087a2-b5c1-729c-b284-fcfa5f4c5b28", "title": "Streaming groupbys in pandas for big datasets", "url": "https://maxhalford.github.io/blog/pandas-streaming-groupby/", "published_at": "2018-12-05T00:00:00+00:00" }, { "id": "01a087a2-b5c1-729c-b284-fcfa5f9dd128", "title": "Target encoding done the right way", "url": "https://maxhalford.github.io/blog/target-encoding/", "published_at": "2018-10-13T00:00:00+00:00" }, { "id": "01a087a2-b5c1-729c-b284-fcfa608a4efe", "title": "Stella triangles with JavaScript", "url": "https://maxhalford.github.io/blog/stella-triangles/", "published_at": "2018-04-26T00:00:00+00:00" }, { "id": "01a087a2-b5c1-729c-b284-fcfa617ff2b5", "title": "Unknown pleasures with JavaScript", "url": "https://maxhalford.github.io/blog/unknown-pleasures/", "published_at": "2017-07-24T00:00:00+00:00" }, { "id": "01a087a2-b5c1-729c-b284-fcfa62109aa4", "title": "Subsampling a training set to match a test set - Part 1", "url": "https://maxhalford.github.io/blog/subsampling-1/", "published_at": "2017-06-19T00:00:00+00:00" }, { "id": "01a087a2-b5c1-729c-b284-fcfa62e49f49", "title": "Docker for data science @ HelloFresh Berlin", "url": "https://maxhalford.github.io/blog/docker-for-data-science/", "published_at": "2017-06-01T00:00:00+00:00" }, { "id": "01a087a2-b5c1-729c-b284-fcfa63c6a43c", "title": "Halftoning with Go - Part 2", "url": "https://maxhalford.github.io/blog/halftoning-2/", "published_at": "2017-03-20T00:00:00+00:00" }, { "id": "01a087a2-b5c1-729c-b284-fcfa640044d1", "title": "Grid paintings à la Mondrian with JavaScript", "url": "https://maxhalford.github.io/blog/mondrian/", "published_at": "2017-03-04T00:00:00+00:00" } ] posts Claim your blog
Back to Max Halford
Blog · corpus.blog/blogs/maxhalford.github.io/posts

Max Halford

maxhalford.github.io

2026

2025

2024

2023

2022

2021

2020

2019

2018

2017