As an outsider to Microsoft, I’ve often said that one of the downfalls of the company was their ability to complicate the simplest idea. I was, apparently, not the only one to think so. This video at iFilm.com provides a little insite into someone elses feelings of Microsoft. As I fly out to Seattle next week, I’m hoping that I can prevent myself from getting entangled in over-engineering and complexity.
Statement by Google CFO causes stock market stumble
It’s amazing what happens when the CFO of a company with an already over-inflated stock price makes a small statement like — “clearly our growth rates are slowing. You can see that each and every quarter”. While he was only stating what should have been plainly obvious by the quarterly financial reports, his statement was taken hard by an already volatile stock market. Google’s stock dropped by nearly 9%this morning and the DOW dropped and the down dropped by an entire percentage point. It’s amazing how much the stock market reacts to small statements like this. Take for instance, Rackable systems. They develop energy efficient, cool-running, equipment that will save companies more money than you can shake a stick at. This stock, by all analyst accounts is a win-win for everyone. Its one flaw today was that it had Google as one of many large customers. Take a look at what happened mid day at the announcement.
Luckily, the bulls saw this as a buying opportunity and drove the price back up. However, it just goes to show you how much a small statement by a powerful person can affect the economy in a single instant.
SynchronizationAttribute snake-oil
I have now been asked twice why you wouldn’t just use the [Synchronization] attribute when you want to make a class thread-safe. I figured I’d share what little information I have on this topic to you since I happen to have an answer. (as opposed to “the” answer which I never have).
As the saying goes, “There is no such thing as a free lunch.” I never really understood this saying as a kid. I grew up in a poor neighborhood and got “free lunches” all the time. Being financially challenged, I used to laugh and say “well, this is free”. As I’ve gotten older, and much more financially stable, I realize that my tax dollars are paying for the lunches for other kids in other neighborhood — apparently they are eating very well.
The same holds true for this special attribute. If you may think you are getting thread-safty for free, I have some snake-oil to sell you. There are several problems with the SynchronizationAttribute. Take a look at the required signature for use of the synchronization attribute:
[Synchronization]
public class SuperSensativeClass :
System.Runtime.Remoting.Contexts.ContextBoundObject
{
// Implementation here
}
First, the attribute requires that you inherit from ContextBoundObject — wasting your single-inheritance chain. If you wanted it in your object your most primitive object in the inheritance chain would have to derive from this class, and then what if you didn’t want some other child classes to be context bound?
Second, suppose your class has several methods which don’t have thread-sensative data. What happens there? The CLR will still lock those methods since it has no idea what is thread-volatile and what isn’t. This can severely hamper performance.
If you are looking at thread-safety, you are likely trying to optimize the perceived performance of your application using multi-threading. The SynchronizationAttribute can actually have the exact opposite effect. Long story short, learn to use the synchronization primatives of System.Threading.
Lessons in backups
OK, so I’ve re-learned the importance of not only backing up, but verifying backups. The other day, I decided to upgrade my blog software to CommunityServer 2.0. I apparently messed something up and before you know it, I had deleted my CS 2.0 database. While I had backups from a week ago (sufficient to restore back to my last blog post for sure), I had never verified the backups. Let’s just say the time to test your backups is not after a failure in which you need to use them.
Luckily, I had a backup device that most people don’t think of when they consider their options — Google Cache. I was able to easily use google cache to reassemble my blog posts as well as the comments. If some of you have noticed that my blog has been posting a large amount of posts in the past few days, its because I had to repost everything on my blog. Its a big pain in the butt and now I have to do some work to update google with my new articles, but at least I could recover it. Now before any Microsofties yell at me, I did try to use MSN Search cache first, but wasn’t able to find everything — one again proving that Google still has the edge in this market.
Suffice to say that this should be a lesson to all of you, and should serve as a refresher course for myself, that simply doing a backup isn’t sufficient — verification of that backup is essential to a good disaster recovery plan.
Why Google dominates their market
There is often a great deal of speculation into why Google dominates the ad revenue market. Today, I developed my own theories on this. For the longest time, I’ve used Google as a home page. Since I’m heading to the mecca of Windows development, I decided to make the switch to Microsoft’s home search page. So there I was trying to find a home page equivilent to google.com. What I found was a bit revealing. Who is competing with Google, you might ask. Two main competitors are Yahoo and Microsoft.
You can call Microsoft a competitor, but you can’t go to www.microsoft.com and find a simplified search page like www.google.com. In fact, Microsoft’s main business is software for their platform, not software for the web-based masses let alone searching. So I went to MSN.com and found myself presented with a portal site. The main business of MSN is portal first. I see a search bar at the top, but the rest of the page is busy with stock quotes, news, advertising and more. If I’m at work, and this is my home page, I’m going to become distracted. This isn’t at all like the simple search page of google.com. In fact, to find something even close to google.com, I have to type in http://search.msn.com . The URL says it all: Searching is a subset of what MSN does and therefor it’s a subdomain of msn.com.
I did a quick check at yahoo.com and found, well, another portal site. I go to yahoo.com on occasion, but never really put two and two together. Yahoo’s main business is also to be a portal first. The page is busy — very busy. Theres links to their other services yahoo offers as well as different types of search links. Below that is some advertising, some suggested searches, traffic/weather, and more. To get a page that is even close to the same as google.com, I have to type in http://search.yahoo.com . Again, we find the telling URL that just screams — we are portal first and “searching” is a subset of what we do.
These two examples tell me exactly why google succeeded and continues to dominate. They don’t have any real competitors. Google has pseudo competition — people who offer similar services. The important factor is where these companies put their emphasis. Sure, google offers maps, email, IM, IE toolbars, RSS readers and more — but you will not find them on the main page of google.com by default. Google has made searching a priority and the structure of their home page tells you that. I can personalize the google.com home page too but by default it is what people think it should be — a simple search page!
IIS may be Microsoft’s most important product
I’ve been asked a couple of times why I accepted a position working with IIS 7. Someone even quipped that I took it because it was the only job that Microsoft offered me. Quite honestly, if I had my druthers, I would still love to join this team. Obviously, some people can’t understand the importance of this product. This post will serve as the formal answer to the inquiries about my upcoming role.
I believe in my heart that IIS could possibly be the most important product in Microsoft’s arsenal today. If you blindly accept this hypothesis, you need not read any further. However, if the need to provide some supporting evidence to my assertion haunts your dreams, go ahead and finish reading this post before you lay your head on the pillow tonight.
In the book, Freakonomics by Steven Levitt and Stephen Dubner, the authors overtly opine that information is one of the most powerful tools in today’s age. One example given by the duo is that of the ruin of the Ku Klux Klan after WWII. Once the war was over, the “Klan” had started to regain their footing. Stetson Kennedy infiltrated the group and exposed all of their secrets to a popular radio program at the time — Superman. This turned the upsurge in Klan membership on its ugly hooded ear. The book demonstrates time and time again that sunlight is, indeed, the greatest disinfectant.
The proliferation of data in the “information age” is one of my favorite bi-products, or perhaps, the purpose of my very career field. Software applications seek to provide information in a concise form that makes sense to data consumers. Websites such as realtor.com and edmunds.com provide data that prevents the lay-folk from being ripped off in the same or purchase of a home or car, respectively. Sites such as encarta.com and wikipedia.com provide us with reasonable and free research — and in the case of the later, people actually volunteer their time to build on that knowledge. I have to admit that I am addicted to information. In an instant, I can be searching for stock quotes, searching for health information, getting the latest news headlines, or just reading blogs at any given moment. I can access information on my smart phone, my tablet pc, my notebooks or any number of desktop machines at home. There are even refridgerators with web browsers in them now!
Yes, information is important. But getting information out there in an efficient, reliable, and secure way is the key. I have watched IIS grow from a simple application-level server that leaked memory like crazy and provided a million security vulnerabilities while provided basic database/index server query capabilities (HTX/IDC and IDA/IDQ), to a mixture of kernel-mode listeners and intricate inter-process operations that serve up millions of pages of dynamic information and object requests in a secure environment as though it was bored to tears. The information this product serves up, for the most part, is pure gold and it already does it so well. IIS is, indeed, improving with each and every release.
Some may say the success of IIS is why they question my joining the team. “What else could you possibly do with that product”. While I’m not going to be a developer for IIS 7, I do cherish the opportunity to leave my ideas at the desk of those that can at least consider just what I think can be improved. Depending on what survey you read, Microsoft’s market share of the web server space has plenty of room for improvement. In fact, since the .COM bust, it appears that IIS 7 has been losing its market share. But obviously, market share isn’t everything: “What does it profit a man if he gain the whole world but lose his soul?” So what else is there? How about increased security and anti-fraud mechanisms? Dissemination of information is only as good as the information being purveyed. Sure IE 7 is going to take up some of the slack here. But couldn’t IIS 7 also provide some of this capability as well? Couldn’t it help protect against spoof sites? Perhaps a combination of IE 7 and IIS 7 would help scuttle the whole phishing business all together.
As I stated in my previous post, I have a million ideas, and at times, I’m overwhelmed with what to do with them. I’m hoping to pour some of this emotion into a product, and I cannot see a better product to be a part of — in whatever capacity I can be of use.
I hope this satisfies some of your curiosity. Thanks for listening.
Tobin.Swallow( Pills.Red );
Doing a google search for “red pill” and microsoft today yielded 55,700 hits. That same search on MSN search yields 14,433. This term, and other variations, are often used on blogs when someone takes a job at Microsoft. I would be naive to think that all of those hits are new employee announcements, but with these sort of numbers, I might have to buy some stock in a red-pill-manufacturing pharmaceutical company. This particular post will increase the count on those searches by 1 and will be counted among the many search hits that ARE about taking a Microsoft job.
Its my pleasure to announce that I will be packing up and moving to the
As many of you know, I’ve been running my own business. Things are great. I’m finishing up a contract with IPSwitch in February. I’ve been talking with Mark Dunn about doing some developer training for his company. I have more contracts being offered to me and really, the business is doing fantasitc. So why drop it to go be an employee again? The ideas are too numerous to list but I’ll try to give you the highlights.
First off, my entire career has been built around Microsoft. I started coding on an ATARI-800XL in Microsoft BASIC when I was in 5th grade. I’ve used Microsoft development technologies almost exclusively in my life. To be a part of the worlds largest and most successful software company is a great opportunity.
Second, I have ideas — a LOT of ideas. Anyone that has known me for any length of time knows that I am constantly coming up with ideas only to see someone else implement them months or years later. Being a one-man shop makes it very difficult to see those ideas through. Being at Microsoft, I will be able to have that satisfaction of giving my feedback to a company that can debate these ideas, improve/revamp them, and implement them if I’m lucky enough. I know this will happen because Microsoft Learning has consistently listened to and implemented advice that I’ve given on the developer certification exams.
Third, I LOVE soda.
Fourth, the team I met was fantastic. I have always wanted to work among the best and the brightest. While I don’t really fit that category, I’ll likely be mistaken for being smart just for working there. Its not just the folks working at Microsoft either. A recent census bureau survey showed that
Fifth, the area is absolutely beautiful and inspiring. In
Lastly, the benefits are great. Ask any employee what they think about the benifits at Microsoft and they will tell you that they are beyond comparison. I make a great living working for myself, and no company can beat this as a non-partner/full time employee. That said, Microsoft’s total package of compensation w/benefits is pretty competitive to other full time positions.
Overall, I can’t wait to get started. I’m looking forward to diving in torso first. Look out Redmond — here I come!
Sirius-ly paying for radio
I’ve been an XM listener for a about a year. When I bought my XM, however, I said that I felt that Sirius would be the overall victor in the race for the best programming. There is going to be a long debate about whether Sirius or XM has already or will win that race any time soon. The choice couldn’t be any clearer for me though. I went out and bought a Sirius radio tonight. That means I’ll be paying about $26 a month for radio — both XM and Sirius. So why pay for radio? Mostly because I travel a lot and need to be entertained to avoid taking a mid-freeway nap. Anyone else paying for both radios? Anyone have a preference yet? I know Bill is paying for more XM subscriptions than the entire west coast but hasn’t sprung for one Sirius subscription yet.
MVP Award
I just got an email today stating that I was awarded a Microsoft MVP award. This is an honor. In the past, this award was mainly given to the folks who posted a ton of replies to forums and newsgroups (whether the responses were right or wrong). Microsoft has made a shift to try to reward people who do a lot of local work too. I’ve been highly involved with the local code camps, user groups and the like. I’m very excited to receive this award and I look forward to continuing participation in the year ahead.
Tuesday, January 17th – Greenville .NET user group
I’ve been having a blast presenting the latest and greatest Microsoft development tools and technologies to the entire state of