Hopefully this sticks. IMO, movie studios need to keep attracting customers or the whole film industry will stay dead.
Plutus, Haskell, Nix, Purescript, Swift/Kotlin. laser-focused on FP: formality, purity, and totality; repulsed by pragmatic, unsafe, “move fast and break things” approaches
AC24 1DE5 AE92 3B37 E584 02BA AAF9 795E 393B 4DA0
Hopefully this sticks. IMO, movie studios need to keep attracting customers or the whole film industry will stay dead.
Fake! They’d already be drowned by mountain sized tidal waves if that actually happened.
Great article but line 1 is wrong. The genocide has been going on for far, FAR longer than a year.
Hard to describe in one phrase other than to say:
NixOS is to Linux as Unison is to Haskell
Content-addressing used in the context of programming languages in the service of solving the problem of distributed systems and their inability to share code across time and space.
Haskell has a content-addressed module that was perhaps influenced by Unison.
Here’s an excellent interview with one of the authors of Unison:
As others have said, Haskell and Rust are pretty great. A language that hasn’t been mentioned that I REALLY want to catch on, though, is Unison.
Honorable mention to my main driver lately: Purescript
I read that algae actually makes up more of what we know as oil than decomposed dinosaurs.
Edit: the source of that tidbit. He does a cool demo at the beginning.
Like the Holographic Universe?
Reading that lead me to read the MUCH more interesting but FAR from easy to decode: Wholeness and the Implicate Order
I used to think json was the best until I found json lines or line delimited json. Thank me later. I use it all the time. You can append until you’re blue in the face. It’s great for log files. Each line is a valid json file.
No problem. I hope others can be more helpful. I’m most often interested in working with a virtual condom over top of JavaSvript. 😜
Perhaps it is irrelevant to your question since it does require transpilation (Purescript Module), but I have recently fallen in love with the Deku UI framework in Purescript. It works in an FRP style and draws direct influence from React. Purescript is SUPER obscure, but in this context, FRP is really elegant. It even has a mechanism to type-check raw chunks of html at compile time.
The Documentation: https://deku-documentation.vercel.app/
the part most relevant to your question: https://deku-documentation.vercel.app/functional-reactive-programming/events
It feels like magic. I think of it as the glue that makes almost all of my software work together seamlessly. I can’t wait to use it for one-click deployments of my software on a server or high-availability cluster.
This is why I decided to learn Nix. I built dev environment flakes that provision the devshell for any language I intend to use. I actually won’t even bother unless I can get something working reliably with Nix. ;)
For example, here’s a flake that I use for my Python dev environment to provide all needed wiring and setup for an interactive Python web scraper I built:
{
description = "Interactive Web Scraper";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs?ref=nixpkgs-unstable";
utils.url = "github:numtide/flake-utils";
};
outputs = { self, nixpkgs, utils }: utils.lib.eachSystem ["x86_64-linux"] (system: let
pkgs = import nixpkgs { system = system; };
in rec {
packages = {
pyinputplus = pkgs.python3Packages.buildPythonPackage rec {
pname = "pyinputplus";
version = "0.2.12";
src = pkgs.fetchPypi {
inherit pname version;
sha256 = "sha256-YOUR_SHA256_HASH_HERE";
};
};
pythonEnv =
pkgs.python3.withPackages (ps: with ps; [ webdriver-manager openpyxl pandas requests beautifulsoup4 websocket-client selenium packages.pyinputplus ]);
};
devShell = pkgs.mkShell {
buildInputs = [
pkgs.chromium
pkgs.undetected-chromedriver
packages.pythonEnv
];
shellHook = ''
export PATH=${pkgs.chromium}/bin:${pkgs.undetected-chromedriver}/bin:$PATH
'';
};
});
}
I’d absolutely adore those guitars if they weren’t so damned heavy. I can’t imagine building off-cut versions will alleviate that complaint.
Threads used to bewilder me until I started using Haskell. Holy shit that felt like magic, turning an app parallel with two lines of code.
Now, I just have to worry about memory limits….
Removed by mod
Removed by mod
I do this on NixOS. I have a NAS at home where I store most of the files I work on. My computers are internally immutable and almost all the files that change reside solely on the NAS as NFS shares. All of my computers are configured to auto-mount one of its folders at boot. NixOS sees that as an internal drive.
Then, simply navigate to the project folder where I have a flake and a .envrc file containing the command
use flake .
which will make direnv use Nix to provision the dependencies automatically. Whenever I save, those changes are reflected on all computers.I like to also version control everything using git and this method allows that transparently.
The only part that I am missing is getting the permissions to align between all computers accessing that same folder. Sometimes I have to create a temp folder that uses rsync to keep up with any changes. If anyone has any pointers, I’m all ears. It rarely gets in my way but does rear its head sometimes. Otherwise, this setup is perfect when I’m at home.