Chris Penner
chrispenner.ca
Chris Penner
@chrispenner.ca
FP and Programming languages nerd
Building the Unison Language & Unison Share

📍Victoria BC 🇨🇦

https://chrispenner.ca
P.s. try clicking the HAL9000 in the header;
October 8, 2025 at 8:03 PM
We all know AI is unreliable, but what's the worst case you've seen?

#zig
This one made me exhale sharply through my nose today:
September 8, 2025 at 2:46 AM
I do this sort of thing a lot, in #Haskell I love the tuple Monoid instance; pretty short, and only does a single list traversal.
August 6, 2025 at 4:33 PM
Cool trick for finding bottlenecks in your concurrent systems; sometimes you can just literally print where you're currently blocked.
June 25, 2025 at 5:24 PM
March 18, 2025 at 11:34 PM
I wish I could use Waze, it's great, but the state of Anti-trust law in the U.S. is pitiful and Google bought it up.
February 19, 2025 at 11:31 PM
I'm not quite sure what you're asking, but maybe this answers your question. Here's one way.

Note that if you have more complex patterns you can delimit the scope of the wildcards like this:
`pattern "%{name}-v%{num}.txt"`

But the {} are optional if your wildcards have non-alphanumeric borders
December 29, 2024 at 1:17 AM
I'm loving working on this little side project; I've got enough functionality to start using it in my daily dev life.

E.g. now that I've got bindings, shell cmd support and pattern strings I can do nifty stuff like this little 'focus' script for renaming files.
December 28, 2024 at 10:19 PM
New monad just dropped;

`strict` behaves like `evaluate`, but you can run it purely. Anything you've called `strict` on will be evaluated when you force the result of `runStrictly` to whnf.

Don't ask why I needed it... or why it has MonadFix... 😅
December 11, 2024 at 11:43 PM
Here’s my iPhone; the same thing happens with photos, most apps ask for full permissions when iOS offers options that are much more consumer friendly.
December 1, 2024 at 2:10 AM