Sign in

Robin Linacre

@robinlinacre.bsky.social
211 followers 354 following 95 posts

Lead developer of Splink. Data scientist at Ministry of Justice. Trustee, GiveDirectly UK. Pledgee, givingwhatwecan.org. All views my own.

PostsRepliesMedia
Robin Linacre @robinlinacre.bsky.social · 28/09/2026
We're very pleased to release Splink 5, which is now more scalable, faster to train models and lighter to install. You can find more details about the release here: moj-analytical-services.github.io/splink/blog/...
064
Robin Linacre @robinlinacre.bsky.social · 25/09/2026
In case you missed it. This has since been featured in the Data Elixir, Data Science Weekly and Quantum of Sollazzo newsletters
030
Robin Linacre @robinlinacre.bsky.social · 13/09/2026
Keep the train going for as long as possible: a game to help motivate kids to learn their times tables. rupertlinacre.com/keep_it_going/
010
Robin Linacre @robinlinacre.bsky.social · 01/09/2026
New blog: Data Science in the Age of AI www.robinlinacre.com/data_science... LLMs are the biggest shakeup to the profession I've ever experienced. The post uses examples to look at how the job has changed and how to use agents effectively.
robinlinacre.com
Data Science in the Age of AI | Robin Linacre's blog
Reflections on how AI is changing data science workflows
040
Robin Linacre @robinlinacre.bsky.social · 26/08/2026
My son loves buses! I made an app called buslens that shows you all the places you can get to by bus from near your current location, or any other location: rupertlinacre.com/buslens/ github.com/rupertLinacr...
2165
Robin Linacre @robinlinacre.bsky.social · 17/07/2026
You can now automatically turn your Splink model settings.json into a live in-browser linkage model. Simply drag in your .json and get an interactive webapp www.robinlinacre.com/splink_setti...
120
Robin Linacre @robinlinacre.bsky.social · 07/07/2026
The Splink and uk_address_matcher team will be at #IPDLN2026 next week. If you're a user and have questions or feedback, or merely Splinkerested, feel free to get in touch, we'd love to to talk to you. Also we'd would love to meet anyone who we've worked with over the years - give me a shout.
virtual.oxfordabstracts.com
OA Virtual conferences
121
Robin Linacre @robinlinacre.bsky.social · 01/07/2026
We've released a new dev (beta) version of Splink 5 today which you can install using pip install splink==5.0.0.dev4. This is very close to the final code we expect to release in Splink 5 (expected in September), so please do give it a try and let us know if you find any issues.
240
Robin Linacre @robinlinacre.bsky.social · 09/06/2026
Arithmetic annihilation - a tower defence game for primary school kids to learn maths. (Same as vocab annihilation but with maths) Works on mobile and desktop. rupertlinacre.com/arithmetic_a... For best experience on mobile, install as an app ('add to home screen' from Chrome)
020
Reposted by Robin Linacre
Chris Kenny, PhD @chriskenny.bsky.social · 21/05/2026
If you do record linkage in #rstats, I'd love your feedback on irelink: Fast Probabilistic Record Linkage. It is a port of Python's splink package, rewritten with a clean, pipeable R interface. All of the magic happens in a database backend (default is DuckDB) so it's incredibly fast.
Find duplicate records within a single dataset. The bundled fake_20 dataset provides a small example for experimentation. irelink pushes data into a SQL database for efficient pair generation, so you need a DBI connection. Here we use an in-memory DuckDB instance.An il_spec describes the linkage model: which fields to compare, how to compare them, and which blocking rules to apply. Blocking rules restrict which record pairs are generated. Only pairs that share a surname or first name are scored, keeping computation manageable. il_estimate_u() estimates parameters for non-matching pairs via random sampling, and il_estimate_em() refines the match-weight parameters using Expectation-Maximization.
spec <- il_spec() |>
  il_compare(first_name, cl_jaro_winkler(0.9, 0.7)) |>
  il_compare(surname, cl_jaro_winkler(0.9, 0.7)) |>
  il_compare(dob, cl_exact()) |>
  il_block_on(surname) |>
  il_block_on(first_name)

model <- il_model(df, spec = spec, con = con)
model <- il_estimate_u(model)
model <- il_estimate_em(model, block_on(surname))
predict() scores all candidate pairs and returns those above the match-probability threshold. The returned match_weight is the evidence-only log2 Bayes factor; total_match_weight adds the prior odds used to compute match_probability. il_cluster() groups the matched pairs into deduplicated entities.
2174
Robin Linacre @robinlinacre.bsky.social · 06/06/2026
My free letterpaths library now has: - A freehand writing app for use with stylus - Print and pre-cursive worksheet gen - A font (.otf, .ttf, .woff2) that you can use in desktop apps eg Word or on web - Capital letters - Kerning between each letter pair set manually www.robinlinacre.com/letterpaths/
131
Robin Linacre @robinlinacre.bsky.social · 26/05/2026
Vocab annihilation, a kids' game for learning new words rupertlinacre.com/vocab_annihi... Code: github.com/RupertLinacr...
010
Robin Linacre @robinlinacre.bsky.social · 18/05/2026
New blog: Optimising DuckDB performance on large EC2 instances. A few simple changes can make workloads run multiple times faster: - Fewer threads can result in higher performance - Pay careful attention to disk I/O - Experiment with how to write data to S3 www.robinlinacre.com/optimising_d...
081
Reposted by Robin Linacre
Cambridge University History Faculty @camhistory.bsky.social · 05/05/2026
How @camunicampop.bsky.social researchers are turning static snapshots of Victorian Britain into dynamic life histories. The team are linking over 200 million census records, revealing how people moved, worked and lived in ways never before possible. 🔎 Read on 👉 www.hist.cam.ac.uk/news/tracing...
How researchers are linking over 200 million census records to transform historical research
310250
Robin Linacre @robinlinacre.bsky.social · 28/04/2026
Continuing on my search for good game mechanics for maths games for kids. This one is a lane crossing game: rupertlinacre.com/number_lanes/ This seems to work well because it's fun (at least accordingly to my 7yo), but there's no time pressure to answer the questions.
100
Robin Linacre @robinlinacre.bsky.social · 21/04/2026
Introducing letterpaths 1.0, free software for teaching cursive writing. Blog w/ examples, videos + worksheet generator: www.robinlinacre.com/letterpaths_... As far as I can tell, this is the best free and open source library for building handwriting tools according the the UK curriculum
121
Robin Linacre @robinlinacre.bsky.social · 14/04/2026
As capabilities have improved, I am increasingly sceptical of the description of LLMs as a 'calculator for words', and the idea that they excel at semantics, because their rate of improvement in these areas seems extremely modest in comparison to things like coding and tool use
000
Robin Linacre @robinlinacre.bsky.social · 04/04/2026
Here's an example of how my `letterpaths` library can be used to power a game, intended for phones/other touchscreen devices Game: www.robinlinacre.com/letterpaths/... Code: github.com/RobinL/lette... The game can be installed as an android app so it can be used fullscreen. It's free+open source
010
Robin Linacre @robinlinacre.bsky.social · 03/04/2026
Developing a cursive writing typescript library capable of powering educational apps. It's free an open source and has: - Geometry for each letter - Algorithm for joining letters - Algorithm for animating cursive writing - Algorithm for tracing/path finding Link in 🧵
121
Robin Linacre @robinlinacre.bsky.social · 30/03/2026
Finding working with agents all day a bit mind bending. Always having to think about how to enable an agent to do good work, and how it verifies its work.
100
Robin Linacre @robinlinacre.bsky.social · 29/03/2026
After a period of stagnation in UK solar nice to records starting to be broken again in 2025 and now 2026 by significant margins
000
Robin Linacre @robinlinacre.bsky.social · 22/03/2026
The country quiz now has: - Capital cities mode - Single continent mode - 'What country is highlighted' mode (following a travelling salesman route) - More detailed borders - 4k mode, with much bigger map - Choice of map projection rupertlinacre.com/country_quiz/ Access via options menu.
221
Robin Linacre @robinlinacre.bsky.social · 18/03/2026
Reading The Baroque Cycle - King of the Vagabonds (2003). This quote hit me: “What does the Doctor want?” “To translate all human knowledge into a new philosophical language, consisting of numbers. To write it down in a vast Encyclopedia that will be a sort of machine...
100
Reposted by Robin Linacre
Alexis Litvine @alexislitvine.bsky.social · 17/03/2026
In the next five years, we are going to do LOTS of census linking 🔗🔗🔗🔗🔗, produce new transcriptions of all UK censuses 1841-1921, and use these to study migrations and demographic transitions, thanks to @ukri.org ! Sneak peek at: www.geolinking.hist.cam.ac.uk
geolinking.hist.cam.ac.uk
geolinking.hist.cam.ac.uk
4135
Robin Linacre @robinlinacre.bsky.social · 13/03/2026
uk_address_matcher v1.0.1 is released: - Hugely reduced memory usage, especially when matching to full UK. - Over 30% faster - Now supports duckdb 1.4.4 and 1.5.0 - New docs on choosing a matching threshold and optimising accuracy here: moj-analytical-services.github.io/uk_address_m...
021
Robin Linacre @robinlinacre.bsky.social · 07/03/2026
I have been enjoying playing Sporcle's countries of the world quiz with my son, so I made a fancier version. Play here: rupertlinacre.com/country_quiz/
200
Robin Linacre @robinlinacre.bsky.social · 04/03/2026
We are pleased to release `uk_address_matcher`, a free Python package for address matching and geocoding, developed by Tom Hepworth and me. The package has several aims: simplicity, speed and accuracy.
UK Address Matcher logo
1299
Reposted by Robin Linacre
Nadieh Bremer @nadiehbremer.com · 12/02/2026
📣 NEW! I’ve just released the BIGGEST and perhaps most creative project I’ve ever worked on! “Searching for Birds” searchingforbirds.visualcinnamon.com 🐤 A project, an article, an exploration that dives into the data that connects humans with birds, by looking at how we search for birds.
26503181
Robin Linacre @robinlinacre.bsky.social · 23/01/2026
In case you missed it: New blog: Respectful use of AI in software development teams www.robinlinacre.com/respectful_u... LLMs are increasingly able to write production quality code. But what cognitive work can be delegated to LLMs without damaging the health of the team?
robinlinacre.com
010
Robin Linacre @robinlinacre.bsky.social · 20/01/2026
For anyone with FOMO wondering whether to pay for Opus 4.5/Claude Code, my experience is that OpenAI Codex is very similar in performance. i.e. both are excellent, but Claude Code is not a magic unlock
120
Reposted by Robin Linacre
Arthur Turrell @arthurturrell.bsky.social · 20/01/2026
Excited to be a part of the initiative to "Move Fast and Fix Things", announced in Chief Secretary to the Prime Minister's speech today. One measure is an expansion of the No10 Innovation Fellowship, for which we've launched a new website! fellows.ai.gov.uk Speech: www.gov.uk/government/s...
021
Robin Linacre @robinlinacre.bsky.social · 12/01/2026
New blog: Respectful use of AI in software development teams robinlinacre.com/respectful_u... LLMs are increasingly able to write production quality code. But what cognitive work can be delegated to LLMs without damaging the health of the team?
071
Robin Linacre @robinlinacre.bsky.social · 06/12/2025
Made a simple game to help my daughter learn her alphabet. Took about 1 day for full code, >200 images >200 voice files and music nano-banana-pro is incredible. But it's also so quick to vibe code image and audio processing scripts. robinlinacre.com/bee_letters/ github.com/RobinL/bee_l...
110
Robin Linacre @robinlinacre.bsky.social · 30/11/2025
I struggle to find no-nonsense, free and 'fun'(ish) maths games for my son (7yo) so I have been making a few Here's another one: Maths vs monsters. This is his fav so far rupertlinacre.com/maths_vs_mon... Code: github.com/rupertLinacr... Other games/maths utilities: rupertlinacre.com
010
Reposted by Robin Linacre
OpenUK @openuk.bsky.social · 04/11/2025
OpenUK Awards 25 Open Data Category sponsored by Open Data Institute, Shortlist is live, congratulations to the shortlisted nominees: Ministry of Justice UK Splink Team (@robinlinacre.bsky.social), OpenActive, and UK Power Networks (Yiu-Shing Pang) 🍾🥂🏆 #openukawards #opensource #opendata
041
Reposted by Robin Linacre
Owen Boswarva @owenboswarva.bsky.social · 28/10/2025
More progress on #openaddresses: Islington Council in London has released its Council Tax address list for re-use as #opendata under the Open Government Licence www.owenboswarva.com/blog/post-ad... I've made a geocoded version by adding coordinates from ONS #FOI #localgov #UKhousing #proptech
Screenshot of sample of Islington's Council Tax address data, visualised in Google Earth
033
Robin Linacre @robinlinacre.bsky.social · 24/09/2025
New ✨interactive✨ explainer: Address matching using a fault tolerant trie: robinlinacre.com/fault_tolera... Which illustrates a powerful technique for address matching that we're currently working on building into uk_address_matcher (github.com/moj-analytic...)
110
Robin Linacre @robinlinacre.bsky.social · 18/08/2025
When working a complex postgres schema, I find it time consuming to figure out the joins. I had an idea: a 'join generator' that traverses the relationship graph for you, and writes the joins. You give it a dump of the postgres schema, and it gives you a UI. www.robinlinacre.com/vite_live_pg...
110
Robin Linacre @robinlinacre.bsky.social · 22/07/2025
We're working on a DuckDB community extension called `splink_udfs` to add some record linkage related functions to DuckDB. It's currently very much WIP, but you can already use it wherever you're using DuckDB. github.com/moj-analytic...
060
Robin Linacre @robinlinacre.bsky.social · 15/07/2025
If you're using Splink with DuckDB you should see significant speed improvements by updating to DuckDB 1.3.x. You can also add more granularity to your comparison levels statements without an impact on run times. Depending on your model spec, it could be twice as fast or better.
github.com
Speed enhancement: 'Pushing up' common elements of CASE statements into reused computations by RobinL · Pull Request #2738 · moj-analytical-services/splink
This is a clean rewrite of #2630. The rationale is explained further in #2580, but in a nutshell it eliminates repeated computations of potentially expensive functions in some backends, e.g CASE ...
120
Robin Linacre @robinlinacre.bsky.social · 11/07/2025
My most commonly used pattern for AI coding: Dump entire source code into Gemini 2.5 pro, write prompt specifying what I want, and then: Give precise instructions for an LLM to follow to implement this feature. Break the solution down into steps where each step is verifiable.
110
Robin Linacre @robinlinacre.bsky.social · 05/07/2025
I have been working on a free, high performance address matcher. I've written up some key tricks, techniques, and ideas into a blog post here: www.robinlinacre.com/address_matc...
robinlinacre.com
Building Accurate Address Matching Systems
A bag of tricks to improve the accuracy of geocoding
130
Robin Linacre @robinlinacre.bsky.social · 22/05/2025
The 'build' button in google AI studio is unbelievably good. I had an idea to visualise fractions, three prompts total and it's pretty close to something useful (it does this for any arbitrary fractions). Even the one-shot attempt was pretty good
110
Robin Linacre @robinlinacre.bsky.social · 17/04/2025
My PyData Global talk "Rapid deduplication and fuzzy matching of large datasets using Splink" is now on Youtube: www.youtube.com/watch?v=eQtF...
youtube.com
Robin Linacre - Rapid deduplication and fuzzy matching of large datasets using Splink
YouTube video by PyData
041
Robin Linacre @robinlinacre.bsky.social · 04/04/2025
I see too much focus on trying to find applications of LLMs to help other people 'at scale' with their jobs. At the moment, the output of LLMs is rarely useful for business rules or passive consumption. The lower hanging fruit is helping people use AI directly & however they see fit in their job.
030
Robin Linacre @robinlinacre.bsky.social · 02/04/2025
000
Robin Linacre @robinlinacre.bsky.social · 01/04/2025
If you're using duckdb in a python script or jupyter notebook, you can run con.execute('CALL start_ui()') at any point, and the ui will pop right up in your web browser with the current database automatically available. (I knew about the UI, but I had missed this trick!)
062
Robin Linacre @robinlinacre.bsky.social · 29/03/2025
Gemini 2.5 pro is really good. Grok 3 felt like a big step forwards and was my 'go-to' for hard problems, and this feels like another significant step forward. So nice with small codebases to be able put everything into context (I use github.com/simonw/files... )
github.com
GitHub - simonw/files-to-prompt: Concatenate a directory full of files into a single prompt for use with LLMs
Concatenate a directory full of files into a single prompt for use with LLMs - simonw/files-to-prompt
010
Reposted by Robin Linacre
David Gasquez @davidgasquez.com · 20/03/2025
Ended up writing a follow up post with the final approach and learnings from getting this running on GitHub Actions! All original datasets weight more than 500GB combined. The final ones published on 🤗, only 1 GB. Took some tinkering to get there but was fun! davidgasquez.com/exporting-in...
davidgasquez.com
A few months ago, I found myself downloading and converting all Spain’s National Institute of Statistics datasets to Parquet with the hope of making them easier to access and faster to use. Basically, I did a one time export with a bunch of bash scripts and some aria2c magic.
161
Robin Linacre @robinlinacre.bsky.social · 16/03/2025
New blog: Why DuckDB is my first choice for data processing: www.robinlinacre.com/recommend_du...
robinlinacre.com
Why DuckDB is my first choice for data processing
Why DuckDB has become my go-to tool for data processing, offering simplicity, speed, and powerful features.
04311