Intel Developer Forum Hackathon
During a conference-rich week two weeks ago, Pivotal was invited to participate in a coding contest that was a part of the Intel Developer Forum (IDF) held at Moscone. The event hosted 15-20 college students, forming two teams that would compete against an Intel team; the task: build an innovative application for junior high math students. The main thing the applications would be judged on was cloud-readiness, and this is where Pivotal came in – the applications would be deployed to Cloud Foundry. I had the great pleasure of representing Pivotal, Pivotal Labs and Cloud Foundry at this event and it was a blast!
The event spanned two half days with official coding hours from 11-3 each day, though I heard that an all-nighter might have transpired between the two. The kids (and given that most are roughly my son’s age, I will call them kids ;-)) almost all came from Contra Costa College where they have had the great fortune of being taught by a fantastic Professor Tom Murphy, who was also in attendance. These budding programmers had prior experience with HTML 5 and javascript, and the teams included designers as well. Intel, who have been engaged with Cloud Foundry for some time, brought with them some brand new, just announced at the IDF, hardware, onto which they deployed Cloud Foundry – that is, they stood up a private cloud for the event.
The team’s submissions would be judged on certain criteria including:
- Design for failure
- Stateless computing
- Scale out (not up)
- Event driven
- Web services
- Security
- Prefer eventual consistency
- DevOps/NoOps
I’d like to share several reflections:
One of the main things that I learned from the experience is that thinking in terms of distributed systems not is immediate. Well, duh – of course it is not. It made me think back to my days in school where the initial classes were introductory programming, data structures and algorithms, and computer architecture. In chatting with these students, those are the same courses they have been taking. I think it’s inarguable that a course in distributed computing MUST be a part of any undergraduate computer science curriculum today (but I’m not sure that it is??). And it needs to come early. When I was in graduate school at IU I often TA’d the first course that computer science majors took, an Intro to Programming course taught in Scheme. This was brilliant because, in part due to the nature of the language, they are taught recursion in week 3 (as opposed to week 13 when I took it in my intro Pascal programming course) and it turns out not to be hard (in week 13 it was hard for a lot of my fellow students). Recursion became a foundation for them, not an add-on. I’d like to see distributed computing be a part of that foundation today.
Because of former training and experience the students all built their applications to run HTML 5 and javascript in the browser. The UIs these kids built were way cool, with spaceships shooting answers at meteors that carried math problems, for example, and because they are standards-compliant, will work in pretty much any browser. Major Kudos to Tom Murphy for laying this incredibly valuable foundation.
In the bucket of “stateless computing” we detailed that state should not be stored within the compute node. While the game play ran entirely in the browser, things like user profiles and high scores would be stored in some database. Intel had stood up their private PaaS with several choices for persistence, including both relational and NoSQL databases. It probably won’t surprise you to hear that the Intel team stored in relational and the student teams both chose MongoDB. I wish I had been able to dig in a bit more on why they made this choice, but by the time the question came up we were singularly focused on get things working. (If you were on one of the student teams, please post a comment and tell us why you made that choice.)
In the end, neither student team was able to connect their browser-based application to cloud-based persistence (entirely our fault for not anticipating what would be needed here), though they did get the applications pushed into the cloud, which on it’s own is pretty cool. The first team to get their app pushed into Cloud Foundry, using the cf cli, was literally jumping up and down and whooping and hollering. They didn’t have to stand up a VM, load the OS, install an app server and then deploy their app – they just wrote their app and pushed it to the cloud. That is PaaS.
Finally, I want to extend congratulations to Cathy Spence and the whole Intel team for the event. While I was there I came to understand that Intel does these types of events quite regularly and while it’s probably a bit tricky to quantify the ROI, there is no question that Intel benefits in terms of positive PR and recruiting. And the benefit to these students is great! I’d really love to see my parent companies, EMC and VMWare, take a lesson here, and while Pivotal is much smaller and may lack some resources, I’m certain there are ways we can creatively engage in a similar manner.
Edward Thang
Hi Cornelia, great article!
We made the choice for MongoDB for its flexibility I guess. If I am not mistaken, in SQL, you must define some data scheme for everything to follow. Makes complete sense & you would want to do that, but considering our apps were made on the spot, we would have to manage & change the scheme manually outside the app whenever we want to change our data scheme. MongoDB is not scheme based, so we can just write the data with whatever we want.