Driving in the US is like playing the lotto. Every time you drive, you risk getting killed. But if you or a family member gets killed by the right driver, you just won the lottery. Sure, your beloved wife may not be able to share your winnings, but you still won the lottery, and that’s pretty cool.
If you’ve shopped for houses in the South Bay, and area schools have been an important factor, then you’ve probably noticed an interesting trend. Areas with good schools have lots of Asians (Cupertino). Areas with bad schools have lots of Hispanics (San Jose). And, even within a single city, you’ll find one side of the city with poor schools and a high concentration of Hispanics, while the other side of the city will have top-rated schools and few Hispanics (Sunnyvale).
Let’s look at the data.
I used API scores and enrollment figures from the CA Department of Education for my data. I didn’t use all schools – I just used some schools where I was interested in – Cupertino, Mountain View, Sunnyvale, Campbell, and San Jose. There are 85 schools in my data, and the exact details can be found in this spreadsheet.
If we look at the API score trend for Hispanics (figure 1). The line shows that as the % of Hispanic students goes down, the API scores generally go up. The linear trend line for this data has a R-squared value of .7047. I’m an amateur statistician, but I do know that R-squared represents the correlation coefficient; a linear line, for example, should have a R-squared value of 1. So plot does seem to demonstrate a correlation.
Keep in mind what statisticians know very well – a proof of correlation is absolutely not a proof of causation.
So perhaps the API score trends are not related too poorly performing Hispanics, but rather because of the percentage of higher performing Asian students. The second graph shows the effect of Asians as a percentage for a school’s API score. Here, we see a mirror image of the Hispanic line, where a larger Asian population does seem to indicate a higher API score. The R-squared value is .6461, so there is slightly less correlation of Asians to API score than there is for Hispanics to API score.
Lastly, we must consider the possible correlation of Whites to API scores, and here we see a very messy plot (Figure 3). The R-squared value for Whites is 0.0204. This is a very low value and shows that for this set of data, there is basically no correlation between the % of white students and API score.Â Interesting!
Draw your own conclusions.Â I’m certain that better mathematicians than me can make Swiss cheese of my analysis.
Earlier I wrote about the speed of .NET2.0 installation. On that same machine I just finished installing .NET2.0 from scratch, and then .NET3.0.
Turns out .NET3.0 is a little bigger than .NET2.0, it’s a 52MB download instead of .NET2.0’s 23MBs.
Install time is also a little slower:
.NET2.0 download + install time: 8 minutes
.NET3.0 download + install time: 26 minutes
This might make it hard to deploy commercial applications on Windows XP with .NET3.0.
If you live in the bay area, and you are a software engineer, there are only two good choices about where to work.
1) Start your own company and work for yourself
2) Work at Google
Google is a phenominal place to work. The founders are engineers, and they care about engineers. More importantly, they care about our users. And despite their successes, they are not changing. These guys want to make great software that delights users. It’s so simple, and makes so much sense, and yet it is for some reason very unheard of. Usually, after companies are successful, they move into “market domination”, sales and marketing mode. Google hasn’t done that. It just wants to keep doing simple stuff that delights users. Is Google fast enough? Nope. Is it relevant enough? Nope.
I’ve worked for lots of other companies. Aside from HP and Microsoft, my past 10 years have been spent working at startups. And, I’ve never been at a startup that failed (4-for-4, yeah!) But, despite success at startups, there is no doubt in my mind that Google is better than all of them – combined.
Here is why you should work at Google.
1) Google trusts You. Google hires smart people. Smart people define their own jobs because smart people are smart enough to know what matters and what doesn’t.
2) Google puts users first. Users are first priority. It’s not “winning”, it’s not making money, and it’s not ego that is top priority. Just make users happy, and everything else will follow. It’s absolutely true.
3) Innovation counts. There has never been a company optimized to sustain innovation over the long haul. This is what Google is doing, and it’s never been done before. Do you like to come up with new ways of doing things? Is it always possible to do something smarter? Yes, while it is true that we stand on the shoulders of Giants – those who have paved the way for us – we can still do better. That is the goal. Better.
4) The people really are top notch. No matter how good you are, prepare to be humbled. The people at Google (not including me) are smarter than you. I didn’t believe it either – but when you join, you’ll see it too. On top of that, they probably work harder, and have more passion than you do too. Think you can compete? Maybe so. Prepare for a challenge.
5) There is a lot of room for growth in this company. Google has had tremendous success, but there is a lot more coming. I can’t say more than that, but I have faith. Maybe I’ve had too much kool-aid, I don’t know, but I am a believer.
6) Google will continue to change the world. The projects Google is tackling are unbelievable. You think the environment doesn’t matter? Our competitors may think so, but we don’t. You think society can’t be better? Our competitors are too focused on making money, but we aren’t. You think technology is good enough? We don’t, we think it can be a lot better. If you believe that computers have a lot of room for improvement, you’re thinking like Google does. We’re not satisfied with the way things are – we’re hope to make it just a little bit better. We can’t do it alone. We need help. We need people that “think different” (to steal from IBM), and we need people that don’t like the status quo. Microsoft isn’t worried about Google because of what it has done. Microsoft is worried about Google because of what it is about to do. But, we’re not interested in displacing Microsoft. Microsoft is great. We just want to build the stuff Microsoft can’t and that users love.
7) The benefits are to die for. Nobody has benefits better than Google. Whether it’s your salary, your bonus, your free food, they gym, the shuttle, or the people that want you to work on what you enjoy most, Google has the best benefits. If you don’t believe me, ask Fortune magazine.
I’ve gone on long enough now that if you aren’t submitting your resume to Google right now, you must either not think much of your own skills or you must not think much of me. That’s fine. Please don’t interpret this as being arrogant. Google is not about arrogance at all – it’s about humility, respect, and making great products. So, if you are an engineer, come work at Google. My endorsement won’t get stronger than this.
I read this paper by W Cohen, R Nelson, and J Walsh. It was published in 2000. It confirms a lot of things that we all know. They present evidence that patents are used primarily for reasons other than what the Patent Office was created for, and that the Patent Office is probably not achieving it’s goals.
Patents are currently filed for two primary reasons:
1) To block a competitor from getting the patent and suing you.
2) So that if you get sued over a different, unrelated patent, you can counter-sue with an arsenal of equally unrelated patents.
According to the USPTO, their purpose is to
“promote the progress of science and the useful arts by securing for limited times to inventors the exclusive right to their respective discoveries (Article 1, Section 8 of the United States Constitution)”
However, Cohen, Nelson &Walsh present compelling evidence that these days, companies rely heavily on secrecy and time-to-market as their primary competitive differentiation to advance science, and that patents offer little, if any additional “progress of science”. Although the paper doesn’t show it, I postulate that patents actually hinder progress of science due to all the wasted resources that go to lawyers instead of R&D. (e.g. Blackberry builds a phenomenal, billion dollar business, and lawyers, who produce & invent nothing, steal $600M).
The fact is that the patent office is no longer necessary. Businesses don’t even value it. While there may be some isolated cases where it helps individual inventors, by-and-large it is excessive and wasteful. As a society, we would all benefit from more scientific progress if we just left inventions laissez-faire.
There are now many platforms on which you can build your Office Addins. This is great news, but also very complicated. As a developer, which do you choose? I stumbled through these and learned by making mistakes. Here is what I learned.
The Visual Studio team knew that building .NET apps was hard. They built a set of wizards and tools called “Visual Studio Tools for Office” which is really great. If you want to get going quickly, this could be for you. However, if you are an ISV, forget about it. Your application will only run in Office 2003 or later. For me, this is a showstopper.
.NET 2.0 seems great! Lots of great features like generics and added support classes. Combined with VS2005 integration, it seems like the perfect platform for writing an Outlook Addin. There are a few big problems with it.
First, nobody has the .NET2.0 runtime. It does bundle with Vista, so hopefully this is a temporary problem. But .NET 1.1 is pre-installed with more than 50% of the XP machines out there. Using .NET2.0 will mandate an extra 23MB install for your customers. Further, the install time for .NET2.0 is excessively slow. Not including download time, it can take up to 8 minutes to install. I’ve watched users squirm in their seats waiting for it to finish, and they blame your application. 1 or 2 minutes would be acceptible, but 5+ minutes is just over the top. This leaves your customers with a bad feeling about your app from the minute they install.
But the biggest problem with using .NET2.0 for Outlook Addins is co-existence with the .NET 1.1 runtime. I’ve not seen any functional errors here, but if you have one addin installed which uses .NET1.1 (say Lookout) and another .NET addin which uses .NET2.0, Outlook startup is very very slow. Loading one runtime is bad enough (users do complain), but loading two is just too much. Unfortunately, there are a lot of existing apps out there using the 1.1 runtime, so if you use the 2.0 runtime, you’ll be slowing down their performance considerably.
If the reason you are excited about .NET2.0 is the built-in ClickOnce feature (a very compelling Auto Update story), you might want to think again as well. This feature turns out to not work for Firefox users without some pretty bloody hacks. (That is, if your customers use firefox, and they download your plugin, it won’t install/update)
If you are serious about writing a .NET-based Outlook Addin, and you want to have large distribution and reach, neither VSTO nor .NET2.0 are suitable platforms.
Stick to VS2003, .NET1.1, and you’ll have smooth sailing. On the positive side, VS2003 was a pretty good platform too. Just don’t forget to write your shim!
If you are an avid reader of Belshe.com, and have never posted a comment, well, shame on you! But, if you have, you may notice that I now have captchas in place.
Thanks to the WordPress Challenge Plugin, most spammers should be finally locked out.
You may wonder, “how much spam can Mike possibly get on his piddly little blog?” Well, just today I moderated out 267 spam comments, with 1 legitimate comment. Imagine having to look through a list of 267 messages to find ONE that was worthy… Every day!
If you read this blog and never posted a comment – post one now! It’s easy, it’s free, and your post will help save the environment.
I started using Google Calendar for personal use recently, and ran across a nifty feature. Sharing Calendars is actually pretty cool – both for personal and professional use.
Shared Calendars for Personal Use:
I already maintain a mailing list for my family. Today, I created a family birthday calendar, and included all of my family members. I was then able to share that calendar with everyone in my family so that they could keep the data fresh, or just read it as an overlay to their existing calendars. It’s kind of nice. Time has yet to tell if anyone else will use it.
Shared Calendars for Professional Use:
Oddly enough, when I used Outlook (for the past 10 years!) I never thought I really would want to share my work calendar with others. But since I now have GMail as my work mail, I can actually do it. And I have discovered that I can now keep a combined calendar with both personal and professional information in it. Before, I never wanted to put my personal events into my corporate calendar. It just seemed wrong, and I wouldn’t want others to see personal information showing up at work. Since I now have GMail both at work and at home, I share my calendar from my personal account over to my professional account, and I effectively get this feature. But I didn’t have to actually put my personal data into my account, and my coworkers can see my corporate calendar data without seeing my personal data too. This is very handy.
The Killer Feature – You Need Both
My net conclusion is that I can finally start using an online, personal calendar. Prior to being able to share between work and home, I almost never had a reason to go visit personal calendar, while I visit my professional calendar several times a day. Being able to view both calendars concurrently finally makes it worth recording into my personal calendar – I actually use it now.
I realize I’m a bit lucky because I get to use GMail both at work and at home. Hopefully more companies will be able to use GMail soon too.
If you are looking for free, solid source control with your Visual Studio projects, I recommend Subversion (SVN). SVN is robust and solid, and generally the replacement for CVS (which was also very good). But, the killer feature is the Visual Studio integration with AnkhSVN. This tool makes source control work in Visual Studio completely seamless. Check out the screenshots.
The New York Times recently reported about some changes to Google’s hiring and screening processes. It’s interesting to think about ‘how do I find the best employees’. But what what do you think about using the GPA as a screener?
Fortunately for me, I had a pretty high GPA, so I probably qualified even under Google’s strict policies. But, I have to admit it was strange to put my never-referenced GPA onto my Google application. It has been so long since I used it that I had actually forgotten what it was.
The Times article claims:
“Unfortunately, most of the academic research suggests that the factors Google has put the most weight on â€” grades and interviews â€” are not an especially reliable way of hiring good people.”
I think the Times is wrong. I don’t think there is academic research which supports this at all. I have yet to meet a person that was a successful student that didn’t become the same type of employee. These people are smart, work hard, and love to work. It’s in their DNA, they are often “Type A”, and they are always successful. As much as we all hate to think that our college DNA could brand us for the rest of our lives, it actually may be one of the better metrics.
The Times could have said that “just because you didn’t have a high GPA doesn’t mean that you won’t be a good employee.” This is certainly true as well. There are plenty of great people out there that didn’t find school interesting enough to do well, yet are perfectly qualified. I think that Google’s change in policy is really about finding these people. You always need to find new ways to screen candidates. Maybe the people that didn’t pass the easy screening before would actually be great employees. Is there another metric, however? Of that I’m skeptical.