Node Knockout Creation: DropNode
August 29th, 2010 by James CarrJust wraped up the weekend of participating in Node Knockout and my teams creation, DropNode is now functioning out in production letting people with bleeding edge browsers share all sorts of files and binary files with their friends and family. So i thought it’d be a good time to reflect on the experience but first talk about the app itself and what makes it cool.
It took a bit of brainstorming, but we decided on a simple website that lets you share files by just drag and dropping them in the browser and using the new HTML5 File API to share them. The thing that really makes it innovative is when you drag and drop a file in the browser it doesn’t just upload it for others to download, but rather generates a link on the server that when someone clicks on will cause the server to force the client (the person sharing the file) to use the File API to read the file and PUT it over XHR. The data is then relayed to the person downloading the file. So a request is what triggers an upload from the person sharing.
So, how’d the competition go? First off my team was made up of some really awesome devs who did a tremendously awesome job despite having little to no experience with nodejs. We did a little up front planning, but this was mostly limited to talking about how it’s going to work and doing a small spike to see if the HTML5 File API + websockets could be used to transfer files. A gotcha here is that I did the spike and succeeded with the caveat that binary files didn’t work right but decided to ignore that problem thinking we could solve it during the KO. Boy was I wrong… that wound up to be the biggest annoyance in the 11th hour. Another thing that helped was we dropped all the features into Pivotal Tracker and kept the communication channel high by using irc or pairing in person (sadly I could not pair in person).
Luckily I had deployed an app to heroku using the node.js beta so once the competition started I knew all we needed to do to get a simple hello world app deployed… create the project structure, create a package.json with our dependencies and run npm bundle ./vendo to bundle up all of our 3rd party dependencies for deployment. Within 20 minutes we were live, albeit a simple hello world app.
Development was a breeze really despite the problem we initially had with binary transfers… and it was awesome seeing the app come together and actually work. One things for sure… only once a year will I stay up till 5:45am hacking away like a madman.
Anyhow, go check us out at http://done-js.no.de and vote for us! ![]()
