I love seeing what can be achieved (or not?) by the end of these projects. These are the things that cannot be experienced at home by yourself in front of a YouTube tutorial, and I expect will be great practice for the real working world when we will be working in development teams.
ACEBOOK - THREE SIDES OF THE COIN (THE EDGE COUNTS)Part One: Grouped!
The task was to make a Facebook clone using Ruby on Rails. We were split into different groups to focus on features. The teams were profile, photos, newsfeed, and dev-ops. I was in the dev-ops team which was essentially a code review final check before features are implemented.
|What is it?|
We managed to get Travis CI to work which was an online simulator which tests if a project passes their tests and works ok. This ended up being linked to Heroku which meant that once we merged the features in, it would automatically update to our website.
Part Two: Paired!
It seemed that the groups ended up working on rather big/a lot of features which meant that it was taking a long time to do, which meant updates to our site were far and in between. So our coach decided to put us into pairs, and specify the [small] features we would work on. My pair and I ended up doing automatic link recognition meaning if one was added, then the wall would display it as a clickable hyperlink.
|Can you translate our coach's "interesting" handwriting? :D|
Part Three: Free for all!
Come the end of the week we soon realised that we had a misunderstanding about the merging of the features to our website. We were meant to do it after our coach approved it, but maybe because of the previous structure when there was a dev ops team, for some reason we just didn't merge our changes.
So come Friday we were in a bit of a frenzy to get all of those features up and running. We kinda missed the step of the extra checks by our stand in coach at the time and at one point that ended up with a messed up master branch! Opps. Rooolllback!
Agile vs "Dictator" Style?
It was an interesting retro afterwards, looking back on our mistakes and the structures we chose to go with. I think one of the biggest downfalls was that we didn't have our pages setup as a template so that we could work on different areas without needing to wait for certain teams to finish those features.
There was some discussion on whether having a dev-ops team that approved of the [small] features, as well as code reviews was agile. Agile believes that if communication is strong, the need for old school "dictator" style approval processes shouldn't be needed.
Rails is really weird in that you can generate so many files, and find so many gems that can do things for you. It almost seems that you can end up hardly writing any code, but end up with a project that has tons of files in it.
Here's our Acebook!
Features that we managed to implement were;
- A signing up feature
- A login feature
- A wall to post messages and links. These features are only accessible once logged in
- Ability to like and unlike the posts on the wall
- Friending and unfriending users
- Adding photos from your computer
- Display all the photos in a gallery
- A random cat image generator, with Amazon ads (wtf?). There's no link to this you need to add /random_images to get here
ANOTHER GRADUATION, HOLY SHIT WE ARE NEXT!
- Terminal Commando - A plugin to your terminal that makes it give out useful tips and advice whilst using the terminal
- Squirrel - An app which uses your location to remind you of cool places that you always mean to visit but forget
- UnorthoDucks - An augmented reality game stylized like minecraft, where you have to shoot the zombie ducks and protect the normal ducks. Built with Unity.
- Reign of Terra - A live territorial game where users "conquer" sections of a map based on their real time location
- iDo - Challenging the traditional concepts of marriage by making a blockchain contract that cannot be forged
Really great projects, very inspiring. And for the first time out of all of the graduations, I start to have a vague idea of how one could possibly approach these ideas.
This week we're doing the "mock" final project. Our group has chosen to do an iPhone game involving the tilting movements (gyroscope). We're learning Swift. We know zero about Swift. So GL us! But checking out apps is something I've always wanted to do, so either way I think I'll learn loads. Anyways, more on that next week!