19 Jul 2013 6:06 PM #1
SenchaCon 13 Hackathon post mortem
SenchaCon 13 Hackathon post mortem
So this is my first post here.
This was also my first time @ SenchaCon (had a blast, you should go next time, seriously!).
It also happened to be my first time working with Ext JS, Sencha Touch, Sencha Architect... Sencha in general.
How/Why it happened:
Firstly, I work for a company who has a product that uses Ext JS exclusively. I don't work on that product but a bunch of co-workers do. I go on and on about Backbone.js, jpackage, knockout.js, etc etc while they keep championing Ext JS. So as punishment for my years of ignorant knowledge of Ext JS I was forced to go with 4 other co-workers to SenchaCon while they learn the ropes of the latest features of awesome.
I'm pretty open minded about frameworks as long as they get the job done and get out of the way. I'm more picky about frameworks that force you to do pretty much everything with it and doesn't play nice with others. So (blissfully unaware of how Ext JS, Sencha Touch really worked) I would poke fun at Sencha tools as being bloated and verbose. Configuration over Convention as opposed to the latter.
SenchaCon pretty much opened my eyes that Ext JS is not only a neighborhood big brother (not NSA big brother, but YMCA big brother) and plays nice with everything. I also got a first chance to play with Sencha Architect. So I'm humbly standing here, fully corrected in my naive notions of what Ext JS is, what Sencha Touch is, and how Sencha is changing the landscapes of which they live.
HAcKaTHon << :
So after spending a few days hopping from session to session learning everything about Architect, Ext JS, Node.js (which I already knew quite well), Sencha Touch, Desktop Packager (really cool tech, pretty high price point for it though), my coworkers and I sat down the plan our participation in the Hackathon.
Objective: To create a Sencha Touch based white board app... aww hell, just read the marketing... http://senchacon.com/sessions/hackathon/
So we began. We attended the Blackberry 10 bootcamp pre-conference session and learned what RIM was doing with Blackberry OS 10. We were pretty impressed, a little less so when we saw the BBWorld market, but still, very cool stuff. So we decided to take that knowledge and build a native Sencha Touch based BB10 app using RIM's new WebPackager for Blackberry (read up on that @ developer.blackberry.com). We decided to take what we learned from Architect sessions and do it all in Architect. I mean 100% Architect. Even my coworkers who knew Ext JS pretty well never really used Architect much if at all. We started tinkering Wednesday evening. Didn't get very far. Luckily Thursday sessions were all about Architect and Sencha Touch and the like so we all split up and hit all those sessions to assimilate as much knowledge as possible. By the end of Thursday we had a basic app going but we were still missing the vital features: camera capture, painting/annotating the capture, participants, and notes.
The Marathon of all marathons:
We came in on Friday, the last day of the conference, eager to get started. We all sat down after breakfast and opened up our macs, hooked up our Blackberry 10 dev devices, and went to work. Immediately we were faced with git merge issues and the like. Architect, for being so easy to build things quickly, was having a hard time keeping up with the sheer volume of code coming in and out of git and our Architect project would constantly get corrupted. Luckily, it's text based, so we were able to open up TextMate and fix it up. This was the #1 reason why we didn't get more done. Architect would literally barf all over our progress with errors, overwrites, etc. Its a really cool application and very helpful for new people. The biggest complaint outside of getting into git trouble was code completion. There isn't any.
So we worked, and worked, we made some headway, then had to pause to fix merge issues, then continue, and pause to fix merge issues, and continue. This went on for pretty much 5 hours. We eventually got the camera capture working. We got our backend stood up thanks to OpenShift, Node.js, and MongoDB. But then we faced an issue outside of our control. A DDoS attack on our OpenShift server cluster farm. This prevented us from being able to test a lot of features that we were actively developing in damn near real-time.
The Final Countdown:
With an hour to go, our designer added the Blackberry 10 Sencha Touch theme and our app really came alive. He also added the splash screen and some icons to the mix that he had been working on since breakfast. We decided to spawn up another cloud server via Rackspace Cloud to host our backend because it didn't look like OpenShift issues would be resolved in an hour. So one of us franticly started installing node.js, mongodb, and setting up our backend all over again with some test data. 30 minutes to go and we got camera capture working again but using HTML5 the imagedata string (the huge base64 encoded representation of the binary image data) was too large to handle on Rackspace Cloud and we were getting corrupted images and timeouts trying to save it to the backend. We troubleshot this all the way to the end. What once was working flawlessly was now not working at all. 5 minutes to go and I made the final non-debug build and deployed it to my Blackberry 10 mobile dev device. I gave it a quick once over, and a bunch of UI failed to respond to events. I was heartbroken that all the effort we put in and our app didn't work at all. Luckily, it turned out to be just stale data in localstorage. So I flushed that out, tried again, and all seemed good. Except for the photo capture. We ran out of time, we didn't implement all the features we had (like auto white balance, touch to add regions, touch region to add annotations, send emails to participants) but we had an impressive app in the end despite that. We could register, login, view projects (meetings), create projects, add participants to projects (pulled from both a correlation from your past project participants and your phone's contact list), take photos of whiteboards (couldn't save em at the time of the demo, but now we can), and view saved photos. In the end, team bright house finished in 3rd place, won $500 (split 5 ways, not bad, paid for parking for the week) and gave us a huge boost of confidence that Sencha tech was the way to go.
Back to the Source:
We open sourced our effort the whole time working out of github @ https://github.com/zturnbow/Sencha13Hackathon
We hope that other will find it informative on what can be done with 5 people, 3 days, and around 10 hours of work. We also would like to thank Sencha for being awesome, for throwing such an amazingly informative and fun conference, Research In Motion for teaching us Blackberry isn't dead, in fact they are making some amazing moves towards re-inventing the brand and bringing their OS beyond what's currently offered, and for giving us dev devices to build/test/run/enjoy, and t-shirts (extra smedium). We would like to also thank Rackspace Cloud, for being so easy to use in a pinch that really saved our butts when it came time to demo our app. Also to the wonderful employee's and attendee's for sharing knowledge, practices, information, and general awesomesauce the entire week. And for the hackathon participants for not looking over our shoulders and copying what we were doing, but rather making unique, cool, and interesting apps all of which were deserving of some sort of prize (1. for being unique and awesome, 2. for being done so so quickly). In the end, it was an amazing experience and I can't wait to attend the next one (beware hackathon participants, I can learn a lot in a year).
20 Jul 2013 6:37 PM #2
I watched the hackathon
I watched the hackathon
I watched the Friday night hackathon. I think last year involved iCloud and this year involved blackberry. But these are kinda an ambush thing so most people don't use these and are on a 4 hour learning curve. The best approach would be to create a virtual hackathon a month or two before for confirmed attendees then work together across the globe to produce a solution and become acquainted with whatever surprise techs are in the hackathon specs. We can virtually create a project as teams then implement a surprise spec at the conference. Create virtual remote teams somehow. Sencha will get a better refined product and greater participation. I don't have a laptop to run a dev env so I can never participate at the conference but can from work/home.
22 Jul 2013 7:29 AM #3