So, next week on July 1st I start my internship at Google’s Zurich Office. I was also selected as a Finalist for a Google Scholarship, so am attending the retreat from this coming Sunday to the following Wednesday in-between work. I’m going to be blogging at the end of every week, and sometimes in-between, partly to try and write (yet another) useful resource for someone else thinking about doing an Internship (maybe at Google) and partly as a kind of log for me to read when the internship is over. So, without further ado, I’ll get started:
After getting back from WWDC, I had a little over a day to pack everything up at University to leave for Cornwall. I had a week in Cornwall, so after the usual routine: unpack, washing, put stuff away, I had a spare day before I needed to start packing again. Luckily the weather was just perfect, so I took the kayaks out down to Malpas with a friend. And then it was time to start packing again.
An early morning – 4:30 – but that’s the price for living so far from Heathrow. I’m a little concerned that I seem to have fitted everything I need for 3 months into two suitcases (bearing in mind that University requires a full car and roofbox) but haven’t noticed anything missing yet, so fingers crossed.
I’m staying with a really nice family who had a really nice room available on Airbnb. I had spent a long time looking elsewhere to start with, which ended up leading nowhere, but from when I found this room to getting it booked was only a few days, which was great bearing in mind I desperately needed to revise at the time.
Tomorrow I’m heading into Zurich to try and buy a bike, figure out the cycle route into work and see if I can find a cheaper way of getting data on my phone whilst here. I’ll hopefully get some time to just wander the area as well which will be great. Sunday night is when everything starts, with the Scholarship Retreat.
So, WWDC is now over, but it’s content and everything it set in motion is only just getting started. So, what are my final thoughts? Would I go again?
Over the last couple of days since the conference I’ve realised that attending the conference is only the start of the list of WWDC and it lives on for a fair few months after. I’ve been working on a few projects literally to experiment with parts of Objective-C that are new to me, and I’ve started a pair of projects which I have no idea how I will complete (inspiration for them: Moonshot Thinking Video by Google) – one focussed around converting a video stream to a graphical form (lots of core algebra is involved here – I’m really learning it’s easier to keep doing some active Maths now and then instead of just forgetting it since it took a little while to get back up to speed).
A big part of WWDC is the technical stuff that happens both outside and after the event. For example, in the Keynote, there was brief talk of a new feature in iOS 7 for Enterprise – Per-App VPN – meaning you can connect to a VPN if and only if the user is using your app. Apart from this and one other brief mention in another presentation, there was no information on it. Since this is an area that could be really useful to my apps, I have been chasing information on the feature, and the developer community has been incredibly helpful through WWDC channels. From the Apple Developer Forums through to comments on the videos of the sessions (they record all of the sessions for us to watch after WWDC) the (very) few of us that are interested in this have naturally grouped together to pool resources through the Apple communities, which would never have happened otherwise. In other words, WWDC is somewhere where you chose to network with interesting and like-minded people who you are likely to stay in contact with.
So, would I go again? Definitely. From having access to the latest information regarding iOS and OS X to been able to get questions answered immediately by the people who actually wrote the software – it’s an invaluable experience. And as I say it opens a lot of doors in terms of information after the event and new acquaintances.
The reason most people go to WWDC is for the technical sessions – as a developer it is invaluable been able to learn from the people that made both the developer tools and the API’s that millions of people use daily.
Again, because of NDA, I can’t go into details about the sessions, but I can talk about what I got out of them.
Excluding the session on Tuesday night that I talked about before, and the WWDC Bash on Thursday night, there are four solid days of sessions and labs, taking part Tuesday to Thursday.
The sessions are largely continuations from previous years – they will either continue on from their previous series (sometimes dating back 5+ years) on an API (of course, the past videos are all online) or start from scratch (if the API is new, or occasionally just because they think more people should use it). They run in any of the numerous massive rooms in the Moscone center, and sessions are usually run by the head developer of a module. Often they teach you by showing bad code practise and how it affects the user experience (or backend) and then show you coding techniques or just design techniques to improve the UI or program efficiency. Because of the nature of the presenters, they tend to spray information like a fire hose sprays water, but they are good presenters with a good sense of humour, and what with collaborative note taking it’s not too hard to follow (and remember) what they say.
When I started learning Objective-C, I didn’t know programming theory (i.e. I knew very few data structures, and I didn’t know complexity theory and how to program efficiently). This meant that, like many self-taught programmers, I didn’t learn the best habits. I used WWDC this year as an opportunity to learn how to apply what I learnt in TPOP to Objective-C, as well as to get up-to-date on the latest design principles, code styles and Xcode versions (which is constantly evolving to include new time/code saving features).
With iOS 7, 1,500 new API’s were introduced. No-one is expected to have used even a fraction of the preexisting ones, but this update you an idea of the vastness of Objective-C for iOS. I took it upon myself to get to grips with customisation of UITableView, as well as two other API’s new in iOS 7, both of which are going to have a significant effect on modern iOS apps.
Having arrived at my hotel in San Francisco on the Saturday afternoon, I went into the city to get an idea of what was around, and how I would get to Moscone West (where the conference was been held). San Francisco certainly wins the award for the maddest city I have had the pleasure of visiting – from mad historic cable cars (picture trolleys that just roll down really steep hills whilst you hold on) to the offices of almost all the tech giants, there is a real mix of everything.
In this post, I’m going to talk specifically about the events of the Sunday and Monday (before the main actual Engineering sessions started) and a non-technical session on Tuesday night.
The Sunday was when badge pickup was opened. Because of the time difference, I was up and in the city by about 6am, so I had no trouble getting there for the 9am opening, and the applause from the Apple employees as we picked up our badges and WWDC jackets.
After picking up a few supplies, I headed to the Caltrain station (where the massive American trains you see in the Movies leave from) to make the trip to Apple Campus (or ‘Pilgrimage’ as it is known by other developers). It’s about a two hours journey – an hour on the train to Sunnyvale (which is tropical compared to San Francisco) followed by either a bus or a long walk. Luckily I met some other guys headed up there, so the walk passed quickly – before we knew it we had bought all the T-Shirts and were heading back.
The Monday is when the conference officially starts, with the Keynote (where new products are introduced), another presentation and then the Apple Design Awards. This is where things get a little difficult – apart from the Keynote and the WWDC Bash, everything that takes place in Moscone West is under the Apple Non-Disclosure Agreement that we sign as developers. Hopefully you’ll understand that if I am been vague about something, this is why.
The keynote really is the main ‘fun’ part of the week – the part that everybody is excited for – hence the queue starts 24 hours before. I ended up in the queue with a whole load of other dedicated people (and the security team, who felt the need to give their dogs ID badges!) who had queued from 2:30am, and we ended up with pretty awesome seats near the front. The excitement was incredible – especially in the final hour – and the sight of 100’s of developers that just forgot dignity and went for a full on sprint across the conference hall and up the escalators was comical. Of course, this year iOS 7 and OS X Mavericks were introduced, both with some very exciting new features, and the atmosphere as they were introduced was incredible – especially for iOS 7, where people were literally screaming with delight.
After an NDA presentation, the third presentation of the day was the Apple Design Awards. Along with some sessions on UI design later in the week, it was incredible to see what other developers had achieved in their apps and I definitely picked up a few ideas for my apps.
On the Tuesday night, there was ‘Stump the Experts’, which has been going for 23 years. It basically takes the form of a panel show – the audience (5000 developers) vs about 40 Apple Engineers (the ones that have been at the company for a long time). They asked us some questions, and we were able to ask them questions. Because it is a mix of the people that either built the products or understand them to the lowest level, the questions are just mad – for example, ‘How could one use a powered off MacBook to put another MacBook to sleep without pressing any of the keys?’, ‘Beside an OS install and properly formatted partition map, what other feature does a Firewire drive require to be bootable?’ and ‘How many mm^2 are in the white section of one of the new Apple Stickers (show working)?’. It was certainly very entertaining!