This post is a wonderful cookbook from which to pull.
Tag: Reproducible Research
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>>
OcCLIPS
It would be nice to have a lovingly supported CLIPS mode along with org-mode literate programming (babel) and a clear legal pedigree.
Writing Books with Org Mode
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)
to receive:
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\305d{\"\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\312A@\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\312A@\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
project for me to learn more about this environment because right now I’m
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
Cask
The Infinite Abacus
An Infinite Abacus (AIA) is both a mathematical and computational tool. Its features include the ability to store any kind of numerical measurement along with the ability to retrieve it. Conceptually it may record any number of measurements, but from an analysis perspective it would only make sense to record a single value “on” a particular device (datum), and as many as you see fit “with” a particular device (metadata). Its beads and frames may be used to model various computational systems, but it is not a mandatory feature of the tool.
The AIA should be viewed as a physical device that lives within the constraints of this reality but also exists beyond them. You may work with 1 of them as easily as you would work with 1 million of them. Additionally they have no identity or location within the time-space continuum, but for the sake of analysis they may be granted those elements for the sake of modeling so that spatial and material-property analyses may be performed given attributes of each AIA that we find valuable. AIA is not subject to death or decay. They have no mass of their own, or value of their own; instead they live only to serve. The masses of the things that they define, though, maybe be utilized; along with the reason for their existence.
The computational engineer is responsible for defining, allocating, collecting, analyzing, refining, and redefining a system of AIAs. An iterative processes is repeatedly performed as new AIAs are revealed and existing AIAs are returned. The primary limiting factors in defining a system of AIAs are the ignorance of the fundamental nature of this reality that comes with being human, the limited cognitive capacity that comes with it, and the relatively small knowledge base held by humanity given the magnitude and volume of the entirety of reality.
Personal Accountability in Research
Org Mode Babel Support for SML
Managing bibliography references with JabRef
JabRef is an open source bibliography reference manager. The native file format used by JabRef is BibTeX, the standard LaTeX bibliography format. JabRef runs on the Java VM (version 1.5 or newer), and should work equally well on Windows, Linux and Mac OS X.
Addendum: 2019-09-24
JabRef continues to be an excellent bibliography manager.
Using BibTeX as the master database and JabRef to populate, manage, and export from it has been really nice. The key has been letting Emacs manage the keys and sorting.