On Lisp

I hope reading this book will be fun. Of all the languages I know, I like Lisp the best, simply because it’s the most beautiful. This book is about Lisp at its lispiest. I had fun writing it, and I hope that comes through in the text.

— Paul Graham

2011.07.01 Friday ACHK

Category theory 3

Asperti and Longo [1]: “The basic premise of category theory is that every kind of mathematically structured object comes equipped with a notion of [ : : : ] transformation, called `morphism’, that preserves the structure of the object.”

— A Gentle Introduction to Category Theory

— Maarten M. Fokkinga

2011.06.23 Thursday ACHK

Batteries included

The Haskell Platform is a collection of software-packages, tools and libraries, which is to create a common platform for using and developing applications in Haskell. With the Haskell Platform, Haskell follows the same principle as Python: “Batteries included”.

— Wikipedia on Haskell Platform

The quality of a programming language itself is only one component in the ability of application writers to get the job done. Programming languages can succeed or fail based on the breadth and quality of their library collection.

— Haskell: Batteries Included

— Duncan Coutts, Isaac Potoczny-Jones and Don Stewart

2011.06.20 Monday ACHK

Delta encoding

diff 4

The version history is paired with the use of delta encoding technology. To conserve bandwidth and time, if a file in a user’s Dropbox folder is changed, Dropbox only uploads the pieces of the file that are changed when syncing.

— Wikipedia on Dropbox (service)

2011.06.07 Tuesday ACHK

Grad school

If you wanted to have the perfect life, the thing to do would be to go to grad school, secretly write your dissertation in the first year or two, and then just enjoy yourself for the next three years, dribbling out a chapter at a time. This prospect will make grad students’ mouths water, but I know of no one who’s had the discipline to pull it off.

— Paul Graham

2011.05.29 Sunday ACHK

Research

DDJ: In the presentation before the awarding of the Japan Prize today, you were quoted on the distinction between research and development. [The former, Thompson stated, was directionless, whereas development had a specific goal in mind.] So in that context, is Go experimental?

— Interview with Ken Thompson

— By Andrew Binstock, May 18, 2011

2011.05.24 Tuesday ACHK

Haskellers’ loops

Haskellers never use loops – Instead, they either use recursion to do looping, or they use functions like map that take other functions as parameters.

— Conrad Barski, M.D.

2011.05.22 Sunday ACHK

Backdoor (computing)

David A. Wheeler has proposed a counter to this attack using an approach he calls “diverse double-compiling”, which uses techniques adapted from compiler bootstrapping. This involves re-compiling the source of the compiler through another independently-written and generated “trusted” compiler, and then using the binary generated from this to recompile the original compiler again, and then comparing the binary generated from this second compilation with that generated from using the original compiler to recompile itself directly.

— Wikipedia on Backdoor (computing)

2011.05.16 Monday ACHK

The future of web startups

So you end up with a world in which high school students think they need to get good grades to get into elite colleges, and college students think they need to get good grades to impress employers, within which the employees waste most of their time in political battles, and from which consumers have to buy anyway because there are so few choices.

Imagine if that sequence became a big, straight pipe. Then the effects of being measured by performance would propagate all the way back to high school, flushing out all the arbitrary stuff people are measured by now. That is the future of web startups.

— Paul Graham

2011.04.29 Friday ACHK

MapReduce 2

MapReduce is a framework for processing huge datasets on certain kinds of distributable problems using a large number of computers (nodes), collectively referred to as a cluster (if all nodes use the same hardware) or as a grid (if the nodes use different hardware). Computational processing can occur on data stored either in a filesystem (unstructured) or within a database (structured).

“Map” step: The master node takes the input, partitions it up into smaller sub-problems, and distributes those to worker nodes. A worker node may do this again in turn, leading to a multi-level tree structure. The worker node processes that smaller problem, and passes the answer back to its master node.

“Reduce” step: The master node then takes the answers to all the sub-problems and combines them in some way to get the output — the answer to the problem it was originally trying to solve.

— Wikipedia on MapReduce

2011.04.27 Wednesday ACHK

MapReduce

By abstracting away the very concept of looping, you can implement looping any way you want, including implementing it in a way that scales nicely with extra hardware.

Without understanding functional programming, you can’t invent MapReduce, the algorithm that makes Google so massively scalable. The terms Map and Reduce come from Lisp and functional programming. MapReduce is, in retrospect, obvious to anyone who remembers from their 6.001-equivalent programming class that purely functional programs have no side effects and are thus trivially parallelizable.

The very fact that Google invented MapReduce, and Microsoft didn’t, says something about why Microsoft is still playing catch up trying to get basic search features to work, while Google has moved on to the next problem: building Skynet^H^H^H^H^H^H the world’s largest massively parallel supercomputer. I don’t think Microsoft completely understands just how far behind they are on that wave.

— Can Your Programming Language Do This?

— Joel Spolsky

2011.04.22 Friday ACHK

Operating system 3

No one cares what operating system you run as long as it stays up.

— Bruce Perens

That’s why the best choice of software is often no software — and barring that, as little software as you can possibly get away with, and even then, only from the most reputable and reliable sources.

— Coding Horror

— by Jeff Atwood

The greatest of rulers hardly dwells upon the minds of his subjects,
Lesser than this they forever draw near and laud him with great praise,
Lesser than this the people are held in his frightening awe and fear,
Lesser than this the people revile and curse him.
   
太上,下知有之;
其次,親而譽之;
其次畏之;
其次侮之。

— Laozi (Wikisource translation)

2011.04.16 Saturday ACHK

Monty Hall problem

People strongly tend to think probability is evenly distributed across as many unknowns as are present, whether it is or not (Fox and Levav, 2004:637).

— Wikipedia on Monty Hall problem

2011.04.11 Monday ACHK

Google Romance

When you think about it, love is just another search problem. And we’ve thought about it. A lot. Google Romance is our solution.

— Google Romance

.

.

2011.04.03 Sunday ACHK

Peirce’s law

Peirce’s law in logic is named after the philosopher and logician Charles Sanders Peirce. It was taken as an axiom in his first axiomatisation of propositional logic.

In propositional calculus, Peirce’s law says that ((P→Q)→P)→P. Written out, this means that P must be true if there is a proposition Q such that the truth of P follows from the truth of if P then Q. In particular, when Q is taken to be a false formula, the law says that if P must be true whenever it implies the false, then P is true. In this way Peirce’s law implies the law of excluded middle.

Peirce’s law does not hold in intuitionistic logic or intermediate logics and cannot be deduced from the deduction theorem alone.

Under the Curry-Howard isomorphism, Peirce’s law is the type of continuation operators, e.g. call/cc in Scheme.

— Wikipedia on Peirce’s law

2011.04.02 Saturday ACHK