Friday, May 06, 2005
Why I'm Against Some Discrimination Laws

I just came across http://www.msnbc.msn.com/id/7762073/ and saw that Microsoft's management has decided to unilaterally use the company's influence to support the bill, which will probably be useful to its proponents. There was a lot of controversy over this a few weeks ago (http://www.sharplogic.com/blogs/ed/PermaLink,guid,84ba33c2-8bb2-4ec8-8f3e-706bddb27295.aspx) and it's very interesting to see the company take a side now. Sadly, this derails a lot of credibility from Steve Ballmer's memo from a few weeks ago since this action directly contradicts the reasoning behind not taking a side. My guess is that Microsoft's management was blindsided by how big of an issue this would be and did research that determined the negativity from supporters of the bill greatly outweighed the negativity of those who did not support the bill, so changing the stance would result in a net positive. The saddest part of this is that some individuals will take credit for the "victory" (Robert!) because they know Microsoft will never divulge the actual reason for the flip flop.

I have very mixed feelings towards the bill. To begin with, I feel that if you're going to outlaw discrimination based on gender, race, creed, etc, then you must also include sexual orientation. Since there is enough clout in the state government to support those anti-discrimination laws, people with different sexual preferences should be protected as anyone else. There are obviously degrees to which sexual preference is still considered unacceptable regarding age and species, but that's not my focus here.

The part of HB1515 I strongly disagree with is actually not in HB1515, it's in some of the laws HB1515 is looking to amend. I am personally against state laws barring business discrimination. While I oppose discrimination myself and will never practice it, I believe that each business should be given the right to discriminate if it so chooses--for any reason. I hate the idea that I am not allowed to not hire the people I don't want to hire for any reason I want. For example, I may feel that an individual is highly qualified for a job after our interview. However, that person may belong to a religion that strongly opposes the idea of computer programmers, and is hell-bent on making their lives miserable. Unfortunately, as a business owner, my hands are tied! I *have* to hire that person because I'm not allowed to discriminate against qualified applicants purely based on religion.

While I am fully against business discrimination laws, I do feel that it would be appropriate for businesses and the government to require certain policies from their vendors. For example, my company does a lot of work for Microsoft, so having to provide proof that we are an equal opportunity employer would be a reasonable requirement. In the end, companies who choose to discriminate for the wrong reasons would be hurting themselves and would eventually die out to competitors who hire the best people for the job. Also, if a company is only hiring you because they're not allowed not to, then do you really want that job?

Just to reiterate--and avoid a misplaced flame war--I am completely against discrimination and agree with the essence of the bill. I just don't agree that the government should be unnaturally forcing something like this on businesses. The ironic thing is that I'm so against a law that I would actively obey even if it didn't exist.


5/6/2005 1:00:00 PM (Pacific Standard Time, UTC-08:00)  #    Comments [10]  

 Thursday, May 05, 2005
.NET Framework 2.0 Beta 2 Install Note

If you're installing the .NET Framework 2.0 Beta 2 on an NT-based machine (NT, Win2K, XP, Windows Server 2003) then you'll need to have MSI 3.0 installed.

If you're installing the .NET Framework 2.0 Beta 2 on an 9x-based machine (98, 98SE, ME) then you'll need to have MSI 2.0 installed. This is necessary since MSI 3.0 only supports NT-based platforms.

You can figure out which one is installed by looking at the major number from [HKEY_CLASSES_ROOT\CLSID\{000C101D-0000-0000-C000-000000000046}\DllVersion].


5/5/2005 11:22:21 AM (Pacific Standard Time, UTC-08:00)  #    Comments [0]  

 Wednesday, May 04, 2005
Best Documentation Ever

Check out the Remarks section of the MSDN docs for "CryptProtectData" on Windows CE (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wcesecurity5/html/wce50lrfcryptprotectdata.asp):

"Under some circumstances, Microsoft cryptographic service providers may not allow encryption when used in France, in which case this function fails with the error code NTE_PERM."

I think this may be my favorite documentation sentence of all time.


5/4/2005 12:24:12 PM (Pacific Standard Time, UTC-08:00)  #    Comments [0]  

 Saturday, April 30, 2005
Welcome Richard Davis To The Blogosphere
Richard Davis, one of the software design engineers over here at SharpLogic, has begun blogging. Check out his site at http://www.sharplogic.com/blogs/rdavis, say hello, and subscribe to the feed. He's working on some very cool stuff that will be public very soon, so stay tuned!
4/30/2005 1:21:11 PM (Pacific Standard Time, UTC-08:00)  #    Comments [0]  

 Tuesday, April 26, 2005
Error 2908 Happens To Be PEBCAK More Often Than Not

I was working on testing some bootstrapping code today and ran across error 2908 when my test machine tried to install DirectX's managed components. If you happen to be looking for help with this particular error and don't care about the rest of my story, check out http://blogs.msdn.com/astebner/archive/2004/11/10/255346.aspx.

Anyway, we're in a time crunch to get this particular project out the door, so I disabled a bunch of the prerequisite installs (including the .NET Framework 1.1) in order to save time. However, every time I hit the MDX install it would fail violently with error 2908. After doing a little research, it turns out that it's a GAC-related issue. My first thought was a la Homer Simpson: "stupid computer, you don't even have a GAC!" This, of course was the problem--you can't install MDX without the .NET Framework. As a result, this bug was truly due to the fact that a Problem Exists Between Chair And Keyboard (http://www.webopedia.com/TERM/P/PEBCAK.html).


4/26/2005 10:03:12 PM (Pacific Standard Time, UTC-08:00)  #    Comments [3]  

Admirable Spam Persistence

I started a consulting firm nearly 6 years ago (also named "SharpLogic Software", ironically) and signed up for a TGI Fridays card so I could earn points towards...whatever. As part of the signup process I gave them my email address and unintentionally became signed up for their monthly email. When I closed shop to join Microsoft 4 years ago, I took the domain offline and my ISP set up a bouncer to indicate all email to that domain was no longer valid. Now that the domain is back up, I'm getting the emails every month, which shows that they never stopped sending them over the 4 year period it was rejecting the messages. I wonder what effect anti-spam laws will have when well-intentioned companies aren't doing their part to minimize the email they send. Sure, I'm just as much to blame for not going up to their site and unsubscribing, but it's surprising that someone didn't catch the mail exceptions and remove them from the list after a few months worth of bounces. Maybe it's too much work for something that costs practically nothing. I wonder if anyone does that?


4/26/2005 4:40:11 PM (Pacific Standard Time, UTC-08:00)  #    Comments [1]  

 Sunday, April 24, 2005
HB1515 And The Publicized Internal Scrutiny Of Microsoft

There has been a huge amount of debate over Microsoft's decision not to take a stance for or against HB1515 (at http://www.leg.wa.gov/wsladm/billinfo1/dspBillSummary.cfm?billnumber=1515), a Washington state bill intended to amend a series of existing non-discrimination laws to protect people of all sexual orientations in the same way they currently protect people of race, creed, and so on. Microsoft decided not to take a public stance on this bill and CEO Steve Ballmer has written a broad company memo (published at http://seattletimes.nwsource.com/html/localnews/2002251461_webmemo24.html) explaining how his personal feelings support the bill, but that the company cannot take a position for various reasons, including the fact that the company is largely made up of people on both sides of the debate. As a side note, I think this email was one of the most finely written emails I have ever seen. I also personally feel that discrimination for any reason is wrong in the IT industry (the only industry I know well enough to make a claim about) and will do my best to follow practices that reflect that feeling. But I digress…

Over the past few days, a number of Microsoft employees have publicly blasted the company for not coming out in favor of this bill. The general sentiment from these individuals is that if Microsoft claims to be supportive of the concepts included then the company should come out in favor of it, regardless of the fact that a significant portion of the company, its shareholders, and its customers may feel against it. They feel that the moral thing to do is for Microsoft's management to act unilaterally in favor of what they feel is right, and that Microsoft only decided not to support it because it was in Microsoft's best interest to stay neutral.

In other words, these individuals feel that Microsoft lacks integrity for not doing what they themselves feel is right. They feel so passionately that they publicly lambaste the company for following its own best interests. They're the kind of people who scorn those who continue to work for a company they feel acts immorally (or doesn't support the morals they hold dear) just because they enjoy the paycheck or “love the technology”. It's these hypocrites that are bad for the process, but hopefully those who have spoken out are truly sincere.

It will be interesting to see how many of these rants end up in resignations and how many were just angry at the time. I certainly don't expect these individuals to resign their highly paying, highly rewarding positions because it's not in their best interests, but I have great respect for those with the passion and willingness to leave their jobs over what they feel is right.


4/24/2005 7:19:38 PM (Pacific Standard Time, UTC-08:00)  #    Comments [0]  

 Friday, April 22, 2005
.NET Compact Framework And J2ME At Orange Code Camp

I had the opportunity to speak on Windows Mobile and .NET Compact Framework development at Orange's Code Camp earlier this week. Although the conference was somewhat small, it was very impressive to see an overseas operator (Orange is a subsidiary of France Telecom with over 50 million subscribers) invest so much in communicating with the US mobile developer community. The venue wasn't great, but the Orange team definitely did a great job with what they had to work with.

When I first joined the .NET Compact Framework effort at Microsoft in early 2002 (keep in mind that I have since left Microsoft to build software on the Microsoft platform), we hadn't quite hit Beta yet and were facing a developer community that was entirely wrapped up in J2ME. I spoke at several conferences about what we were planning and found that not having cross platform support was a show stopper for many developers. There were early signs of fragmentation starting to form in the J2ME space, but promises of an organized effort to fight this, the Java Technology for the Wireless Industry JSR, were mitigating fears.

Fast forward three years, and the .NET Compact Framework is nearing version 2.0 (in Beta 2 at the time of this writing). There are hundreds of thousands of developers, tens of millions of devices (still a somewhat small number but growing quickly), and—in my opinion—the most useful open source project in the mobile space, OpenNetCF.org, built around it.

As I spoke to attendees at Orange's Code Camp, I found that more and more they would talk about increased fragmentation being their biggest issue when developing for mobile devices. As it turns out, not only has the JTWI effort not really borne any fruit for the J2ME developer community, but the major players like Symbian and Nokia (you can generally use these names synonymously) have greatly distanced themselves from J2ME development in favor of their native platform APIs. As I attended sessions and spoke with reps at the various booths (people are much more honest with me now that my name tag doesn't say “Microsoft” anymore) I found that the handset players generally want developers to avoid J2ME in favor of their stickier native platform. However, once you get into a corporate development discussion, the native platforms aren't really useful, and so they fall back to J2ME with OSGi as an umbrella management story. This sounds like a much better story for corporate project managers because it implies a level of code and component reusability, as well as device independence, while offering the integration support Java is know for. Unfortunately, once companies dig into J2ME development they begin to turn over rocks that show that developing corporate, data-driven applications is much more difficult than expected due to significant limitations in the platform. Individual vendors have addressed these issues by providing device-specific libraries, which removes the ability to go cross-platform, but since the corporation can mandate the device used for the application it's not an issue. My response to this is “then why don't you just use Windows Mobile to begin with?” With Windows Mobile you are guaranteed of a very capable baseline platform, and can even swap out devices from different manufacturers if desired (there are over 35 Pocket PC manufacturers). While each manufacturer may decide to ship an SDK to add support for their custom features and applications, all you really need for development is Visual Studio (or the eMbedded Visual Tools) and the Smartphone or Pocket PC SDK and you're ready to go.

Ironically, every—yes every—cool J2ME demo shown to me at the conference was on a Microsoft device. (This is probably due to the fact that Orange ships one of the coolest Windows Mobile smartphones.) I asked developers what their cross platform answer was for J2ME apps and they told me that for commercial application development they knew that the app could run on other platforms, but that it would require a separate codebase in order to ensure the best experience on each device, even if those devices came from the same manufacturer. As a result, they just go with the most capable device to begin with.

Although I will admit my bias when it comes to Windows Mobile, anyone who has given the platform a legitimate chance can agree that it is extremely capable and the progress over the past three years has been tremendous. If the Windows Mobile team continues to ship consistently—which they have 3 years in a row—then it'll be very difficult for the JCP to catch up.


4/22/2005 9:35:13 AM (Pacific Standard Time, UTC-08:00)  #    Comments [0]