Existential Pontification and Generalized Abstract Digressions
Archives
Articles
-
Anatomy of an MVar operation
-
HotOS “Unconference” report:
Verifying Systems
-
Category theory for loop optimizations
-
The Difference between Recursion & Induction
-
Kindle is not good for textbooks
-
A Zerocoin puzzle
-
A classical logic fairy tale
-
NDSEG
-
Resource limits for Haskell
-
The single export pattern
-
The duality of weak maps and private symbols
-
What is a membrane?
-
Kindle Paperwhite notes
-
The GHC scheduler
-
NLP: the missing framework
-
Google Nexus 7 setup notes
-
Metro Maps of the News
-
Maildir synchronizing Sup
-
Why can’t I just be a little lazy?
-
Functional Encryption
-
Extremist Programming
-
Plan 9 mounts and dependency injection
-
hp/D3.js: an interactive heap profile viewer
-
Ubuntu Quantal upgrade (Thinkpad/Xmonad)
-
ACM XRDS: Jeff Dean profile
-
Duality for Haskellers
-
Hails: Protecting Data Privacy in Untrusted Web Applications
-
Visualizing satisfiability, validity & entailment
-
GET /browser.exe
-
Generalizing the programmable semicolon
-
Template project for GHC plugins
-
“This is really the End.”
-
Unintuitive facts about Safe Haskell
-
The Y Combinator and strict positivity
-
So you want to hack on IMAP…
-
OfflineIMAP sucks
-
How OfflineIMAP works
-
The Monad Reader: Issue 20
-
Applicative functors
-
Practical Foundations for Programming Languages (first impressions)
-
Is Haskell liberal or conservative?
-
Two ways of representing perfect binary trees
-
Polymorphic variants in Ur/Web
-
Managing the server/client split in Ur/Web
-
Secure multiparty Bitcoin anonymization
-
Why verification results in higher quality code
-
Thoughts on gamifying textbooks
-
An Interactive Tutorial of the Sequent Calculus
-
Ubuntu Precise upgrade (Thinkpad/Xmonad)
-
What happens when you mix three research programming languages together
-
Some thoughts about literature review
-
How Ur/Web records work and what it might mean for Haskell
-
Use the source, don’t read it
-
Reduce Ubuntu latency by disabling mDNS
-
Visit month: Princeton
-
Is it better to teach formalism or intuition?
-
Visit month: University of Pennsylvania
-
You could have invented fractional cascading
-
Visualizing range trees
-
Anatomy of “You could have invented…”
-
Transcript of “Inventing on Principle”
-
Travel: Spring 2012 Edition
-
How to build DRM you can trust
-
POPL
-
Modelling IO: MonadIO and beyond
-
monad-control is tricky
-
Mystery Hunt and the Scientific Endeavour
-
Problem Set: The Codensity Transformation
-
Why iteratees are hard to understand
-
Bugs and Battleships
-
How to build i686 glibc on Ubuntu
-
Interactive Demo of Zero-Knowledge Proofs
-
Accessing lazy structures from C
-
Transparent xmobar
-
Ubuntu Oneiric upgrade (Thinkpad/Xmonad)
-
How to read Haskell like Python
-
The new Reflections on Trusting Trust
-
Obviously Correct
-
Polyglot programming
-
Why you shouldn’t do a PhD in systems
-
Let’s play a game
-
8 ways to report errors in Haskell revisited
-
Joseph and the Amazing Technicolor Box
-
Diskless Paxos crash recovery
-
First impressions of module programming
-
In-program GC stats redux
-
Changes to IntMap
-
Food-related functional humor
-
BlockedIndefinitelyOnMVar
-
From data type definitions to code
-
Variant types and GADTs
-
In-program GC stats for GHC
-
Synthetic Git merges
-
Parallelism to plug space leaks
-
Facebook support for BarnOwl
-
Grad School, Oh My
-
Cambridge retrospective: History and Philosophy of Science
-
A new vision for Mendeley
-
IVar leaks
-
Scheduling IVars
-
The IVar monad
-
Debugging compilers with optimization fuel
-
Multi-monitor xmobar placement on Gnome
-
A Year of Notebooking (Part 2)
-
A Year of Notebooking (Part 1)
-
A pattern for increasing sharing
-
On type synonyms
-
A Taxonomy of Socialization on the Internet
-
Pinpointing space leaks in big programs
-
Measurement, quantification and reduction
-
What Philosophy of Science Can Say for Software Engineers
-
The Cryptography of Bitcoin
-
Bitcoin is not decentralized
-
Chain Rule + Dynamic Programming
= Neural Networks
-
An insufficiently lazy map
-
If it has lots of comments, it’s probably buggy
-
Tail recursion makes your loops cleaner
-
Computing function composition
-
Anatomy of a thunk leak
-
Space leak zoo
-
Reified laziness
-
Calling all space leaks
-
Bindings and CAFs on the Haskell Heap
-
How Aristotle got it Wrong
On the importance of conceptual frameworks
-
Unraveling the mystery of the IO monad
-
Haskell: Not pure enough?
-
How the Grinch stole the Haskell Heap
-
Functions produce the Haskell Heap
-
Implementing the Haskell Heap in Python, v1
-
IO evaluates the Haskell Heap
-
Evaluation on the Haskell Heap
-
The Haskell Heap
-
Mailbox: Advice for a sup first-timer
-
Tracing the compilation of Hello Factorial!
-
Bugs from using the wrong variable
-
Hoopl: Dataflow analysis
-
Type Kata: Local data type
-
Hoopl: Dataflow lattices
-
Hoopl guided tour: Base system
-
GHC migrating to Git
-
HTML Purifier 4.3.0 released
-
Ely Cycles
-
Interleaving stream processors
-
The return of Hellenistic reasoning
-
Spring Reading: 2011 edition
-
On expressivity
-
Someone is wrong on the Internet
-
Many-valued logics and bottom
-
Killer mutants attack (mutation gone wrong)
-
Type Technology Tree
-
Petri net concurrency
-
The creation of a statically-typed functional programmer
-
On cargo culting and hacking
-
Multi-day debugging
-
Ad hoc approximations
-
Semi-automatic testing
-
Two short tips for FFI bindings
-
On checked exceptions and proof obligations
-
Picturing Hoopl transfer/rewrite functions
-
Picturing binomial coefficient identities
-
Android 2.x Sensor Simulator
-
A suggestion for indent/php.vim
-
Lav’net is watching you
-
OCaml gotchas
-
All about MVars
-
A year of blogging
-
Greetings from Switzerland
-
No one expects the Scott induction!
-
Thriller: Doing it for the thrills
-
Travel advisory
-
Generalization and vagueness in specifications
-
Tourist by day, Blogger by night
-
ω: I’m lubbin’ it
-
Getting a fix on fixpoints
-
Errata for gin and monotonic
-
Gin and monotonic
-
Hussling Haskell types into Hasse diagrams
-
Talk Friday
-
How I Learned to Stop Worrying and Love the ⊥
-
My first proof in Isabelle
-
Reflexivity. Qed.
-
Integer sequences every computer scientist should know?
-
Is multiply-carry strongly universal?
-
Cambridge potpourri
-
Haskell.org committee
-
It’s just a longjmp to the left
-
You are in a maze of twisty little passages, all alike… (a GHC hacking post)
-
mod_fcgid 2.3 is broken (fixed in 2.3.6)
-
Medieval medicine and computers
-
DP Zoo Tour
-
Dead Edward Day
-
DP Zoo
-
Intelligence is the ability to make finer distinctions: Another Haskell Advocacy Post
-
Blog name changed…
-
OCaml for Haskellers
-
Don’t Repeat Yourself is context dependent
-
Purpose of proof: semi-formal methods
-
Rapidly prototyping scripts in Haskell
-
Existential type-curry
-
Quote Day
-
Why being a sysadmin will help you do Science!
-
The HTML purification manifesto
-
Abstraction without a concrete concept
-
Why I am in Cambridge
-
Tips for running a hackathon
-
How to get answers from busy maintainers
-
So long America!
-
High performance monads
-
Data is Code
-
Tension of patch and tree version control
-
Session types, subtyping and dependent types
-
Evolution of a Shared Web Host
-
Keyword arguments in Haskell
-
Towards platform-agnostic interruptibility
-
pthread_cancel on Windows
-
Embracing Windows
-
Annotating slides
-
My type signature overfloweth
-
Defining “Haskelly”
-
Interrupting GHC
-
abcBridge: Functional interfaces for AIGs and SAT solving
-
Type Kata: Distinguishing different data with the same underlying representation
-
Day in the life of a Galois intern
-
Type kata: Controlled sharing of references
-
What high school Algebra quizzes and NP-complete problems have in common
-
Generalizing APIs
-
A radical Hackage social experiment
-
Paper Monday
-
The Gateway Drug to Type Programming
-
Tour of a distributed Erlang application
-
Buffered streams and iteratees
-
How to pick your string library in Haskell
-
Suggestion box
-
Delaying implicit parameter binding
-
Reader monad and implicit parameters
-
Managing foreign pointers effectively
-
Pipelines and continuations
-
System.Posix.Redirect
-
Maximum matching deadlock solution
-
Flipping arrows in coBurger King
-
Graphs not grids: How caches are corrupting young algorithms designers and how to fix it
-
Safety first: FFI and threading
-
Groom: human readable Show for Haskell
-
Little’s law
-
MVC and Purity
-
Call and fun: marshalling redux
-
Thinking about talk
-
Marshalling with get and set
-
First steps in c2hs
-
The secret to successful autogenerated docs
-
Principles of FFI API design
-
Well-founded recursion in Agda
-
Setting up Cabal, the FFI and c2hs
-
The Haskell Preprocessor Hierarchy
-
Static Analysis for everyday (not-PhD) man
-
AP Physics: Stuck in the concrete
-
Databases are categories
-
Bug boogie: Git and symlinks
-
Punt the Prelude
-
Use The Monoid: A worked example
-
Bananas, Lenses, Envelopes and Barbed Wire
A Translation Guide
-
Lazy exceptions and IO
-
Upgrading to Ubuntu Lucid
-
Class Reflections
-
I Hate Patches:
Confessions of an Open-Source Developer
-
Spring 2010: A Random Walk
-
Refactoring Haskell code?
-
Nested Data Parallelism versus Creative Catamorphisms
-
Omnipresent Cabal
-
Name conflicts on Hackage
-
Design Patterns in Haskell
-
Art. Code. Math. (And mit-scheme)
-
Inessential guide to fclabels
-
The Problem with xUnit
-
Creative catamorphisms
-
Association maps in mit-scheme
-
Thoughts on discussion
-
Dudamel visits MIT
-
Inessential Guide to data-accessor
-
Later Impressions of the VX-8R
-
Diagramming in Xournal and Gimp
-
You could have invented zippers
-
Cup of FP with a Java twist
-
Summer internship at Galois
-
More fun with Futamura projections
-
The case of the Hash Array Mapped Trie
-
Ad hoc wireless
-
Hunting for abstractions in mathematics
-
Mutation sleuthing in Python
-
Haskell, The Hard Sell
-
Straitjacket programming
-
Five tips for maintainable shell scripts
-
Replacing small C programs with Haskell
-
Being an expert considered harmful
-
How to use Vim’s textwidth like a pro
-
Third-party unattended upgrades in three steps
-
Writing generator friendly code
-
History as documentation
-
The Art of Posing a Problem
-
Comonads and Convolutions
-
Type manipulation: Tricks of the trade
-
Why we stay up late
-
Hunting for constraints
-
Scheming environments
-
Sources of music
-
Nested loops and exceptions (Oleg Kiselyov)
-
Nested loops and continuations
-
Classes begin
-
Cute macro tricks in the kernel
-
Workflows in Git: Single-user style
-
Arcadia Rising posters
-
To the right! Autocompletable names
-
Hacking git-rerere
-
Too many leftovers!
-
Five advanced Git merge techniques
-
Typeclasses matter
-
Sup: Mail for Nerds
-
First impressions of the VX-8R
-
Why Haskell? The big question
-
rxvt-unicode for gnome-terminal refugees
-
Audio connectors and radios
-
Adventures in Three Monads
-
2010: A Roadmap
-
Iron Blogger