forked from ContextLab/lab-manual
-
Notifications
You must be signed in to change notification settings - Fork 0
/
lab_manual.tex
1681 lines (1425 loc) · 85.3 KB
/
lab_manual.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Tufte-Style Book (Minimal Template)
% LaTeX Template
% Version 1.0 (5/1/13)
%
% This template has been downloaded from:
% http://www.LaTeXTemplates.com
%
% License:
% CC BY-NC-SA 3.0 (http://creativecommons.org/licenses/by-nc-sa/3.0/)
%
% IMPORTANT NOTE:
% In addition to running BibTeX to compile the reference list from the .bib
% file, you will need to run MakeIndex to compile the index at the end of the
% document.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%----------------------------------------------------------------------------------------
% PACKAGES AND OTHER DOCUMENT CONFIGURATIONS
%----------------------------------------------------------------------------------------
\documentclass{tufte-book} % Use the tufte-book class which in turn
% uses the tufte-common class
\definecolor{dartmouthgreen}{RGB}{0, 112, 60}
\hypersetup{colorlinks=true,linkcolor=dartmouthgreen} % Comment this line if you don't wish to have colored links
\usepackage{microtype} % Improves character and word spacing
%\usepackage{lipsum} % Inserts dummy text
\usepackage{booktabs} % Better horizontal rules in tables
\usepackage{graphicx} % Needed to insert images into the document
\graphicspath{{graphics/}} % Sets the default location of pictures
\setkeys{Gin}{width=\linewidth,totalheight=\textheight,keepaspectratio}
% Improves figure scaling
\usepackage[export]{adjustbox}
\usepackage{fancyvrb} % Allows customization of verbatim environments
\fvset{fontsize=\normalsize} % The font size of all verbatim text can be changed here
\newcommand{\hangp}[1]{\makebox[0pt][r]{(}#1\makebox[0pt][l]{)}} % New command to create parentheses around text in tables which take up no horizontal space - this improves column spacing
\newcommand{\hangstar}{\makebox[0pt][l]{*}} % New command to create asterisks in tables which take up no horizontal space - this improves column spacing
\usepackage{xspace} % Used for printing a trailing space better than
% using a tilde (~) using the \xspace command
\usepackage{hyperref} %web links/URLs
\usepackage{enumitem,amssymb}
\newlist{todolist}{itemize}{2}
\setlist[todolist]{label=$\square$}
\newcommand{\monthyear}{\ifcase\month\or January\or February\or March\or April\or May\or June\or July\or August\or September\or October\or November\or December\fi,\space\number\year} % A command to print the current month and year
\newcommand{\openepigraph}[2]{ % This block sets up a command for printing an epigraph with 2 arguments - the quote and the author
\begin{fullwidth}
\sffamily%\large
\begin{doublespace}
\noindent\allcaps{#1}\\ % The quote
\noindent\allcaps{#2} % The author
\end{doublespace}
\end{fullwidth}
}
\newcommand{\ourschool}{Dartmouth College}
\newcommand{\blankpage}{\newpage\hbox{}\thispagestyle{empty}\newpage} % Command to insert a blank page
\usepackage{makeidx} % Used to generate the index
\makeindex % Generate the index which is printed at the end of the document
%----------------------------------------------------------------------------------------
% BOOK META-INFORMATION
%----------------------------------------------------------------------------------------
\title{Lab Manual} % Title of the book
\author{Jeremy R. Manning, Ph.D.} % Author
\publisher{Contextual Dynamics Lab, \ourschool} % Publisher
%----------------------------------------------------------------------------------------
\begin{document}
\frontmatter
%----------------------------------------------------------------------------------------
% EPIGRAPH
%----------------------------------------------------------------------------------------
\thispagestyle{empty}
%\openepigraph{Quotation 1}{Author, {\itshape Source}}
%\vfill
%\openepigraph{Quotation 2}{Author}
%\vfill
%\openepigraph{Quotation 3}{Author}
%----------------------------------------------------------------------------------------
\maketitle % Print the title page
%----------------------------------------------------------------------------------------
% COPYRIGHT PAGE
%----------------------------------------------------------------------------------------
\newpage
\begin{fullwidth}
~\vfill
\thispagestyle{empty}
\setlength{\parindent}{0pt}
\setlength{\parskip}{\baselineskip}
\includegraphics[width=0.3in,left]{./lab_logo/CDL_Avatar_Cropped.png}\\\vspace{0.2in}
Copyright \copyright\ \the\year\ \thanklessauthor
\par\smallcaps{Published by the \thanklesspublisher}
\par\smallcaps{\url{http://www.context-lab.com}}
%\par License information.\index{license}
\par\textit{Current as of \monthyear}
\end{fullwidth}
%----------------------------------------------------------------------------------------
\setcounter{tocdepth}{1}
\tableofcontents % Print the table of contents
%----------------------------------------------------------------------------------------
%\listoffigures % Print a list of figures
%----------------------------------------------------------------------------------------
%\listoftables % Print a list of tables
%----------------------------------------------------------------------------------------
% DEDICATION PAGE
%----------------------------------------------------------------------------------------
% \cleardoublepage
% ~\vfill
% \begin{doublespace}
% \noindent\fontsize{18}{22}\selectfont\itshape
% \nohyphenation
% Dedicated to my family and friends.
% \end{doublespace}
% \vfill
% \vfill
%----------------------------------------------------------------------------------------
% INTRODUCTION
%----------------------------------------------------------------------------------------
\newcommand{\director}{Jeremy}
\newcommand{\coordinator}{Paxton}
\newcommand{\labmeetingtime}{Tuesdays at 12:00pm}
\cleardoublepage
\chapter{Introduction}\label{ch:intro} % Adding an asterisk leaves out this chapter from the table of contents
This lab manual is intended to provide a crash course in doing
research in the Contextual Dynamics Lab. It describes your rights and
responsibilities as a member of the lab. The manual also introduces
our general research approach and lab policies.
\newthought{Who is this lab manual for?}
\noindent \marginnote{\texttt{TASK:}
Upon reading through this lab manual for the first time, please make
at least one edit. You could correct a typo, clarify something
that's unclear, add a comment, etc. Also add (or comment on) an
issue via the
\href{https://github.com/ContextLab/lab-manual/issues}{GitHub issues
page}; you can use the existing issues to help decide what to
focus on for own edits if you'd like. Importantly, be sure to fork the \href{https://github.com/ContextLab/lab-manual}{GitHub
repository}, make your edits on your personal fork, and submit
a pull request with your edits so that everyone can benefit. Be sure to recompile
the .tex file when you make your changes so that the .pdf file is updated, and the \LaTeX~compiler
catches any errors you may have made.}
Every new lab member should read
the latest version of this lab manual in detail and reference it later
as needed. Periodically throughout the document, you will see margin
notes with listed \texttt{TASK} items. Completing your read through
entails: (a) reading the contents of the manual, (b) asking current
lab members about any confusing aspects, and (c) completing the
relevant \texttt{TASK} items. You will also see non-task
\texttt{NOTE} items; these provide helpful tips and additional
commentary on the nearby text.
\noindent This lab manual is meant to be a "living document." All lab members are welcome (and encouraged!) to submit edits that improve the content, clarity, and overall helpfulness of this document at any point throughout their tenure in the lab.
\newthought{What should you do if you don't understand something?}
\noindent \marginnote{\texttt{TASK:} If you haven't used \LaTeX~before (i.e.,
the document formatting language in which this manual is written),
you'll want to \href{https://www.latex-project.org/get/}{download \LaTeX} and take a look at
\href{https://www.latex-tutorial.com/tutorials/quick-start/}{this
``quick start'' tutorial}.} If you don't understand something you
read in this manual, it is important that you \textit{ask another lab
member for help}. Every member of the lab brings their own unique
knowledge base, training, life experiences, and perspectives.
Respecting and celebrating those differences drives the science we do.
If you're new to the lab or new to a particular technique, you might
feel like a newbie today---but chances are good that if you stick
around for a bit someone else will be seeking your expert opinion
before you know it. In addition to learning, there's another good
reason for asking for help: if you don't understand something, there's
a reasonable chance that you've discovered a mistake or a logical
inconsistency!
\marginnote{\texttt{TASK:} When you are done reading this manual and
carrying out all required tasks, please fill out the signature page,
sign it (electronically), and email a PDF (of just the signature
page) to
\href{mailto:[email protected]}{[email protected]}.
\textbf{You are officially a lab member once you have completed
all tasks in this manual and receipt of your signed and filled-out
signature page and checklist has been acknowledged by \director~or \coordinator.}}
\newthought{Why is it worth my time to read through the manual?}
Aside from pursuing your own curiosity, a major reason that you've
decided to join an academic research lab is probably because you want
to gain training or career-advancing experiences. This manual briefly
summarizes the collective wisdom of past and present lab members in a
way that we think will best allow you to achieve your objectives.
\textit{Learn from it}, \textit{challenge it}, and \textit{add to it}.
\newthought{What ``isn't'' this lab manual?}
\noindent This lab manual is
\textit{not} intended to provide a comprehensive overview of
everything you need to know to do your research projects. As
described next, you may not even \textit{know} what you need to know
to do your projects! Nevertheless, you need somewhere to start, and
this is that place.
We also maintain a repository of
\href{https://github.com/ContextLab/CDL-tutorials}{lab tutorials} that
provide guidance on specific tasks. If you are looking for help on a
particular task (or understanding a particular concept) that isn't
covered by the existing set of tutorials, please consider contributing
a tutorial of your own once you've figured things out!
If you encounter an error or problem you don't know how to fix, try
checking the \hyperref[ch:faq]{ask a question, answer a question}
section, where we maintain a log of common problems and quick
solutions. If you don't see a solution to your question there,
consider adding the question so that you or someone else can add
the answer for future lab members!
\chapter{Bill of rights and responsibilities}\label{ch:billofrights}
\marginnote{\texttt{TASK:} Read
\href{https://www.sciencemag.org/careers/2018/11/what-can-we-learn-dartmouth}{this
letter} about defining and characterizing boundaries between lab
members and noticing unhealthy norms.}
As a member of the Contextual Dynamics Lab, you are entitled to
certain rights, and you agree to take on certain responsibilities.
\newthought{Your rights as a lab member}
\begin{enumerate}
\item You are entitled to a safe work environment free from
harassment, abuse, violence, and discrimination in any form.
\item You are entitled to be supported and respected by all lab
members.
\item You are entitled to openly share your scientific ideas and
constructive feedback with all lab members.
\item You are entitled to appropriate credit (e.g.\ authorship,
acknowledgement, letter of recommendation) for your work and
ideas.
\end{enumerate}
\newthought{Your responsibilities as a lab member}
\begin{enumerate}
\item You agree to contribute to a safe work environment and to refrain
from behaviors that harass, abuse, expose to violence, or
discriminate.
\item You agree to support and respect all lab members, including
yourself.
\item You agree to openly share your scientific ideas and constructive
feedback with other lab members.
\item You agree to clearly communicate and document your
contributions to each research project (e.g.\ through GitHub
commits, reports, updates on Slack, etc.).
\item You agree to establish open lines of communication between
yourself and other lab members, and to address concerns or issues promptly and
directly with the relevant parties (to the extent that you feel
safe doing so).
\item You agree to carry out your work with integrity and diligence,
adhering to the highest possible standards of scientific
excellence.
\item You agree to utilize lab resources (including equipment,
money, time, etc.) responsibly and sustainably.
\item You agree to maintain a clean workspace free from clutter,
including both personal spaces (e.g.\ desks) and shared
areas (couch, sink, testing rooms, etc.).
\end{enumerate}
\newthought{Recourse}
\noindent If you feel your rights as a lab member have been, or are in danger of
being, violated, it is your duty to report those violations immediately to a
senior staff member (e.g.\ \director, Department Chair, Deans, police,
Title IX coordinator, ombudsman, etc.). Similarly, if you notice
others endangering others' rights, or neglecting their
responsibilities, it is your duty to report those violations to a
senior staff member.
\chapter{Official lab practices and policies}\label{ch:policy}
Our lab's practices and policies are intended to provide a framework
for \textit{maximizing efficiency}. Achieving our peak efficiency as
a lab means we are being as scientifically productive as possible, in
terms of knowledge discovery (learning new stuff) and dissemination
(papers, talks, conference presentations, publicly released datasets,
software, etc.). It also means that our fellow lab members are
achieving their training and career objectives. To achieve peak
efficiency, we need to succeed on three fronts:
\begin{itemize}
\item \textbf{Communication.} We want to foster an environment where
everyone feels comfortable contributing to the collective dialogue.
Our lab meets regularly to discuss logistical (e.g.\ scheduling, financial,
sociological) and technical issues. We also use a variety of
software packages to synchronize and facilitate communication within
our lab and between our lab and the broader scientific community.
\item \textbf{Resource allocation.} Our lab resources (e.g.\
equipment, time, money, attention) are finite. We want to foster an
environment where lab resources are used as efficiently as possible
to achieve our collective goals. We also want to foster
sustainable use of resources by regularly pursuing research funding opportunities.
\item \textbf{Adaptability.} The whole point of \textit{research} is that we
don't already know the answers to the questions we're exploring or
how to create the tools we're working on. That means that we won't
necessarily be able to plan out everything in advance. We often need to
be focused and efficient \textit{without knowing the end goal}!
\end{itemize}
Your job as a contributing lab member is to help us to achieve our
collective peak efficiency (as a lab) while also maximizing your own
training and career potential. To do this, the Contextual Dynamics
Lab practices \textbf{agile research}, as described in the next section.
%\newpage
\newthought{Doing agile research}
\noindent The agile approach to research we use in the Contextual Dynamics Lab
is inspired by the \href{http://scrumtrainingseries.com/}{Agile
Movement} in the software development world. The idea is to create
learning, adaptable teams to work on very small bite-sized tasks.
Specifically, project teams are designed to respond to
unpredictability in research through incremental, iterative work
``sprints.'' Each sprint lasts approximately 1--2 weeks, and results
in a demonstrable research product (e.g.\ a draft of a paper, a draft
of a grant, a completed analysis or figure, a poster, a software tool,
etc.).
This is different from traditional approaches that you may have
encountered in other labs or work environments, where a research team
might try to plan out every part of a project in advance in a series
of small steps. We still try to break projects into tiny bite-sized
chunks, but the key insight of the agile approach is that we only need
to know what the \textit{next} chunk is, rather than attempting to
forecast out over an extended timeline. Although it's often helpful to
have a general (if vague) sense of where things are going, we never
actually need to know where a project will ultimately end up. The
goals and process are constantly evolving. Perhaps the best
justification for this approach is that \textbf{the first day of a new
research project is when you're the most clueless about what you'll
find}. So how could that possibly be the ideal time to plan out the
entire project?\marginnote{\texttt{NOTE:} Our adapted approach also
draws inspiration from
\href{http://technocalifornia.blogspot.com/2008/06/agile-research.html}{this
blog}.}
Our \href{http://agilemanifesto.org/}{agile research manifesto} has three key
tenets:
\begin{enumerate}
\item Value \textbf{individuals and interactions} over
\textit{processes and tools}. To be clear, processes and tools are
important. But we must always keep the user or consumer in mind.
In practice this means that a simpler (but potentially less
comprehensive) tool or approach may be preferable in that it could
be easier for a reader or user to make sense of.
\item Value \textbf{working, intuitive tools and research products}
over \textit{comprehensive documentation}. Documentation is
important! But if our research products are designed in an
intuitive way, they can (in some sense) serve as their own
documentation. An intuitive tool or research product with decent
documentation is always preferable to an unintuitive tool or
research product with comprehensive documentation.
\item Value \textbf{responding to change} over \textit{following a
plan}. Each new step of the research process brings new insights
and potentially uncovers mistakes or inefficiencies. Those
discoveries may imply that a new direction is better than a
previously planned one. These are opportunities that should be
leveraged and embraced as part of the scientific process.
\end{enumerate}
While there is value to the \textit{italicized} items, we value
\textbf{bolded} items more. There are \href{http://www.agilemanifesto.org/principles.html}{twelve
principles} we use to achieve these tenets:
\begin{enumerate}
\item Our highest priority is to benefit the research community
through the early and continuous delivery of scientific outputs
(ideas, presentations, papers, tutorials, tools, devices, etc.).
\item We welcome changing goals and requirements, even late in the process. Doing
awesome science means keeping an open mind. Your original goals and
plans may no longer apply as your project progresses. Your original
hypotheses may be proven false. Your assumptions may be
incompatible with your data. Learn from these challenges and grow
with them. Avoid getting ``stuck'' by refusing to change, and allow your questions to follow where your data leads, rather than be constrained by your initial ideas.
\item We deliver research products frequently, from a couple of weeks to
a couple of months, with a preference for shorter timescales.
Before you have a concrete manifestation of your work (a figure, a
statistic, a presentation, a paper draft, a dataset, a GitHub
commit, etc.) you have nothing you can show the world for your
efforts. Produce research products, even if they're small and
seemingly insignificant, as often as possible. You can always
improve on an already produced research product.
\item The product itself (software, paper, poster,
presentation, grant) is the primary measure of progress. Before you've
incorporated your latest efforts into a shareable or communicable
research product, it (effectively) doesn't exist.
\item Continuous attention to technical excellence and good design
enhances agility. Getting research products out regularly requires
avoiding the temptation of aiming for perfection. Nevertheless,
there are often several almost-as-efficient ways to accomplishing
tasks that vary in their design quality. For example, consider
whether the solution to a problem you're working on might also apply
to other similar problems in the lab (that you or others are working
on or have discussed). Can you make your solution general enough to
cover those cases? Or, after completing a draft of a research
product, you will likely have some insights into alternative
(potentially better) approaches. Can you tweak the product to
leverage those insights?
\item Simplicity---the art of maximizing the amount of work not
done---is essential. Keep in mind the scope of your task. What's
the minimum viable set of accomplishments that will allow you to
complete that task? Get those done first and ``release'' your product
(e.g.\ commit to GitHub, share via Slack, etc.). You can always
define a new set of goals for your next task centered around
extending your just-released research product. This will help to
avoid aimless drift, whereby you spend large amounts of time on
tasks that are, in retrospect, tangential to the main scope of work.
\item Aim to get some amount of work done \textit{every single day} on
your project. Commit your changes to GitHub, or document your
progress in Slack or a Google Doc. Maintain careful records and
logs so that someone can pick up your work in the future (and that
future someone might be you!). Remember that your greatest
collaborator is your past self, but they don't respond to emails
or Slack messages! Help ``future you'' maintain peak efficiency
through methodical and well-documented work. (Note: don't spend
\textit{too} much time on documentation; e.g. GitHub commits are
themselves often sufficient for documentation, since once can always
compare different versions of a particular file.)
\item Build projects around motivated individuals. Give them the
environment and support they need, and trust them to get the job
done. Each day, ask yourself: ``am I motivated to do my best work
on my project today?'' If the answer is ``no,'' try to understand
why. Is it lack of resources? Lack of support? Distractions?
Ambiguous goals or research directions? Talk to your fellow lab
members and see how they'd approach the challenges you're facing.
\item The best architectures, requirements, and designs emerge from
self-organizing teams. Have you been chatting with a fellow lab
member and you're excited about what they're working on? Or do you
have ideas for building on that work? Or has a new potential team
project emerged from a spontaneous conversation? Think about how
you can leverage these opportunities into research products that
you're excited to work on!
\item The most effective and efficient method of conveying information
within a research team is face-to-face conversation. We use the
\hyperref[sec: scheduling]{CDL Google calendar} to coordinate formal
meetings between lab members. You can also sign up for meetings
with \director~via
\href{https://context-lab.youcanbook.me/}{YouCanBook.Me}. We also
use Slack to coordinate, share notes/data, etc. But the
\textit{ideal} form of communication in the lab is face-to-face, and
it often involves a whiteboard.
\item Agile research is sustainable research. Researchers should be
able to maintain a constant pace indefinitely. To be sure, we
sometimes have crunch times where we absolutely must meet a deadline
(e.g.\ a grant submission, project milestone, etc.). However, it is
far more efficient to make steady progress over an extended
timeframe than to fluctuate between periods of high and low productivity.
By distributing your workload you'll help yourself avoid burnout,
preserve your mental and physical health, and allow yourself time to
``step back'' and think about the big picture (effectively getting
stuff done between your work sessions!). Sustainable work habits
also promote good communication and coordination between project
team members.
\item At regular intervals, the team reflects on how to become more
effective, then tunes and adjusts its behavior accordingly. At
minimum, all active lab members need to reflect on their projects
once each week in your \textit{Weekly Snippet} (defined below). In
addition, you should
\href{https://context-lab.youcanbook.me/}{schedule} a 30 minute
meeting with \director~at the beginning and end of each term to
discuss:
\begin{itemize}
\item What your goals are for the upcoming term (start-of-term
meetings), or what you worked on over the prior term and how
well you feel you met your goals (end-of-term meetings)
\item Reflections on how things are going in the lab (you will
report how things have been going from your perspective, and will
receive feedback about how things have been going from \director's
perspective).
\item Insights you've come to regarding how we can (for your
project, as a lab, as a department, etc.) further optimize
efficiency or otherwise improve our work environment.
\item Any other issues, comments, questions, or concerns that you'd
like to check in about.
\end{itemize}
\end{enumerate}
\newthought{Papers}
\noindent Research papers are the primary research output of our lab.
Publications are the ``currency of academia,'' in that they are
central to career advancement. With each allocation of lab resources
(equipment, money, time) we should be asking ourselves how this
contributes to a paper.
\subsection{General procedure}
All lab papers should be coordinated with \director. A paper starts
with a discussion of:
\begin{enumerate}
\item What the paper is going to be about
\item What the key results are
\item What the overall ``story'' is
\item The current status of various components of the project
(e.g.\ data collection, analyses, figures, interpretation,
literature review, etc.)
\item Who is a potential candidate for authorship on the paper
\end{enumerate}
We draft papers in \LaTeX, either on GitHub or on \href{https://www.overleaf.com/}{Overleaf}
(an online platform that supports text editing and compiling PDFs in
the browser). Progress should be shared regularly via Slack.
\subsection{Authorship guidelines}
\marginnote{\texttt{TASK:} review the
\href{https://oir.nih.gov/sites/default/files/uploads/sourcebook/documents/ethical_conduct/guidelines-authorship_contributions.pdf}{NIH
Guidelines for Authorship}.} The Contextual Dynamics Lab follows
the
\href{https://oir.nih.gov/sites/default/files/uploads/sourcebook/documents/ethical_conduct/guidelines-authorship_contributions.pdf}{NIH
Guidelines for Authorship} in considering whether your contribution
to a project merits authorship on the paper. If you have made a
non-trivial contribution to a project but did not meet the
requirements for authorship, you will instead receive a citation in
the acknowledgements section of the paper. In general, you likely meet the
requirements for authorship if you contributed in any of the following
ways:
\begin{enumerate}
\item Drafted the manuscript (this warrants first authorship)
\item Came up with the idea or made other substantial intellectual
contributions that meaningfully shaped the trajectory of the project
\item Carried out an original experimental study (e.g.\ that you
designed or implemented)
\item Carried out non-trivial data analyses (e.g.\ more complicated
than $t$-tests)
\item Contributed novel tools or resources to the project that haven't
been published yet
\end{enumerate}
\marginnote{\texttt{NOTE:} Conference posters and abstracts generally
have substantially less stringent authorship requirements than
formal papers. The general rule of thumb for posters is that all
project team members should be co-authors.}
You are unlikely to meet the requirements for authorship if your
contributions were limited to the following:
\begin{enumerate}
\item Running experimental participants for an already-designed and
coded-up study
\item Running trivial data analyses (e.g.\ $t$-tests or similar)
\item Getting trained by one of the other project members on a
project-related task
\item Training another project member on a project-related task
\item Sharing already-published tools or resources
\item Editing or commenting on a draft of the manuscript
\end{enumerate}
The final determination for who will be an author on each lab paper
(and in what order) will be made by \director, following open
discussions with project team members.
\newthought{Making mistakes}
\noindent The work we do is complicated, and mistakes happen. When
you notice a mistake (a bug, misinterpretation, mislabeling, or any
other error), it is critical that you report the mistake immediately.
Whereas mistakes are unavoidable in science, negative impacts can be
minimized by fostering a workplace where reporting mistakes is
celebrated and accepted as part of the natural course of getting
things done. Mistakes are opportunities to learn and grow, and
identifying or noticing mistakes should be celebrated as part of our
growth as scientists. However, real harm can come from failing to
report mistakes soon enough. There is a Chinese proverb that says
``the best time to plant a tree was 20 years ago; the second best time
is now.'' Analogously, the best time to identify and correct a
mistake may have been in the past-- but the second best time is right now!
Example scenarios (not an exhaustive list):
\begin{enumerate}
\item You've shared a figure, statistic, or other result, and
you've realized there's a bug in your code.
\item You tried to collect some data and the experiment crashed or
yielded corrupted data.
\item You're re-reading a paper that you shared, and you notice a
mistake or typo.
\item You made a plan with your project team and you realized it's
flawed in some way, or that there's potentially a better solution
or approach.
\item You released a software package and you've found a bug or error.
\end{enumerate}
Appropriate actions for each of the above scenarios (this should
happen immediately after you notice the mistake):
\begin{enumerate}
\item Double check, to the best of your ability, that the mistake is
real. This may involve checking over code, rebooting a computer and
restarting an experiment, re-reading reference text, etc.
\item Create a GitHub issue describing the problem. Provide
information about how to reproduce the problem (if applicable), the
expected behavior, and the observed behavior. Also provide any
relevant system or environment information that may be necessary for
reproducing the problem (e.g. details of the computing environment).
\item Coordinate over Slack with your project team to formulate an
action plan.
\item Ask other lab members for help if the course of action isn't
clear. Also try Google and/or Stack Exchange.
\end{enumerate}
\noindent \textit{If you think you might have caught a mistake but aren't
sure, consult with another lab member! It never hurts to be safe!}
\newthought{Project roles}
\noindent Every project has four possible roles. You will play one or more of
these roles on your project:
\begin{enumerate}
\item \textbf{Project Owner.} This is the person responsible for
maximizing ``return on investment'' of the project effort. The project owner:
\begin{enumerate}
\item Is responsible for project vision
\item Constantly re-prioritizes the research backlog, adjusting any
long-term expectations such as publication and release plans
\item Acts as the final arbiter of requirements questions
\item Accepts or rejects each project increment
\item Decides whether to publish/ship the project
\item Decides whether to continue development
\item Considers interests of funding bodies (e.g. NIH, NSF, DARPA,
private organizations) and the scientific community
\item May contribute as a team member
\item Has a leadership role
\item Will usually be \director
\end{enumerate}
\item \textbf{Team Member.} Team members are responsible for carrying
out the project work. Team members:
\begin{enumerate}
\item Are cross-functional: includes members with development skills
(write code or papers/grants), testing skills (e.g.\ data
collection, test software, proofread papers/grants), and/or domain
expertise (e.g.\ knowledge or interest in a relevant research area)
\item Are self-organizing and self-managing without externally assigned
roles
\item Negotiate commitments with the Project Owner, one ``sprint'' at
a time
\item Have autonomy regarding how to reach commitments
\item Are intensely collaborative
\item Are (ideally) located in one team room (usually this will be the lab)
\item Are (ideally) committed to long-term, consistent lab membership
\item Are (ideally) focused on a single team/project at a time
\item Have a leadership role
\end{enumerate}
\item \textbf{Project Coordinator.} The Project Coordinator facilitates
the agile research process both directly and indirectly. The Project Coordinator:
\begin{enumerate}
\item Helps to resolve impediments
\item Creates an environment conducive to team self-organization
\item Captures empirical data to adjust forecasts (e.g.\ weekly Slack
reports summarizing progress)
\item Shields the team from external interference and distraction to
keep it ``in the zone''
\item Enforces timelines
\item Has no management authority over the team (anyone with authority
over the team is by definition not its Project
Coordinator)
\item Has a leadership role
\item Will usually be the Lab Coordinator (\href{mailto:[email protected]}{\coordinator})
\end{enumerate}
\item \textbf{Collaborator.} Collaborators are not formally part of
the project team and generally will not attend regular meetings as
part of the team. Collaborators do not have a leadership role in
the project. They may carry out one or more of the
following roles:
\begin{enumerate}
\item Provide data or share equipment
\marginnote{\texttt{NOTE:} A project may never be held up by a collaborator. If the
collaborator fails to provide a promised service, the project team
must adapt. If the collaborator fails to meet a non-critical
deadline, the project will proceed without that component of the
project. Involvement as a collaborator is fluid.}
\item Provide occasional consulting services
\item Provide occasional feedback on project results
\item Carry out minor analyses
\item Proofread documents
\item Help with administrative tasks such as scheduling
\item Help with information technology tasks such as computer
maintenance
\end{enumerate}
By definition, collaborators play a minor role in the project, and they are not
responsible for managing any aspect of the project. They may become Team
Members if their involvement increases. Generally collaborators will
be included in a paper's acknowledgement section, but collaborators
are not normally co-authors.
\end{enumerate}
\newthought{Meetings}
\marginnote{\texttt{TASK:} If you are a senior
lab member (lab manager, grad student, or postdoctoral
researcher), discuss with \director~at the beginning of each term
one thing that you can present at a lab meeting. Junior lab
members (undergraduates) are not obligated to present at lab
meetings, but may schedule a time to do so upon request by
coordinating with \director. \textbf{Exception: if you are presenting
your work outside of the lab, and if it is the first time you are
presenting that project, you \textit{must} do a practice talk for
the lab (regardless of whether you are a junior or senior lab member).}}
\noindent Effective lab communication requires forums for communicating. As
described below, we use \href{http://www.slack.com}{Slack} to
facilitate non-in-person communications, but Slack cannot replace
in-person meetings. In fact, our approach is set up to encourage
in-person interactions as often as possible---ideally several times a
week for group projects. We'll have the following regularly scheduled
meetings:
\begin{enumerate}
\item \textbf{Lab meeting.} We will have, as a lab, a regular weekly
1.5 hour meeting on \textbf{\labmeetingtime}. The precise
format of this meeting varies from week to week according to lab
needs and interests. Attendees: all active lab members.
\item \textbf{Project meetings.} Several of our collaborative
projects involve regular coordination with external lab members.
These are organized on an \textit{ad hoc} basis for each project.
Attendees: all project team members and any other interested active
lab members.
\item \textbf{Hackathons.} We occasionally organize hackathon
style events whereby spontaneously organized groups work towards
one or more very short term projects or goals. These are
scheduled on an \textit{ad hoc} basis. Attendees: all interested
lab members, any interested member of the Dartmouth community, and
external collaborators.
\marginnote{\texttt{NOTE:} Each term, you should sign up for a beginning-of-term or
end-of-term meeting time with \director~via \href{https://context-lab.youcanbook.me/}{YouCanBook.Me}.}
\item \textbf{Beginning-of-term and end-of-term meetings.} At the
start or end of each term, you should schedule a 30 minute
meeting slot with \director~to discuss your research
plans, progress, goals, etc. It is your responsibility to sign up
for a slot via \href{https://context-lab.youcanbook.me/}{YouCanBook.Me}.
\marginnote{\texttt{NOTE:} Department talks and colloquia are listed on the \hyperref[sec: scheduling]{PBS Department Events} calendar.}
\item \textbf{Department talks and colloquia.} Each week the
Department of Psychological and Brain Sciences invites internal
and external researchers to present on a wide variety of research
topics. You are encouraged to attend any that seem interesting.
Attendees: all interested lab and non-lab Dartmouth community
members.
\marginnote{\texttt{TASK:} If you are a paid lab employee, or if
you would like to submit weekly snippets, email \director~to get
added to the Howdy script.}
\item \textbf{Howdy weekly snippets.} Each week (via Slack), all
paid employees must fill out a ``weekly snippet'' with brief
answers to the following questions:
\begin{enumerate}
\item What did you work on last week?
\item What do you plan to work on this upcoming week?
\item What is impeding your progress?
\item Do you want to set up a meeting with \director? (If so, a
link is provided to schedule a meeting via YouCanBook.Me.)
\end{enumerate}
Whereas weekly snippets are required for all paid employees,
they are optional for all other lab members. To be added to the
weekly snippet schedule, email \director. Being added to the
weekly snippet schedules means that you will receive a link via
the ``Howdy'' survey bot (through Slack) each Monday at 9am.
Your answers are then compiled into reports that
\director~receives each Wednesday at 10 AM. If you are an
unpaid employee but are likely to request a letter of
recommendation, weekly snippets are a good way for me to
maintain a detailed sense of what you are working on from week
to week and how you are progressing over time. (Virtual)
attendees: all paid lab members and any other lab members who
want to participate.
\end{enumerate}
%\newpage
\newthought{Getting started in the lab}
\noindent
\marginnote{\texttt{TASK:} Create (free) Google, Trello, and GitHub
accounts. Send your addresses and/or usernames to \coordinator~
(cc'ing \director) so that you can be added to the lab groups. Also
send your preferred email address so that you can be added to the
lab Slack account.}The very first thing you need to do is to get set
up the following platforms, which will enable you to interact with the
rest of the lab, download and use the lab's software packages, and
accomplish various necessary administrative tasks:
\begin{enumerate}
\item \href{https://context-lab.slack.com}{\textbf{Slack.}} This is where
almost all not-in-person lab communications take place. It provides
an interface for asking questions, storing notes, and sharing
ideas.
\item \href{https://www.trello.com}{\textbf{Trello.}}
\marginnote{\texttt{TASK:} If you've never used Trello before, you
may find it useful to work through this
\href{https://trello.com/b/I7TjiplA/trello-tutorial}{Trello
tutorial}.} This is used to manage all projects and tasks. It
provides a way of tracking progress and impediments to progress.
\item \href{https://www.github.com}{\textbf{GitHub.}}
\marginnote{\texttt{TASK:} If you've never used GitHub (Git)
before, please work through these
\href{https://try.github.io/}{GitHub
Tutorials}. You may also find it useful to refer to this \href{https://github.com/ContextLab/lab-manual/tree/master/resources/git-cheatsheet.pdf}{Git cheatsheet} and this \href{https://github.com/ContextLab/lab-manual/tree/master/resources/workflow-of-version-control.pdf}{Git workflow} sheet when using Git/GitHub at first.} This is used to manage all code, papers, grants,
presentations, and posters. In other words, anything where it'd be
useful to track multiple versions, anything that we might ultimately
want to release to the public, and/or anything that multiple lab
members will be collaborating on. Each project has one or more
GitHub repositories.
\item \href{https://1password.com/}{\textbf{1Password.}}
\marginnote{\texttt{TASK:} If you are a senior lab member, request a
1Password invite from \director.} This platform is used by senior
lab members to manage secure notes and passwords (e.g.\ shared
software licenses, card numbers and chart strings, etc.).
\item \href{http://www.context-lab.com/}{\textbf{Lab website.}}
\marginnote{\texttt{TASK:} Submit a photograph (of yourself or some
other picture or image that you want to represent you) and a 2-3
sentence biography to \coordinator~so that you can be added to the
\href{http://www.context-lab.com/people/}{people page} on the lab
website. Alternatively, if you do not wish to be included on the
website, send a note to \coordinator~expressing that you do not
want to be added to the website.} We use the lab website to
distribute research materials, describe ongoing work, and provide
information about our work.
\end{enumerate}
Once you've created those accounts, you can ask any questions through
Slack (use the
\href{https://context-lab.slack.com/messages/general/}{\#general}
channel or the channel specific your project). Depending on your
role in the lab, you may be added on Slack as a single-channel guest
(access to only one channel) or a full member (access to all lab
channels). This generally depends on how long you've been in the lab
and/or how many projects you are expecting to interface with. If you
feel you don't have the appropriate account type, please communicate
your concerns to \director.
\newthought{Miscellaneous administrata}
\noindent You can pick up a lab key from Michelle Powers (Moore Hall
administrative office) by
\href{mailto:[email protected]}{emailing her} and cc'ing
\director. You will need to pay a \$5 deposit, which will be returned
to you when you return your key at the end of your tenure in the lab.
If you are the last one in the lab for the day, please be sure to lock the
door when you leave.
\newthought{Starting a new project}
\noindent
Our lab uses a number of project management tools and policies to
promote continuity across projects and lab members. First, make sure
that your project doesn't already exist (generally this involves
asking \director).
~
The general steps to starting a project are:
\begin{enumerate}
\item Create a Slack channel or decide on existing channel
appropriate for project use.
\marginnote{\texttt{NOTE:} If you create a new Slack channel for your project, invite \director, \coordinator, and other team members to join.}
\item Coordinate with \director~to set up a \href{https://get.slack.help/hc/en-us/articles/232289568-GitHub-for-Slack}{GitHub
for Slack} integration between your project and channel by sending a link to the GitHub repo in the project's Slack channel with a note asking to set up a Slack integration.
\item If your project involves testing human participants, verify
with \director~that your project is covered under an existing
active IRB protocol, and that you are listed on the protocol. (A list of
active IRB protocols appears at the end of this lab manual.)
Depending on the protocol, you may need to complete one or more online
training courses to become certified to run your experiment. If no
existing protocol is appropriate for your study, discuss with
\director~whether it would be more appropriate to create a new protocol or
submit an amendment for an existing protocol.
\item Create an initial set of short-term action items for kicking
off your project and post them to your project's Slack channel.
\end{enumerate}
%\newpage
\newthought{Joining a project}
\noindent To join a project, simply subscribe to the project's Slack channel and
GitHub repository. All project communications should either be
summarized on Slack or occur through Slack, whenever possible. This
keeps notes searchable and visible to all team members (except direct
messages, which are useful for private communications between one or
more team members).
Note that, as a general rule, you should focus the majority of your
efforts on one project at a time. This doesn't mean you need to do
the same thing every day (each project has many components and, as
described above, the focus of lab projects will change over time), but
it gives some sense of how you should be allocating your work time.
If you are a part-time employee of the lab, prior experience has shown
that you will most likely be able to make a meaningful contribution to
a only single project at a time. If you are a full-time employee, you
may choose to devote some of your time to a secondary project (with
the understanding that you will always prioritize your primary
project). If you want to change which project is your primary
project, or if you want to divide your time across multiple projects,
you should coordinate this with \director, \coordinator, and your team
members.
\newthought{Scheduling}
\label{sec: scheduling}
\noindent \marginnote{\texttt{TASK:} email \coordinator~to request
invites to each of the calendars below---the download links in the
lab manual are read-only!} Our lab's scheduling practices and
policies are intended to facilitate lab member interactions between
ourselves, our collaborators, and our experimental participants.
There are three basic tools the lab uses to organize and schedule
events:
\begin{itemize}
\item \href{http://calendar.google.com}{Google Calendar}:
\begin{itemize}
\item We use the
\href{https://calendar.google.com/calendar/ical/5ta50cfv4uih0a0k8m2di9dhjo\%40group.calendar.google.com/private-ff1338ddce84ac37d5ab682cd94e7f69/basic.ics}{main
lab calendar} to keep track of lab-wide events including lab
meetings, conferences, and activities.
\item We use the
\href{https://calendar.google.com/calendar/ical/dgcv8l8a8s10hfg2s5h0qec0q0\%40group.calendar.google.com/private-4810aed94f818d5748045447ab46c62d/basic.ics}{CDL
resources calendar} to coordinate the use of shared rooms and
equipment, such as testing rooms, our EEG systems, eye-tracker, hospital
equipment, software licenses, etc.
\item We use the \href{https://calendar.google.com/calendar/ical/h1j06dohcg7v1g2o5tkb7ijhvs\%40group.calendar.google.com/private-239aaf8b4dc60480c90e8d7fc353e229/basic.ics}{out-of-lab calendar} to keep track of known
absences (e.g. illness, travel, holidays, etc.).
\marginnote{\texttt{TASK:} If you are a graduate or undergraduate student, please add your
schedule to the CDL class schedule calendar at the beginning of each term.}
\item We use the
\href{https://calendar.google.com/calendar/ical/v2selomg4o6aobua7g922aamqc\%40group.calendar.google.com/private-4377dd542d0d1f6226c9657955b778c5/basic.ics}{CDL
class schedule calendar} to keep track of course
schedules of grad students and undergraduates.
\item We use the \href{https://calendar.google.com/calendar/ical/j6noo2tqahpsoq9na1h16paf3s\%40group.calendar.google.com/private-c3d75bea1ab4605947353d159d3dcd05/basic.ics}{DHMC meetings
calendar} to keep track of important events and meetings at DHMC.
\item We use the \href{https://calendar.google.com/calendar/ical/mp1bujb39ud5bgmmnq9r8dbiuk\%40group.calendar.google.com/private-8a3c6919c30e7b118ab3a4fd23aad6cf/basic.ics}{PBS department events calendar} to keep track of talks and events happening in the department.
\item You may also choose to create project-specific
Google Calendars, inviting project team members.
\item When you add an event (in any lab calendar), it is important
to include the following information as a comment (this does not
apply to ``out-of-lab'' events):
\begin{itemize}
\item Key contact names and contact information (email or phone)
\item Physical address (where the event will take place)
\item A brief description of the event and/or other relevant information
\item Attach any relevant documents via Google Docs
\end{itemize}
\end{itemize}
\item \href{http://www.doodle.com}{Doodle},
\href{http://www.when2meet.com}{When2Meet}, and