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

  • 3 Posts
  • 40 Comments
Joined 2 years ago
cake
Cake day: June 17th, 2023

help-circle






  • Thanks for the advice.

    I’m working on getting my own fork of Lemmy therefore I’m attempting to repackage it independently of Nixpkgs so I can get a flake in their actual repo that allows devs to spin up a Lemmy dev environment. I want my dev environment to reflect the changes being made on Lemmy in that dev environment when I make them. Unless I’m missing something, with your suggestion, I’d have no way to test a major change to Lemmy’s codebase in my fork (as I intend to).




  • I’ve been looking into building and developing a Lemmy fork using Nix but I got stuck on nixifying the part of the build instructions where you have to combine front end and back end in git submodules. It’s a bummer too because I won’t even write a single line of code on this fork until I have it properly setup with flakes. It’s just how I am. 🤣

    Maybe my flake can help you get Tauri working and maybe that would motivate you to help me get Lemmy working with Nix tooling instead of Ansible and Docker as it is now? ;)





  • Learn Haskell.

    Since it is a research language, it is packed with academically-rigorous implementations of advanced features (currying, lambda expressions, pattern matching, list comprehension, type classes/type polymorphism, monads, laziness, strong typing, algebraic data types, parser combinators that allow you to implement a DSL in 20 lines, making illegal states unrepresentable, etc) that eventually make their way into other languages. It will force you to learn some of the more advanced concepts in programming while also giving you a new perspective that will improve your code in any language you might use.

    I was big into embedded C programming years back … and when I got to the pointers part, I couldn’t figure out why I suddenly felt unsatisfied and that I was somehow doing something wrong. That instinct ended up being at least partially correct. I sensed that I was doing something unsafe (which forced me to be very careful around footguns like pointers, dedicating extra mental processes to keep track of those inherently unsafe solutions) and I wished there was some more elegant way around unsafe actions like that (or at least some language provided way of making sure those unintended side effects could be enforced by the compiler, which would prevent these kinds of bugs from getting into my code).

    Years later, after not enjoying JS, TS (IMO, a porous condom over the tip of JavaScript), Swift, Python, and others, my journey brought me to FRP which eventually brought me to FP and with it, Haskell, Purescript, Rust, and Nix. I now regularly feel the same satisfaction using those languages that I felt when solving a math problem correctly. Refactoring is a pleasure with strictly typed languages like that because the compiler catches almost everything before it will even let you compile.