Writing a full-text search engine using Bloom filters
A few minutes ago I came across a Hacker News post that detailed a method of adding search to your static site. As you probably know, adding search to a static site is a bit tricky, because you can’t just send the query to a server and have the server process it and return the results. If you want full-text search…
Data Parallelism in Rust
Rust currently has very strong support for concurrency in the form of actors which exchange messages and do not share memory. However, there are many tasks for which actors are not a good fit. The unbounded lifetime of actors means that they cannot safely access stack-allocated memory from another task, even if it is…
Functional JavaScript: Closure
After a seemingly endless journey , the publication of Functional JavaScript is complete and books have found their way into peoples’ homes. Below is a list of useful links related to the book:
Lisp Hackers: Vladimir Sedach
Vladimir Sedach is an active open-source Common Lisp developer and proponent, as well as a computing philosopher to some extent. At his car...
Gevent For the Working Python Developer
The structure of this tutorial assumes an intermediate level knowledge of Python but not much else. No knowledge of concurrency is expected. The goal is to give you the tools you need to get going with gevent, help you tame your existing concurrency problems and start writing asynchronous applications today.
Execution in the Kingdom of Nouns (2006)
This rant is utterly idiotic. The great investment in literary allure is there in order to mask its hollow emptiness. Why should one class of words be put on a pedestal above another? Gee, I don't know, could it just be because natural languages ALL DO THE SAME? All natural languages have something called a WORD…
The Law of Leaky Abstractions (2002)
There’s a key piece of magic in the engineering of the Internet which you rely on every single day. It happens in the TCP protocol, one of the fundamental building blocks of the Internet. TCP…
Parsing expressions by precedence climbing
I've written previously about the problem recursive descent parsers have with expressions, especially when the language has multiple levels of operator precedence.
Emacs Rocks! Episode 13: multiple-cursors
Find and mark the next part of the buffer matching the currently active region, while also keeping the current region. Get it here .
Replacing Python: candidates
This post evaluates the programming languages ATS, C#, Go, Haskell, OCaml, Python and Rust to try to decide which would be the best language in which …
The Biggest Myths
Posts and writings by Lennart Poettering
Boundaries
This talk is about using simple values (as opposed to complex objects) not just for holding data, but also as the boundaries between components and subsystems. It moves through many topics: functional programming; mutability's relationship to OO; isolated unit testing with and without test doubles; and concurrency, to…
bliki: Test Pyramid
Write most of your tests at a low level (unit tests) with a few broad-stack tests, eg via UI. UI tests tend to be fragile and slow.
jQuery file size
Note: The gzipped and Zopflinated file sizes refer to the total byte size of the file after compressing it using gzip or Zopfli with the default settings . For gzip, this boils down to gzip -6 file.js — the default compression level is 6 on a scale from 1 (fastest, but less compression) to 9 (slowest, but best…
DWIM
1. adj. Able to guess, sometimes even correctly, the result intended when bogus input was provided.