pyafm/main.tex: Explain 'stack' and why modularization is useful
authorW. Trevor King <wking@tremily.us>
Thu, 16 May 2013 01:05:09 +0000 (21:05 -0400)
committerW. Trevor King <wking@tremily.us>
Thu, 16 May 2013 01:05:09 +0000 (21:05 -0400)
src/pyafm/main.tex

index 964e0e783b3bf82b3d86a1ec4c9f4d8fd41af46b..c47f2b013c6ef6e3ca22982939b1b7a3de3b7be0 100644 (file)
@@ -18,10 +18,31 @@ written in \citetalias{labview} and analysis software written in
 \citetalias{wavemetrics-igor}, both developed in-house.  The existing
 software was not designed to control sample temperature or for easy
 extension, so I proceeded to write my own control and analysis stack
-to add this capabilities.  In this chapter, I will discuss the earlier
-frameworks and some abortive attempts that lead me towards my current
-architecture (\cref{sec:aio-frameworks,sec:pyafm:stack}).  I will also
-discuss some auxiliary packages I developed to support the main stack
+to add this capabilities.
+
+For those of you thinking, ``Why is he calling this thing a stack?'',
+software is rarely developed as a single monolithic program.  Instead,
+developers write a software as a series of modular components, with
+each layer in the stack using lower level features from the layers
+below it to supply higher level features to the layers above it
+(\cref{fig:pyafm:stack}).  New high-level programs will contain logic
+for the new idea (perform velocity-clamp unfolding experiments) and
+leverage pre-existing packages for all the old ideas that you need to
+get the job done (open a file, Fourier transform an array, \ldots).  A
+well structured suite of software breaks the task at hand up into many
+sub-components, with a distinct package handling each component.
+
+\citet{whitehead11} introduces his claim about civilization and
+subconscious operations to motivate the utility of symbolism in
+subconcious reasoning.  By encapsulating already established ideas in
+a compact form, we can focus on the crux of an issue
+(\cref{fig:unfold-protein:unfolder}) without being distracted by the
+peripheral boilerplate (\cref{fig:labview}).
+
+In this chapter, I will discuss the earlier frameworks and abortive
+attempts that lead me towards my current architecture
+(\cref{sec:aio-frameworks,sec:pyafm:stack}).  I will also discuss some
+auxiliary packages I developed to support the main stack
 (\cref{sec:pyafm:auxiliary}).  I'll wrap up by comparing my stack with
 Prof.~Yang's earlier framework and summarizing lessons I've learned
 along the way (\cref{sec:pyafm:discussion,sec:pyafm:conclusions}).