Monday, September 26, 2011

WebGL: GPU acceleration for the open web

For the past six months, I've been developing with WebGL full-time. Coming from C++, I was not exactly thrilled about the idea of doing web development and coding in JavaScript. To my surprise, I really enjoy JavaScript, and the development tools are quite good.

Joe Kider kindly allowed me to share my enthusiasm for WebGL with his students in CIS 565: GPU Programming and Architecture at the University of Pennsylvania. My talk focused on the motivation for WebGL; WebGL support in current desktop and mobile browsers; and basic JavaScript:

Download the ppt.

Monday, September 5, 2011

The Google Resume Book Review

I'm not prepping for a job search, but I did just read The Google Resume by Gayle Laakmann McDowell. Gayle is a Penn alum (me too) so I wanted to check out one of her books.

Overall, this is a really outstanding book on the entire hiring process process for technical jobs: networking, career fairs, resumes, references, programming interviews, negotiating an offer, excelling once you are hired, etc. It is useful for developers of all experience levels, but it will be most useful for undergraduate and masters students in computer science or a similar major.  Its technical focus makes it hit home more than the general advice given by a university's career services department.

Being on both sides of the hiring process many times myself, I can say that the advice is practical and modern. It also includes lots of stories, like a candidate who used himself as a reference, and when the author interviewed with Microsoft.

Some of the advice you've probably heard, and some you may not have. The advice I like includes getting to know your professors; GPA isn't everything - excel at something; customize your resume for each company; keep your resume concise; use twitter for networking; have an online presence such as a blog, portfolio, or active forum participation; your initial email is really a cover letter; focus on accomplishments over responsibilities; map out your career 7-10 years ahead; find a mentor; and build relationships. There are also a number of subtle tips like watch what you write in an email because it may get forwarded (side note: I also recommend watching what you write about competitive works in a book proposal because it might get forwarded to the work's author. I am two for two on this!).

The chapter on programming interviews and the appendix on behavior questions are quite good. There is a great section on approaches to algorithm design that is useful way beyond an interview.

The section on evaluating an offer is great because it includes important considerations that I think many people ignore.  For example, we all consider location from the perspective of do we want to live there and cost of living, but do we consider if there will be other job opportunities there in the future?  Also, when looking at an offer, we should consider what the average annual raise is.

This book is really excellent, but if I had to critique a few minor things I would have liked to see more emphasis on contributing to open-source to gain project experience, especially considering that companies like Google and IBM contribute significantly.  The chapter on getting into gaming had lots of quotes but appeared to be less based on experience than the other chapters - and also focused more on social and casual games than AAA games that many people aspire to.  In fairness, an entire book could be written on gaming though.

All in all, I really recommend this book, especially for students before they start searching for their first internship or co-op.