Goal: Version Control for Data on the Distributed Web

We are creating an open-source adapter to allow Noms to store its data on IPFS. This trio of technologies will provide top-to-bottom support for distributed version control of tabular data.

Secondary Goal: A model project for mentorship and collaborative learning

We are structuring this project with a strong emphasis on mentorship and group learning so that it can function as a setting where people become great software engineers by contributing to this open source project.

Read an initial statement of intention in a blog post about Bypassing (some) Cultural, Gender and Racial Barriers by Training Great Engineers

Schedule for Oct-Dec 2016

Week Date Location Topic (and links to workshops)
1 10/04/2016 Localhost Introduction: Project overview, roadmap, and technical fundamentals
2 10/11/2016 Localhost Get Started with Golang
3 10/18/2016 Localhost Version Control Week I: Git hands-on & light theory
4 10/25/2016 Localhost Version Control Week II: Pull Requests and Code Reviews
5 11/01/2016 TBD Version Control Week III: Noms hands-on
- 11/08/2016 - ELECTION DAY - GO VOTE!
6 11/15/2016 TBD Version Control Week IV: Panel discussion — what do our users want to do with their data? How could Noms (and Noms+IPFS) help?
7 11/22/2016 TBD Version Control Week V: Under the Hood of Git and Noms: deeper theory / data models of Git and Noms
8 11/29/2016 TBD IPFS: hands-on & theory
- - - Switch to Coding: The IPFS workshop will be the final “pre-development” workshop. The following workshops will be our “transition to development” phase, during which participants will need to decide whether they’ll participate in the sprints going forward.
9 12/06/2016 TBD Agile Process Crash course in Agile Development Process / Methodology
10 12/13/2016 TBD Testing Your Code Writing Tests, Running them, and Using Continuous Integration

After this, we'll do eight weeks of development sprints, during which we'll design, build, test, and deploy our Noms–IPFS connector.

Contact Us

We mainly use Slack to communicate. To contact us, log into the Code for Philly Slack and post a message in the dat-jawn channel. To make sure the organizers know you've posted a message, address it to @flyingzumwalt and @jadrian.

If you've never used the Code for Philly Slack before, create an account on the Code for Philly website then go to and log in using your Code for Philly username & password.

Getting Involved

There are multiple ways to get involved. If you want to write code, consider Joining the Cohort. There are also a number of other ways to get involved. We are looking for people to:

  1. Join the Cohort - If you're in Philadelphia and want to write code, consider Joining the Cohort. See Joining the Cohort below
  2. Be a Mentor - If you have coding skills and want to help with design sessions, pair programming, code reviews, etc. Let us know!
  3. Provide Use Cases - If you have use cases for a 'git for tabular data', get in touch. We want to hear from you.
  4. Help with Community Engagement - Want to help us stream our meetings online? Want to help document our work so the world can follow along? Let us know.
  5. Contribute Remotely - If you're not in Philadelphia or can't get to our meetings, you can still follow our meetings, participate in discussions online and contribute Pull Requests.

Joining the Cohort

This is an opportunity to learn the skills of great engineers by participating in a real project. We are currently recruiting a cohort of 15–20 participants.

The current cohort is open for new people to join by September 27th.

What is a Cohort?

In this case, a cohort is a group of people who all began working and learning together at roughly the same time.

We are tackling a complicated problem that involves a lot of technologies. By starting with a cohort of people who commit to learn together and contribute for a while, we get to do more collaborative learning. It also gives us an opportunity to establish a healthy culture of respect and mutual support within the project.

As the project proceeds, it will be easier to incorporate new contributors without forming a cohort.

Skills We Will Practice

  • Working in an Agile Team, coordinating efforts using Github Issues and Scrum-style meetings/calls
  • Designing Software
  • Testing Software
  • Contributing code using Pull Requests on Github
  • Reviewing Pull Requests
  • Releasing and Maintaining Software

Requirements for Cohort Members

In order to join the cohort, you should be

  • Able to provide and maintain your own working computer
  • Comfortable writing code in some programming language — we will be using the Go programming language
  • Able to attend most of the in-person workshops for the first eight weeks and to do 5+ hours of work outside of the meetings each week
  • Interested in Data Science and Open Data
  • Willing and Legally Able to contribute code under an open source license

Project Activity

Update #9

Recruiting New Cohort for Mentorship Project

We're recruiting a new set of participants for the Dat Jawn Mentorship Project. Enrollment is open until 9/27. Tell your friends!

This project has three main purposes:

  1. Create open source software
  2. Provide mentorship in computer science and software development
  3. Give people experience creating software on teams

What We're Creating

We will be creating software that deals with distributed version control for datasets, which is a pretty advanced topic. We’ve framed the work so that it’s connecting with two established open-source projects: noms and ipfs. Those projects do most of the heavy lifting so we can focus on learning about the concepts involved.


  • Enrollment (8/30–9/27): meet us, set up your dev environment, start learning Go-lang
  • Workshops (10/4–11/22, just before Thanksgiving)
  • Transitioning to development (11/29–12/6)
  • Development sprints (12/13 through mid-February)

Who Can Join the Cohort

  • You must provide your own laptop.
  • You must be comfortable writing code in some programming language (Javascript, PHP, Python, Ruby, Java, C++, etc). We will not be covering basics of software programming.
  • You must commit to attending at least the 8 weeks of workshops.
  • You must be prepared to work hard at collaborating with a team and dealing with complex computer science topics

Why You Should Join

Get experience with…

  • Working on teams: using Agile processes, writing tests, documenting code, using version control
  • Looking underneath the hood of version control systems
  • Creating and sharing data in distributed systems
  • Applying user-centered design practices
  • Coding in the Go programming language

How to Get Involved

Update #8

Activities for Week 4 (03/06 - 03/12)

If there's one Jawn meeting you don't want to miss this quarter, it's probably this week's meeting.

This week we will start implementing real features. Plus we have a special meeting lined up at the code{4}lib conference on Wednesday where we will get to interact with software developers from around North America.

Wednesday Meeting: Claiming Assignments and Hacking with Code4Lib attendees

Matt has arranged for us to meet at the code{4}lib conference on Wednesday evening and has invited some of his favorite coders to participate in our first Agile Scrum, where you will pick up assignments from the list of assignments on github. There will be plenty of fun coders around all evening to pair program, answer questions, or just hang out.

Time: Wednesday 6pm-9pm.
Location: Sheraton Society Hill

Note: we might stop hacking and go socialize around 8pm. Depends on whether we're on a roll.

Tuesday Presentation: Matt's Talk at code{4}lib

Matt will be on a panel at code{4}lib 2016 where he will talk about Jawn.

Time: Tuesday 1:00pm-2:30pm.
Location: The entire conference will be live-streamed on the code{4}lib YouTube channel. If you miss the live stream, the video should be up there soon after the conference.

Update #7

Activities for Week 3 (02/28 - 03/05)

We have a lot going on this week!

  • Group Assignment: Import Rows from a CSV File and Convert to JSON
  • Call: Use Cases for Dat Jawn Tuesday 3pm. Google Hangout
  • Working Session Wednesday 6pm-9pm at Devnuts
  • Call with Mathias Buus from Dat Project Thursday 6pm. Google Hangout

Group Assignment

Everyone should try writing the code to satisfy this github issue, or at least think through how you would write the code and test it. If you have time, take a stab at it before Wednesday so we can consider the different approaches we come up with. This will give us an opportunity to look at API design, IO streams, and unit testing.

For more info, see

Tuesday Call: Use Cases for Dat Jawn

Time: Tuesday 3pm. Location: Google Hangout

Matt has organized a call to gather use cases for Jawn. The goal is to get real-world stories about how people will be using this software. The call is mid-day, so most of you won't be able to join. That's fine! You can watch the recording, and there will be more calls like this in the future.

This will be a public Hangout On Air, meaning anyone can watch the conversation live and ask questions in the Dat irc channel The call will be recorded and available on YouTube afterwards.

Wednesday Working Session

Time: Wednesday 6pm-9pm. Location: Devnuts 908 North 3rd Street, Philadelphia, PA

This is our weekly in-person working session.

This week we'll be at Devnuts, which is the place where most Code for Philly meetups have been happening for the past few months.

Thursday Call with Mathias Buus from Dat Project

Time: Thursday 6pm-9pm. Location:Google Hangout

Discussion: Tracking Tabular Data in Hypercore

Discussion between the Dat Jawn team in Philadelphia and Mathias Buus from the Dat Project ( This is a chance for the jawn team to clarify our understanding of Hypercore and how things like Row Additions, Updates and Deletes will appear in hypercore's Merkle DAG.

This will be a public Hangout On Air, meaning anyone can watch the conversation live and ask questions in the Dat irc channel

Update #6

Our second meeting will be on Thursday instead of Tuesday.

We will meet on Thursday 25 February 6:30pm - 9:30pm at the The Hub CityView (not to be confused with Commerce Square or Cira Centre). We're being hosted by New York Code + Design Academy, Philadelphia Campus.

Time: Thursday 25 March 6:30pm - 9:30pm
Location: Hub CityView, 30 South 17th St, United Plaza, 14th floor

When you go into the Hub, look for Michael, he can take you to the room.

If you're free on Tuesday, consider going to the Code for Philly Open House Night at National Mechanics.

FYI: There's also a job fair hosted by Philly all day Tuesday More info:

As always, you can reach us in the Slack channel.

Update #5

Our first meeting went very well. We had eight people - a great start! The most important info from the meeting:

  • The project is now called "Jawn" or "Dat Jawn"
  • We're using Slack to communicate (see "Contact Us" on the page above)
  • We're still looking for more people to join our cohort - especially women and people of color!
  • There's info in the Issues and the Wiki on the github repository

For more info about what happened, read Matt's blog post

Update #4

We will have our first meeting at the next Code for Philly meetup on Tuesday February 16th. If you're interested in getting involved of if you have questions, please come!

For details about the meetup, go to the meetup page.