Pencilnoob

joined 2 years ago
[–] Pencilnoob@lemmy.world 17 points 9 hours ago (2 children)

I mute a ton of communities, and I really like quickly getting to the "end" of All. Then I've blocked some other dopamine sites, so I get bored and go play outside 🤣

[–] Pencilnoob@lemmy.world 2 points 1 day ago

indeed, and thanks for inspiring me to bake bread tomorrow

[–] Pencilnoob@lemmy.world 6 points 1 day ago (2 children)

didn't feel like cooking

Ah, me too

made bread

wat

[–] Pencilnoob@lemmy.world 7 points 1 week ago

I absolutely adore both of those journals! They are so goooood. Wow. Life goals to be serene enough to fill a cool looking journal like that without getting distracted by squirrels

[–] Pencilnoob@lemmy.world 0 points 2 weeks ago (1 children)

I'm sure someone will be like "um akchuly" to my explanation. But for me it's good enough to think if it that way.

I've worked in Haskell and F# for a decade, and added some of the original code to the Unison compiler, so I'm at least passingly familiar with the subject. Enough that I've had to explain it to new hires a bunch of times to get them to to speed. I find it easier to learn something when I'm given a practical use for it and how it solves that problem.

[–] Pencilnoob@lemmy.world 0 points 2 weeks ago* (last edited 2 weeks ago) (3 children)

In practical terms, it's most commonly a code pattern where any function that interacts with something outside your code (database, filesystem, external API) is "given permission" so all the external interactions are accounted for. You have to pass around something like a permission to allow a function to interact with anything external. Kind of like dependency injection on steroids.

This allows the compiler to enhance the code in ways it otherwise couldn't. It also prevents many kinds of bugs. However, it's quite a bit of extra hassle, so it's frustrating if you're not used to it. The way you pass around the "permission" is unusual, so it gives a lot of people a headache at first.

This is also used for internal permissions like grabbing the first element of an array. You only get permission if the array has at least one thing inside. If it's empty, you can't get permission. As such there's a lot of code around checking for permission. Languages like Haskell or Unison have a lot of tricks that make it much easier than you'd think, but you still have to account for it. That's where you see all the weird functions in Haskell like fmap and >>=. It's helpers to make it easier to pass around those "permissions".

What's the point you ask? There's all kinds of powerful performance optimizations when you know a certain block of code never touches the outside world. You can split execution between different CPU cores, etc. This is still in it's infancy, but new languages like Unison are breaking incredible ground here. As this is developed further it will be much easier to build software that uses up multiple cores or even multiple machines in distributed swarms without having to build microservice hell. It'll all just be one program, but it runs across as many machines as needed. Monads are just one of the first features that needed to exist to allow these later features.

There's a whole math background to it, but I'm much more a "get things done" engineer than a "show me the original math that inspired this language feature" engineer, so I think if it more practically. Same way I explain functions as a way to group a bunch of related actions, and not as an implementation of a lambda calculus. I think people who start talking about burritos and endofunctors are just hazing.

[–] Pencilnoob@lemmy.world 13 points 2 weeks ago (4 children)

ENJOY THE MINT EVERYONE

Maybe add some white cover, some comfrey, sunchoke, raspberries, and you've got a permaculture paradise!

[–] Pencilnoob@lemmy.world 2 points 2 weeks ago

I wonder if NFPA would allow me to use one of these leather Japanese fire coats. Bet it doesn't have PFAS coating! Just a sick painting of me fighting a fire spirit.

Japanese leather fire jacket

Or maybe I could just airbrush a sick painting on my current coat

[–] Pencilnoob@lemmy.world 3 points 3 weeks ago (1 children)

So much gardening!

Here's my starts!

 

"It doesn’t make sense for chocolate bars to be divided into equal-sized chunks when there is so much inequality in the chocolate industry! The unequally-sized chunks of our 6.35 oz bars are a palatable way of reminding Choco Fans and Serious Friends that the profits in the chocolate industry are unequally divided.

And in case you haven’t noticed, the bottom of our bars depicts the West African coastline. The chunks just above it represent the Gulf of Guinea. From left to right, you have Côte d'Ivoire, Ghana, Togo and Benin (terribly politically incorrect, we know, but we had to combine them to create enough space for a hazelnut), Nigeria and part of Cameroon."

From https://us.tonyschocolonely.com/pages/faqs

 

This is how I learned about mods and Creeper! Also how to use summoning to fill soul gems.

Good memories