Chris Penner
@chrispenner.ca
490 followers 590 following 220 posts
FP and Programming languages nerd Building the Unison Language & Unison Share 📍Victoria BC 🇨🇦 https://chrispenner.ca
Posts Media Videos Starter Packs
Reposted by Chris Penner
hojberg.xyz
I wrote about AI and programming.

About the identity challenges we are facing as programmers and the potential erasure of craft.

There's a fun little easter egg in the header as well :)

hojberg.xyz/the-programm...
The Programmer Identity Crisis ❈ Simon Højberg ❈ Principal Frontend Engineer
On AI, Creativity, and Craft
hojberg.xyz
chrispenner.ca
P.s. try clicking the HAL9000 in the header;
chrispenner.ca
IMO we shouldn't be trying so hard to solve "the expression problem"; We should make it easy to update existing functions when types change, but it shouldn't always "silently work" with the new type; oftentimes existing functionality needs a human to look over it when there are changes!
chrispenner.ca
What do folks out there do for error handling in concurrent tasks in #Haskell?

For now I've settled on having an error `TMVar`, then use a `ki` structured concurrency scope which forks all my jobs and ends in an `(Right <$> awaitAll) <|> (Left <$> readTMVar errVar)`
chrispenner.ca
Huh, TIL that `Text.lines != Text.splitOn "\n"` when the string ends in a newline.
Reposted by Chris Penner
unison-lang.org
You can now spin up Unison Cloud clusters on your own infrastructure!

✅ Build elastic distributed systems and services in vastly less code
✅ Fast, typed RPC
✅ Deployments in seconds
✅ Free to get started

youtu.be/0sZqI1XoGLY
Unison Cloud on your infrastructure
YouTube video by Unison Language
youtu.be
chrispenner.ca
Stay tuned and you won't be disappointed, Arrows and Category classes are next!
chrispenner.ca
Oh whoops, lol that’s an important “not”!
Reposted by Chris Penner
ahrjarrett.bsky.social
Interesting article by @chrispenner.ca about why monads aren't the solution to everything, and a functor I've never crossed paths with called selective applicatives.

Still absorbing it, but great read as always. Check it out if that's your thing.

chrispenner.ca/posts/expres...
Monads are too powerful: The Expressiveness Spectrum
Monads are a useful tool, but what costs do we pay for their expressive power?
chrispenner.ca
chrispenner.ca
Haha, I told my friend you couldn’t write an echo server, he said sure you can; you just enumerate every string one-by-one… good way to get your LOC up…
chrispenner.ca
New blog post!

#Haskell is built on a foundation of Monads, but are they really the optimal way to sequence effects or should we keep looking for something better?

What's the big deal with Applicatives and Selective Applicatives?

Read on!

chrispenner.ca/posts/expres...
Monads are too powerful: The Expressiveness Spectrum
Monads are a useful tool, but what costs do we pay for their expressive power?
chrispenner.ca
Reposted by Chris Penner
unison-lang.org
✨ The new dependents view shows everywhere a definition is used, broken down by category, as a separate card in Unison Share and the Unison Desktop app.

Your codebase is a bidirectional graph! You should be able to walk it as such.
chrispenner.ca
I'm pretty stoked on how well WASM seems to be working for languages that target it (not that there aren't difficulties there).

Even more stoked for these updates!
chrispenner.ca
It may in fact be a VeryBadIdea™ but I'm extremely tempted to duct tape my soldering iron to my 3D printer and use it to wood-burn the grid lines on the Go board I'm building...
chrispenner.ca
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:
Zig doesn't have a built-in "defer on error" construct, but there are several patterns you can use to achieve similar functionality:
Method 1: Using errdefer (Zig's error-specific defer)
Actually, Zig does have exactly what you're looking for! It's called errdefer:
chrispenner.ca
I'd be curious about a comparison which charts number of repos vs age of the language :)
chrispenner.ca
Programming languages really need a way to expose functions as "you can import this within this project and tests, but it's not public to other libraries"; somewhere in-between fully public and fully private.
chrispenner.ca
I personally love how low friction it is to just try it, I’ll run jj absorb, it says exactly what it did, you can just undo if you didn’t like it, no harm done!
Reposted by Chris Penner
haskell.org
The GHC developers are very pleased to announce the availability of the first alpha prerelease of GHC 9.14.1.

Highlights:

* Major improvements to the Specialiser
* SSE/AVX support in the x86 native backend
* Significant improvements in the GHCi debugger

blog.haskell.org/ghc-9-14-1-a...

#Haskell
GHC 9.14.1-alpha1 is now available | The Haskell Programming Language's blog
blog.haskell.org