Notes on ALEC

Last week I blogged about pushing ALEC out to GitHub. My focus there was 100% philosophical, and I barely said a thing about the details. This post is to share some of the details.

ALEC is my 5th attempt and configuring Emacs for myself. After spending nearly a year practicing Org-Mode, this version feels much better than the last. The biggest note is that the system compiles in 27 seconds instead of 600 seconds!

The old approach was to generate both a lightweight and heavyweight configuration file, but that is gone now. With a 27s tangle time, you can easily comment out the source block noweb-references to build what you want quite easily.

Package management was the major theme. Cask has worked perfectly, and I wanted to see how easy easily that I could deploy this system on Windows. When I set out to do so, Cask did not have Windows support. Now I think it does, but I’m not going to pursue it right now. Package seems to do quite well, despite some nagging behavior that still exists (noted in the system) of not installing packages sometimes.

The packages are packaged up and stored in GitHub. Heresy? Perhaps. It is a best attempt at capturing the entirety of a working system, so that I and even others have an example or proof that it does what it should be doing.

Literate programming here is done with Org-Mode. It is an insanely delightful and hyper productivity enhancing tool. It is so simple that the 99% will dismiss it as a “markup language”, and the 1% will soon find that the painful-gap between exploration, implementation, and reflection can now be totally and completely removed regardless of the implementation artifact that you use to perform these three critical tasks.

Don't run mode hooks during org exports

binchen has a nice post about how to disable org mode hook execution during exports. It can be a surprise when you run in batch mode and your export breaks because of dependency failures. Oh yea, the major mode hooks run during export even though you personally are not opening a buffer, Emacs is doing so!
Here is his solution:

(defun is-buffer-file-temp ()
  (interactive)
  "If (buffer-file-name) is nil or a temp file or HTML file converted from org file"
  (let ((f (buffer-file-name))
        (rlt t))
    (if f
        (if (and (not (string-match temporary-file-directory f))
                 (not (file-exists-p (replace-regexp-in-string "\.html$" ".org" f))))
          (setq rlt nil)))
    rlt))

Interesting.

The Cochrane Collaboration

Who we are
Cochrane is a global independent network of health practitioners, researchers, patient advocates and others, responding to the challenge of making the vast amounts of evidence generated through research useful for informing decisions about health. We are a not-for-profit organisation with collaborators from over 120 countries working together to produce credible, accessible health information that is free from commercial sponsorship and other conflicts of interest.
Our vision
Our vision is a world of improved health where decisions about health and health care are informed by high-quality, relevant and up-to-date synthesised research evidence.
Our mission
Our mission is to promote evidence-informed health decision-making by producing high-quality, relevant, accessible systematic reviews and other synthesised research evidence.
Our work is internationally recognised as the benchmark for high quality information about the effectiveness of health care.

ProjectTemplate for R

ProjectTemplate is a system for automating the thoughtless parts of a data analysis project

Just read the overview. If you are not already doing these things, by any means, then see what this package has to offer immediately. It will make your life better.
If you are not convinced yet, then read the sections listed on the left. They do so, so much.
One nice example is the great flexibility provided in its configuration. For example, automatically converting loaded data.frame to data.table is just one flag, very nice.