Before embarking on the project, I think it was important for our team to set achievable goals and what we want to gain out of doing Orbital.
We’re both named Jonathan, so pedantically it is going to be interesting as we keep a shared log on our progress referring to each other as Jon, so do keep a look out for who the author is!
Our main focus is to attain the 4 credits that would contribute towards graduation, gaining valuable experience and technical know-how in the process as we explore into the technologies we would have to learn for us to be able to deploy a functioning web application.
We have decided on embarking on the intermediate level, the Project Gemini. To attain level of achievement, we’re required to meet the following requirements:
Attend the Liftoff workshop.
- Log the time you spent on the programme, with a total time of at least 130 hours.
- Participate in the end of summer showcase Splashdown.
- Complete the peer-grading exercises.
- Show progress on your project over all three evaluation milestones (late May, late June, late July).
- Score an average of at least 2.5 stars (better than satisfactory) out of 4 on feedback given to other teams, and on own peer-graded project.
- Complete at least 4 additional extension milestones.
Over the 2-day introductory workshop, we were introduced to Python and Google App Engine and were briefly initiated to the development of a very basic web application. On top of them, we were also briefly introduced to HTML and CSS, as well as a basic Git coverage by Ng Zhi An.
Our project idea basically addresses polling (or getting feedback), which professors and teaching assistants can use during lessons to gather responses for purposes such as to assess the general understanding of the audience, or to have a live quiz. Effectively it replaces the need for the clicker device which is costly to replace and students and teachers alike will not have to worry about the operational and logistical concerns of that particular device.
More importantly, the concepts of the Agile Methodology and Design Thinking Process that were introduced on the first day were crucial in helping us brainstorm and create a rough outline and sketch of the system we were envisioning. To go about this, Jon and I spent 3 hours that evening doing up sketches which can be found here.
Having entirely no experience in web development, or any kind of application development at all, I am feeling rather ambitious in taking on this project with a partner with over 8 years of experience in dabbling with web technologies as they evolved through the early years of the millennium. Having said so, we are determined to accomplish the intermediate level of achievement for glory and something sweet to call our own.
Looking back on the freshmen year as Information Systems majors, we have finished the following relevant modules which hopefully are able to aid our understanding of things we are about to face:
- CS1010 – Programming Methodology
- CS1231 – Discrete Structures
- CS2100 – Computer Organisation
- CS1020 – Data Structures and Algorithms I
- IS2102 – Requirements Analysis and Design
- IS2101 – Technical Communication
- IS1105 – Strategic IT Applications
Although I find them largely inapplicable in our application development, hopefully we are able to draw links and apply what has been learnt previously to build upon the knowledge that will help in future modules we will read in our time in NUS.
Jon is experienced and has a better understanding of databases and web development methodologies and best practices which I don’t. I aim to bridge the gaps in understanding as well as to pick up the nuggets of experience and knowledge between our differences. Developing the project together will be difficult because I might not be able to follow what Jon will be coding in the backend. What’s harder to do is to find time to get together since we live on opposite ends of the island so that we can go through the thought processes together.
We aim to finish a functioning model of our project by the time Jon leaves for Berkeley, and as such we may need to perform sprints and rapidly prototype our application. With such a short time-frame, it is going to be difficult for me to get up to speed to address our mismatch of skills and to contribute towards our 8th June target.
- Deviation from the program
For the project, we decided that we will not be following the Orbital programme outline for Py/GAE since we have decided that it is not suitable for what we want to build.
Node.js/Express.js framework, websockets, and a solid database requires fundamental understanding of networks and databases which I am unfamiliar with. Developing the front-end also requires me to get on with the Bootstrap programme and pick up web design best practices for HTML and CSS. These frameworks come with their own set of dependencies which may need some familiarisation as well.
Essentially these are the things we are doing as milestone extensions from the basic Vostok level – which means I’m facing a very steep learning curve on terra incognito.
How now brown cow?
To resolve the issue of communication, we’ll attempt to dedicate at least 2 hours each day to do a Google Hangout for Jon to explain what is being done while I bulldoze through my curriculum of the various technologies.
We are trying Nitrous.io on top of our Github repository for collaborative code editing since there is support for Node.js and it seems like a pretty cool IDE for Pair Programming. We’ll see how that works out. (edit 16/05/14: nitros.io: Looks like your box was shutdown due to inactivity. If you want your boxes to never shutdown, please upgrade your plan; Oh my goodness.)
I am coming up with a roadmap to establish realistic dates for the application development to help give us more visibility on our progress.
For subsequent updates, we’ll be blogging to track the following things to aid our learning and reflections:
- Takeaways for the Day
- Hours spent on respective items (possible extension: productivity improvement)
- Problems encountered and our workarounds/solutions
We’ll adopt a progressive approach to developing the project and explore breadth first before delving deep into each domain to get a good grasp of what is required in our application.