Leaving at the end of the week for #RecSys2026, where my students & I are doing a lot of cool stuff. Read more about it from Drexel SCIS, and hope to see you in Minneapolis! https://drexel.edu/cci/news/2026/September/strong-howley-college-presence-planned-for-recsys-2026/
Michael Ekstrand
Asst. Prof info sci @ Drexel. Trying to make information access systems (RecSys, IR, etc.) useful and equitable. Opinions my own.
prepping for the first week of the term with a fresh notebook, Hakushu single malt, and Ukrainian progressive metalcore.
uggh ubuntu why? 26.04 is finally bringing TPM-backed disk encryption, but it requires some weird snap-based kernel thing. instead of, you know, just a normal systemd initrd like debian, fedora, arch, and everyone else use. https://documentation.ubuntu.com/release-notes/26.04/changes-since-previous-interim/#resolute-tpm-fde-limitations
Going to #RecSys2026? I'll be giving a tutorial, “Continuous Automated Reproducibility: Practical Tools and Workflows for Repeatable and Reproducible Research”. Don't miss it! More details to come :)
Always seems to blow a few students’ minds when we start talking about psychology of preference and the relationship of preference to observable #recsys data, and we get to some questions:
• is the experience of utility in the moment the same as memory of that utility?
• if they are different, is our goal to recommend a movie or book the user will enjoy in the moment, or one they will remember having enjoyed?
• how might that difference affect system design or evaluation?
This is an interesting read about how database designs fall over in the face of AI agents: https://arpitbhayani.me/blogs/defensive-databases/
This. And even “fast-moving” databases like DuckDB are careful not to break code, especially standard SQL that's worked for 40 years. (This is one of the reasons I like Duck so much — I'm confident my stuff will still work, just faster, as they innovate.) https://fagnerbrack.com/learn-sql-once-use-it-for-30-years-9aceb0bdee03
Very interesting summary of different approaches to improve #python / #pydata performance: https://cemrehancavdar.com/2026/03/10/optimization-ladder/
Very thoughtful essay on #AI, science, research software, the hard work of learning, and what the actual meaningful outputs of academic research work are (spoiler: not the jupyter notebooks of data analyses). https://ergosphere.blog/posts/the-machines-are-fine/
New at my blog: keeping track of submissions and work outputs, to make it a lot easier to prepare annual / promotion review materials, compute your personal acceptance rate for your favorite conference, and more. https://md.ekstrandom.net/blog/2026/05/logbooks
Yeah. It's… bad, and also software quality has been a long-standing problem with ebs and flows.
Some of the BS in Claude Code reminded me of when I was doing Groovy metaprogramming, and finding the language had 2–3 different subsystems implementing similar capabilities, completely differently. Except worse.
Co-sign this — I find it incredibly rude to just paste ChatGPT at people. If I wanted to know what ChatGPT “thought” I would ask it myself. https://stopsloppypasta.ai/
RE: @jezdez@publicidentity.net
Thank you @jezdez@publicidentity.net and the Jazzband team for keeping a lot of things useful for its run!
The Jazzband project I use (and recommend!) the most is probably docopt-ng — it's my favorite CLI parser for in-project scripts. Separately fom Jazzband, the whole Docopt vision seems to be losing steam too, which is understandable (types are good) but also a little sad.
TIL that TOML does not allow you to write `null` and this is A Problem for one of my use cases and .
the github includes in-depth discussion of why “just leave the value unset” is not enough, but nope, no `null`.
sometimes the low-tech startup is what the moment requires. https://wheelfront.com/this-alberta-startup-sells-no-tech-tractors-for-half-price/
no *you're* writing a type unification / variable reification function for Python.
Well this is interesting. Looks a lot like the kind of things 'jj' has been working to bring to version control. https://github.github.com/gh-stack/
A tool that has become load-bearing in my setup has an incredibly high feature velocity, and… that’s a little concerning when I take time to ponder it, tbh. They’ve also shipped regressions that broke my setup. But it’s also incredibly useful.
now that python has real multithreading, time to yeet that custom multiprocessing abstraction layer. https://github.com/lenskit/lkpy/pull/1030
New one today: someone found the folder where I publish pre-release CI builds of LensKit, and reported it to the Drexel bug bounty for IP leak / dependency confusion / reverse engineering risk.
RE: @firefoxwebdevs@mastodon.social
there are no docs for this in mdn or caniuse yet, so not sure on the status of actually being able to use this, but it looks interesting.
is CSS going to match on the actual tag name, or on the tag adjusted by heading offset?
tfw the theme you use for your lab site finally hits 1.0! and it has a modular theme architecture instead of a big repo you keep merging with!
and one of the release highlights is moving from Bootstrap to Tailwind 😔.
my silly Tcl project has basic HTTP client support now… https://tcl.mde.one/guardian/http.html
Now available on my web site: preprint and reproducer code for our #RecSys2026 Research & Practice Note on Monte Carlo power analysis, with @karlhigley@recsys.social, Daniel Kluver, and Bart Knijnenburg, from our POPROX work. https://md.ekstrandom.net/pubs/poprox-power
Things like this (popping GitHub through a malicious VSCode extension) make me seriously consider going back to Emacs. https://www.bleepingcomputer.com/news/security/github-confirms-breach-of-3-800-repos-via-malicious-vscode-extension/
relatively unimportant thing that is annoying me today: my (annoyingly expensive) wifi mesh does not seem to support VLAN tagging of guest WiFi connections.
time signatures? where we're going, we don't need no consistent time signatures.
oh look more github outages (seem to be resolved now, but Actions tipped over this morning).
current python frustration: the maze of twisty weight storage formats, not all alike. Spent some time researching how to save parameters for LensKit models & pipelines with something other than pickles, and came away somewhat sad about the current state of play.
I think I can make a pretty workable solution on HDF5, though.
https://github.com/lenskit/lkpy/issues/690#issuecomment-4194748854
Do you appreciate news? Do you want to help #recsys research? POPROX News is open for subscriptions!
The Platform for OPen Recommendation and Online eXpermentation is an #NSFfunded project to help scientists and journalists explore better ways to select and present news stories. Our MVP is a daily personalized newsletter — if you'd like to receive that, and periodic surveys, sign up at https://user.poprox.ai/enroll?source=ff&subsource=memd
After signup, you'll receive a confirmation email — check spam if needed.
Adding taint support to my HTTP client script code, and running into an interesting Q. I'm requiring URLs to be untainted, but assuming the HTTP client library properly escape values, should query parameters and headers also be taint-checked?
Any friends have experience with Microsoft Loops?
It’s been suggested to me as a possible research lab wiki / knowledge base solution (within Drexel’s existing software subscriptions).
“In contributor poker, you bet on the contributor, not on the contents of their first PR.” — on PRs, community and AI-generated contributions in Zig. https://kristoff.it/blog/contributor-poker-and-ai/





