Laurence Tratt
@ltratt
Shopify / Royal Academy of Engineering Research Chair in Language Engineering.
A couple of months ago I mangled together a sequence of parametric EQ settings that corrected my (horrible) office acoustics. It turns out that what I really wanted was DRC, which creates an impulse response, which is far more complete! The before/after is quite astonishing.
New post: Local Reasoning for Global Properties. Could programming language design come to the rescue? tratt.net/laurie/blog/...
Just pointed at this HN comment: no, I haven't ever taken over LuaJIT! We did have a project some years ago to look at extending LuaJIT on which Tom Fransham did excellent work. Alas, the funder's priorities moved on (as is their right!), so we didn't get to finish it.
New post: Test-case Reducers Are Underappreciated Debugging Tools. The more I've used these tools, the more ways I realise they can be used! This post starts at the basics and works up to things like reducing on properties other than just the length of the input. tratt.net/laurie/blog/...
This weekend I visited The Herschel Museum of Astronomy in Bath: a small but perfectly formed museum in the building where he discovered Uranus. What I did not know is that he discovered infrared; if I had known, I still would not have expected to see the actual device he used!
My simple shell version of "ETA for rsync" found more users than I expected. After some useful suggestions, I've rewritten it in Rust, and it now shows sends (green)/dels (red) as it progresses, doesn't stall on big files, and has a (better) sliding-window ETA.
rsync is great but doesn't provide ETAs. rsyncp is a simple tool to do just that: it remembers the previous rsync's elapsed time and total files and reuses those on the next run. Here's an example: on the first run it has no idea how long things might take but it does thereafter.
C interpreters underlie many of our most widely used language implementations -- but they're slow. Wouldn't it be great if we could turn them into JIT compiling VMs? This video shows what happens when we do just that to the normal Lua VM (first) and "yklua" (Lua w/JIT, second).
At Wells this morning, we saw a Palm Sunday procession that - to the extent anything can trace itself back this far - seems to have started around 800 years ago, including hidden singers in the Cathedral's front. There was certainly plenty of incense which was distributed around by the strong winds!
Scratched a Rust itch with an experimental new crate `test_stubs`. I have traits with lots of methods. "Proper" code should implement all methods, but test code need not. `test_stubs` means that test code doesn't have to manually create `todo!()` methods.
I was recently asked how I choose what podcasts I listen to, and paused. Then I realised it's similar to how I choose what to read. In particular, for current affairs, I actively try to avoid just reinforcing my current opinions. I think this has helped make me wrong less often!
A few weeks ago I gave a talk "Some Things I've Learned About Software" that was unusual for me. I didn't program in it once. I didn't mention specific technologies. Instead I tried to look at the high-level things about software that I've slowly understood. www.youtube.com/watch?v=RJgD...
This year's weather has apparently decided it's not going to muck around with any of that nonsense in the 5-12C range. On the plus side, some of my "summer" walks are doable again and they look lovely in the cold mornings!
New post: "Async and finaliser deadlocks", based on an accidental poke from a recent episode of the excellent @oxide.computer podcast tratt.net/laurie/blog/...
New post: "What Context Can Bring to Terminal Mouse Clicks", explaining how one can click on filenames with line numbers in my terminal and have the "correct" editor instance jump to that file and line. A hack, or pragmatic use of existing tools? You decide! tratt.net/laurie/blog/...
Although I'd prefer it if the trees stayed green all year around, if the leaves are going to fall, I'm rather happy that they do so in such a colourful way. It brings a new way of looking at old favourites.
Here's a visualisation of the evolution of our "Garbage Collection for Rust: The Finalizer Frontier" paper. The animation renders each git commit in the paper's history as a frame, with the time of the commit shown in the bottom right. The full hi-res version can be found at youtu.be/zC866HybCp8
New paper with @jakehughes.uk : Garbage Collection for Rust: The Finalizer Frontier. There are lots of GCs for Rust: we tried pushing as far as we could in a new direction, particularly looking at what can be done about the headache that is finalizers.
I sometimes wonder to myself: what do normal folk think when they see the result of a (classic) software bug like the below?
When I upgraded my OpenSSH a couple of weeks back, I started getting some surprising (to me) warnings when using GitHub. I'm not sure I'd enjoy being the person who has to upgrade the fleet of servers that are now being fingered as culprits!
I have been a Unix user for a... long time... yet only today did I accidentally discover that `:` is a built-in shell no-opt.
New post: Comparing the Glove80 and Maltron keyboards tratt.net/laurie/blog/...