Advanced Programming: Google Engineer

This past Tuesday we had a developer from Google come to our school and give us a talk about working at google, and some practices. Along with a few pointers to tools that could be useful. This speaker was so much better than the last, IMO. Then again, the material covered by the other person was denser; Operating systems. I’m going to post my notes, and a do a little bit of research on the tools and tips given to us.

Alright, he started with an introduction, and his name, though, I will probably leave that out, incase he accidentally said something they shouldn’t. Which, for the most part, I doubt. He did stop himself mid sentence once. So, guessing their secrets are safe. 😛

He mentioned something called BOOST, while he was talking about version control. Now that I’ve started using git, I’m probably going to become an addict. So, what’s boost? I don’t know, but he kept talking about it, so I just googled it, ha.

Boost provides free peer-reviewed portable C++ source libraries

I would book mark it and read it later, then do some sort of overview of it, but I know that book marks are were intentions go to die. Hence, I will read over it a bit now and see what’s up. Based on their site, I am very sure it has everything to do with C++ libraries. Also saw something about python, so they might be doing a variety of languages. Boost itself, is a set of libraries that lets you do cool stuff. Not gonna go into too much detail, since this was one of a number of things covered in the seminar. And, I will most likely not use it anytime soon, at least not for academic purposes, since there is a standard to maintain. It does look like something I could use on a side project then.

He mentioned fancy things like using various versions of the same code. And how that is hard to monitor. A snippet about frameworks. And, why does wordpress keep changing every  time type something!!! If.. I wanted to look at other sites… while.. I was typing a post… I think I would just completely not do a post… That’s just annoying, and distracting… give it to me when I’m done, thank you.

Back to the notes. He discussed building from head, and how great it was. There was only one source tree. Which he said was “by far the simplest solution” to how to store and edit code.

Pros:
-Simple
-Faster bug fixes
-Scales well

Cons:
-Constant code churn: a “real bad situation” since it takes a long time to build, and each build is a compilation.
-Changing APIs may affect the world: If you change an API, then you’re changing it globally! And the code is seen by everyone in Google! Careful!

One of the niftier things he said was how everyone was encouraged to edit anyone else’s code. So, if you find a bug in someone’s code, you can edit it. Then tell the group you edited it and send it for review. I believe he mentioned a few more steps that you realistically needed to take later in the talk.

He did mention a strict styles guide… which was probably evident, given the company and the amount of code they deal with. And I believe they are available online, let me take a look. Yeap, there are a number of styles guides available from google. I knew they had a C++ one, and now I found them all: Google Style Guides!

Map reduce seemed pretty interesting as well. Apparently it’s a method of compiling large amounts of data in a very fast amount of time. It seems a lot like something in F#. When you map something to a function, or filter. Though, he didn’t go into many specifics. Just praised how great it works.

ClangFormat was another one of those nifty tools available to the normal people. It’s apparently a tool that help, or completely formats your code. I can see this coming in handy when dealing with huge amounts of code! Apparently made for the C language families; no support for the black sheep though.

I’ll finish it up with their version control, since this post is already longer than I’d like it to be. Then I’ll start up another section with Google’s famed 20% time.

He mentions how the general belief that google has a distributed means of version control and that is not the case. They use a centralized means of version control; probably why all Googleites have the ability to edit code directly, and why they need to be reviewed by the owners.  So, how do the developers get that centralized code to their machines? 2 ways, from what I gathered. A client in the Cloud~. The code is 100% available in the cloud… a form of code heaven… 😛 And the second means of getting access to that code is! A locally distributed version.

So, the person has a form of git, or version control, that is their personalish version control, along with the Cloud. They can experiment with code, and play with it, without actually committing it to the Cloud~. I’m guessing they’re issued their personal repository, along with one of the many glorious tools he hinted at during his talks… he had a little glint of joy in his eyes, I was just waiting for him to start giggling at the mention of his Google GI developer tools. So! This centralized version control, it’s pretty nice. This is what makes the Google wide changes so easy.  He did say something about Google3… not 100% sure, but it seems to be the root of all Google code… looking at my notes, not sure if he said that, I suspected it, or it’s a diversionary tactic to lure people to or away from their secrets.

That’s it for now, I’m about half way through the notes, and the rest may be trivial, so either another long post, or a short post in the near future.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s