Skip to content

Instantly share code, notes, and snippets.

@sogaiu
Last active April 6, 2025 09:05
Show Gist options
  • Save sogaiu/035ec9d495b93aa858e773cd977b3e31 to your computer and use it in GitHub Desktop.
Save sogaiu/035ec9d495b93aa858e773cd977b3e31 to your computer and use it in GitHub Desktop.

2025-03-31

2025-03-30

2025-03-29

2025-03-28

  • clojure.spec - Rich Hickey - LispNYC 2016 - transcript

    As you build larger systems, you realize that so much happens at run time, and so many things happen over wires. And there is sort of presumption in many languages that the type system is going to solve every problem. It is just not practical. There is the famous adage about every large C program has a little crappy Lisp implementation inside it. That is not my adage. That is an old one. But it does, and I used to write crappy Lisps inside C++ programs.

    And after you have done that for a while, you realize: I am doing this because I do not have sufficient flexibility. My systems are large. I need them to be malleable. I cannot afford to change the whole world whenever some small thing changes.

    So when you get to the dynamic edges of those programs, you end up doing this stuff. In Clojure, we do it this way all of the time. But there are still edges to our programs, and if you do something in the language that is just about the language, you run up against the wire, and then it stops helping you.

  • Agility & Robustness: Clojure spec - (video at youtube) - Stuart Halloway - Strange Loop 2016

  • Clojure Spec: Expressing Data Constraints without Types - (video at youtube) - Alex Miller - Emerging Technologies Conference 2017

2025-03-27

2025-03-26

2025-03-25

2025-03-24

2025-03-23

2025-03-22

  • How Data Abstraction changed Computing forever - Barbara Liskov - TEDxMIT

  • Fresh variable Wikipedia Page

    In formal reasoning, in particular in mathematical logic, computer algebra, and automated theorem proving, a fresh variable is a variable that did not occur in the context considered so far. The concept is often used without explanation.

  • Temporary symbol creation section of Hygienic Macro Wikipedia Page

    In some programming languages, it is possible for a new variable name, or symbol, to be generated and bound to a temporary location. The language processing system ensures that this never clashes with another name or location in the execution environment. The responsibility for choosing to use this feature within the body of a macro definition is left to the programmer. This method was used in MacLisp, where a function named gensym could be used to generate a new symbol name. Similar functions (usually named gensym as well) exist in many Lisp-like languages, including the widely implemented Common Lisp standard and Elisp.

2025-03-21

2025-03-20

2025-03-19

2025-03-18

  • Ep 042: What does it mean to be 'data-oriented'? - Functional Design in Clojure

  • What is commutativity and why is it so useful in distributed systems? - Eric Normand

    When you have distributed systems, one of the most costly, expensive things you can do between those nodes and the system is to communicate, so that you can coordinate.

    You don't want to be waiting for each other. You don't want to be waiting for messages to travel across the network. The whole point is that you can work independently. [...]

    We want to reduce the interdependence of the ordering of our operations. We want to make it so that the order the work gets done in doesn't matter. That's what commutativity is.

  • CRDT Wikipedia Page

    To ensure eventual convergence the functions should fulfill the following properties: The merge function should compute the join for any pair of replica states, and should form a semilattice with the initial state as the neutral element. In particular this means, that the merge function must be commutative, associative, and idempotent. The intuition behind commutativity, associativity and idempotence is that these properties are used to make the CRDT invariant under package re-ordering and duplication.

  • Applications of Continuations - Daniel P. Friedman

  • The Rhombus Programming Language Home Page

2025-03-17

  • markdown editors - because working with gists for content that gets longer is terrible

    • markdown-mode - emacs mode, not as pretty, but seems to work better than alternatives tested below
    • ghostwriter - dark mode out-of-the-box, but handling of links to local files not so great?
    • ReText - no issue with links, but dark mode doesn't work here
    • Marker - A gtk3 markdown editor - mostly good except problems with navigating to local files?
  • Tidy Data - Hadley Wickham

  • sherpa-onnx

    Speech-to-text, text-to-speech, speaker diarization, speech enhancement, and VAD using next-gen Kaldi with onnxruntime without Internet connection. Support embedded systems, Android, iOS, HarmonyOS, Raspberry Pi, RISC-V, x86_64 servers, websocket server/client, support 11 programming languages

  • Netsec Tools for Executables - Matthew Flatt

2025-03-16

  • Smooth, iterative deepening - Niko Matsakis

    The idea is that a user’s first experience should be simple–they should be able to get up and going quickly. As they get further into their project, the user will find places where it’s not doing what they want, and they’ll need to take control. They should be able to do this in a localized way, changing one part of their project without disturbing everything else.

    Smooth, iterative deepening sounds easy but is in fact very hard. Many projects fail either because the initial experience is hard or because the step from simple-to-control is in fact more like scaling a cliff, requiring users to learn a lot of background material. Rust certainly doesn’t always succeed–but we succeed enough, and I like to think we’re always working to do better.

  • Why getters and setters are terrible - Eric Normand

  • What is a calculation? - Eric Normand - some operations that don't have side-effects are not functions in some languages (e.g. + in javascript), having a term that can capture these types of things along with pure functions might be less confusing...hence "calculation"

2025-03-15

2025-03-14

2025-03-13

2025-03-12

2025-03-11

2025-03-10

2025-03-09

2025-03-08

2025-03-07

2025-03-06

2025-03-05

2025-03-04

2025-03-03

2025-03-02

2025-03-01

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment