Starting tomorrow, I will continue to greet and speak to my Chinese friends as if nothing has changed. However, in order to show my love and solidarity towards a homeland on which I once felt like an outcast, I will, from now on, go out of my way to avoid buying “made in china” products. This is but one in many examples of why:

This ain’t gonna be easy, as it excludes any future possibility of owning an iPad. But it’s the principle of the thing.

While on vacation in Germany, Michael Busch, one of our search engineers, implemented a demo of image and video search. A few weeks later, during Twitter's first Hack Week, the search team, along with some members of other teams, completed the first demo of our new search experience. Feedback from the company was so positive that the demo became part of our product roadmap.

Programming with .NET is like cooking in a McDonalds kitchen. It is full of amazing tools that automate absolutely everything. Just press the right button and follow the beeping lights, and you can churn out flawless 1.6 oz burgers faster than anybody else on the planet. …

So what’s the moral of this whole story? Two things:

If you ever want to work in a startup, avoid .NET. It does you no favors.

If you are a startup looking to hire really excellent people, take notice of .NET on a resume, and ask why it’s there.

I recently knew of Expensify by reading this blog entry by Phil Windley. I can only guess from Mr. Barrett‘s conclusion that Expensify gets alot of resumes from .NET developers. From the employer’s perspective, following the law of averaging, it makes perfect sense. If your software platform is Linux, PHP and Bash, why would you hire a .NET developer? Rather, underlying the above two points is an implicit advice to startup employers—don’t use .NET technologies—which, I daresay, is ill-conceived. But hey, I’m not a CEO of a company. Not yet anyway. ;-)

I’m using CryptoAPI to do encryption and encountering an error on Win2008 Terminal Server which enforces Mandatory Profiles. CryptAcquireContext() fails with a message of either “keyset not found” or “The profile for the user is a temporary profile”.

I’ve tried the same test on WinXP using a guest account and got the same thing.

CryptAcquireContext will fail with NTE_TEMPORARY_PROFILE error when called from a mandatory profile.

Mandatory profiles are read-only user profiles. Since changes to the mandatory profile cannot be saved, PKI design doesn't allow this operation, and CryptAcquireContext prevents this scenario by failing.

The moral of this story is: RSA sucks, and I am now Rijndael’s new biggest fan.

By the way, troubleshooting this problem had given me the chance to learn a few more WinDbg commands:

The following event is happening to me now. There is a certain business Internet service provider in Toronto whose sales guy signed me up on an agreed network speed, whose installation technician, upon arrival at our site, made a judgment that they could never provide service at said speed and aborted the install, who sent us a bill 30 days later for service never rendered, which thus far has taken me 6 months to fight for a refund. I’m stuck with a jaded feeling as I sit here now preparing to fax back a copy of the receipt proving to them that I did indeed return their modem. This internet provider uses a third party to process equipment returns.

The following event happened to me a couple of years ago. There is a certain home building materials vendor in Toronto, who uses a third party for their credit provisioning, who miscalculated my returns on their monthly statement, which took 6 months for me to successfully dispute the discrepancies.