It was a week or so before [[http://djangodash.com/|DjangoDash 2011]]. As the major sponsor of the dash, we had made the decision to not compete, but we did want to have our own internal Dash. As usual, James had an idea—a programming language [[http://en.wikipedia.org/wiki/Chrestomathy|chrestomathy]].


The idea started from a simple question: "I know how to do X in Python but how would I do it in Javascript?" After j2labs [[http://twitter.com/#!/j2labs/status/84723641299898368|asked a similar question]] regarding Python and Scala, it became clear there might be an opportunity for a [[http://twitter.com/#!/jtauber/status/84788619331641345|"code golf [site] but specifically [for] translating snippets from one language to another"]].

This evolved into the idea of a web site where people could learn new programming languages or improve upon languages they already knew by seeing and translating code snippets. This would be complete with all the social aspects of a community knowledge-base site like the popular [[http://stackoverflow.com|Stack Overflow]], but instead of questions and answers that included code snippets, we'd invert the paradigm and make it primarily about the code. In addition, we would use a graph structure at the core instead of a simple tree. A graph where the arcs between nodes held their own signifigance.

We would build a programming language chrestomathy in a way that was social, that would hopefully become a community of sharing and learning.

We decided to follow the same time contraints of the dashers. Good results always come from constraints, or so it seems. It was just James and myself sprinting through the weekend but we got a pretty fast start with our latest Pinax work and external themes (which are just another Django app). Yulka had put together a beautiful starter theme that hadn't been used yet on anything so the first thing we did was package it up and add it to a Pinax basic project. In the very first hour or so, we had a runnable site that looked fantastic. It had profiles, account management, private beta signup/registration.

We decided on the name [[http://kodenode.com|KodeNode]] as a play on the fact that we were building a graph of nodes of code snippets; and the Robot mascot, well, that was just fun.

We wanted to keep initial launch very simple. Just the ability to add Nodes, which are snippets of code with a title, the ability for other users to respond to the Node by writing an example in the same or a different language and depending on the response type, be able to annotate the Arc between the two nodes. That was about it.

We finished that off rather quickly and had half a weekend left so we started adding more features on our wish list, starting with Bounties. A bounty in KodeNode is where a user can put up a reward for responding to a node of theirs and if selected as the answer, the points put up for the reward will transfer from the user's balance to the winner's balance. The points system is a currency of sorts.

Since then we have added a number of features:

  • invitations
  • voting
  • points transfer on winning a bounty
  • commenting
  • a proper code editor

We still have a lot more planned for the site and will be launching it for public registration soon, but in the meantime if you are interested in checking us out early, let us know and we'll get you an invite.