Sign in

Thomas Marsh

@thomasmarsh.bsky.social
138 followers 415 following 118 posts

FP, formal methods, urban planning

PostsRepliesMedia
Thomas Marsh @thomasmarsh.bsky.social · 01/10/2026
Is the name an intentional overlap with “Astor Place”? 🙂 Congrats on the launch!
110
Thomas Marsh @thomasmarsh.bsky.social · 30/09/2026
This is exciting! I was just reproducing some PPO and Gumbel AlphaZero results on various games. Stratego was one of the games coming up on my list! Looking forward to reading this more closely
120
Thomas Marsh @thomasmarsh.bsky.social · 25/09/2026
Programming languages are passé. LLMs should speak high leverage formal specification IR and lower that to executable IR which translates to your kernel primitives and JIT CPU/GPU instructions.
010
Thomas Marsh @thomasmarsh.bsky.social · 19/09/2026
My daughter saw this and immediately asked, “can you pop the bubble?” I said “no”, and she immediately lost interest
012
Thomas Marsh @thomasmarsh.bsky.social · 18/09/2026
Data 70: www.identifont.com/show?2SS
identifont.com
130
Thomas Marsh @thomasmarsh.bsky.social · 14/09/2026
Do they make noises? I feel like there should be sound when you zoom in.
110
Thomas Marsh @thomasmarsh.bsky.social · 14/09/2026
Apologies for the AI use, but I wanted to explore this in Oleg's visual style. Probably a lot of errors - I know spent too much time trying to get this even to this point. Script to generate it: gist.github.com/thomasmarsh/...
111
Thomas Marsh @thomasmarsh.bsky.social · 12/09/2026
Just throw Glass in there to round things out.
120
Thomas Marsh @thomasmarsh.bsky.social · 20/08/2026
At first glance I thought this was some zalgo text
010
Thomas Marsh @thomasmarsh.bsky.social · 11/08/2026
If you don’t have one already, a microscope is an amazing investment and exciting rabbit hole! You can easily get great images with a smartphone too.
100
Thomas Marsh @thomasmarsh.bsky.social · 03/08/2026
In terms of all the perils of request/response enums you listed, I would be more generous: the risk really depends, and might be totally fine. More important to know the design risks than outright reject an option. Maybe you can chase the problem in property based tests or BFS the state space.
000
Thomas Marsh @thomasmarsh.bsky.social · 03/08/2026
You can get correct-by-construction guarantees at compile time (with type system support or code gen). You still have to make important domain-dependent design decisions no matter what.
210
Thomas Marsh @thomasmarsh.bsky.social · 03/08/2026
You may be interested in session types. This problem is identical to the problem of ensuring a state machine takes only valid transitions or how it should handle invalid ones.
100
Thomas Marsh @thomasmarsh.bsky.social · 25/07/2026
So refreshing to see some nice bokeh! And that’s a sweet cat!
130
Thomas Marsh @thomasmarsh.bsky.social · 21/07/2026
I agree it is useful to challenge preconceptions, but arena allocation is pretty common in C++ where throughput becomes a concern. There are also drop in GC and custom allocators (which rust also supports). So I think the overall answer is: it depends.
010
Thomas Marsh @thomasmarsh.bsky.social · 05/06/2026
I suggested to Claude that it just apply the coyoneda trick and it went straight into an infinite loop.
010
Thomas Marsh @thomasmarsh.bsky.social · 30/05/2026
Scary type inference problem in my opaque domain: Claude instantly offers a pure, crystalline, non-obvious truth. Ask it to add a row to my markdown table: Claude eagerly rolls up sleeves and gets right to work. RIP my tokens.
000
Thomas Marsh @thomasmarsh.bsky.social · 21/05/2026
Have you looked in to Poly? It seems like a natural setting for parsing, and the morphisms are exactly lenses, which gives you bidirectionality for free!
100
Thomas Marsh @thomasmarsh.bsky.social · 13/11/2025
I don’t understand quantum theory, but this book is always a joy to come back to.
Preface to “Picturing Quantum Processes” showing photos with caption “Some typical sights of Tulsa, Oklahoma” picturing a pawnshop dealing in Gold, Diamonds and Guns; a statue known as the world’s largest praying hands; a triple decker hamburgerA photo from the preface to “Picturing Quantum Processes” with caption “Aleks’ beard growth as correlated with textbook completion” (photos depicting same)Cover of “Picturing Quantum Processes” by Bob Coecke and Aleks Kissinger
010
Thomas Marsh @thomasmarsh.bsky.social · 13/09/2025
Nice! I’ve been looking for a recording of her Fantaisie for harpsichord without any luck.
030
Thomas Marsh @thomasmarsh.bsky.social · 05/09/2025
What are the contenders you have in mind? What do you see as a good balance between rigorous types and architectural approaches?
010
Thomas Marsh @thomasmarsh.bsky.social · 05/09/2025
Not suggesting testing is not needed. We employ unit tests, integration tests, type directed programming, semi formal methods (TLA+), and more rigorous proofs of correctness for specific sub problems. Right tool for the job. But tests are code you have to maintain and slow you down. Types help.
010
Thomas Marsh @thomasmarsh.bsky.social · 05/09/2025
I agree it is necessary to always challenge these assumptions. Types feel slower at first, so you have a runtime error/flexibility tradeoff. In my experience types are always worth it. But it took me many years to arrive at that position.
010
Thomas Marsh @thomasmarsh.bsky.social · 05/09/2025
These days, I mostly domain model in types and then the architecture and implementation trivially fall out of that, establishing the modularity the author seeks. He gives no methods. And his example ignores the static and dynamic testing rigor IC designers employ due to their lack of type safety.
120
Thomas Marsh @thomasmarsh.bsky.social · 05/09/2025
Sure, find good modular boundaries and establish good contracts. If your system is static and very well understood you can build it in assembly if you want and harden it over time. But for anything else, types are the tests you don’t have to write.
110
Thomas Marsh @thomasmarsh.bsky.social · 05/09/2025
I’m always skeptical of “just build software better” arguments. There is a spectrum of software correctness, and types are one of the cheapest approaches. The argument falls apart when system boundaries are incorrect and need refactor. The antipatterns mentioned (class hierarchies?) are now rare.
210
Thomas Marsh @thomasmarsh.bsky.social · 24/08/2025
You can also just immerse the tube in the source and pinch it or cover one end of the tube with your thumb. Then pull out that end of the tube to a lower height and release your thumb to start the siphon.
000
Thomas Marsh @thomasmarsh.bsky.social · 20/08/2025
Is this state machine thinking related to defunctionalization, which takes higher ordered functions (maybe in your type checking implementation) and turns them into state/action applications? Love the visualization!
110
Thomas Marsh @thomasmarsh.bsky.social · 16/08/2025
I wrote my first Quint spec today. It was fun and easy to pick up! It's like TLA+ and TypeScript had a baby. Has some obvious room to grow: you have to be gentle with the syntax and type errors to get good diagnostics. Otherwise, seems like a good alternative to Alloy or TLA+ for simple specs!
quint-lang.org
Quint - Executable Specification Language
A modern and executable specification language
120
Thomas Marsh @thomasmarsh.bsky.social · 05/08/2025
I still have my copy of “Haskell: The Craft of Functional Programming”, which I picked up in the 90s and skimmed briefly. I decided at the time to invest in C++ and focused on good imperative programming until I came back to learn Haskell 18 years later out of curiosity.
010
Thomas Marsh @thomasmarsh.bsky.social · 04/08/2025
I can’t remember the last time I was at a house where people kept their shoes on indoors. I think this has changed a lot. Everyone I know takes their shoes off and people almost always ask if they should take their’s off when entering a house.
010
Thomas Marsh @thomasmarsh.bsky.social · 27/07/2025
That should say 1600 CE, not 600. This whale effigy seems to be from the Montreal Museum of Fine Arts: www.mbam.qc.ca/en/works/2375/
mbam.qc.ca
Whale Effigy
The Montreal Museum of Fine Arts, a bold, innovative and caring museum that is welcoming to all disciplines such as the visual arts, history and science.
0151
Thomas Marsh @thomasmarsh.bsky.social · 18/07/2025
I just learned enough ocaml to see how verbose the alternative to type classes is using modules and “functors”. Still wrapping my head around modules, but it definitely seems like code smell boilerplate to me. Are there other arguments against type classes?
120
Thomas Marsh @thomasmarsh.bsky.social · 13/07/2025
I think the human propensity for pattern recognition was strong, but the timeless way of building was not yet established. GoF started with Volume 2.
010
Thomas Marsh @thomasmarsh.bsky.social · 01/07/2025
“Upstate is anything north of 110th St.” is the joke answer.
020
Thomas Marsh @thomasmarsh.bsky.social · 25/06/2025
You can also take a train to a beach and swim in the ocean. If you take the Q you get a nice view going over the bridge too. Coney Island is worth a visit. But it’s a ways out there. There are nicer beaches if you take the right A train to the rockaways.
010
Thomas Marsh @thomasmarsh.bsky.social · 25/06/2025
Philip Zucker is my Z3 documentation.
020
Thomas Marsh @thomasmarsh.bsky.social · 24/06/2025
NYC busses are underrated. The subway is oppressive compared to other city metros.🙁
120
Thomas Marsh @thomasmarsh.bsky.social · 24/06/2025
Just Manhattan or are you planning to check out Brooklyn too? Enjoy your visit!
110
Thomas Marsh @thomasmarsh.bsky.social · 11/06/2025
Did you by chance run across the linked paper here? I skimmed it, but it seems like a reasonable attempt at teasing out the limits of reasoning with respect to actual reasoning tasks.
000
Thomas Marsh @thomasmarsh.bsky.social · 05/06/2025
Wish I could hear this talk. These bullets don’t make total sense to me. Some are known implementation patterns for feature flags, some suggest “just build it right the first time”, and GoF could mean anything (and is mostly just partial application patterns). Still very curious though
110
Reposted by Thomas Marsh
Susan Potter @susanpotter.net · 25/05/2025
Nobody cares about correctness and do cheap things first are great takeaways from this but this article illustrates these and other points especially well: www.galois.com/articles/wha...
galois.com
What Works (and Doesn't) Selling Formal Methods
0112
Thomas Marsh @thomasmarsh.bsky.social · 23/05/2025
Jason Hickle singled out China, not me. But you are right, you have to look at all company investments and holdings globally. Follow the money and only then can you make any claims about which countries hold most responsibility. I do think it is a misguided metric.
020
Thomas Marsh @thomasmarsh.bsky.social · 23/05/2025
What is the new Erlang? (Please let it not be Kubernetes orchestration.)
010
Thomas Marsh @thomasmarsh.bsky.social · 20/05/2025
If you take the perspective that much of advanced Haskell is working around lack of dependent types (like you would find in theorem provers), then I posit Haskell is indeed a gremlin language.
060
Thomas Marsh @thomasmarsh.bsky.social · 20/05/2025
Disingenuous. You cannot make this claim without tracking indirect Chinese investments. Looking strictly at corporate domicile is absolutely pointless in our globalized economy
130
Thomas Marsh @thomasmarsh.bsky.social · 18/05/2025
It is subtle but is builds flawed foundations. If you take arrays as input there is no confusion
010
Thomas Marsh @thomasmarsh.bsky.social · 18/05/2025
Alice is absolutely right. A naive reading of this can correctly say the runtime is O(n^2), but that doesn’t paint the whole picture. For scaling we need to understand if you are measuring size (of an array) vs a number. One scales and the other is useless for large numbers.
110
Thomas Marsh @thomasmarsh.bsky.social · 13/05/2025
I can barely find my way around tools like Rocq, Lean, or Agda, but I am really excited about this field of research! I am very much looking forward to your work!
110
Thomas Marsh @thomasmarsh.bsky.social · 13/05/2025
I was interested in Scala when I was learning Haskell, but I was turned off by some members of the community. I have no impression of the Kotlin community, but it did seem cool how much they could do with compiler plugins. Still not sure where to migrate our legacy Java 8 code…
020