Home> Blog> Who Are We?

Who Are We?

This post originally appeared on the Software Carpentry website.

For the last three years, I've been storing information about instructors, workshops, and other things in a small SQLite database so that I can look things up and generate statistics when I need to. I can't publish it, since it contains personal identifying information, but since I had to write a script to migrate the data to the tool we're building to manage workshops, it only took another few minutes to create a partly-redacted version of the data. ("Partly" because someone who was really keen could work backward workshop URLs to instructors' names, cross-reference, and recover the names of some fraction of our instructors. Since that information is all public anyway, though, I don't think I've introduced any new risks.)

The SQL source for the database is here; with it, you can regenerate the database using:

$ sqlite3 swc.db < swc-db-2014-12-14.sql

You can then ask lots of questions—some examples are included below. If you'd like a little end-of-year procrastination, what else can you find in this data that's interesting?

-- How many sites have had how many events?  
select count(*), c
from (select count(*) as c
      from site join event
      on site.id=event.site_id
      group by site.id)
group by c
order by c desc;
numbercount
28
27
26
35
44
83
362
1171
-- How many people have taught?
select count(distinct person_id)
from person join task join role
on person.id=task.person_id and task.role_id=role.id
where role.name='instructor';
number
281
-- How many people started as learners or helpers and became instructors?
number
123
-- How often have people taught?
from (select count(*) as c
      from person join task join role
      on person.id=task.person_id and task.role_id=role.id
      where role.name='instructor'
      group by person_id)
group by c
order by c desc;
# instructors# workshops
143
114
312
211
210
59
58
47
56
165
174
323
502
1381
-- How has each training cohort done?
select cohort.name, count(*), round((100.0 * sum(trainee.complete)) / count(*), 1)
from trainee join cohort
on trainee.cohort_id=cohort.id
where cohort.qualifies
group by cohort_id;
nameenrolledcompletion %age
2012-08-26-online2055.0
2012-10-11-online2544.0
2013-01-06-online1216.7
2013-03-12-online2748.1
2013-05-12-online4526.7
2013-08-12-online4143.9
2013-09-30-online5731.6
2014-01-16-online6722.4
2014-04-24-online5831.0
2014-04-28-mozilla4365.1
2014-06-05-online2910.3
2014-06-11-online5927.1
2014-09-10-online8129.6
2014-09-22-uva3122.6
2014-10-22-tgac4126.8
2014-11-12-washington20
2015-01-01-online135
2015-01-06-ucdavis4
2015-05-01-online113