References are like jumps

cs
Interactive Theorem Proving, Guest Lecture - Introduction to Agda, by Jeremy Siek
This is the first guest lecture in a course about interactive theorem proving. In this lecture, Jeremy Siek gives a gentle introduction to Agda, discusses th...
Jepsen: Datomic Pro 1.0.7075
Post 1: Datalog, Chain-Forward Computation, and Relational Algebra
Our setting is logic programming, a field which attempts to design programming languages whose semantics have a close relationship to formal logic. The reason we might want to do this is that it suits our application domain more precisely than an implementation in a traditional programming language. Thus, using a logic programming language allows us to write more obviously-correct code, and perhaps even code that can be extracted cleanly from a certified implementation. Alternatively, if we did it ourselves, we’d have to do what our compiler (interpreter, …) would do anyway, so there’s no sense in doing it manually. Unfortunately, when we see a powerful tool, we are tempted to use it for everything: if our application is not ultimately-suited to the operationalization strategy of the logic programming engine we’re using, we simply obfuscate the issue in a veneer of formalism and end up with leaky abstractions. This is, I speculate, why logic programming languages have never caught on broadly for general-purpose programming. In this blog, I will detail the various trade-offs and implementation paradigms for modern logic programming engines, starting from Datalog and with a focus on program analysis.
Document
Vector databases (3): Not all indexes are created equal
Understanding Flat, Annoy, IVF, HNSW and Vamana vector indexes in vector databases
My binary vector search is better than your FP32 vectors
Binary Vector Search: The 30x Memory Reduction Revolution with Preserved Accuracy
Aaron Schlesinger's Personal Site
Quickly identifying a sequence of digits in a string of characters
Suppose that you want to quickly determine a sequence of eight characters are made of digits (e.g., ‘9434324134’). How fast can you go? In software, characters are mapped to integer values called the code points. The ASCII and UTF-8 code points for the digits 0, 1,…, 9 are the consecutive integers 0x30, 0x31, …, 0x39 … Continue reading Quickly identifying a sequence of digits in a string of characters
How fast is bit packing?
Integer values are typically stored using 32 bits. Yet if you are given an array of integers between 0 and 131 072, you could store these numbers using as little as 17 bits each—a net saving of almost 50%. Programmers nearly never store integers in this manner despite the obvious compression benefits. Indeed, bit packing and … Continue reading How fast is bit packing?
5th HLF – Lecture: Leslie Lamport
Leslie Lamport: "How to Write a 21st Century Proof”Mathematicians have made a lot of progress in the last 350 years, but not in writing proofs. The proofs th...
Dynamic Programming versus Memoization
_posted by Shriram Krishnamurthi_ [Edit on 2012-08-27, 12:31EDT: added code and pictures below. 2012-08-27, 13:10EDT: also incorporated some comments.] I wrote this on the Racket educators' mailing list, and Eli Barzilay suggested I post it here as well...
Maybe Everything Is a Coroutine - Adam Nelson
I was inspired, after reading the excellent blog post Let Futures Be Futures, by the author's thought experiment of a language in which all functions are coroutines and this is used to express asynchr…
Better Benchmarks Through Graphs - Marc's Blog
Let futures be futures
CTAN: Package annotate-equations
use for annotation of equations in LaTeX
[1hr Talk] Intro to Large Language Models
This is a 1 hour general-audience introduction to Large Language Models: the core technical component behind systems like ChatGPT, Claude, and Bard. What the...
Open Data Structures
Metastable failures in the wild
This paper appeared in OSDI'22. There is a great summary of the paper by Aleksey (one of the authors and my former PhD student, go Aleksey...
Review: Performance Modeling and Design of Computer Systems: Queueing Theory in Action
“the SEDA paper from SOSP 2001: “SEDA: An architecture for well-conditioned scalable internet services”. I love this paper, it defines and solves an important problem: “A service is well-conditioned if it behaves like a simple pipeline: as the offered load increases, the delivered throughput increases proportionally until the pipeline is full and the throughput saturates; additional load should not degrade throughput.” "
To make things more concrete, consider the SEDA paper from SOSP 2001: “SEDA: An architecture for well-conditioned scalable internet services”. I love this paper, it defines and solves an important problem: “A service is well-conditioned if it behaves like a simple pipeline: as the offered load increases, the delivered throughput increases proportionally until the pipeline is full and the throughput saturates; additional load should not degrade throughput.
Compiler Development: Rust or OCaml?
Tree-Structured Concurrency
C0 VSCode Language Support - Visual Studio Marketplace
Extension for Visual Studio Code - C0 IDE features for VSCode
cmu15122/c0-lsp-vscode
Introduction to Software Construction
Googledoc for "Introduction to Software Construction"
Autolab: Autograding for All
Let’s face it: teaching is hard. There’s the obvious time commitmentrequired for classes and lectures, but striving for excellence in educationnecessarily re...
CS 15-122: Principles of Imperative Computation (Spring 2023)
Guide for Lab Authors - Autolab Documentation
CRDTs go brrr
Classic HCI demos
A curated collection of HCI demo videos produced during the golden age from 1983-2002.
div style="max-width: 480px;"What Is ChatGPT Doing … and Why Does It Work?/div
Stephen Wolfram explores the broader picture of what's going on inside ChatGPT and why it produces meaningful text. Discusses models, training neural nets, embeddings, tokens, transformers, language syntax.