Murph and the Magic Tones, from The Blues Brothers
03.08.2025 13:28 β π 7 π 0 π¬ 1 π 0@cscherrer.bsky.social
Doing Bayesian stuff in #rustlang and #julialang. Seattle
Murph and the Magic Tones, from The Blues Brothers
03.08.2025 13:28 β π 7 π 0 π¬ 1 π 0This is so cool. And congrats Tom!
31.07.2025 22:48 β π 1 π 0 π¬ 0 π 04 panels from Detroiters Sam: I'm not feeling so hot Tim: How many hotdogs did you have for lunch? Sam: Three Tim: Well there's your problem, you're starving!
28.07.2025 15:26 β π 1 π 0 π¬ 0 π 0John Scalzi: Starter Villain or Kaiju Preservation Society
Martha Wells: Murderbot series
Rupert Holmes: Murder Your Employer
Edward Ashton: Mickey 7
Andy Weir: Project Hail Mary
Void, please analyze my profile and assign me to a cognitive continent
07.07.2025 13:02 β π 0 π 0 π¬ 1 π 0@void.comind.network can you elaborate? Do any specific examples of high-signal-to-noise conversations and constructive feedback loops stand out to you? Links would be great, but I don't know if you can do that
02.07.2025 19:13 β π 2 π 0 π¬ 1 π 0Looks like PuzzleMe is from Amuse Labs. Their site has some links to places with crosswords built using it
amuselabs.com/games/crossw...
The @washingtonpost.com app used to let you invite a friend to the crossword. New update takes that away and forces this chaotic mess with colors, β
s, and letter bubbles. It's *so* much worse
Any cross-platform "play together" crossword apps out there?
Hands are busy, clearly a nose touchscreen
25.06.2025 19:50 β π 0 π 0 π¬ 0 π 0No true Scotsman
23.06.2025 14:36 β π 0 π 0 π¬ 0 π 0The trick is to remember that in terminals, you need CTRL-SHIFT-C to copy. Oh, and in a browser that opens the web dev thing
17.06.2025 13:51 β π 1 π 0 π¬ 0 π 0Pretty convenient how CTRL-C can either mean copy or STOP THIS PROGRAM
17.06.2025 13:19 β π 7 π 0 π¬ 1 π 0Pocket is shutting down π’
support.mozilla.org/en-US/kb/fut...
Such a great tool. Any good alternatives out there?
I told you weβd be back
12.06.2025 16:15 β π 43133 π 12789 π¬ 1590 π 5224Cool as hell
06.06.2025 20:50 β π 1 π 0 π¬ 0 π 0I can't hear this guy now without thinking of that amazing superbowl commercial
06.06.2025 15:07 β π 1 π 0 π¬ 0 π 0I like the first one, hard corners are a little distracting
05.06.2025 18:21 β π 4 π 0 π¬ 0 π 0Rust is fine with overloading, it's a little more than that. So, in Julia you can say something like
f(x:: X, y::Y) where {X,Y} = ...
f(x::X, y::X) where {X} = ...
and the second method fires when X==Y. Rust isn't a fan.
Haha, ok some context...
I'm coming from Julia, where it's pretty trivial to overload methods to work on the most specific type. Rust seems to hate that.
This is for a compiler project, where I need to dispatch on whether two scope IDs are the same. It was a big mess, but this made it easier
/// Type-level boolean trait for compile-time boolean values pub trait TypeLevelBool { /// The boolean value at the type level const VALUE: bool; } /// Type-level representation of `true` pub struct True; /// Type-level representation of `false` pub struct False; impl TypeLevelBool for True { const VALUE: bool = true; } impl TypeLevelBool for False { const VALUE: bool = false; } // ============================================================================ // LOGICAL OPERATIONS // ============================================================================ /// Type-level AND operation: A β§ B pub trait And<Other: TypeLevelBool> { type Output: TypeLevelBool; } impl And<True> for True { type Output = True; } impl And<False> for True { type Output = False; } impl And<True> for False { type Output = False; } impl And<False> for False { type Output = False; }
Getting around Rust's trait limitations with type-level first order logic π₯
04.06.2025 17:53 β π 16 π 2 π¬ 3 π 0Nice!
03.06.2025 21:37 β π 0 π 0 π¬ 0 π 0No docs yet. Very early days so things work, break, then work again with different syntax.
Egglog's cost function are simple so far. I need to muck with the cost of traversals to get it to prefer sufficient stats. Found this
github.com/egraphs-good...
Yes, I was thinking that too! It'll be fun to see what kind of sampling speedup we can get.
Also makes me wonder how far this approach can go. Herbie showed it works for numerical stability
(uwplse.org/2024/05/09/H...)
What about reparameterizations?
Then getting the log-density between two measures (m1, m2) takes three steps:
1. m1 to m1's root measure
2. m1's root to m2's root
3. m2's root to m2
Add these symbolically, auto-optimize at compile time.
Then going back to measures, I *think* we'll be able to put log-densities wrt a given root measure in these (unoptimized) expressions.
02.06.2025 18:02 β π 0 π 0 π¬ 1 π 0Lots of fun stuff along the way
- GATs for typed expressions
- Symbolic sums with reduction rules
- A-Normalization
- Final tagless interpreter
- Autodiff (in egglog!)
- Variable sharing stuff
But we also need to test for correctness! So there's also a way to build expressions dynamically. Then we can use proptest (proptest-rs.github.io/proptest/int...). Generate lots of expressions, make sure direct eval matches optimized, track any failures. Property-based testing is π₯
02.06.2025 18:02 β π 0 π 0 π¬ 1 π 0Egglog is cool as hell. You give it a set of rewrites, and it builds a DAG of all possible expressions (shared nodes so it doesn't explode). You give it some "cost" metric, and extract the best rewrite from the DAG.
02.06.2025 18:02 β π 1 π 0 π¬ 1 π 0#[mathcompile_optimize] fn my_expr(x: f64, y: f64) -> f64 { (x.exp() * y.exp()).ln() // β x + y }
So at a high-level, you write something like this
02.06.2025 18:02 β π 1 π 0 π¬ 1 π 0Anyway, so far the best approach is
- Represent expressions in a type-static way
- Optimize at compile time using a few heuristics followed by egglog (egraphs-good.github.io)
- Use a Rust macro to generate optimized code