The Programming Historian 2: collaborative pedagogy for digital history