-
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
- Austin Clojure Meetup Version of Talk - Stuart Halloway - Austin Clojure Meetup 2016
-
Clojure Spec: Expressing Data Constraints without Types - (video at youtube) - Alex Miller - Emerging Technologies Conference 2017
- Some More Books that Use Racket
- Animated Problem Solving - Marco T. Morazán
- Animated Program Design - Marco T. Morazán
- Programming-Based Formal Languages and Automata Theory - Marco T. Morazán
- Lambda Calculus and Lisp, part 1
- Lambda Calculus and Lisp, part 2 (recursion excursion)
- We don't need startups, we need Digital-Mittelstand
-
Why do you say that static type systems are a "premature optimization"? - Hacker News discussion
- auggiesrose
-
Annotated Version of Boole's Algebra of Logic 1847 - via archive.org
-
Archival Storage - David Rosenthal
-
Practical UX for startups surviving without a designer - Tibi Iorga
-
Why numbering should start at zero - E. W. Dijkstra Archive
-
We present a calculational approach to the design of type checkers, showing how they can be derived from behavioural specifications using equational reasoning.
- auggiesrose
-
Answer to "How to make a responsive and interactive image map using SVG" - Stack Overflow
- Answer to "How do I add alternative text to an object?" - Stack Overflow
- Answer to "Do I use <img>, <object>, or <embed> for SVG files? - Stack Overflow
-
CS 450: Structure of Higher Level Languages - Tiago Cogumbreiro - Spring 2021
-
Netsec Return-Oriented Programming - Matthew Flatt
-
How Data Abstraction changed Computing forever - Barbara Liskov - TEDxMIT
- A design methodology for reliable software systems - Barbara Liskov - 1972
-
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 namedgensym
as well) exist in many Lisp-like languages, including the widely implemented Common Lisp standard and Elisp.
-
Identifying and Correcting Programming Language Behavior Misconceptions - Kuang-Chen Lu - OOPSLA24
-
What Happens When Students Switch (Functional) Languages (Experience Report) - Kuang-Chen Lu - ICFP'23
-
Annotation tools for the web. Select text, images, or (nearly) anything else, and add your notes.
-
On the Expressive Power of Programming Languages - Matthias Felleisen
- Expressiveness - portion from "Principles of Programming Languages" by Matthias Felleisen
- Turing is Useless
- The mechanical evaluation of expressions - Peter J. Landin - paper that introduces the term "syntactic sugar" (the original meaning of which may be a bit different from the current one?)
- Slides from CS 7194 at Cornell - CS 7194 (Spring 2019) Great works in Programming Languages
- Expressiveness - portion from "Principles of Programming Languages" by Matthias Felleisen
-
Rhombus: A New Spin on Macros without All the Parentheses - Matthew Flatt - OOPSLA23
-
On the Expressive Power of Programming Languages - Shriram Krishnamurthi - PWLConf 2019
-
Always Be Composing - Zach Tellman - Clojure/conj 2014
-
Secure and fast microVMs for serverless computing
-
"The Value of Values" transcript - Rich Hickey
-
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.
-
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
-
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
-
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
-
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"
- Extensible Compilation - Will Crichton
- Integrating Typed and Untyped Code in a Scripting Language
- Terra - a low-level system programming language that is embedded in and meta-programmed by the Lua programming language
- SujarJ
- Safely Composable Type-Specific Languages
- What is idempotence? - Eric Normand
- What is an inverse, and why is it useful? - Eric Normand
- Why don't I encounter more type errors when programming in Clojure? - Eric Normand
- Netsec Buffer Overflow - Matthew Flatt
- Disable the GitHub notification dot
- Dashboard: My filters - to bring something back that has been blocked, remove appropriate line(s) from the Dashboard's "My filters" pane.
- Dashboard - the Dashboard can be accessed by the gear icon that shows up on the floating dialog(?) that appears when uBlock Origin's icon (the web browser toolbar one) is clicked
- Dashboard: My filters - to bring something back that has been blocked, remove appropriate line(s) from the Dashboard's "My filters" pane.
- uBlock Origin
- Zooming Per Tab
- Grokking Simplicity - Eric Normand
- What is an action? - Eric Normand
- Runnable Specifications - Eric Normand - book draft bits
- Gradual Programming - Will Crichton
- Empirical Analysis of Programming Language Adoption - Leo A. Meyerovich, Ariel Rabkin - OOPSLA 2013
- Designing and evaluating programming languages: Dagstuhl trip report - Amy J. Ko
- Why we're no longer using Core.typed - CircleCI Blog - 2015?
- Pyret docs
- Visualizing and Explaining Rust's Ownership Model - Will Crichton - IWACO 2024
- How to Make Mathematicians Into Programmers (And Vice Versa) - Will Crichton - Topos Institute Colloquium (2024-08-22)
- A Grounded Conceptual Model for Ownership Types in Rust - Will Crichton - OOPSLA2 2023
- The Art and Science of Teaching Rust - Will Crichton - RustConf 2023
- Type-Driven API Design in Rust - Will Crichton - Strange Loop 2021
- Notional Machines
- WebAssembly from the Ground Up - Mariano Guerra and Patrick Dubroy
- Yong Jie's Notes on Elements of Clojure - Yong Jie
- Data-Centeric Computing: The Educational Horizon Expands [13:39-] - Kathi Fisler - 10th RacketCon (2020)
- QA with Matthias Felleisen [31:48-] - 10th RacketCon (2020)
- State of Racket (2020) [11:14-] - 10th RacketCon (2020)
- Town Hall (2020) [41:41-] - 10th RacketCon (2020)
- Netsec Wi-Fi Security Series - Matthew Flatt
- ninja: a simple way to do builds - Julia Evans
- Perception and Action - An Introduction to Clojure's Time Model - video at youtube - Stuart Halloway - QCon 2011
- Lambda Calculus
- Writing a Nanopass Compiler - Andy Keep - Clojure/conj 2013
- Systematic Program Design - Gregor Kiczales - despite what the page says, the tab content (e.g. Design Recipes, Language, etc.) is visible and the videos are available via youtube
- Adventure with Types in Haskell (Lecture 2) - Simon Peyton Jones - Oregon Programming Languages Summer School 2013
- Adventures with types - Simon Peyton Jones - Functional Programming Exchange 2013
- CaSE podcast - Problem Solving and Clojure 1.9 - transcript - Joy Clark interviews Rich Hickey - 2018
- Effective Programs - Rich Hickey - Clojure/conj 2017
- Striving to Make Things Simple and Fast - Phil Bagwell - Clojure/conj 2011
- Generic Collections: One Interface to Rule Them All - Alexis King - fifth RacketCon (2015)
- Why Black Boxes are so Hard to Reuse - Gregor Kiczales - 1994
- The Mapping Dilemma - David Nolen - Strange Loop 2011
- Introduction to Systematic Program Design - Gregor Kiczales
- Strategies and Technology for Teaching HtDP at Scale - Gregor Kiczales - fourteenth RacketCon (2024)
- Gregor Kiczales CV
- COMEFROM (vs GOTO)
- Right Shifts section of Left shift and right shift operators: << and >> - what happens for negative numbers...
- From Bronze to GM in miniKanren! Episode 1 - William Byrd
- The Mozilla Firefox New Terms of Use Disaster: What Actually Happened?
- Machine to Machine Communication and Building the Human UI on top - Rich Hickey - what about the repl...
- The Language of the System - Rich Hickey - Clojure/conj 2012
- Functional Geekery Podcast - Steven Proctor
- What Sucks about Clojure and Why You'll Love It Anyway - video at youtube - Chas Emerick - Clojure/West 2012
- Clojure's Solutions to the Expression Problem - video at youtube - Chris Houser - Strange Loop 2010
- Functional Geekery - Matthew Flatt Episode 24
- thalia - A collection of documentation for Clojure symbols
- Netsec Confidential Routing - Matthew Flatt
- Thinking in Data - video at youtube - Stuart Sierra - Clojure/West 2012
- Netsec TLS - Matthew Flatt