## Build the configuration you need

The Emacs configuration for normal operations on my system has loads of useful and powerful packages loaded. Sometimes they interfere with the normal operation of org-html-export-to-*, though. The simplest way to address those issues is to generate two confirmation files: one for full-blown Emacs use and another just for doing exports. With literate programming in org-mode it is totally simple to do. It looks like this:

<<cask-block>>
<<diagramming-decision>>
<<modes-application-org-mode-decision>>


## How to Fix a Little Eshell Issue

Wanting to set up a pleasant shell environment in Emacs, I invested in getting
Eshell happy. Everything went well but the fact that directory name
completion doesn’t work. The error message appeared:

Invalid variable reference


Lately I’ve been learning more about how to develop (or re-learning depending upon
how you look at it) so I set up the debugger to run when the error occurred:

(toggle-debug-on-error)


Debugger entered--Lisp error: (error "Invalid variable reference")
signal(error ("Invalid variable reference"))
error("Invalid variable reference")
eshell-parse-variable-ref()
eshell-parse-variable()
eshell-interpolate-variable()
run-hook-with-args-until-success(eshell-interpolate-variable)
byte-code("m\204-�\303\304!\206�\305\306f!\306u\210     \204�\202)�\n\204$� C\307 C\244\210)\202��\306\207" [result eshell-current-argument eshell-arg-listified run-hook-with-args-until-success eshell-parse-argument-hook char-to-string nil t] 2) eshell-parse-argument() byte-code("m?\205$�\303 U\203�\304\305d{\"\210  \203 �\n       C\244\210*\202��\207" [here arg args eshell-parse-argument error "Failed to parse argument '%s'"] 4)
eshell-parse-arguments(29 #<marker at 43 in *eshell*>)
byte-code("\303\304         \"\207" [begin end args nil eshell-parse-arguments] 4)
eshell-complete-parse-arguments()
pcomplete-parse-arguments(nil)
#[0 "\306!\2053�   \nU\203� \207\307\f !\206�
\310        T\311     \nV\203.�\312\313!\210\314\315\310\"\210 \210\262\207" [pcomplete-expand-before-complete pcomplete-index pcomplete-last pcomplete-command-completion-function pcomplete-command-name-function pcomplete-default-completion-function pcomplete-parse-arguments pcomplete-find-completion-function nil pcomplete-arg message "No completions" throw pcompleted pcomplete-stub] 5 "\n\n(fn)"]()
funcall(#[0 "\306!\2053�   \nU\203� \207\307\f !\206�
\310        T\311     \nV\203.�\312\313!\210\314\315\310\"\210 \210\262\207" [pcomplete-expand-before-complete pcomplete-index pcomplete-last pcomplete-command-completion-function pcomplete-command-name-function pcomplete-default-completion-function pcomplete-parse-arguments pcomplete-find-completion-function nil pcomplete-arg message "No completions" throw pcompleted pcomplete-stub] 5 "\n\n(fn)"])
pcomplete-completions()
#[0 "\306\211\306\211\306\211\f\f

\307 \310\"\211\2056�\211@\311=?\2056�\211A\2056�\312A@\313>$.\207" [pcomplete-stub pcomplete-seen pcomplete-norm-func pcomplete-args pcomplete-last pcomplete-index nil pcomplete-completions pcomplete-do-complete listed pcomplete-insert-entry (sole shortest) pcomplete-autolist pcomplete-suffix-list pcomplete-last-completion-raw] 8 "\n\n(fn)"]() funcall(#[0 "\306\211\306\211\306\211 \f \f \307 \310\"\211\2056�\211@\311=?\2056�\211A\2056�\312A@\313>$.\207" [pcomplete-stub pcomplete-seen pcomplete-norm-func pcomplete-args pcomplete-last pcomplete-index nil pcomplete-completions pcomplete-do-complete listed pcomplete-insert-entry (sole shortest) pcomplete-autolist pcomplete-suffix-list pcomplete-last-completion-raw] 8 "\n\n(fn)"])
pcomplete(1)
call-interactively(pcomplete)
byte-code("\203�\301\302!\207\302 \207" [interactively call-interactively pcomplete] 2)
eshell-pcomplete(1)
call-interactively(eshell-pcomplete nil nil)


This stacktrace is simpler because I unloaded yasnippet. This will be a good
not sure how to address an issue like this beyond the standard, universal issue addressing techniques.

## Creation and conservation of computer files (C3F)

Wanting to learn literate programming in org-mode I figured that my Emacs configuration would be the simplest place to start. In that regard I was right, it just took a lot more work then I had expected, and that is OK. It was a non-trivial effort and I learned a lot. In my mind, the door is now wide open to utilize literate programming; the org-mode team has truly unleashed an amazing gift to the world and it may take the world some time to really understand and appreciate it.

My configs and document follow; the first one, C3F.html, is the human-readable document:

C3F

C3F.org

## Reproducible Research, Literate Programming, and Inter-Language Programming with Babel

Babel is about letting many different languages work together. Programming languages live in blocks inside natural language Org-mode documents. A piece of data may pass from a table to a Python code block, then maybe move on to an R code block, and finally end up embedded as a value in the middle of a paragraph or possibly pass through a gnuplot code block and end up as a plot embedded in the document.

My current approach is to use multiple languages, build scripts, intermediate files to share data, and finally weaving it together inside of LaTeX. The babel way looks intriguing, with excellent support (via Emacs modes) for numerous languages. Very exciting.

2014-02-14
Here is a writeup that may speak to readers in a way good for them to hear it.