aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bibliography.bib81
-rw-r--r--software/chapter.tex23
2 files changed, 83 insertions, 21 deletions
diff --git a/bibliography.bib b/bibliography.bib
index 9039484..45c51a0 100644
--- a/bibliography.bib
+++ b/bibliography.bib
@@ -223,6 +223,12 @@
pmid = 15332970,
}
+@misc{CRAN,
+ note = {Accessed: 2018-04-04},
+ title = {The Comprehensive R Archive Network},
+ url = {https://cran.r-project.org/},
+}
+
@article{CardDavidN1986a,
author = {David N. Card and Victor E. Church and William W. Agresti},
title = {An empirical study of software design practices},
@@ -292,6 +298,14 @@
month = {jul},
}
+@phdthesis{CarlsonRogerJohn1988a,
+ author = {Roger John Carlson},
+ school = {University of Wisconsin-Madison},
+ title = {Quantitative Aspects of High Resolution, Fully Resonant, Four-Wave Mixing
+ Spectroscopy For the Analysis of Vibronic Mode Coupling in Molecules},
+ year = 1988,
+}
+
@inproceedings{CarverJeffreyC2007a,
author = {Jeffrey C. Carver and Richard P. Kendall and Susan E. Squires and Douglass E.
Post},
@@ -475,14 +489,6 @@ year = {1998}
publisher = {American Chemical Society ({ACS})},
}
-@phdthesis{CarlsonRogerJohn1988a,
- author = {Roger John Carlson},
- school = {University of Wisconsin-Madison},
- title = {Quantitative Aspects of High Resolution, Fully Resonant, Four-Wave Mixing
- Spectroscopy For the Analysis of Vibronic Mode Coupling in Molecules},
- year = 1988,
-}
-
@phdthesis{DonaldsonPaulMurray2007a,
author = {Donaldson, Paul Murray},
school = {Imperial College London},
@@ -596,6 +602,12 @@ year = {1998}
month = {apr},
}
+@misc{FileExchange,
+ note = {Accessed: 2018-04-04},
+ title = {File Exchange - MATLAB Central},
+ url = {https://www.mathworks.com/matlabcentral/fileexchange},
+}
+
@article{FlemingGrahmR1998a,
author = {Fleming, G. R. and Passino, S A and Nagasawa, Y.},
title = {{The interaction of solutes with their environments}},
@@ -627,6 +639,7 @@ year = {1998}
month = {jul},
}
+
@article{FourkasJohnT1992b,
author = {Fourkas, John T and Trebino, Rick and Fayer, M D},
title = {{The grating decomposition method: A new approach for understanding
@@ -659,7 +672,6 @@ year = {1998}
pmid = 18832166,
}
-
@article{FurutaKoichi2012a,
author = {Furuta, Koichi and Fuyuki, Masanori and Wada, Akihide},
title = {Cross-Term Selective, Two-Pulse Correlation Measurements by Phase-Shifted
@@ -733,6 +745,12 @@ year = {1998}
pmid = 19449854,
}
+@misc{GitHub,
+ note = {Accessed: 2018-04-04},
+ title = {The world's leading software development platform ยท GitHub},
+ url = {https://github.com/},
+}
+
@article{GriffinGrahamB2013a,
author = {Graham B. Griffin and Sandrine Ithurria and Dmitriy S. Dolzhnikov and Alexander
Linkin and Dmitri V. Talapin and Gregory S. Engel},
@@ -851,7 +869,6 @@ year = {1998}
doi = {10.1063/1.1398579},
issn = 00219606,
}
-
@article{HyblJohnD2001b,
author = {Hybl, John D. and Christophe, Yannick and Jonas, David M.},
title = {{Peak shapes in femtosecond 2D correlation spectroscopy}},
@@ -891,6 +908,7 @@ year = {1998}
month = {apr},
pmid = 19745871,
}
+
@book{KahnemanDaniel2013a,
author = {Kahneman, Daniel},
title = {Thinking, Fast and Slow},
@@ -1517,6 +1535,18 @@ year = {1998}
publisher = {{ACM} Press},
}
+@misc{PyPI,
+ note = {Accessed: 2018-04-04},
+ title = {PyPI - the Python Package Index},
+ url = {https://pypi.org/},
+}
+
+@misc{PythonProfilers,
+ note = {Accessed: 2018-04-04},
+ title = {The Python Profilers (Python 3.5)},
+ url = {https://docs.python.org/3.5/library/profile.html},
+}
+
@misc{QMutex,
note = {Accessed: 2018-03-27},
title = {QMutex Class.},
@@ -1650,6 +1680,12 @@ year = {1998}
doi = {10.1007/s10664-005-3865-y},
}
+@misc{SemanticVersioning,
+ note = {Accessed: 2018-04-04},
+ title = {Semantic Versioning},
+ url = {https://semver.org/},
+}
+
@article{ShanmugamMariyappan2012a,
author = {Mariyappan Shanmugam and Chris A. Durcan and Bin Yu},
title = {Layered semiconductor molybdenum disulfide nanomembrane based Schottky-barrier
@@ -1690,6 +1726,12 @@ year = {1998}
month = {feb},
}
+@misc{SnakeViz,
+ note = {Accessed: 2018-04-04},
+ title = {SnakeViz},
+ url = {https://jiffyclub.github.io/snakeviz/},
+}
+
@article{SpectorIvanC2015a,
author = {Spector, Ivan C. and Olson, Courtney M. and Huber, Christopher J. and Massari, Aaron M.},
title = {Simple fully reflective method of scatter reduction in 2D-IR spectroscopy},
@@ -1904,6 +1946,17 @@ year = {1998}
month = jun,
}
+@article{WickhamHadley2014a,
+ author = {Hadley Wickham},
+ title = {Tidy data},
+ journal = {Journal of Statistical Software},
+ volume = 59,
+ number = 10,
+ pages = {1--23},
+ year = 2014,
+ publisher = {Foundation for Open Access Statistics},
+}
+
@article{WilsonGreg2017a,
author = {Greg Wilson and Jennifer Bryan and Karen Cranston and Justin Kitzes and Lex
Nederbragt and Tracy K. Teal},
@@ -1961,6 +2014,7 @@ year = {1998}
month = {jun},
}
+
@article{WrightJohnCurtis1997b,
author = {Wright, John C. and Chen, Peter C. and Hamilton, James P. and Zilian, Arne and
Labuda, Mitchell J.},
@@ -2072,7 +2126,6 @@ year = {1998}
month = {nov},
}
-
@article{ZanniMartinT2001a,
author = {Zanni, Martin T and Asplund, Matthew C and Hochstrasser, Robin M},
title = {{Two-dimensional heterodyned and stimulated infrared photon echoes of
@@ -2137,6 +2190,12 @@ year = {1998}
publisher = {Wiley-Blackwell},
}
+@misc{git.chem.wisc.edu,
+ note = {Accessed: 2018-04-04},
+ title = {GitLab (University of Wisconsin-Madison Chemistry},
+ url = {https://git.chem.wisc.edu/},
+}
+
@misc{h5py.Group,
note = {Accessed: 2018-03-25},
title = {h5py Groups documentation.},
diff --git a/software/chapter.tex b/software/chapter.tex
index 0027c5f..7fb9e6c 100644
--- a/software/chapter.tex
+++ b/software/chapter.tex
@@ -158,8 +158,8 @@ when properly applied. %
Before you sit down and implement a piece of software, stop! %
First you should try hard to find a library that already has what you need. %
You'll often surprise yourself with what you can find. %
-Search the package repository for your language, such as PyPI [CITE], MATLAB File Exchange [CITE]
-or CRAN [CITE]. %
+Search the package repository for your language, such as PyPI \cite{PyPI}, MATLAB File Exchange
+\cite{FileExchange} or CRAN \cite{CRAN}. %
Even if there is not a full solution to your problem out there, there is almost certainly a
solution to some part of it. %
Much better to have a dependency than a custom implementation. %
@@ -177,8 +177,8 @@ As a general rule, once you have two classes you need multiple files. %
Choose a non-proprietary format if at all possible---remember: you yourself might not have access
to the proprietary software in 10 years. %
Choose plain text if you can. %
-Consider conforming to specifications, such as Tidy Data. [CITE] %
-If you must, use open binary formats such as HDF5. %
+Consider conforming to specifications, such as Tidy Data \cite{WickhamHadley2014a}. %
+If you must, use open binary formats such as HDF5 [CITE]. %
Put as much metadata as you can into the file. %
Any piece of metadata that can automatically be added by the computer is essentially free---you
might as well do it. %
@@ -196,12 +196,13 @@ This is indispensable when trying to diagnose software problems. %
In order to use version control as effectively as possible, try to save the package after every
change (feature addition, bugfix, etc). %
Typically version control is coupled with uploading to a remote server, for example using git with
-GitHub [CITE] or git.chem.wisc.edu [CITE], but version control need not be synonymous with
-uploading and distribution. %
+GitHub \cite{GitHub} or git.chem.wisc.edu \cite{git.chem.wisc.edu}, but version control need not be
+synonymous with uploading and distribution. %
Tools like git have a lot of fantastic features beyond simply saving [CITE], but those are beyond the
scope of these ``good enough'' recommendations. %
Also consider defining a version for the software package as a whole. %
-Use semantic versioning [CITE], unless there is a strong reason not to. %
+Use semantic versioning (MAJOR.MINOR.PATCH) \cite{SemanticVersioning}, unless there is a strong
+reason not to. %
If the language you are using has a convention for representing the version programmatically, such
as a \python{__version__} attribute in Python, comply with that convention. %
@@ -245,9 +246,11 @@ Try to follow the recommended style for your language, but don't obsess about it
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 first, and if it works, consider optimization. %
-If you do need to make your software faster, use profiling tools like cProfile [CITE] and SnakeVis
-[CITE] to empirically determine what operations are taking the longest, rather than trying to guess
-or use intuition. %
+If you do need to make your software faster, use profiling tools like cProfile
+\cite{PythonProfilers} and SnakeViz \cite{SnakeViz} to empirically determine what operations are
+taking the longest, rather than trying to guess or use intuition. %
+Only optimize speed-limiting operations, and stop optimizing once the code runs as quickly as
+needed. %
\section{Object oriented programming} % ----------------------------------------------------------