From fbd428f088a3881259f77e3697ff6f7f6c1261ed Mon Sep 17 00:00:00 2001 From: Blaise Thompson Date: Sat, 7 Apr 2018 23:18:17 -0500 Subject: 2018-04-07 23:18 --- bibliography.bib | 16 +++++++++++++++- dissertation.tex | 32 ++++++++++++++++---------------- software/chapter.tex | 31 ++++++++++++++++++++++--------- 3 files changed, 53 insertions(+), 26 deletions(-) diff --git a/bibliography.bib b/bibliography.bib index 0859f66..b633eae 100644 --- a/bibliography.bib +++ b/bibliography.bib @@ -843,7 +843,6 @@ year = {1998} publisher = {{AIP} Publishing}, } - @article{HammPeter1999a, author = {Hamm, Peter and Lim, Manho and DeGrado, W. F. and Hochstrasser, Robin M}, title = {{The two-dimensional IR nonlinear spectroscopy of a cyclic penta-peptide in @@ -858,6 +857,7 @@ year = {1998} month = {mar}, } + @article{HammPeter2000a, author = {Hamm, Peter and Lim, Manho and DeGrado, William F. and Hochstrasser, Robin M}, title = {{Pump/probe self heterodyned 2D spectroscopy of vibrational transitions of a @@ -1002,6 +1002,20 @@ year = {1998} pmid = 19745871, } +@article{JoppaLucasN2013a, + author = {L. N. Joppa and G. McInerny and R. Harper and L. Salido and K. Takeda and K. + O{\textquotesingle}Hara and D. Gavaghan and S. Emmott}, + title = {Troubling Trends in Scientific Software Use}, + journal = {Science}, + volume = 340, + number = 6134, + pages = {814--815}, + year = 2013, + doi = {10.1126/science.1231535}, + month = {may}, + publisher = {American Association for the Advancement of Science ({AAAS})}, +} + @article{JoppaLucasN2013a, author = {Joppa, Lucas N. and McInerny, Greg and Harper, Richard and Salido, Lara and Takeda, Kenji and O{\textquoteright}Hara, Kenton and Gavaghan, David and Emmott, diff --git a/dissertation.tex b/dissertation.tex index 29d1821..b2aa572 100644 --- a/dissertation.tex +++ b/dissertation.tex @@ -68,16 +68,16 @@ This dissertation is approved by the following members of the Final Oral Committ \include{software/chapter} \part{Development} \label{prt:development} -%\include{processing/chapter} -%\include{acquisition/chapter} -%\include{active_correction/chapter} -%\include{opa/chapter} -%\include{mixed_domain/chapter} +\include{processing/chapter} +\include{acquisition/chapter} +\include{active_correction/chapter} +\include{opa/chapter} +\include{mixed_domain/chapter} \part{Applications} \label{prt:applications} -%\include{PbSe/chapter} -%\include{MX2/chapter} -%\include{PEDOT_PSS/chapter} +\include{PbSe/chapter} +\include{MX2/chapter} +\include{PEDOT_PSS/chapter} % appendix ----------------------------------------------------------------------------------------- @@ -85,15 +85,15 @@ This dissertation is approved by the following members of the Final Oral Committ \part{Appendix} \label{prt:appendix} \begin{appendix} -%\include{public/chapter} -%\include{procedures/chapter} -%\include{hardware/chapter} +\include{public/chapter} +\include{procedures/chapter} +\include{hardware/chapter} % TODO: consider inserting WrightTools documentation as PDF -%\include{irf/chapter} -%\include{quantitative_ta/chapter} -%\include{tg/chapter} -%\include{errata/chapter} -%\include{colophon/chapter} +\include{irf/chapter} +\include{quantitative_ta/chapter} +\include{tg/chapter} +\include{errata/chapter} +\include{colophon/chapter} \end{appendix} % post -------------------------------------------------------------------------------------------- diff --git a/software/chapter.tex b/software/chapter.tex index 26636f1..14693ee 100644 --- a/software/chapter.tex +++ b/software/chapter.tex @@ -158,17 +158,30 @@ written by generation upon generation of student. % Worse, software is sometimes abandoned or left untouched to become a crucial but arcane component of a scientific research project. % -\textbf{Testing.} \cite{SandersRebecca2008a, PrabhuPrakash2011a} +\textbf{Lack of testing.} \cite{SandersRebecca2008a, PrabhuPrakash2011a, JoppaLucasN2013a} Testing is a huge part of software development practices, but many researchers do not engage in -sufficient testing of their software... % -The issue of testing is also consistent with the system of peer review... -Software is not typically peer reviewed... +sufficient testing of their software. % +Without testing, even small software projects can rapidly ``get out of hand''---they can become +unsustainable and unmaintainable. % Especially for domain-specific computational software, determining the ``correct outcome'' to test against is often infeasible. % - -\textbf{Optimization.} \cite{PrabhuPrakash2011a} -Scientists do not optimize for the common case. % -Scientists are unaware of parallelization paradigms. % +Software is not typically peer reviewed, so a lack of software testing is often a weak link in the +loop of critical self assessment that science depends upon. % +On the positive side, testing can be an easy-to-add development practice with huge rewards. % +Well written tests can be a programmers best friend: helping her to ensure that her code has met +all of the given requirements. % +Well written tests allow programmers to optimize without worrying about breaking crucial components +of their software. % + +\textbf{Struggles with optimization.} \cite{PrabhuPrakash2011a} +Sometimes, a scientific application requires performant code. % +Scientists typically struggle to write such code. % +They may struggle with parallelization paradigms, or they may not understand what is limiting the +speed of their software. % +They may not have good intuitions about how long certain operations should take, or what patterns +could be used to speed up execution. % +Scientists typically do not use profiling tools which help them see which parts of their program +would benefit most from optimization. % \section{Good-enough practices} % ================================================================ @@ -274,7 +287,7 @@ Don't be afraid to be verbose, most programming environments have tab completion not all that hard to type. % Try to follow the recommended style for your language, but don't obsess about it. % -\textbf{Avoid premature optimization.} \cite{WilsonGreg2017a} +\textbf{Avoid premature optimization.} \cite{WilsonGreg2014a, WilsonGreg2017a} Don't get pulled into the trap of trying to make things perfect the first time. % Software design is typically a very iterative process, and for good reason. % Write for correctness first, and if it works, consider optimization. % -- cgit v1.2.3