Sign in

Simon Marlow

@simonmar.bsky.social
663 followers 177 following 23 posts

I write code, delete email and forget to go to meetings at Meta, mainly on glean.software. Spare time: bikes and mountains.

PostsRepliesMedia
Simon Marlow @simonmar.bsky.social · 09/07/2025
There's so much I'd like to do. I've been hacking on the Haskell indexer to see if an index of (a large subset of) Hackage could be useful, see simonmar.github.io/posts/2025-0... The Angle compiler needs a lot of work, and I'd love to implement a JIT backend for the bytecode.
simonmar.github.io
Browsing Stackage with VS Code and Glean · Simon Marlow
000
Simon Marlow @simonmar.bsky.social · 09/07/2025
Interesting, that isn't a problem I've run into. The main issue was the dependencies: fbthrift, folly, and RocksDB. A while ago I disentangled fbthrift, and recent Linux distros package a new enough version of RocksDB. Folly was the last one, see progress here github.com/facebookincu...
github.com
Support cabal install glean · Issue #553 · facebookincubator/Glean
Tracking progress towards cabal install glean so that others can test it The current state is on these branches: hsthrift: https://github.com/simonmar/hsthrift/tree/hackage-0.2.0.0 Glean: https://g...
020
Simon Marlow @simonmar.bsky.social · 08/07/2025
Yep, hoping we can make it useful for non-Meta folks. And it's just fun to hack on.
110
Simon Marlow @simonmar.bsky.social · 03/07/2025
Yes, dot is used by other languages and is therefore familiar to many people, but other languages don't also use dot for a different central concept. For Haskell we should have chosen another syntax. e.g. `->` would have been better IMO. it's way too late to do anything but rant, though.
250
Simon Marlow @simonmar.bsky.social · 03/07/2025
On balance I think using dot for record selection in GHC (OverloadedRecordDot) was a mistake. Having dot be either function composition or record selection depending on whitespace is just not a good design, for either experienced or inexperienced users. 1/2
190
Simon Marlow @simonmar.bsky.social · 22/05/2025
Blog post: Indexing Hackage: Glean vs. hiedb simonmar.github.io/posts/2025-0...
simonmar.github.io
Indexing Hackage: Glean vs. hiedb · Simon Marlow
093
Simon Marlow @simonmar.bsky.social · 02/04/2025
Thrift is what we used at Meta. github.com/facebookincu... It's one of the things I call a "Big Hammer" - so useful you can't do without it, and once you buy into it for your software ecosystem, it becomes a single point of leverage. I'm in the process of putting the packages on Hackage.
github.com
GitHub - facebookincubator/hsthrift: The Haskell Thrift Compiler. This is an implementation of the Thrift spec that generates code in Haskell. It depends on the fbthrift project for the implementation...
The Haskell Thrift Compiler. This is an implementation of the Thrift spec that generates code in Haskell. It depends on the fbthrift project for the implementation of the underlying transport. - fa...
000
Simon Marlow @simonmar.bsky.social · 02/04/2025
Haha! I'd love to know which tidbits of advice have risen to this level, it might be useful if I'm reorganising things.
000
Simon Marlow @simonmar.bsky.social · 29/03/2025
Perhaps a chapter on Thrift would be a more useful replacement for the distributed-process chapter.
010
Simon Marlow @simonmar.bsky.social · 29/03/2025
Thanks, I'd forgotten about that post! How insightful 😆
110
Simon Marlow @simonmar.bsky.social · 29/03/2025
Yeah, there's actually a bounded version of mapConcurrently that we ended up using at Meta for most simple IO parallelism use cases, I'm considering adding this to async github.com/facebookincu...
github.com
hsthrift/common/util/Control/Concurrent/Stream.hs at main · facebookincubator/hsthrift
The Haskell Thrift Compiler. This is an implementation of the Thrift spec that generates code in Haskell. It depends on the fbthrift project for the implementation of the underlying transport. - fa...
040
Simon Marlow @simonmar.bsky.social · 28/03/2025
I'm thinking about a second edition of Parallel and Concurrent Programming in Haskell. Any thoughts on what should be added (or removed)? What's missing, what updates are needed to reflect common usage? The obvious new things are async and Haxl. Should the chapter on distributed-process be kept?
159016
Simon Marlow @simonmar.bsky.social · 18/03/2025
Int is 64 bits almost everywhere these days
010
Simon Marlow @simonmar.bsky.social · 01/03/2025
Probably not this time, but I'll be at Zurihac if you're coming to that?
100
Simon Marlow @simonmar.bsky.social · 01/03/2025
Mainly riding my bike probably!
010
Simon Marlow @simonmar.bsky.social · 28/02/2025
Congratulations Mary, enjoy retirement!
020
Simon Marlow @simonmar.bsky.social · 28/02/2025
Yesterday I left Meta after 12 years. Freedom feels good!
4430
Simon Marlow @simonmar.bsky.social · 19/12/2024
"Indexing code at scale with Glean" We finally got round to writing a blog post about Glean, the thing I work on. engineering.fb.com/2024/12/19/d...
engineering.fb.com
Indexing code at scale with Glean
We’re sharing details about Glean, Meta’s open source system for collecting, deriving and working with facts about source code. In this blog post we’ll talk about why a system like Glean is importa…
2163
Simon Marlow @simonmar.bsky.social · 03/12/2024
My standard code review comment: looks like it needs more Control.Exception.bracket
130
Simon Marlow @simonmar.bsky.social · 19/11/2024
If you have a bytecode interpreter and you want to make it faster, do you (a) JIT it using LLVM or (b) use Wasm or (c) something else? Given that LLVM is already a dependency (and dependencies matter), but you would like sandboxing/safety too.
110
Simon Marlow @simonmar.bsky.social · 18/11/2024
How dare you, haggis is delicious
110
Simon Marlow @simonmar.bsky.social · 17/11/2024
Did I ever show you this?
050
Simon Marlow @simonmar.bsky.social · 17/11/2024
I sometimes get compliments on my laptop stickers in meetings. Especially the one in the middle, which I tracked down after seeing it on my daughter's laptop (and who now insists on getting credit for it, ergo)
3394