<h2 id="episode-3---what-is-a-plain-text-program">Episode 3 - What Is A
Plain Text Program?</h2>
<h3 id="what-is-a-plain-text-program">What Is A Plain Text Program?</h3>
<p>Today I'm going to go into more detail about what I mean when I say
Plain Text Program. I want to emphasize that this is just me. Others may
have different ideas on this topic. This is how I try to write Plain
Text Programs. I will feature other people's work that I still consider
to be Plain Text Programs that do not follow all of these
guidelines.</p>
<p>I want to thank the hosts on the monthly HPR Community News podcast
for inspiring me. They had questions. I also want to thank those making
comments. I'm new to Hacker Public Radio and I will try to be more
timely responding to comments in the future.</p>
<h3 id="what-is-a-plain-text-file">What Is A Plain Text File?</h3>
<p>Text files are usually edited in a text editor or in a word processor
and saved with the .txt extension. They consist of a string of
characters. Text files can be divided into lines using the newline
character, <code>\n</code>, or the carriage return and newline
characters, <code>\r\n</code>. You don't have to type these characters.
Your editor puts them in for you.</p>
<p>Text files do not have to use the .txt extension. Most programming
files, like .php or .c files are plain text. I will only be discussing
programs that are open source and that store their code in text
files.</p>
<p>Plain text configuration files often have no extension. For my Plain
Text Programs I use <code>config.inc</code>.</p>
<p>There is no difference between text files and plain text files.
People often say plain text files to distinguish them from word
processor files like .doc or .odt files.</p>
<p>Plain Text Programs use text files to store text like a title or a
blog post. When I talk about Plain Text Programs I also mean something
more than this. That's what this podcast is about.</p>
<h3 id="no-database">No Database?</h3>
<p>Plain Text Programs do not use a database like mysql or postgres.
Also the file system does not imitate a database, creating keys,
indexing, etc.</p>
<p>Instead the file system performs the database functions by accessing
files which can be text files, graphics files, or other files. These
files can be all in one directory or in multiple directories in a single
directory tree.</p>
<p>If password security is required in a Plain Text Program that runs on
the internet I make an exception to the single tree rule to allow
passwords to be stored outside of the webspace.</p>
<p>So the assets a Plain Text Program accesses are just files in the
file system.</p>
<h3 id="no-html-or-other-markup-required">No HTML Or Other Markup
Required</h3>
<p>I have no rule against allowing html or other markup. But I do not
assume that the maintainer knows how to do this or wants to learn it.
The reason I started writing Plain Text Programs was to avoid html
markup. I want to be able to type text files, save them, and upload
them, without being concerned about anything except the text itself.</p>
<p>The text files holding the content are written in block paragraph
style with a blank line between paragraphs. Text files are not required
in a Plain Text Program but most Plain Text Programs do use some text
data which should be stored in text files.</p>
<p>If this is a web application, links can be copied and pasted from the
browser with no additional markup required.</p>
<p>Other assets in the directory, like .gif, .jpg, or .png images,
display automatically.</p>
<p>I use the file names for meta data like title, caption, or sort
order. I can also sort chronologically using the file timestamps.</p>
<p>If there is a hierarchy of directories the program can use the
directory name of the child directories for the link text. For instance
the Delta Musicians directory tree can have a Table Of Contents at the
top level that lists the musicians in alphabetical order. Each musician
gets their own subdirectory and the name of that subdirectory is used to
generate the link and link text for that page.</p>
<p>Then, each page can use Dirt Simple Photo Gallery and the program
generates the caption from the image's file name.</p>
<p>All configuration is also done in a text file. I use a well
documented <code>config.inc</code> file that initializes php variables.
The maintainer of the application is never required to edit source
code.</p>
<h3 id="does-plain-text-mean-there-is-no-gui-interface">Does Plain Text
Mean There Is No GUI Interface?</h3>
<p>No. I write mostly web apps so they run in the browser interface.
Also, Plain Text Programs do not require a GUI. It could run in a
terminal or as a cron job. The program could play a music playlist or
run a slideshow with no input at all.</p>
<h3 id="what-do-i-have-to-know-to-maintain-a-plain-text-program">What Do
I Have To Know To Maintain A Plain Text Program?</h3>
<p>The maintainer of the program will have to be able to 1. Create and
edit text files in a text editor or word processor 2. Copy and paste
links, iframe embeds, file names, titles, etc. 3. Rename files 4. Upload
and download with ftp</p>
<h3 id="executive-summary">Executive Summary</h3>
<p>A Plain Text Program does not use a database like sql. Instead it
stores the assets in the file system and accesses them using the file
system.</p>
<p>A Plain Text Program does not require html or other markup. Text
assets are written in block paragraph format. If the maintainer prefers
to use a word processor instead of a text editor that's fine as long as
the files are saved as text files with the .txt extension. Most word
processors support this.</p>
<p>Plain Text Programs can support links if the links are copied and
pasted into the text file with no markup required.</p>
<p>Plain Text Programs can support iframe embeds if the embed code is
copied and pasted onto its own line in the text file.</p>
<p>All of the assets for a Plain Text Program are stored in a single
directory tree. This is one of the main advantages of Plain Text
Programs because it makes them easy to backup and restore so they are
very portable. I sometimes make an exception to this if I want to save a
password on a webserver outside of the webspace.</p>
<p>A Plain Text Program uses the file and directory names for meta data
like titles, captions, or sort order. The file timestamps can be used
for chronological sorting.</p>
<p>All configuration is done by editing a well documented text file. The
maintainer should not have to edit the program code.</p>
<p>The maintainer should be allowed to edit the program code. I will
only discuss open source programs that store the program itself in text
files.</p>
<h3 id="more-questions">More Questions?</h3>
<p>I thought so. Comment on Hacker Public Radio or at Gamer+DBN. I will
include links in the show notes.</p>
