Category Archives: University

What a Summer… A Summary

What a Summer…

This last summer of 2014 has been an incredible summer – on a similar level to that of last year. It differed from last year in that instead of one really big awesome thing, I did loads and loads of smaller things – all of which gave me shed loads more experience, and some of which were life changing. So, without further ado, let’s get started:


Above: Summer of Opportunity – Movie of the best moments of my summer.

The combination of hacking and sailing really works well...

The combination of hacking and sailing works well…

Summer started at the start of June when I headed back to Cornwall to relax and unwind from a hard term of exams and coursework. The first weekend, I took the RYA Powerboat Level 2 Qualification, enabling me to drive our speedboat – which has been fantastic – every weekend I returned since I’ve been speeding around the South Coast of Cornwall in blissful weather.

I then shot off to London for the start of my Internship at Morgan Stanley, an investment bank, working in Technology. The experience was so enlightening, and I could not be more glad that I did it. I worked in a small team which managed a significant enterprise product, and got the opportunity to work with some really great, intelligent people. Living in London was an experience I never thought I’d have, and although I went into it with a negative attitude (expecting to not like it, been a ‘open space and countryside lover’), it outdid every single one of my expectations. I even had chance to participate in a fund-raising event for the Princes Trust (cycling across London).  Having all of England’s history, museums and beautiful gardens within 20 minutes was incredible, and I loved the opportunity to try experiences that only exist in a capital city (for example Dans le Noir, the restaurant where you eat in the pitch-darkness, Wimbledon Lawn Tennis Championships, and drinks in The Shard).

Drinks in GŎNG on the 52nd Floor, The Shard

Drinks in GŎNG on the 52nd Floor, The Shard

During my Internship I was pointed towards applying for Yacht Hack, a week long hackathon on a Yacht, pootling around Croatia. Never missing an opportunity, I applied. And, with the Yacht leaving Croatia on Saturday 30th August, I received an email on the preceding Monday 25th saying something along the lines of “Congratulations, see you in Croatia in 5 days”. What a rush! But of course, come Saturday morning I found myself in Split, Croatia, about to meet 10 of the most amazing people. The Yacht was absolutely beautiful, a fairly new Lagoon catamaran, and only slightly cosy. Within hours, the ideas were flowing, and so were the concepts and products. Our team came up with Shy – a service aggregating and curating answers to all the questions you are too shy to ask.  I’ll be writing a full post on Yacht Hack, including how it significantly changed the next few years of my life, at the end of next week.

Most of us on the Yacht Hack yacht roof

Most of us on the Yacht Hack yacht roof

Once I got back from Yacht Hack and had spent another few days in Cornwall (yep – speedboating was included!), I kicked off back to London to present shy to a group of investors.

Because I hadn’t travelled enough in the preceding few weeks, the next day I took off to Zürich to see old friends from last year and enjoy the city, culture and mountains for two weeks. Meeting up with friends and then cycling through the city and eating chocolate and cheese was just fantastic. I tried a very fun Swiss activity as well – taking a chairlift up a mountain and then riding a scooter all the way back down. Not to mention the incredible 2 day hike to Mount Tamaro (with overnight stay in the hut) around Lugano and Locarno, which ended with a swim in the spectacular Lake Maggiore.

Lugano Hike - the final push to Tamaro Hut

Lugano Hike – the final push to Tamaro Hut

So, summer’s over now and I’m now back at University for my final year.  I’m looking forward to challenges ahead and my final-year dissertation (a post on which will be following soon).  Bring on the next 12 months!

The Challenges of Studying a Software Engineering Module – how well does it reflect industry?

One of the 2nd Year Computer Science modules at York is the Software Engineering Project (SEPR).  In this module, you work with a team of ~6 randomly allocated peers on a project to simulate an industry environment. Since I’ve had a good amount of industry experience I thought I’d write something about the module and how it simulates industry.

First, let’s talk about SEPR – what is it?  The idea is that it simulates your team working within a company to produce a product. Different members of the module leaders act as the ‘customer’, module support team and ‘managers’ (i.e. for if you’re having major problems in your team). The customer gives all the teams a specification document of the product he wants to be produced, and this simulates industry in that the document is vague at points and has gaping holes (where the customer doesn’t know what he wants).

A number of things are been testing in SEPR:

  • how you work with a team (i.e. if you’re a team player),
  • how you work collaboratively (i.e. are you emailing code or using collaboration tools like Git),
  • the structure of your product (i.e. is your product expandable – is it easier to add more classes to enable more features?),
  • the quality of your code,
  • how you market it (at two stages in the course you are required to take up another teams code and to try and convince other teams to take up your code).

For our year, the project specification was to create an Air Traffic Control game, where planes would come onto the screen, with a route marked as a series of way points.  The players job was to prevent collisions.  In the revised specification for the final assessment, we were required to implement a multiplayer game mode.

So, how well does this simulate industry?  In my opinion, it does a pretty good job.  The structure of the SEPR module means that you have a wide variety of personalities that you have to work with, which can of course be difficult at times – some people have only worked in isolated environments in the past, but it works out well and it’s rewarding when you work out how to work together.  Specifically with my team, I think it’s fair to say that a couple of members would not be friendly with each other outside of the module, but it didn’t take too long for everyone to learn to work together, and that’s a very valuable skill.

Collaboration tools are of course a big thing in industry – it’s not possible to develop just by sending code by email and on flash drive to people, although up until the SEPR module I’d say a large proportion of students in my course had been surviving that way.  A team of 6 is big enough that you need to use these tools, which is great as they’re the same (or very similar) tools as those used in industry.

It’s obvious, but it needs mentioning – in industry you’ve got to write very maintainable code – code that will remain within a product for 10+ years.  Since the module is marked on this (and UML diagrams should be provided in the written reports), it represents industry well, although perhaps with less consequences if you do screw up!

The only imperfection in the module that I was aware of was how teams are created and managed.  Teams were selected almost entirely randomly by the SEPR module leaders, under the justification that “in industry, you can’t choose who you work with”.  That means that each team was made up of people with vastly varying skill levels – some teams had multiple people in them who couldn’t program at-all (which, in my opinion, is not good to say they are passed their first year of study in Computer Science).  But – in industry, you do work with people of a similar skill level – that’s why companies have interviews, to ensure that their new employees meet the level of the current employees.  And poorer quality companies don’t end up with a random group of 3 geniuses (or at least, they normally don’t), because those 3 people know they could go and get a better-paying job at a better company.  So I don’t think this was done well in the SEPR module – teams should have been made up of groups of students of similar ability, so that good students got good marks and vice versa, rather than students of extreme (either poor or great) ability levels having a great influence on the mark of the overall team.

So, to conclude, other than with team selection, I think the SEPR module does a great job of simulating industry – the right things are taken into account (team skills, working collaboratively, and code quality), and the structure of the module in terms of lecturer leadership accurately simulates the various levels of management in a company.

To take a look at and try the three games we created, check out the SEPR section of my projects page.

Building and using OpenCV with Eclipse on Mac OS X

This took me a little while to figure out due to the sometimes subtle differences in Mac OS X and Linux, and the imperfect documentation.  Eventually I got it working though. The goal was to build OpenCV for Mac OS X 10.9 and then get it working in Eclipse. So, here goes:

  1. Ensure you’re using a JDK with version number 1.7 or higher.  If not, see here for instructions.
  2. Download the latest version of OpenCV (I used 2.4.8, so if you have problems, try going back this) from here, for Mac.
  3. Extract it.
  4. cd into the extracted directory of OpenCV in your terminal and execute the following:
mkdir build
cd build
cmake -G "Unix Makefiles" -D CMAKE_CXX_COMPILER=/usr/bin/g++ -D CMAKE_C_COMPILER=/usr/bin/gcc -D WITH_CUDA=ON ..
make -j2

(Note in the above, -j2 refers to the number of CPU cores I had – e.g. set to -j4 if you have 4 logical cores).

Then just look in build/bin, and you’ll see a .jar at the bottom – congratulations, you just built OpenCV! Import this as a library into Eclipse, and set the native path also to build/bin, and you’re done.

If you get stuck, let me know in the comments and I’ll do my best to help.

What I Learnt From My Application to Google

If you are aiming high career wise, for example Google, you will need more than academic prowess to net the job.  For example, In Brown et al., we read a quote from one human resources manager:

Academic qualifications are the first tick in the box and then we move on. Today we simply take them for granted. [1]

Over the last 3 months, I have been closely involved with a number of Google events, including a mentoring program and an internship program.  In this blog post, I am going to talk about what I learnt from the experience that may help when trying to get a tick in those other ‘boxes’ at Google.

The first thing on the ‘Life at Google’ page that they look for in a potential employee is Leadership skills.  Most interestingly though, they are as interested in how you lead as how you can “[help] a team succeed when you weren’t officially appointed as the leader” [2].  What are they looking for then?  Todd Carlisle, Staffing Director for Google’s Business Teams, explains, saying that:

You have to want to take them out to lunch after the interview. It’s important to hire leaders who play well with others, so ask about their experiences working on a team. Their bragging that they convinced everyone else that they were right or taking credit for everything are big red flags. [3]

When I was going through the application process, the piece of advice I was given many-a-time was “take part in Open-Source projects”, and I can see from the above why it’s so relevant.

So, they are not looking for leaders so much as collaborators.  What about academic skills then?  Are their requirements more traditional for this area?  Well, perhaps more so, but again to quote their website, Google are “less concerned about grades and transcripts and more interested in how you think.” [2]

Carlisle again explains that he looks for trajectory rather than results in academic achievement:

“I look for a trajectory in background stories, … because that’s a far better indicator of focus, intelligence and experience than what you can glean from a résumé. For instance, an Ivy League alum with a high GPA is great, but even better is the person who was the first in the family to go to college and did well while working an extra job.” [3]

Google say the ideal candidate will display ‘Googleyness’, but what on earth is that?  On their website, they say they will “be looking for signs around your comfort with ambiguity, your bias to action.” [2].  I think it is more than this though – employees go on trips with each other (for example, three days to Disneyland and hiking expeditions) and have very different facilities in their offices (for example, slides, climbing walls and vegetable gardens).  What does this mean for us?  Take part in some active societies and try something really different, the chances are your personality will start to resemble something a little more ‘Googley’.

After going through the application process and researching this piece, the following is what I think you need to do to get a job at Google (or any other similar high-end tech company):

  1. Show your leadership skills in a way that also shows your passion about Computer Science.  The best way of doing this is to take part in Open-Source projects.
  2. Strive for the best.  Whatever your background, Google want to see you doing more than would be expected of you.  Challenge yourself to work on a difficult project.
  3. Do something ‘quirky’, whether an unusual sport or hobby, that will get a Recruiter interested.  Remember, Google Recruiters process hundreds of CV’s daily and you need to stand out.

Bibliography

[1]

A Hesketh, S Williams P Brown, “Employability in a knowledge-driven economy,” Journal of Education and Work, pp. 107-126, 2003.

[2]

Google Inc. Google Jobs. [Online]. http://www.google.co.uk/about/jobs/lifeatgoogle/hiringprocess/

[3]

Jennifer Wang. (2011, January) Entrepreneur.com. [Online]. http://www.entrepreneur.com/article/217877