The Curious Engineer

All blogs / AI / ML

Max Halford

maxhalford.github.io/blog

Recent content in Blog on Max Halford

AI / MLPythonDatabasesMath

Posts
127 from 3 Jun 2015 to 8 Sep 2026
Posting
monthly (15 in the last year)
Kind
personal blog
Feed
https://maxhalford.github.io/blog/index.xml

2026 14

  1. Squill: my canvas for writing SQL
  2. A brief guide to French polling data
  3. What's next for River (and myself)
  4. Will agents replace scripts?
  5. My unvarnished guide to solution engineering
  6. Resume max halford.pdf
  7. Autonomous web scraping with Claude Code
  8. Bio
  9. Lower your warehouse costs via DuckDB transpilation
  10. Squill
  11. Text classification with Python 3.14's zstd module
  12. Showerthoughts
  13. Solving Détrak with brute force
  14. Row level lineage at Carbonfact

2025 7

  1. Scraping Google Calendar events
  2. Warmshowers sparks joy
  3. Do LLMs identify fonts?
  4. Thoughts on DuckLake
  5. The total derivative of a metric tree
  6. Minimizing the runtime of a SQL DAG
  7. Hard data integration problems at Carbonfact

2024 6

  1. Introducing icanexplain @ PyData Paris 2024
  2. @daily_cache implementation in Python
  3. LCA software: exit the matrix
  4. Cutting up shoes to measure their footprint
  5. A training set for bike sharing forecasting
  6. Fast Poetry and pre-commit with GitHub Actions

2023 14

  1. Decomposing funnel metrics
  2. Efficient ELT refreshes
  3. Online machine learning on the road @ IDE+A, TH Köln
  4. Online machine learning on the road @ IDE+A, TH Köln
  5. Sh*t flows downhill, but not at Carbonfact
  6. Answering "Why did the KPI change?" using decomposition
  7. Measuring the carbon footprint of pizzas
  8. Graph components with DuckDB
  9. For analytics, don't use dynamic JSON keys
  10. Metric correctness doesn't matter, consistency does
  11. Online gradient descent written in SQL
  12. Using SymPy in Python doctests
  13. Online active learning in 80 lines of Python
  14. Are Airbnb guests less energy efficient than their host?

2022 14

  1. The future of River
  2. Parsing garment descriptions with GPT-3
  3. Dynamic on-screen TV keyboards
  4. NLP at Carbonfact: how would you do it?
  5. Matrix inverse mini-batch updates
  6. A rant against dbt ref
  7. First IRL meetup with the River developers
  8. Online machine learning with River @ GAIA
  9. Fuzzy regex matching in Python
  10. OCR spelling correction is hard
  11. Comic book panel segmentation
  12. Online machine learning in practice @ PyData PDX
  13. Online machine learning in practice @ PyData PDX
  14. The online machine learning predict/fit switcheroo

2021 20

  1. Weighted sampling without replacement in pure Python
  2. Online machine learning in practice @ Applied AI
  3. Online machine learning in practice @ LVMH
  4. Online machine learning in practice @ LVMH
  5. Web scraping, upside down
  6. One year at Alan
  7. Manipulating ephemeral data with git
  8. Manipulating ephemeral data with git
  9. Dashboards and GROUPING SETS
  10. Homoglyphs: different characters that look identical
  11. Automated document processing at Alan
  12. Text classification by data compression
  13. Reducing the memory footprint of a scikit-learn text classifier
  14. An overview of dataset time travel
  15. The challenges of online machine learning in production @ Itaú Unibanco
  16. The challenges of online machine learning in production @ Itaú Unibanco
  17. Quelle est l’empreinte écologique du Big Data? @ Toulouse Tech
  18. Organising a Kaggle InClass competition with a fairness metric
  19. Converting Amazon Textract tables to pandas DataFrames
  20. What my PhD was about

2020 18

  1. Computing cross-correlations in SQL
  2. Unsupervised text classification with word embeddings
  3. Focal loss implementation for LightGBM
  4. A few intermediate pandas tricks
  5. A brief introduction to online machine learning @ Hong Kong Machine Learning Meetup
  6. A brief introduction to online machine learning @ Hong Kong Machine Learning Meetup
  7. The correct way to evaluate online machine learning models
  8. Online machine learning with decision trees @ Toulouse AOC workgroup
  9. Online machine learning with decision trees @ Toulouse AOC workgroup
  10. Server-sent events in Flask without extra dependencies
  11. I got plagiarized and Google didn't help
  12. Our solution to the IDAO 2020 qualifiers
  13. Our solution to the IDAO 2020 qualifiers
  14. Speeding up scikit-learn for single predictions
  15. Machine learning for streaming data with creme
  16. Global explanation of machine learning with sensitivity analysis @ MASCOT-NUM
  17. Global explanation of machine learning with sensitivity analysis @ MASCOT-NUM
  18. Bayesian linear regression for practitioners

2019 16

  1. Under-sampling a dataset with desired ratios
  2. The benefits of online machine learning @ Quantmetry
  3. The benefits of online machine learning @ Quantmetry
  4. The benefits of online machine learning @ Element AI
  5. Finding fuzzy duplicates with pandas
  6. A smooth approach to putting machine learning into production
  7. The benefits of online machine learning @ Airbus Bizlab
  8. Machine learning incrémental: des concepts à la pratique @ Toulouse Data Science Meetup
  9. Machine learning incrémental: des concepts à la pratique @ Toulouse Data Science Meetup
  10. Skyline queries in Python
  11. Online machine learning with creme @ PyData Amsterdam
  12. Online machine learning with creme @ PyData Amsterdam
  13. SQL subquery enumeration
  14. An approach based on Bayesian networks for query selectivity estimation @ DASFAA
  15. An approach based on Bayesian networks for query selectivity estimation @ DASFAA
  16. Morellet crosses with JavaScript

2018 3

  1. Streaming groupbys in pandas for big datasets
  2. Target encoding done the right way
  3. Stella triangles with JavaScript

2017 8

  1. Unknown pleasures with JavaScript
  2. Subsampling a training set to match a test set - Part 1
  3. Docker for data science @ HelloFresh Berlin
  4. Docker for data science @ HelloFresh Berlin
  5. Halftoning with Go - Part 2
  6. Grid paintings à la Mondrian with JavaScript
  7. A short introduction and conclusion to the OpenBikes 2016 Challenge
  8. Challenge Big Data @ TSE

2016 3

  1. Halftoning with Go - Part 1
  2. Predire la disponibilité des Velib' @ Toulouse Data Science Meetup
  3. Recursive polygons with JavaScript

2015 4

  1. The Naïve Bayes classifier
  2. An introduction to genetic algorithms
  3. Setting up a droplet to host a Flask app
  4. Visualizing bike stations live data