A strange mix of fear and joy.
I just deliberately killed Chrome and when I restarted just closed the dialog box asking if I wanted to restore all my tabs.
Software engineer at Bloomberg LP Views are my own he/him https://bsky.app/profile/sdowney.bsky.social https://sdowney.org/
A strange mix of fear and joy.
I just deliberately killed Chrome and when I restarted just closed the dialog box asking if I wanted to restore all my tabs.
Software engineer at Bloomberg LP Views are my own he/him https://bsky.app/profile/sdowney.bsky.social https://sdowney.org/
I spent more than an hour because the string I was formatting is used by something else as format-spec, and it was HTML with lots of % and ".
Yay.
Software engineer at Bloomberg LP Views are my own he/him https://bsky.app/profile/sdowney.bsky.social https://sdowney.org/
Software engineer at Bloomberg LP Views are my own he/him https://bsky.app/profile/sdowney.bsky.social https://sdowney.org/
"A question starts with Who, What, Where, When, Why, or How and goes up at the end."
"If it's more of a comment, hold that for a moment."
Software engineer at Bloomberg LP Views are my own he/him https://bsky.app/profile/sdowney.bsky.social https://sdowney.org/
TFW each slide could be an entire talk, and there are a *lot* of slides.
F-algebras and type fixpoint in C++26 for recursive types like expression trees is almost a drive by example.
But, by Crom, I have Traversable, which is what Applicative is for. And open extension and retro-fit.
Software engineer at Bloomberg LP Views are my own he/him https://bsky.app/profile/sdowney.bsky.social https://sdowney.org/
Software engineer at Bloomberg LP Views are my own he/him https://bsky.app/profile/sdowney.bsky.social https://sdowney.org/
In the midst of what I'm really working on for C++Now, I noticed I have a typelevel fixpoint combinator for 0 overhead recursive data types, because std::indirect is a good Box.
Expression evaluators for free now.
Compiler Explorer https://godbolt.org/z/T1G4zzd1o via @compiler_explorer@hachyderm.io
Software engineer at Bloomberg LP Views are my own he/him https://bsky.app/profile/sdowney.bsky.social https://sdowney.org/
ITS A CROSS BETWEEN TWILIGHT IMPERIUM AND CONES OF DUNSHIRE, BUT IMPLEMENTED ENTIRELY IN CATEGORY THEORY.
EVERY CONE A MONAD, AND...
Software engineer at Bloomberg LP Views are my own he/him https://bsky.app/profile/sdowney.bsky.social https://sdowney.org/
My cat, Bunny, has opinions about my code:
Software engineer at Bloomberg LP Views are my own he/him https://bsky.app/profile/sdowney.bsky.social https://sdowney.org/
Software engineer at Bloomberg LP Views are my own he/him https://bsky.app/profile/sdowney.bsky.social https://sdowney.org/
Software engineer at Bloomberg LP Views are my own he/him https://bsky.app/profile/sdowney.bsky.social https://sdowney.org/
@foonathan@fosstodon.org Doesn't compile yet on the working branch is a weird place to commit. Tests fail a little less so?
New Test Case
Test Passes
Refactor working code
Merge commit on feature branch
Integrate main merge on feature branch
Fix failing tests
Merge commit on main
Is good history when you need to look at the history of some code.
Software engineer at Bloomberg LP Views are my own he/him https://bsky.app/profile/sdowney.bsky.social https://sdowney.org/
Git linear history is a recommendation to disguise the real reasons for change for code, and to lie about the true history of the code.
All of the commits on `main` should be signed merges.
All commits on `main` are production code.
Software engineer at Bloomberg LP Views are my own he/him https://bsky.app/profile/sdowney.bsky.social https://sdowney.org/
A small snippet of code to mark up source code for transclusion into a presentation, and an example project that builds a (micro-tiny) C++ library, tests it, and generates an html page with snippets of code using emacs.
May it be of some use.
Software engineer at Bloomberg LP Views are my own he/him https://bsky.app/profile/sdowney.bsky.social https://sdowney.org/
Duh.
If you want to be able to push a `git subtree` back upstream, you can't squash the pull into your repo.
Obvious, now.
Still better than `git submodule`.
Software engineer at Bloomberg LP Views are my own he/him https://bsky.app/profile/sdowney.bsky.social https://sdowney.org/
Software engineer at Bloomberg LP Views are my own he/him https://bsky.app/profile/sdowney.bsky.social https://sdowney.org/
Software engineer at Bloomberg LP Views are my own he/him https://bsky.app/profile/sdowney.bsky.social https://sdowney.org/
LAN Party in my hotel room!
Software engineer at Bloomberg LP Views are my own he/him https://bsky.app/profile/sdowney.bsky.social https://sdowney.org/
A new idea *for me* that I'm working out about the new sender receiver model in C++26.
It's based on chaining function calls, and the call itself is an operational state, including the return value. By construction operational states are constructed exactly once (it's an object) and are completed exactly once in one of three ways, value, error, or by stopping when asked to cancel. Or one might never, because it infinite loops, I suppose.
Software engineer at Bloomberg LP Views are my own he/him https://bsky.app/profile/sdowney.bsky.social https://sdowney.org/
We have C++26!
Software engineer at Bloomberg LP Views are my own he/him https://bsky.app/profile/sdowney.bsky.social https://sdowney.org/
Note to self: laptop charges much faster when all the cables and bricks are plugged in.
Software engineer at Bloomberg LP Views are my own he/him https://bsky.app/profile/sdowney.bsky.social https://sdowney.org/
Software engineer at Bloomberg LP Views are my own he/him https://bsky.app/profile/sdowney.bsky.social https://sdowney.org/
At the C++ Standard meeting in Croydon.
No live tooting permitted.
News to be reported next Saturday.
Software engineer at Bloomberg LP Views are my own he/him https://bsky.app/profile/sdowney.bsky.social https://sdowney.org/
This morning's ridiculous new (very old) language feature:
`continue func(x, y, z);`
Transfer control to func, and return what func returns to the caller of this scope.
`return` only as a continuation and not a subroutine.
Software engineer at Bloomberg LP Views are my own he/him https://bsky.app/profile/sdowney.bsky.social https://sdowney.org/
Algorithms for Trees -- Foldable, Applicative, Traversable accepted for C++Now 2026.
Fingertree as the motivating example, but the algorithms are adaptable to any tree with a handful of functions you define.
Looking forward to Aspen in May!
Software engineer at Bloomberg LP Views are my own he/him https://bsky.app/profile/sdowney.bsky.social https://sdowney.org/
RIP Tony Hoare, March 5 2026, age 92
https://blog.computationalcomplexity.org/2026/03/tony-hoare-1934-2026.html?m=1
Software engineer at Bloomberg LP Views are my own he/him https://bsky.app/profile/sdowney.bsky.social https://sdowney.org/
TIL a trick I wish I knew ages ago.
You can add more than one Push url to a git remote. So you can have a remote named "all" that can push to all the places you mirror your pushes to.
For me, github and a local gitea instance named `mimir`.
Software engineer at Bloomberg LP Views are my own he/him https://bsky.app/profile/sdowney.bsky.social https://sdowney.org/