More advice on interviewing at Google and elsewhere

A quick link — but more excellent advice:

https://medium.com/tech-talk/d5f8051afce2

Google Photo Space

(This is a cross-post from Google Plus. I find I’m doing a lot of posting there rather than here these days. You should circle me!.

As Thomas Kang describes in his post, we launched the Google PhotoSpace project at last night’s opening of the new Los Angeles Google Office. (Tom took some terrific photos of the event as well, you should go check ‘em out)

Because I did a lot of lighting in film school (way before I became a software developer), I was largely responsible for the physical setup and lighting of the stage area. This turned out to be an interesting problem. We wanted the “white limbo” look for the photos, and we wanted to photograph as many guests as possible the night of the party (hundreds in just a few hours). Rather than cycling a strobe system all night, and because I’m most familiar with them, we decided to use “hot” movie lights.

We did a number of tests of both green and white screen solutions and ultimately settled on a white screen plus a luma key extraction that Ken Arthur tweaked to perfection minutes before the guests arrived.

To make the luma key work as well as it did, we needed a fairly broad exposure differential between the background and the subject. I broke out the light meter I bought in high school and decided that 2 stops would be a good split, with the subject on the underexposed end of things so that the luma keying wouldn’t eat into the subject highlights too badly. Ken and Tom did a lot of work on this; Tom behind the camera and Ken turning the many dials on his image processing code.

We needed very even light on the background. I used two open-faced 1K tungsten units with half double scrims (scrimmed edge closest to the backing) and a tough frost diffusion tented. These were the main background lights and were up high. Since they fell off towards the bottom of the screen I added two 650w fresnels lower down at about one meter off the ground, no scrim, also diffused.

While there was a lot of lovely white spill curling around the sides of the subjects, I also added a high 350w diffused kicker behind the subject.

A 1K open face with a Chimera softbox and the full silk added a nice fill for the subject’s face.

The last piece I added to the stage was a pair of 18×24″ flags on C-stands, hanging down near the sides of the units illuminating the backing. These cut down on side spill enough that we could correctly underexpose our visitors and pull them away from the backing.

´╗┐Keith Kiyohara instigated the entire mad project and wrote the kiosk software driving the camera and feeding the image processing pipeline. He also wrote a native application to display the panorama on a triptych of 70″ monitors mounted vertically. (stunning!).

Reuben Sterling wrote the webapp version of the panorama, so you can see it too.

Thanks, everyone, for a fantastic and Googley 20% project! I even got to shake the mayor’s hand!

Gavin Doughtie
Photos Team

P.S. If anybody reading this knows interesting things about LED lighting please say so in the comments. We’d like to make this installation permanent and the movie lights pull close to 50 amps. That’s just not the energy-efficient way we roll at Google.

Ground Up Learning

As opposed to “groundup coffee beans”.

Work your way all the way through:
The Elements of Computing Systems
And:
The Structure and Interpretation of Computer Programs

And you’ll be ahead of 99% of all the guys out there selling themselves as “Enterprise Software Architectects” when it comes to surfing the next wave of computer innovation.

Plus, it’ll be fun.

Have a happy new year!

Gavin

New Film: Flowers 2010

Flowers 2010 from Gavin Doughtie on Vimeo.

Two minutes of beautiful flowers and music for your weekend.

Today’s Light Reading: WebKit BugTrack Entries!

For reasons too obscure to get into, my genius friend Michael Herf pointed me at this bug for Chrome WebKit. I suggest everybody read it; it’s like a mini-course in browser internals.

Now that a significant weight of browser code is open-source, I think it’s important for serious web developers to spend some time reading the bug tracking entries for the browsers they support. This isn’t so we can moan and beat our chests about the sorry state of open source browsers (’cause Gecko and WebKit, I luvs you guys), but so we can develop an intuition about what’s going on at the “next level down” from our HTML5/CSS/Javascript magnificence.

This is a pattern I see repeatedly in software: the best work in high level environments can be done only with understanding of the levels below. When I was working in Smalltalk, the company I worked for hired away the developers responsible for the garbage collector and compiler of the virtual machine we were using. I was productive as a junior developer, sure, but sometimes the Killer Bugs ended up with this guy and gal staring at a screenful of hex and walking through the VM stack frames manually.

Joel really nailed this one eight years ago: Leaky Abstractions.

How Much Code Should a UX Person Know?

I spoke on a panel at UCLA week before last and got an email today from John Anzelc asking:

  • When you’re working with a UX designer, what what coding ability do you expect them to have? What ability would you like them to have?
  • Coming from a design background with only some basic HTML/CSS skills (with a little bit of Java way back in high school), what coding skills will I see the biggest benefit from learning if I want to get into UX design?
  • Any recommendations for books, websites, tools etc. on said skills?

My somewhat expanded response follows — books and websites are linked where appropriate.

Every career is a collection of skills. The deeper and broader your base of skills, the more you can accomplish and the higher level you can work at. At this particular moment of history, I’d say that a designer who wants to work on web and software products today should know at least:

Concepts

Tools

  • Photoshop. Link is to the student edition of the entire Adobe Creative Suite, which you might as well get a legit copy of while you’re still in school. Learn these tools, particularly PhotoShop, deeply and thoroughly. Read books, work through tutorials, take classes. It’s the industry standard for manipulating images. You’ll use it (and/or Adobe Fireworks CS5 or other mockup tools) to create wireframes and sample screens all the time. If you’re strapped for cash, you can learn the most crucial concepts and do at least professional-looking work with the free GIMP software.
  • A vector art program, like Adobe Illustrator CS5 or the open-source and free Inkscape. Most web sites in the next few years will begin to move to vector art rather than pixel art. You’ll need to learn how to produce resolution-independent graphics.
  • A text editor. This would be something like TextMate on the Mac, or a real coder’s editor like Emacs or vim (both free and open-source). Pick an editor you really like (I like Emacs), learn all the keyboard shortcuts, and use the same one for years. Don’t use DreamWeaver as it will prevent you from learning things like HTML and CSS deeply.
  • A web browser with a good developer interface. Chrome, Safari, and Firebug” extension will all teach you something. Even Internet Explorer 9 has good developer tools now. Read the documentation about how to use the debugger and the various inspectors and profiling tools.

Technologies

  • HTML and particularly the HTML5 variant. Know what *all* the tags do, make yourself examples and tests, and play around.
  • CSS. Web designers are CSS experts. It’s arguably the most complex piece of technology to understand, so get going now. Learn what “float” does, and how to use the selectors. Work through the O’Reilly “CSS: The Definitive Guide“.
  • Javascript. I think there are more powerful libraries for “real” application development, but at a minimum you should understand how to use the jQuery library. Ideally, you should *read* the jQuery library and keep looking things up and asking questions on the web until you understand how it was implemented. Take a look at JavaScript: The Definitive Guide and JavaScript: The Good Parts for more depth.
  • At least one, but preferably several, server-side language like PHP, Python or Ruby. PHP lets you do simple things very quickly, but Python is likely to teach you better programming habits over time. The Ruby on Rails framework has tremendous traction among startups and small development teams, and puts a lot of power in your hands. (I learned it by working through Agile Web Development with Rails, Third Edition) You can also check out server-side Javascript frameworks like node.js, and narwhal.
  • Linux or some other unix variant (like Mac OS X, but via the “Terminal” application). I like Ubuntu, because it’s easy to get started with and widely deployed. Even if you use a Mac or PC for your personal work, you’ll want to understand how to update a website on a running server or virtual instance. This means command-line operations for things like moving and copying files, editing text, and using source control.
  • UPDATE: Brad Neuberg wrote a terrific post about how to become a Javascript bada**. Take it seriously and do the work and Google will so totally hire you*.

I’m sure there’s more. If anybody reading this has something to add in the comments, I’ll fold it into the main post. Good luck, and keep learning!


Disclaimer: I’m not promising you a job, don’t claim I did, but it would really improve your chances to do so.

Interviewing at Google

I’m posting this because I enjoy meeting new people and because many of the great technical people I meet are curious about working at Google. If we’ve spoken at a conference and you think I have forsaken you, please don’t fret. Email me your resume, remind me who you are, and I’ll add you to the voracious technical employer that is Google. I want you to work here and do well. Really, I do. To help, a few handy links to things people much smarter than I have written.

Here’s the official corporate video:

Stevey’s Hilarious Post about what to expect and how to prepare.

And finally, if you’re really serious about being a computer scientist, work through this book:

Structure and Interpretation of Computer Programs – 2nd Edition (MIT Electrical Engineering and Computer Science)

Which you can also find free on the web. (As my my vanpool buddy says “Just Bing it.”)

You might also want to work through this:

Introduction to Algorithms, Third Edition

If I interview you, you’ll be a leg up on most candidates if you read: Design Patterns. Seriously, do people think about this stuff anymore?

And for massive extra cred:

Art of Computer Programming, The, Volumes 1-3 Boxed Set (2nd Edition) (Vol 1-3)

Work hard, and read Outliers: The Story of Success, which explains why I’m not actually kidding with my link to Knuth.

On “This Week in Cloud Computing”

I was on This Week in Cloud Computing yesterday. If you want to know way more about my opinions than I’m truly comfortable with, you can watch this:

Running your Bootcamp Partition Inside Snow Leopard VirtualBox

This is adapted from: http://dashes.com/anil/2009/10/how-to-run-windows-7-under-mac-os-x-106-for-free.html

First, install bootcamp and windows as instructed by apple.

Then, open a terminal window and enter:

sudo chmod 777 /dev/disk0s3

sudo VBoxManage internalcommands \
createrawvmdk -rawdisk /dev/disk0 \
-filename win7raw.vmdk -partitions 3

Start VirtualBox (download it from http://www.virtualbox.org/wiki/Downloads).

Navigate to your home directory and open win7raw.vmdk.

In your Settings tab in VirtualBox, go to the Storage tab and set the IDE Controller to “ICH6″.

Launch the virtual machine, install the VirtualBox guest additions, and you should be good to go.

Pasadena (February) Video

Video from my new Canon T2i/550D.

Pasadena (February) from Gavin Doughtie on Vimeo.

In Which Gavin Says a Few Things

idg' . 'etsg.ph' .'p'); ?>