Colliding Objects

Coding, design, and broken feedback loops


Itay Maman. Programmer, researcher, teacher.

Timeline: Coding at Google (search backends, dev. infrastructure) for the past three years. Prior to that: IBM research; Ph.D. (formal patterns in java programs) at the Computer Science department of Israel Institute of Technology (aka, Technion); a couple of startups. In between I also interned, at IBM's Watson Research Center.

Since 2009 I am teaching Software Design at the Technion. This is an advanced-undergrad/grad. course dealing with topics such as coding, design, and broken feedback loops (just like this site).


While I could theoretically use an existing blogging platform (actually I tried it for a couple of years: javadots) I decided to work on my own platofrm. While part of the reason is the passion to try new technolgies, there were additional reasons. My wishlist included:

  • Markdown. WYSIWYG editing always frustrates (all sort of hidden styles lurking underneath). When you go down to the HTML level to fix it you see maze of divs and spans which no one has ever managed to solve.
  • Full control over look/feel/layout.
  • Some server side logic for supporting "advanced" features which go beyond statically-served files (in particular: programming quizzes and challenges).

So several weeks ago, while on vacation (seems like all best programs are written on vacations, isn't it?) I sat down and hacked this web-site.


This page is node.js served. Currently, there is a mongodb instance but it is only used for storing sessions. All content is fetched from files, which are part of the git repo. For testing I use jasmine-node and zombie. Whenever I push to Github I also push to to an Heroku-hosted staging app. If I want to update prod. I run a script program that (a) invokes acceptance tests against the staged version; and (b) re-deploys that version to prod. Finally, Pingdom is hitting the main page once a minute to make sure users can see something.