Development Process
At first the tickets were just a way for me to track my own work, but we're getting pretty good at using trac for an approximation of the XP planning game: Russ plays business customer and I represent development. Sometimes sketching milestones and breaking them down into tickets is straightforward enough, but sometimes I don't understand what he's asking for, so I ask him to tell me stories about how it works, and we capture those in the wiki.
-- Setting up project tracking with trac, hg, and a little help from my friends on freenode, Dan C., Aug 2010
See also:
- UsingVersionControl, especially setting up TortoiseHG on Windows
- HeronProjectTimeline (whose name is a bit ironic, since the trac uses "timeline" to look back; for looking forward, it uses "roadmap")
- UnderTheHood - details about this project management and issue tracking system
Testing, documentation, and quality software development
See WritingQualityCode.
Technical Topics
Adding new technologies involves getting buy-in from the team in DesignReview
Databases, Data Warehousing, and Information Security
- SQL - central to just about everything we do: HeronLoad, REDCap, etc.
- try SQL at W3Schools
- DB Browser for SQLite
- SQL and relational algebra in wikipedia
- Russ has some books
- OracleTips
- Data Warehousing (including ETL)
- Star schema (wikipedia) is a central concept in, e.g., our HeronLoad ETL work.
- The Muphy et. al. paper in Using I2B2 shows the I2B2 star schema.
- Kimball "wrote the book," or books; Russ has them.
- Pentaho Solutions covers an emerging open source approach (see also: notes in ticket:1)
- Star schema (wikipedia) is a central concept in, e.g., our HeronLoad ETL work.
- HERONsecuritynotes
Web Design, Security
HERON, REDCap, and CRIS all use the Web for user interface.
- Web Design for Developers - Dan got it based on a nod from Tim Bray. I haven't read it yet, though
- Tangled Web book on web security
- AuthorityInjection -- patterns of secure composition
- HeronAdminDev
- UsingDrupal
- We've had good experience with the python pyramid web framework; see [9e4f4c169c5e/reqroute] to get started. It's known for a "pay only for what you use" style, and it works reasonably well with AuthorityInjection, since it doesn't rely on globals.
If you're new to HTML, HTTP, CSS, etc., see How does the Internet Work etc. in the Web Standards Curriculum.
Opening New Browser Windows
Opening New Browser Windows is one of the top 10 mistakes in web design, according to Jacob Nielsen. It seems to be a KUMC norm, meanwhile. todo (Dan): find KUMC web styleguide and see if this is a conscious decision, and what it would take to get it changed.
Programming Languages: Python, Javascript, PHP, Java
See WritingQualityCode to get started with our emerging (#1046) preferred toolset that supports all of these (as well as SQL and HTML):
- python - we use it in our HeronLoad ETL process, HeronAdminDev, web integration, etc.
- python cheat sheet
- PEP: 8 Style Guide for Python Code
- python tutorial
- Python is a language you can get into on one battery'' -- Tim Berners-Lee, Oct 2010
- official python docs are a great reference. (multiple formats are available, including typeset versions for printing.)
- Russ has some books
- deployment: PythonOnWindows, PythonVirtualEnvironment
- Javascript - We're Using I2B2, which has a javascript front-end.
- JavaScriptTips especially The Good Parts, by Crockford
- flow, jspm in Jenkins (#3556)
- PHP
- We are UsingDrupal for CTSA#frontiers-web and we use REDCap; both are written in PHP.
- Tamara has a big book
- PHP: a fractal of bad design, Apr 2012 by eevee, explains pretty well why Dan avoids it, as a rule.
- Java
- We're not doing much Java development, but we're Using I2B2, which has a middle tier written in Java.
- JavaDevTools
- Effective Java 2nd Ed by Joshua Bloch
Stack Overflow is a great community resource for all of the above (and much of the below...).
Software Carpentry is a good source for somebody who's new to programming.
System administration, web server administration
- InformationResources - our partners in monitoring, administration of HERON, REDCap, CRIS, etc.
- ApacheTroubleShooting
- ops keyword tickets
Amazon Web Services
Statistics and Data Analysis with R
Our work increasingly integrates stats, e.g. HeronStatsPlugins.
- RStudio - desktop, web tool for R development
- Introduction to data analysis Hadley Wickham Fall 2012. Rice University
- R: R project
- Introductory Statistics with R by Peter Dalgaard (Russ's)
- Google's R Style Guide
- Advanced R programming by Hadley Wickham
- Dan's bookmarks tagged statistics and programming
- Dan got The Art of R Programming. on the basis of recommendations such as Nov 2011 on Stack Overflow
- It has, for example, nothing on automated testing; so I'm not sure I'd recommend it.
WritingQualityCode#r-pkg is starting to take shape.
Coding chunks and Collaboration Mechanics
I maintain that programming cannot be done in less than three-hour windows. It takes three hours to spin up to speed, gather your concentration, shift into "right brain mode", and really focus on a problem. Effective programmers organize their day to have at least one three-hour window, and hopefully two or three. -- The Tyranny of Email, Ole Eichhorn, March 2003
I disagree with Eichhorn about shared text chat. More on that below. -- Dan
Meetings
Meetings are valuable, but costly too. So let's be judicious about doing them, and do them right. (Avoid the The Seven Sins of Deadly Meetings)
One reason programmers dislike meetings so much is that they're on a different type of schedule from other people. Meetings cost them more. -- Maker's Schedule, Manager's Schedule, Paul Graham, July 2009
- CodeRevewNotes (ugh... misspelled... need trac wiki rename tool)
Improving efficiency with text chat
See also #160 on shared text chat, GPC:ticket:46 for gpc-dev chat, and ticket:751#comment:2 for a note on Adobe Connect.
We (Biomedical Informatics) are physically co-located, so it's less critical than when collaborating remotely, but it's still useful:
- technical details are often easier to communicate in text than by voice (e.g. error messages, URLs, commands to type)
- text chat is near-real-time; you can think out loud and somebody might respond right away or quite a while later or not at all.
The random rewards of gambling are much more seductive than a more predictable reward cycle. -- Your brain on gambling
- People shouldn't be expected to respond to email instantly. Allowing email to interrupt work is terribly counter-productive; it's best to leave it be until a natural stopping point.
- Ringing somebody's phone is sure to break their concentration.
The interruption costs more than just the minute or two to deal with the incoming call or message:
It typically takes about 15 minutes of uninterrupted study to get into a state of "flow", and the constant interruptions and distractions of a typical office environment will force you out of "flow" and make productivity impossible to achieve.
In your development process, identify the activities that disrupt flow, and modify them until they don't. ... For example, consider getting rid of the telephone.
-- Mental State Called Flow in the original wiki on People Projects And Patterns in Software Development.
With shared text chat, people can choose how much attention to give it any time, to participate or not, respond quickly or slowly, etc. This leads to some suggestions:
- Rather than asking "may I interrupt you?" face to face or by phone, consider text chat first. There's no way to say "no" in the other two media.
- If it's important but not urgent, use email.
- Feel free to turn off or tune out text chat; if it's critical, people can escalate to other means.
Lately, we've been using rocket.chat - connect to https://chat.10.22.4.120.xip.io via browser or use Rocket.Chat.Electron on Windows, iOS, Linux.
For real-time collaboration with (and support from) the wider open source community, see FreeNode.
See also Social standards and coding fugues, Dan C., Feb 2007
Recruiting, Interviewing
- Cracking the Coding Interview: 150 Programming Questions and Solutions by Gayle Laakmann
- Coding Interview question: Identify a Binary Search Tree