Monday, September 9, 2013

What I Worked on This Summer

I wasn’t sure I’d be able to do a post on this; one of the biggest issues with an internship in the tech field is that interns are given a lot of access so they can work on incredibly interesting projects, with brand new and usually top-secret technologies.  As cool as my projects have been, there is very little I can actually say about them unless Google decides to use them publicly (‘launching’ a feature is the golden goose for interns).

However, my host gave me a really great idea for a blogpost.  Instead of talking about what I’ve been doing (as it hasn’t been released), I can talk about the amazing technologies that I’ve been able to work with, some of which are also available to people outside of Google.


Knowledge Graph: linking entities

When my host was telling me what he could about what I’d be doing over the course of the summer, he told me to research the “Knowledge Graph” (freebase.org).  KG is an amazing technology, and what makes it so awesome is that instead of focusing on searches by using strings (for the non-CS readers, a string is a series of letters that are combined), it focuses on entities.  The idea behind entities is that every word holds an entire context, that when a user searches for ‘The Hunger Games,’ they aren’t merely looking for every website containing those words; instead the Knowledge Graph knows that ‘The Hunger Games’ is a book written by Suzanne Collins, has been made into a movie starring Jennifer Lawrence as Katniss Everdeen, and has a second movie premiering in November called ‘Catching Fire’.  It takes that information, and then decides what results to show.  By treating search as a type of interconnected network of associations, KG mimics a human brain’s ability to make leaps of logic--but without the spatial limitation of memory, which has amazing results in providing the most contextually relevant information to the user.

I’m not sure about you, but after I looked into it, I was completely hooked by the concept (I also fell in love with Facebook Graph Search for the same reason).  I started seeing that my Google searches were smarter than I had originally realized.  A friend wanted to know if Ewan McGregor was married, and so I searched ‘ewan mcgregor’; the Knowledge Panel on the side gave me his birthdate, height, full name, spouse, wedding date, children, movies, and images.  This, all without leaving the search page.  I realized during this research, before even beginning my internship, that a lot of the time I make a search on Google for a fact, I never even have to click a link to get the response. (The best example I’ve seen of this lately is the Google search for ‘timer’.  Seriously, that exists.)


Knowledge Panels : yes, they're beautiful

Most of my time here at Google, I’ve worked with Knowledge Panels in some manner, and none of their magic has disappeared with learning more about how they work.  In fact, the first time I managed to make a button appear on one I proudly showed every member of my team; to them it was probably akin to a fifth grader showing their mother macaroni art, but the fact that I got to work with--and affect--something that I used in my daily life was such an awe-inspiring experience.


During a three week period where my boss was on vacation, I had the opportunity to work with the Calendar team, and play with their API.  Although I was working internally, I was surprised to see how much can be done with Calendar externally (https://developers.google.com/google-apps/calendar/).  As an intern, I spent a lot of time understanding this API and playing with it before I started working with this product.  Besides the fact that you can customize the features with your own code, there’s already amazing built-in features for Google Calendar (not taking any credit, the most I ever did was make an event show up on my own calendar), my favorite of which is the ability to type what you want, i.e. ‘Dinner with Mom at 7:30pm on Friday’, and have an event appear on your calendar.  It’s a magical moment.

I ended up doing a lot of user interface design and implementation during my internship for a few reasons.  One is that there was a need on my team to see what a feature would look like quickly, and who better than the intern who’s itching to try something new?  The second is that I spend a lot of my free time, outside of work and school, coding up personal projects in JavaScript, CSS, and HTML.  I make my art projects into interactive web pages, use Google Developer Tools to (temporarily) change how my friends Facebook pages looked when they leave me alone, and I write snippets of code in the console to see if functions I am tinkering will would work.  All of this learning was outside of a classroom environment, and I use it every single day on the job. People think that getting an internship is all about studying and knowing algorithms inside and out, and they’re right; however, doing well as a software engineer is about having a passion for what you’re doing and finding projects that inspire you.

I think one of the things that makes the technologies and features that Google makes so great, is that almost every engineer is working on a project that they are personally (not just professionally) interested in seeing succeed.  You’re given the time, and support, needed to become an expert at whatever makes you passionate about engineering, and you’re encouraged as an intern to explore different technologies to see where you fit best.

1 comment: