━━━━━━━━━━━━━━ TC3F Grant Rettke ━━━━━━━━━━━━━━ 1 How to design a file conservator (HTDFC) or The Care and Conservation of Computer Files (TC3F) ════════════════════════════════════════════════════════════════════════════════════════════════ 1.1 Audience [1] ──────────────── Who should be reading this? Possibly… • Entire document: Software engineers who want to do the above [2] • If you are using this an excuse to learn Lisp, then know that it is really, really simple. Here is how it goes: • 3s to download Emacs • 3m to learn how to run code • 3h to learn the IDE • 3d to master the language • Decisions & Assembly: Existing Emacs users… daily usage and non-trivial customization An interest in using package/el-get/cask and org-mode literate programming are the only thing that would motivate anyone to read this really. This is an unfinished and experimental document. All successes with it may be attributed to all of the folks who provided these wonderful tools. All failures with it may be attributed to me. Why should they be reading this? The expectations of life depend upon diligence; the mechanic that would perfect his work must first sharpen his tools. [3] 1.2 Cogito ergo sum [4] ─────────────────────── What was I thinking? creation: "the act of producing or causing to exist" [5] conservation: "prevention of injury, decay, waste, or loss" [6] computer files: "a file maintained in computer-readable form" [7] Pursuing these goals, in the manner of literate programming, also serves to better myself, as captured here: The expectations of life depend upon diligence; the mechanic that would perfect his work must first sharpen his tools. [8] 1.3 Means [9] ───────────── How do most people do it? File maintainer: a person and program responsible for TC3F COTS: edit, VI, Emacs, IntelliJ Idea, Visual Studio [10] Bespoke: custom software [11] 1.4 Madness [12] ──────────────── What about their raison detre? [13] • Wonderful, wonderful stock tooling, 80% • Can tool-makers build it perfectly for us all? [14] • Either way: Thinking is required. 1.4.1 Goal ╌╌╌╌╌╌╌╌╌╌ What is my measure of success? To provide a self-supportable environment in which the creation and conservation of computer files may occur with ease 1.5 Decision ──────────── GNU Emacs is an extensible, customizable text editor [15] 1.6 Methodology [16] ──────────────────── How will I customize it? Agile [17] • Product Backlog • Sprint Backlog • Review, Refine, and Reiterate • COTS libraries • Capture rationale and reasons along with things I did or didn't do and why • Includes links to everything Note: How you break up the initialization of a system like Emacs is mostly personal preference. Although org-mode (Babel) lets you tell a story, I was coming from a pretty structured configuration file to begin with. In the future, it might be interesting to look at this system from scratch in terms of doing literate programming. Fortunately, it provides that freedom out of the box. 1.6.1 Medium ╌╌╌╌╌╌╌╌╌╌╌╌ How will explain what I did? • Audience-appropriate presentations • Reproducible research • Reusable data structures 1.7 Developmental Values ──────────────────────── 1.7.1 Traits ╌╌╌╌╌╌╌╌╌╌╌╌ • ☑ Pleasing user experience • ☑ Pervasive orthogonality [18] • ☑ Self-supportable 1.7.2 Coding ╌╌╌╌╌╌╌╌╌╌╌╌ • ☑ Completion • ☑ Debugging • ☑ Templates 1.7.3 Editing ╌╌╌╌╌╌╌╌╌╌╌╌╌ • ☑ Auto-indenting • ☑ Binary file editing, hex editor • ☑ Code folding • ☑ Code formatting • ☑ Diffing • ☑ Heavily used languages: • ☑ CSS • ☑ Elisp • ☑ HTML • ☑ Graphviz • ☑ JSON • ☑ JavaScript • ☑ Make • ☑ Markdown • ☑ R • ☑ Scheme • ☑ shell • ☑ Lightly used languages: • ☑ go • ☑ OCaml • ☑ SML • ☑ Clojure • ☑ Perl • ☑ Python • ☑ Ruby • ☑ Incremental selection • ☑ LaTeX • ☑ SEXP Support • ☑ Spell-checking • ☑ Structured navigation • ☑ Syntax highlighting • ☑ Tab management 1.7.4 Development ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌ • ☑ Build tools: make • ☑ Copyright notice, analysis, and standards • ☑ Dependency management • ☑ Diagramming • ☑ UML • ☑ Version control: git, svn, bzr, cvs, rcs • ☑ Workflow 1.8 Operational Values ────────────────────── 1.8.1 Fonts ╌╌╌╌╌╌╌╌╌╌╌ • ☑ Focus on easily-screen-readable, mono-spaced • ☑ Research suggests that san-serif fonts are easier to read [19] [20] [21] [22] [23] [24] • ☑ Research suggests that color doesn't matter; only contrast [25] [26] [27] [28] [29] [30] [31] [32] • ☑ Unicode support is critical 1.8.2 Images ╌╌╌╌╌╌╌╌╌╌╌╌ • ☑ ASCII art 1.8.3 Spreadsheet ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌ • ☑ Calculation • ☑ Data management • ☑ Import/Export 1.8.4 Files ╌╌╌╌╌╌╌╌╌╌╌ • ☑ Auto-save & synchronize • ☑ Encryption • ☑ File-system/directory management • ☑ Project structure • ☑ Search everywhere 1.8.5 Commands ╌╌╌╌╌╌╌╌╌╌╌╌╌╌ • ☑ Key recording • ☑ Macros • ☑ History of all things: files, commands, cursor locations • ☑ Undo 1.8.6 Publishing ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌ • ☑ Code • ☑ Multiple formats: HTML, JavaScript, PDF 1.8.7 Terminal ╌╌╌╌╌╌╌╌╌╌╌╌╌╌ • ☑ Cross-platform shell • ☑ Games 1.8.8 Remote file access and management ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌ • ☑ SSH • ☑ SCP 1.8.9 Music ╌╌╌╌╌╌╌╌╌╌╌ • ☑ LilyPond 1.8.10 Communications ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌ • ☑ IRC 1.9 Observations ──────────────── • Went stunningly well • Stopped logging hours spent >200h • This configuration was developed organically quite differently from the original idea • Literate programming allowed an insanely flexible and freeing experience • This one massive experience for me made a powerful, positive, life-changing impression on me • My laziness and poor habits were made quite apparent going through the efforts to consider, realize, and support this system • Before beginning I had no value system about testing this kind of artifact • If this attribution, which is /only/ about Wolfram's MathWorld [33], the you may be interested in this style of programming and literature: Created, developed, and nurtured by Eric Weisstein at Wolfram Research 1.10 La trahison des images [34] ──────────────────────────────── Where else has this acronym shown up? #cc33ff: bright purple color [35] Commander, U.S. Third Fleet: WWII navy [36] A spasmogenic fragment: a peptide [37] Footnotes ───────── [1] [http://dictionary.reference.com/cite.html?qh=audience&ia=luna] [2] [https://en.wikipedia.org/wiki/Software_engineer] [3] [http://www.brainyquote.com/quotes/quotes/c/confucius141110.html] [4] [https://en.wikipedia.org/wiki/Cogito_ergo_sum] [5] [http://dictionary.reference.com/browse/creation] [6] [http://dictionary.reference.com/browse/Conservation] [7] [http://dictionary.reference.com/browse/computer%20file] [8] [https://www.brainyquote.com/quotes/quotes/c/confucius141110.html] [9] [http://dictionary.reference.com/cite.html?qh=tools&ia=luna] [10] [https://en.wikipedia.org/wiki/Commercial_off-the-shelf] [11] [https://en.wikipedia.org/wiki/Custom_software] [12] [http://dictionary.reference.com/browse/madness] [13] [http://dictionary.reference.com/cite.html?qh=raison%20detre&ia=luna] [14] [http://www.wisdomandwonder.com/article/509/lambda-the-ultimate-goto] [15] [https://www.gnu.org/software/emacs/] [16] [http://dictionary.reference.com/cite.html?qh=method&ia=luna] [17] [https://en.wikipedia.org/wiki/Agile_software_development] [18] [http://dictionary.reference.com/browse/orthogonal] [19] [http://thenextweb.com/dd/2011/03/02/whats-the-most-readable-font-for-the-screen/#!uCcs8] [20] [http://www.webpagecontent.com/arc_archive/182/5/] [21] [http://www.awaionline.com/2011/10/the-best-fonts-to-use-in-print-online-and-email/] [22] [https://tex.stackexchange.com/questions/20149/which-font-is-the-most-comfortable-for-on-screen-viewing] [23] [http://river-valley.tv/minion-math-a-new-math-font-family/] [24] [http://edutechwiki.unige.ch/en/Font_readability] [25] [http://usabilitynews.org/the-effect-of-typeface-on-the-perception-of-email/] [26] [http://usabilitynews.org/know-your-typefaces-semantic-differential-presentation-of-40-onscreen-typefaces/] [27] [http://typoface.blogspot.com/2009/08/academic-base.html] [28] [http://liinwww.ira.uka.de/bibliography/Typesetting/reading.html] [29] [http://www.kathymarks.com/archives/2006/11/best_fonts_for_the_web_1.html] [30] [http://psychology.wichita.edu/surl/usabilitynews/52/uk_font.htm] [31] [http://usabilitynews.org/a-comparison-of-popular-online-fonts-which-size-and-type-is-best/] [32] [http://usabilitynews.org/a-comparison-of-popular-online-fonts-which-is-best-and-when/] [33] [http://mathworld.wolfram.com/] [34] [https://en.wikipedia.org/wiki/The_Treachery_of_Images] [35] [http://www.color-hex.com/color/cc33ff] [36] [https://secure.flickr.com/people/c3f/] [37] [http://books.google.com/books?id=L4CI-qkhuQ8C]