Our minds jump from past memory to future fantasy and are extraordinarily out of control. Buddhism provides a technique which helps us to tame our wild minds: meditation.
Meditation is sitting down quietly and being aware of all that goes on, without comment. In meditation (Vipassana) the goal is to stay with reality as it is experienced in this very moment. It brings about a sense of calm insight.
I learned the technique of meditation at a 10-day retreat of dhamma.org. Last year I went to Thailand and I have lived 10 days in a similar manner as Buddhist monks and nuns at Wat Ram Poeng.
Blending in at a meditation retreat at Wat Ram Poeng
I'll show you why I love Vim and why I switched to Emacs and why you might too.
Vim is really really awesome. Inspired by a lot of great hackers who swear by Vim (like Bram Moolenaar and Vim Diesel) and by the greatest ode to a text editor ever ("Vim Creep"), eight months ago I decided to take the plunge.
First I did
vimtutor at home, then I installed VimEmu in Visual Studio (I programmed C# at the time), I printed the Vim cheat sheet, and broke up with my mouse.
Meta-circular evaluators are awe-inspiring.
This will be a walkthrough of the meta-circular evaluator demonstrated in Chapter 4 and Lecture 7A of The Structure and Interpretation of Computer Programs (SICP). The chapter and video are on the subject of "meta-linguistic abstraction" – the establishing of new languages.
To evaluate a computer language you need an evaluator (also called interpreter) for that language. Evaluating an expression in a programming language means that the evaluator performs or executes the instructions described in the expression. An evaluator is called meta-circular if it evaluates the same language as it is written in using the same language constructs as the language itself (circular definitions).
Why would you want such a thing? One of the reasons is that having a meta-circular evaluator makes it very practical to implement new languages on top of the implementation language. Using a meta-circular evaluator you can, for example, create a language that is particularly suited for a problem at hand (a Domain Specific Language). Another reason is that it is insightful for educational and experimental purposes. The basic eval-apply structure below can be used to write interpreters for all kinds of languages. It is the kernel for every computer language.