From aff7629182048ea264a024fd32ceac70006a9caa Mon Sep 17 00:00:00 2001 From: Blaise Thompson Date: Wed, 4 Apr 2018 14:18:43 -0500 Subject: 2018-04-04 14:18 --- bibliography.bib | 81 +++++++++++++++++++++++++++++++++++++++++++++------- software/chapter.tex | 23 ++++++++------- 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} % ---------------------------------------------------------- -- cgit v1.2.3