Would you rather…

be able to read minds (anyone’s around you. Selectively. You aren’t forced.)

– OR –

be the smartest person in the world (in any field, you’re a genius)

…a question my wife and I pondered as we cleaned the house the other day…

Google Chrome – the Good, Meh, Ugly, and This Means War

I just read all about Google Chrome, their new open-source browser, in the comic they put out. No download link at this time, but I’m sure it’s coming. My initial thoughts:

The Good

  • The JavaScript changes seems to make sense. The better garbage collector and speed improvements can’t hurt.
  • The free API to download lists of malware or phishing sites is pretty nice.

The Meh

  • UI changes. Making each tab its own browser entity and putting controls in each tab? That’s it? So what!
  • Some of the search enhancements are interesting, but I don’t think that anyone will care that much in the end.
  • Showing most popular pages…meh
  • Unclear on the plugin model. Will they have their own? Will they run ActiveX (they imply yes). How about Firefox plugin compatibility? All we need is yet another API for writing plugins.

The Ugly

  • A new process for each tab? Are you serious? I understand that it’s (maybe)the only way to completely isolate web pages from each other, but given how many pages some people have running, that means an extra 50 processes on the system. That’s a lot of resources. I know their idea was to consider each web page an application, and of course each desktop application is its own process, but I don’t think we actually treat most web pages like applications. We create new browser tabs and switch pages with wild abandon. Most web sites are NOT applications–they’re reference. They’re just books open to 50 pages at once. (Was process isolation really a problem that needed solving? I almost NEVER have runaway tabs in IE7)
  • Proprietary JavaScript hooks. Sure, it’s open source, but they’re still building things into their version of JavaScript that only work with their browser.

This Means War

  • First front: SilverLight. Gears seems to be a direct assault on the concept of .Net and SilverLight. The technology and scope are different now, but I think ultimately they’re going after the same target: having the rich-client experience in your browser on multiple OSes/browsers.
  • Second front: Firefox: the only people who are going to download Chrome or even understand what it is are the people who use Firefox. If Chrome succeeds, it will be at Firefox’s detriment. Thanks for playing.

Overall, I felt a big “meh” after reading the comic. While many of the ideas are interesting, overall, I don’t see a compelling reason to switch. I’ll try it out when it becomes available, and my opinions will probably change on some things, but Google is going to have to do a lot more to overthrow IE. Maybe their purpose really is to just throw ideas out there and see what sticks, what gets integrated into competing products, etc. We’ll just have to see what happens next. It’s going to be a fun couple of years!

(P.S. Also, please everyone, especially media, start mocking Chrome for it’s “p%%n mode” just liked you mocked IE.)

GeoEye supplying imagery to Google

My soon-to-be-old-company just announced a deal to give exclusive imagery to my-soon-to-be-rival. Sweet! I am a little disappointed Microsoft didn’t get it, but I don’t know any details of how the deal happened.

The GeoEye-1 satellite will be the highest quality commercial satellite out there when it launches next week. I am a little sad I’ll miss the launch party (my last day is the 2nd of September), but the date is what it is.

Airplane engines and teamwork

Charles Fishman has a wonderful article on a aircraft engine manufacture plant in Durham, NC. There are a lot of interesting lessons in here about teamwork, motivation, and work that make it a highly recommended read.

I’m supposed to be packing up the house and instead just read that.

Update:Jon supplied a link to a Joel Spolsky article counterpointing the above article. Now I’m going to be reading that instead of doing some chores.

No American resumes? – state of CS education

I had been planning on writing a blog entry on the apparently sad state of our CS industry these days, and the complete lack of qualified American resumes that come across my desk, when we actually got a decent one today.

Still, there is much to be said about the poor quality of education. At some points, we’ve gone through dozens of candidates that had such weak skills that I’m surprised they graduated from a reputable institution.

Then I noticed on the Google blog today a new initiative to partner with CS programs around the country. I applaud this effort and all like it. Serious companies like Google, Microsoft, Yahoo, Amazon, Adobe, Apple, and everybody else who builds amazing software need to get involved and lay down the expectations.

Does anyone know if Microsoft has a similar comprehensive program? I know that they have MSDNAA, but that seems more like giving software in a marketing campaign than setting the agenda. I do see smaller efforts with robotics that are great, but a more general push is needed.

I consider myself lucky for having gone through a fantastic computer science education at BYU. I found it even much better than my graduate program.

The thought leaders need to start insisting on higher standards, and we need to shame schools that churn out useless bodies whose jobs will soon be outsourced.

I can see some pushback from academic circles because they won’t want big business telling them how to teach, but the reality is that when schools are doing such a poor job of preparing people, they need to change and listen to those who are going to be hiring.

We need to stop complaining and start changing the situation.

Diagnosing SEO issues with Live Search Webmaster Tools

The folks on my future team at Microsoft have released a presentation about the diagnosing search engine issues with the recently released Live Search Webmaster Tools (it was out before, but in beta).

If you run a web-site, you should check out the tools and the presentation (even without narration, it’s worth a look).

Fans of LEGO: BrickFair is coming to DC this weekend!

If you are in the DC area, you must attend the BrickFair LEGO convention on its public days this weekend. The models here will be amazing. There will be over 12,000 sq ft of convention space. Bring the kids. If you don’t have kids, bring yourself–it will be worth it.

I was going to enter a large-scale creation of my own, but sadly ran out of time with dealing with new job, moving, etc. I’m still going to go, though.

When: Saturday, August 30, 2008 – Sunday, August 31, 2008 11am – 4pm

Where: Sheraton Premier at Tysons Corner

More info: BrickFair Website

Pictures of the 2006 event: http://www.brickshelf.com/cgi-bin/search.cgi?q=brickfest+2006&stype=dfc

Be there AND be square

Top 10 Reasons Why I’m Excited to Work at Microsoft

My last post was well and good (definitely read the comments), but I think I should be serious about my new employer because I really am excited to work there. Here are some reasons why:

  1. The opportunity to work with people smarter than me. The chance to meet some of the people I admire in the software community.
  2. The projects and technology under development always inspire me. Almost every event I’ve gone to has had me come away wanting to look into some other cool technology and thinking of the ways it can change the world.
  3. A real career path as a software engineer.
  4. Chance to change projects whenever I want. During my interviews, many people were quite open with me: they get bored with a project eventually and want to switch after two years or so. Microsoft’s culture easily allows this.
  5. Compete with Google. Google needs some real competition. Just as Firefox lit a fire under the IE team, MS needs to light a fire under Google.
  6. The benefits are awesome. They truly treat you well.
  7. They are extremely open on telecommuting.
  8. How many companies can you work at where your stuff affects so many people? There aren’t that many…
  9. The challenge. I love challenges. I love learning new things, and working hard to solve problems. Challenges are how you grow.
  10. The area. Beautiful country. Cheaper than DC. The rain.

What will be more interesting is to compare this list with what I come up with in a year.

Top 10 Things To Do My First Week at Microsoft

  1. Wear my Google t-shirt.
  2. Set my homepage to www.google.com
  3. Continually ask, “Have you met BillG? Where’s BillG? When can I see BillG?”
  4. Show off my bright blue iPod Nano
  5. “Upgrade” my workstation to Windows XP
  6. Then just format it and install Ubuntu
  7. Randomly shout “Yahoo!” as I walk through the halls
  8. Add my gmail address to my e-mail sig
  9. Start an open-source project for Google Android
  10. Default browser: Firefox Safari

(I kid, I kid…)

Clarification on Why Study for an Interview

I had mentioned this in the Tips section, but some people on some sites might still get the wrong idea about studying for my recent Microsoft interview, so I want to write this post, which explains my opinion more (and it really is just my opinion–I have no idea what Microsoft’s policy or opinion is).

I want to make clear that cramming for a job alone will not get you this job. It didn’t get me this job, and it won’t get you a job at any place that really tests you. Thinking it will is a backwards approach.

The two books I mentioned, as well as the links I pointed out, are merely resources to help you focus your efforts. If you have to memorize the questions and answers rather than understanding them, you have a problem. If you didn’t do well in your CS algorithms class, chances are, memorizing the answers isn’t going to do much for you. If you don’t really understand pointers by this point, no amount of memorization is going to help you debug your C++.

Those resources are a way to reflect back on what you’ve learned through your entire career, starting in school. Let’s face it, how many times have you had to implement a hash table, or a heap sort, or even a binary tree? Those basic pieces are always provided for you–almost nobody writes them from scratch in production code. But should you understand them thoroughly? Yes. Should you know common gotchas? optimization techniques? how to write them? Yes, Yes, and Yes.

Even if the interviewer asks you to do some basic problem like writing a linked list function, and you’ve memorized it, then what? Ok, so you write it on the white board. Guess what the interviewer is going to do next? They’re going to ask you to analyze it, they’re going to say things like, now let’s make it circular. How do you detect a loop? Now it needs to bi-directional. Now it needs to be split in half. Now each node also needs to have children. Now it needs to be sorted. Now it needs to represent terabytes of data on disk, now it needs to be faster, smaller, smarter, better in every way.

And that’s only if you answer the problem perfectly at first, which is pretty hard to do.

You see where I’m going with this? It doesn’t matter how well you know the initial question, they will always get to a point beyond where you’ve prepared and you need to actually apply knowledge and skill and come up with something you haven’t thought of before.

I can’t remember where I read it, but someone said that Microsoft will deliberately ask you questions you can’t answer. This makes perfect sense–asking questions you know the answer to does not demonstrate the limits of your understanding. As an example, if I ask you only about basic addition, I learn little about your mathematical skills–only that you’re at an elementary level, which isn’t helpful. I have to ask about multiplication, division, fractions, algebra, trig, calculus, linear algebra, differential equations, etc. up to the point where you can’t answer anymore before I know what level you’ve achieved. It’s the same with programming.

Why did I work so hard for this job? A few reasons, I think. First, I’m a bit of a nutball. Second, I saw an opportunity I was not going to let go through any fault of my own. In the end, if they didn’t want me, so be it, but I was going to satisfied that I did everything possible to ensure success. Third, I expected the interviews to be harder than they ended up being, and I expected them to ask obscure questions about all sorts of data structures. Knowing what I know now, a lot of that preparation wasn’t necessary, but I don’t regret it–for the confidence alone it was worth it.

In the end, I thought they did a great job of discussing only basic data structures and algorithms, but really making sure they got you to think. No interview system is perfect, but theirs is really good.