‘SixthSense’ technology could change everything


Cellphone in your hand ... literally

If you’ve never heard of TED its a small non profit organization devoted to hosting short 18 minute talks on some of the most intellectual, ground breaking, and informative ideas going.  TED stands for the three worlds it brings together: Technology, Entertainment, and Design.

I downloaded the TED app for my iPhone a month ago or so to watch some of these presentations on the bus on the way in to school or listen to the audio presentations while at work because I find some of them totally fascinating.

One of the most recent presentations I saw was for a device called the ‘SixthSense‘ gesture interface device.

Its being developed by MIT media lab by Pranav Mistry.

The idea behind this technology is to be able to interact with physical objects around us in the digital world.

  • Imagine being able to just make a gesture with your hands to take a picture and then walk up to any surface and display your pictures on it and manipulate them.
  • Imagine being able to take a piece of paper and pinch a paragraph of text and then drop it onto your computer screen and have it appear.
  • Imagine being able to dial a phone number from a keypad on your hand.
  • Imagine being able to pickup the newspaper and see a photograph turn into full motion video related to the news story.

Video on the newspaper

Now imagine if that technology was open sourced to the world to grow and develop.  At the end of the presentation Mistry mentions that the technology will be open sourced and as soon as next month possibly.

This could easily be the next big thing in how we harness the power of information.

Its hard to explain it in words because I’ve never seen anything else like it.

Check out the video of the demo and I promise you won’t be disappointed.

After you watch the video check out their website and read more about it.

What an excellent idea for an FSOSS presentation in the future.


A guide to git for the processing.js community (6 easy steps)


I’m going to be honest. I … hate … git.

Figuring out how to use git to push my changes up for 0.2 took longer than it did to write all my 0.2 code and all the tests and demos that went along with each function (over 1000 lines of code for all the tests and demos).

So to make sure I never have to go through this hell on earth again I’m writing a post to remind myself how to do it later and to help out anyone else who has trouble with git.

This is a ‘git for dummies’ tutorial strictly laid out for the people working on processing.js and the commands are all tailored to what we have to do from start to finish.  From cloning the repo locally to making changes, committing, checking status, and then pushing the changes to your fork.

This will include only the bare essentials to just do it and avoid any of the other crap you just don’t need to know and that will confuse you (and me later when I reread this to do my next releases). A more detailed tutorial for the basics is here.

This tutorial assumes you already have git installed and configured to connect properly.  If you do not have that then read an excellent post by Anna from my DPS909 course on how to setup git for the processing project here.


  1. Create a fork of the latest code.
  2. Clone the repository to copy the latest code to your computer. OR pull the latest updates if you have already cloned before.
  3. Make the changes to the code with your new content.
  4. Mark your changed files by committing them and add a comment about the changes you made.
  5. Push your new code up to your fork.
  6. Request a pull of your new code from F1LT3R Post in your lighthouse ticket the branch and commit links for your changes to get your new patch reviewed.

That’s it.  Here are the details

1. Create a fork of the latest code. If you already have an old fork and need to delete it just click the edit button and all the way at the bottom you’ll see a delete option.  git wouldn’t let me have 2 forks going at the same time. Or its a bug that when you click fork on the newest code it doesn’t let you and takes you to your old fork I don’t really know why or care anymore at this point.

From the picture below go to this address and select the fork button.  Give it about 20 seconds and refresh the page and it will be your new fork.

fork the master code base

2. Clone the repository to copy the latest code to your computer. OR pull the latest updates if you have already cloned before. I did a fresh clone in a new directory to make it simple.

clone repository

3. Make the changes to the code with your new content. Change whatever you need to in the code.

4. Mark your changed files by committing them and add a comment about the changes you made.  After making changes to your files you have to commit which files you want to prepare to be pushed up to the repository.

This picture explains the process well.

To commit use the command ‘git commit -a’ for all changed files. Or use ‘git commit <filename>’ for one specific file at a time.  Using commit only queues the file up to be pushed soon, it doesn’t send the file to the repository right away.  Add the attribute -m on the end of the command to specify a comment for the commit when it gets pushed to git hub later.

Look at this picture for how I did it

git commit processing.js -m 'comment'

5. Push your new code up to your fork. Now that your code is marked as committed and ready to be pushed you just have to push it.  First you can check the status of what is ready to be pushed with >git status.

git status

It says no changes added to commit but its wrong don’t worry about that the important part is it says ‘your branch is ahead of origin/master by 1 commit’.  Now your ready to push.

Type >git push git@github.com:<username>/processing-js.git

Assuming your fork is called processing-js.git just substitute <username> for your username.  Just check your fork location in the repository for what to put here.  It’s not jeresig/processing-js.git.

You can also create alias names for your url to your fork. using >git remote add <aliasname> git://github.com/<username>/processing-js.git . you will want to add at least an alias for these two remotes shown below as well for pulling code later. these alias names just allow you to type shortcuts and are easier to remember for repo names. IE: >git pull dhodgin branchname

git remote add annasob git://github.com/annasob/processing-js.git
git remote add dhodgin git://github.com/dhodgin/processing-js.git 

git push

6.  Post in your lighthouse ticket what you did, the link to and name of the branch you have your changes in, and the link to the commit of the patch.  Your ticket will be peer reviewed and then super reviewed before finally being pushed into the next release code base.Request a pull of your new code from F1LT3R. Go to your fork on the website and click the ‘pull request’ button. From the popup select F1LT3R from the list of people and click ‘Send pull request’ at the bottom.

You can check if everything worked OK by looking at the network graph.

check if it worked

Hopefully it worked for you.  If it didn’t … then may your god have mercy on your soul.

Processing.js 0.2 release


My 0.2 release has been pushed to git hub for review by F1LT3R  !

After 2-3 days of trying to figure out git I finally managed to get everything right and push up my changes.  Thanks to Matthew Lam for showing me how to delete my old fork it was giving me issues.  Once I did that I was able to refork the latest code and then clone, commit, and push the new stuff up.

In the process of banging my head against the wall to get git working I stuck all the commands into a word file so I would remember how to do it later for future releases.  I’m going to post a 2nd blog post after this tonight with a step by step guide to go from having nothing on your PC to downloading, updating, and sending changes up for review.

A full guide to the whole process.

Here’s a quick list of what I added in my 0.2 release.  Full details of the patch are here


  • nfc()
  • log()
  • exp()
  • tan()
  • asin()
  • acos()
  • atan()

I coded the map() function as well and then realized later it was already in the library but it was never erased from the list of remaining functions to be coded.  My code matched up with what was already in the library exactly though so I knew what I did was correct and that what was already there was correct.  I wrote a good test for map() so I’m confident what is already in the library is ok.


  • nf() crashing with infinite loop
  • color() for 1 argument passed in that has a value outside 0-255 it will be interpreted as a color and not a grayscale now

Lighthouse tracking application for Processing.js


Spent most of Saturday helping F1LT3R setup a new bug/feature/issue tracking web application for processing.js.

It’s called Lighthouse and if I was to describe it i’d say its a simplified bugzilla bug tracking system.

But what is a bug ?  A bug is not just a broken feature in a piece of software it’s  anything that has to do with a change that can, will, or might happen to a piece of software.  A bug can be a request for a new feature.  It can be a problem report for a crash issue.  It can also be a request to change the way something works or fix something and make it better.

Improvements, Innovations, Implementation, and Invention.

So what’s the purpose of Lighthouse exactly then?  It’s to allow us to use a centralized location to start tracking processing.js changes, bugs, feature additions, and improvements.  Most importantly though its a way for the community to be able to know what everyone else is working on and to bring the community closer together.  It’s also to help F1LT3R in the review process as well.

I wrote up a short tutorial on how to use lighthouse to place a ‘Ticket’ (tickets are bugs, milestones are due dates for deliverables) for processing.

F1LT3R also wrote an intro on how the project workflow should go and how to go about implementing your own work on processing.

I think in the future we plan to tie Lighthouse into Github as well.


bLOGging about all natural curves


Sat down and coded a whole bunch of the calculation and trigonometry functions.  Most of which turned out to be one line of code wrapping the Math library.

Last night I focused on log() and exp().  I had to do a bit of reading on Wikipedia about logrithm’s and Euler’s constant to make sure  I was calculating what was expected.

After verifying the results I decided to create a test that would replicate the perfect natural logarithmic curve shown on the Wikipedia page to show it was working properly.

Today I coded asin(), acos(), atan(), map(), and tan() since for some reason tan() wasn’t yet in the library.

I’ve got to write a little test for map() to make sure the ranges are calculated correctly and then I think it’s on to 0.3 planning.

Working towards 0.2, getting code for 0.1 checked-in


Over the last few days I’ve been reading over the specs for some of the remaining functions that still need to be ported for the processing.js project.  I noticed a few under the calculations category that haven’t gone anywhere with the individual who had taken them on a few months ago.  So I decided at this point it’s probably safe to say they wern’t going to get done and I would take over on them. So I picked up exp(), log(), map(), asin(), acos(), atan() for 0.2.

I completed nfc() last night and posted up my code for it in my snippets section on my wiki page and I added it to our table of code that needs review from Al that is ready for check-in.

I also took on the task of being responsible for coming up with a solution for a standard on how we will submit our processing code for review from 0.2 – 1.0 in the future.  Right now one of the most inconvenient things Al has to go through is finding everyone’s code that needs to be checked in so he can review it and either provide feedback or approve it.

So for the short term our 0.1 work has been posted on the processing wiki page in a table with links to our work and for next weeks 0.2 release I will be coming up with a solution to make it easier for all involved.

If anyone has an ideas drop me a comment or email or talk to me on IRC. I’ll be discussing a solution with Al over the weekend.

FSOSS research paper up


As promised I posted my views and experiences (research paper) up on my wiki page about FSOSS 2009 this year.  There was 5-6 really good presentations I got to see this year.  I learned a lot particularly from the processing.js, ranking the bugs, and 3D in the browser talks mostly because those talks are in the area of the project I’m working on.  There was also a good presentation on Mozilla tools by Dave Humphrey and Taras Glek.  Something a little different as well was a presentation on open source for fun and for profit by Khalid Baheyeldin.

FSOSS, research paper, and 0.2


It’s been a few days since I’ve written anything so I think it’s time to write a bit about whats been happening over the last week.

I attended FSOSS (Free Software Open Source Symposium) at Seneca College last Friday and got to see some presentations on some really nice topics.

In short, heres the list of the presentations I attended

  • 9AM – Creating a Twitter Widget using Processing.js (Alistair MacDonald, Hyper-Metrix.com)
  • 10AM – Ranking the Bugs: Predicting Which Will Get Fixed (Diederik van Liere, Rotman School of Management)
  • 11AM – A View from the Gallery: JVM Alt, Languages (Newman (Scott) Hunter, Fuel Industries)
  • 1PM – Coping at the scale of Mozilla: Open Tools (Taras Glek, Mozilla & David Humphrey, Seneca College)
  • 2PM – Open Source for Fun and Profit: Making a Career (Khalid Baheyeldin, 2bits.com, Inc.)
  • 3PM – 3D in the Browser… More than just Doom (Catherine Leung, Seneca College)

The processing.js and 3D in the browser presentations are what I’ll be writing my research paper on which will be coming in a few days and a link will be provided.

As for my 0.2 i’m working away on completing nfc() which I set aside for 0.2 so i could work on a bug in nf() and add a feature to fill() instead for 0.1.  I’ll be adding some more functions to the list of things that will be included in my 0.2 release over the next few days.

That’s all for now, back to my paper and midterm prep for tomorrow.