Basile Henry @basilehenry.bsky.social · 26/07/2026The front of the car doubles up as a crumple zone to make the car safer in a crash, so you don't want it to be too short for safety reasons 150
Basile Henry @basilehenry.bsky.social · 14/07/2026Not a recommendation because I haven't properly tried it yet (although I've been meaning to for a while), but maybe of interest to you: PRR danobi.github.io/prr/index.htmldanobi.github.ioIntroduction - prr 020
Basile Henry @basilehenry.bsky.social · 11/07/2026My main use case for the either crate is to return an impl Iterator 😅 000
Basile Henry @basilehenry.bsky.social · 04/07/2026Good question! I have never tried PR stacking across forks, and it very well might not be supported by GitHub 🤔 Hopefully they think about that use case in their upcoming tool/ui updates 🤞 010
Basile Henry @basilehenry.bsky.social · 04/07/2026Combined with `git rebase --interactive --update-refs` (jj is probably even better), I can move commits between PRs, or add/remove commits halfway down the stack quite easily 😊 000
Basile Henry @basilehenry.bsky.social · 04/07/2026Right, with my suggested workflow (that I/my coworkers have been using for a while) "the first N commits are actually from another PR" is not true, each PR only shows the commits and diff for that PR. Each PR "targets" the previous PR instead of main, but only gets merged if/when it targets main 😊 200
Basile Henry @basilehenry.bsky.social · 04/07/2026The part that confused me is that GitHub already lets you do stacked PRs 🤔 If you set the base branch of each PR to the previous PR in the stack, it'll even change the base to main automatically after the previous PR gets merged. Looks like the UI might get improved: github.github.com/gh-stack/github.github.comGitHub Stacked PRsBreak large changes into small, reviewable, stacked pull requests with first-class GitHub support. 100
Basile Henry @basilehenry.bsky.social · 03/07/2026I thought update-refs was the missing piece for your stacked PR workflow, but maybe it's on the GitHub/other side? 🤔 100
Basile Henry @basilehenry.bsky.social · 03/07/2026You might be interested in `git rebase --update-refs` if you don't already know about it. Very useful to rebase a stack of PRs 😊 git-scm.com/docs/git-reb...git-scm.comGit - git-rebase Documentation 100
Basile Henry @basilehenry.bsky.social · 02/07/2026There are multiple tools that do it automatically with different trade offs (you probably already know). I found crate2nix works fairly well on a big monorepo with many crates. Good luck with the non-nix option! I'm also interested 😊 100
Basile Henry @basilehenry.bsky.social · 26/06/2026return void 🤔 But to your point, isn't that what protected does compared to private? Or is there another use case for it? (I haven't used one of the OOP lang in a while...) 100
Basile Henry @basilehenry.bsky.social · 03/06/2026flakeless but still pinned? 😅 I definitely still have a bunch of niv based repos... 020
Basile Henry @basilehenry.bsky.social · 26/05/2026But if you put it as the last argument you get to use the "reader" monad instance: `Monad ((->) r)` so you can pass around the continuation silently and look smart 🤓 110
Basile Henry @basilehenry.bsky.social · 07/05/2026A while ago I made one which gave semantics to git conflict markers 😈 040
Basile Henry @basilehenry.bsky.social · 06/05/2026One tool call that amazed me a while ago went something like `print "y\ny\nn\ny\nn\n" | git add -p` 😅 030
Basile Henry @basilehenry.bsky.social · 06/05/2026Sounds similar to what antithesis does under the hood as described on the Signal and Threads podcast 🤔 010
Basile Henry @basilehenry.bsky.social · 06/05/2026Right 👍 So the minimal feature that makes row polymorphism is the ability to write code generic on the rest of the fields that your function doesn't care about? In a monomorphising compiler that would give you one type per unique record 🤔 000
Basile Henry @basilehenry.bsky.social · 06/05/2026I think row polymorphism let's you add (and sometimes remove) fields from a generic record: { r } -> { r | a: T } But most of the time you don't actually need this 100
Basile Henry @basilehenry.bsky.social · 05/05/2026Fair! I thought maybe they'd release their weights and the differences would show up on most inputs to give such a different error rate. Sometimes you can also witness differences on random weights, but then you don't really know if they matter as much once trained 000
Basile Henry @basilehenry.bsky.social · 05/05/2026So it was a CPU vs GPU issue 😅 bsky.app/profile/basi... At least it wasn't something as subtle as f32 operations aren't commutative and different platforms compute in different order 🙃 100
Basile Henry @basilehenry.bsky.social · 19/04/2026That is pretty messed up 🤯 So if you go sail around the world you better be back under 3 years? 100
Basile Henry @basilehenry.bsky.social · 19/04/2026In all seriousness, I don't know anything about boat VAT in the EU and I understand it might be messed up even if you don't own/plan on owning one 🤔 100
Basile Henry @basilehenry.bsky.social · 19/04/2026Why do you care about VAT on boats if you don't have any? 😅 100
Basile Henry @basilehenry.bsky.social · 18/04/2026Is that... one of the rare use cases for a bloom filter? 🤔 110
Basile Henry @basilehenry.bsky.social · 07/04/2026Maybe you could have a go to definition for the impl function itself go to the class definition? 🤔 So from any use site you're one hop away from 2) and two hops away from 1) 020
Basile Henry @basilehenry.bsky.social · 29/03/2026I'm pretty sure there will always be something more useful to spend the energy on, even if highly inefficient, like desalination 🤔 000
Basile Henry @basilehenry.bsky.social · 16/03/2026With Nat you can encode constraints without extra comparison support: head :: Vec (n + 1) a -> a But if you support comparison constraints I think this is nicer to use in practice anyway: head :: (1 <= n) => Vec n a -> a 041
Basile Henry @basilehenry.bsky.social · 05/03/2026Is that because for B you could take a reference to b.1 and the layout has to match (u8, u16)? 🤔 110
Basile Henry @basilehenry.bsky.social · 18/02/2026You could learn Haskell while employed: myrtle.ai/about/careers/ 😄 We use Rust, Haskell, nix (and Python, Verilog, ...) for compilers and customs FPGA circuitsmyrtle.aiCareersWe are always looking for brilliant minds to join our team. If you have experience in Computer Science, Maths, or ML, we’d love to hear from you! 030
Basile Henry @basilehenry.bsky.social · 08/02/2026So maybe we should be vibe coding in C to be consistent in our use of UB throughout the abstractions 😅 010
Basile Henry @basilehenry.bsky.social · 19/01/2026Probably a rhetorical "what" 🤔 It basically says that `[a]` is equivalent to a function `Int -> a`. It's effectively the indexing function. If you want to set a value in the "array", you create a new function that checks if the input is the index you're setting and use the old function otherwise. 020
Basile Henry @basilehenry.bsky.social · 17/12/2025Lots of GADTs when writing Clash Haskell 😭 clash-lang.orgclash-lang.orgHome 010
Basile Henry @basilehenry.bsky.social · 09/12/2025That is a pretty bad error message 😅 I assumed the Generic instance was a given and was already reaching for orphan instances to explain the lack of import bsky.app/profile/basi... 000
Basile Henry @basilehenry.bsky.social · 09/12/2025Maybe you're also supposed to derive Generic for that type in the shame module (so it's not an orphan instance), and that would force you to add the import 🤔 000
Basile Henry @basilehenry.bsky.social · 09/12/2025Ouch 😬 That would make sense to me for TemplateHaskell generated code, but for this type of instance deriving/default impl it feels like the extension should manage its own imports 😅 100
Basile Henry @basilehenry.bsky.social · 08/12/2025M1 not in scope is weird 🤔 missing a language extension? 110
Basile Henry @basilehenry.bsky.social · 30/11/2025I don't know how much AI they ended up using, but watching some of their dev talks a while ago they had some really impressive procedural generation using advanced ML techniques (i.e. AI), it really didn't strike me (at that time) like the plagiarism machine you hear about in more recent game dev 🤷♂️ 010
Basile Henry @basilehenry.bsky.social · 24/11/2025I mean yeah theoretically 😅 It's a practical approach, and I'm struggling to find ways to exploit it to create a function that would do radically different things for different types 🤔 There might be some tricks where you detect the type using broken `==` for NaN, but that's also the case in Haskell 110
Basile Henry @basilehenry.bsky.social · 24/11/2025I think it might depend if you have "magic" (no constraints) type classes à la Elm for things like `==`, `+`, or `>=` 🤔 110
Basile Henry @basilehenry.bsky.social · 18/11/2025That's probably the most reliable method (especially since the source path could be generated from nix)! I guess I'm not trusting my AI enough to do the run build step for me yet 😅 010