A Day in the Life

A day in my life. Thoughts on leadership, management, startups, technology, software, concurrent development, etc... Basically the stuff I think about from 10am to 6pm.


Software: MSDN search tip

I really don’t like using Microsoft’s search engine to search MSDN. I can’t ever seem to find what I’m looking for because the search engine always seems to return everything but what I want. This is particularly a problem when I’m searching on something from a programming language reference or library. Usually I’ll use Google to search the site, but today I made an interesting discovery that may end up making MSDN more useful to me.

I wanted to find out what [Serializable] is in its relationship to a class. My original search was:

Which didn’t get me what I needed, I then tried:

[Serializable] C#
Again this failed to produce the results I wanted. So then I remembered something I read yesterday and I tried this:

C# [Serializable]
And miracle of miracles...The first item that came up was what I was looking for. So my new strategy for searching the MSDN site will be language first, then what I’m looking for. And the answer to my question is that [Serializable] is an attribute.


Software: Good old COM....

Today I’ve been working on a C++ COM sample for the Digipede Network and I ran into a LNK1179 error, "invalid or corrupt file: duplicate COMDAT ‘_IID__ServerException’" error.

LNK1179 is a very poorly defined error and the MSDN website is of little help. There seem to be three different ways that this error message can manifest.

1. Variables or function names have the same first eight letters and compiler settings have been set such that the variables/function names are being truncated at 8, making it look like duplicates.

2. You are using Visual Studio 6.0 C++ and there is a stl bug in your code. There was a bug reported and probably fixed by now that produced this error if the user had templates with the same static variable names.

3. (My problem) .Thl files have duplicate IID values.

I was able to determine that one place _IID__ServerException was being defined was in the Digipede.Framework.tlh file. After playing around a bit I also found the IID_ServerException defined in MSCORLIB.tlh, which the Digipede.Framework.tlh includes. MSCORLIB.tlh is inheriting the #import settings from the Digipede.Framework.dll.

#import "Digipede.Framework.dll" raw_interfaces_only, raw_native_types, no_namespace, auto_search, named_guids

Here is my solution:

#import "Digipede.Framework.dll" raw_interfaces_only, raw_native_types, no_namespace, auto_search

extern "C" const GUID __declspec(selectany) LIBID_Digipede_Framework =

Notice I removed the named_guids from the #import statement and added a variable that defined my LIBID. That got everything to compile. I don’t like having the LIBID_Digipede_Framework value defined outside the Digipede.Framework.tlh file for obvious reasons and I’ve submitted a bug report on it. Maybe we’ll come up with a cleaner solution that doesn’t require a name change, but for now, I’m using the work around.


Digipede: Back from SIA

We’re back from SIA. Several of the attendees and a few of the vendors that I talked to said that SIA seemed less attended this year than in previous ones, but I had a good show. It was great to be able to work on explaining grid computing and the Digipede Network to folks. One thing I found myself repeating over and over again was how the Digipede Network is different from other grid computing solutions. Being able to distribute .NET objects is huge and it completely simplifies the process of adding the power of grid computing to an application. The fact that Windows developers can use programming methodologies they are already comfortable with is a huge time saver for our customers. And we have all heard the adage that “Time is money”, and when engineers are able to complete a project faster the company they work for saves money.

Going through this explanation process over and over was good for me because I haven’t had as much opportunity as I would like to get out and talk about what we do. And the few times I had, I found myself searching for words. Having an intensive three day talk fest has really helped me clarify how I present our message.


The Future of Grid Computing: A look into my crystal ball

Grid computing is here to stay and I believe we are preparing for a tipping point. The tipping point HAS NOT happened yet, but its coming. When it happens there will be an explosion of new applications and the rewriting of old ones. I believe this because we (computer users) have been demanding, getting, and using increased processor speed and more responsive operating system architectures. The acceptance of grid computing will result in a new programming paradigm with developers creating grid-based products and using Grid Oriented Architecture (GOA) to develop them.

Part 1
Grid Oriented Architecture starts with the high-level look at the product in question. Architects identify what parts of the application can run in parallel and what parts can’t. They then look at the parallel work and decided which work is best run in a thread and which work is best run on a grid. Work that can run on a thread is work that has limited scaling requirements (remember that for optimal use of threads, there should be one processor per thread), and a very short execution time. The other parallel work with be executed on the grid.

Historically grid solutions have distributed executables and scripts but with the new style of grid computing, grid solutions are able to distribute actual instantiated objects, i.e. the power of grid computing INSIDE your application. .NET and XML serialization make this possible on networked Windows machines and Digipede is the first company to provide this capability. Object distribution on a grid is a key enabler for grid computing acceptance among the development community because this technology allows the developer to approach grid problems in a manner similar to how they already approach threading problems, uses familiar object oriented techniques, and reduces the complexity of initializing the work and retrieving results.

Because Digipede is the only grid solution that distributes objects, I’m going to discuss Digipede object distribution. Here are some of the advantages to distributed objects:

- Distributed objects are created by simply instantiating an object from a class—developers can use familiar object oriented methodologies.

- Object initialization happens in the main code body. When initializing distributed executables a developer is limited to the type of data that can be easily sent on the command-line, in an input file, or via a database. For the average development problem this creates unnecessary complexity. With distributed objects the developer sets the initialization properties in the object and the data elements can be any data type. From a programming perspective this is also nice because it provides encapsulation. Input files and databases can still be used, but being able to use OOP methodologies allows the developers to finish their work faster because they are able to use methodologies they already know.

- Object results are returned to the main code body inside the distributed object. With distributed executables a developer can return an integer on the command-line, a result file, or update a database. With distributed objects the developer sets the results properties of the object on the compute node and the results are serialized back to the main application. Again the data elements can be of any type.

- The distributed objects are returned to the main application when execution on the compute node finishes. The main application is notified of the returned object via an event. This serializes the parallelized work, which eliminates much of the complexity associated with threading.

Distributing objects on the compute grid makes it very easy to add grid computing to any application. It is this ease of use which will propel grid computing to general acceptance.

Digipede has provided other functionality geared toward making it easy on everyone and that is that the Digipede Network will automatically move dependent files. The Digipede Network can automatically figure out what some of the files are and there are APIs available for the rest. Many cluster and grid solutions require that the user preinstall the executables on the compute nodes. (With the Digipede Network you will only have to preinstall software that requires an installation program.) This allows newly added compute nodes to quickly and seamlessly contribute to the grid. Eventually all grid computing solutions will provide this functionality simply because it makes it easier for the user, the developer, and the IT folks.

The order of the day is ease of use. That will gain grid computing full acceptance as a viable development tool. Don’t make people invest precious time figuring out your grid infrastructure; instead give them the power of the grid in a manner they are already familiar with.

Part 2
More companies will grid-enable their applications using standard grid platforms. We’ve already seen one partner do this, 4th Story. 4th Story’s application has a checkbox that enables the user to add the power of grid computing to the computations that 4th Story is running. Customers have been excited about having this functionality available within the 4th Story product and they have also been excited about the fact that they can use that same grid for their own applications. That grid is the Digipede Network and we will see more companies deciding that they need a grid solution and it really makes sense financially to use someone else’s.

Part 3
With the move toward mobile computing solutions, the ubiquitousness of the Internet, SOA, and the power of grid computing, we are also going to see more powerful mobile applications. With a thin client or even just a browser, running on the mobile device and the core applications running on SOA on a grid, developers will unlock the opportunities inherent in powerful mobile devices. Where in the past there was the client/server software approach we will see the same thing start to happen on hardware, with the device acting as the client and the SOA/grid acting as the server. A fun area for this will be mobile gaming but I also think there will be applications in the areas of chemical sensors and monitoring, CAD and construction, medical, and security.

Grid computing is on the rise and with the ease of use of the Digipede Network it’s only a matter of time until other grid providers drink the Kool-Aid and start making their solutions more accessible. With the Digipede Network Windows application builders will have a leg up.

Technorati tags: , ,


Digipede: New whitepaper available

When you see things go quiet here it’s pretty safe to assume that I’m working on a white paper. I just can’t seem to write for my blog while I’m working on a paper. The paper is now completed and it’s up on the website. The white paper is called "Grid and Cluster Computing: Options for Improving Windows Application Performance"

One of the things I like about Digipede is that there isn’t any internal competition. Or at least it doesn’t feel like it. For example most of the white paper was written by me, but Dan did two review passes, I then submitted it to John who did a pass, and then the final pass was done by Nathan. This makes the paper much better than it would have been had it been only one person. Each of us is focused on different parts of the company, we all have different strengths, and by putting that all together we end up with a document that is significantly stronger and I think move useful.

Off to SIA

As I type this I’m on a plane flying into to JFK. Tomorrow starts the SIA Management Technology conference. If you’re in the NYC area, stop by. We’ll be providing demos at the Digipede booth (#4506) and we’ll have representatives in the Microsoft booth (#2211). Good times.

I’m really looking forward to talking to folks and finding out more about their specific types of problems. I’m interested in finding out what they do (why they do it if they’ll tell me) and what types of products will make their lives easier and their work more productive. I find this type of information fascinating. Talking to people about these things makes Adam Smith’s invisible hand visible to me...if only for a brief time.

Update: Internet connection has been...interesting. The conference is going well and I'm enjoying talking to people.

Technorati tags: , ,



I may be old but I can still hear!

A few months ago I heard about a product called Mosquito that emits a high-frequency sound that only young people can hear. The idea is to install the Mosquito in locations where business owners don’t want teens to hang-out. The sound is so annoying that eventually the teens will move on- but it can’t be heard by adults. At that time I looked around for an mp3 of the sound to see if I could hear it, but I couldn’t find one. Today I stumbled upon a New York Times
that contains an MP3, apparently teens are now using the sound as a ring tone to get around adult phone rules.

This was interesting to me because of a college physics experiment that I participated in many, many years ago. We had a device that emitted a high-frequency sound and we were supposed to record the highest frequency we could hear. I never did find out how high I could hear because my lab partner got bored. Guess I can understand better now why he got bored! But I’ve always been curious about it. I suspect that my curiosity on this was fed by the fact that TRS-80s made me sick. The machines made a high-pitch whining sound that made me nauseous. I was in an experimental math class that was the first to use computers at my high school and I used to write my programs by hand and have the guys type them in (Thanks guys!) because if I stayed in the room too long I started getting ill. Wasn’t much fun but I have always wondered. I can also hear many types of electrical equipment from pretty far away; I’m a good person to send around the house to make sure everything is turned off!

Anyway, here is a direct link to the tone. I may have to wear glasses now to read but at the ripe old age of 40 I can hear it...can you?

Technorati tags: ,


Peter and the Wolf

Google, Google, Google. We keep hearing about all the wonderful, half-assed products that Google keeps shipping. Most of the products don’t seem to provide any obvious revenue streams for Google. Which in one respect is part of the Web 2.0 philosophy, so good for Google. But here’s the rub. Google is no longer a startup. It is a huge public company with a reputation to protect, a reputation that is worth a LOT of money. Not just to the company but also to its shareholders.

Continuing to release unfinished products is, in my eyes, hurting Google’s reputation. People have come to expect quality from Google, Google’s search engine is perceived to be the best in the world. I can’t image life without it. But the continued release of beta software that looks more like alpha software only leaves a negative impression behind. If Google keeps this up someday they will release something new that is truly amazing and the world won’t notice.

Google needs to start managing expectations. Sales and marketing folks are always trying to manage customer expectations while convincing the prospect that their products at the best in the world. Google does not seem to be managing anything. Forbes ran an interesting article "Who’s Really Running Google?" And the author suggests that it’s a good thing that Eric Schmidt keeps a hands-off approach and I can see the value in his approach, however, just because you hired smart people to build stuff doesn’t mean that those smart people know how to build and ship products.

If building and shipping quality products was so easy people wouldn’t waste so much time complaining about Microsoft. Microsoft is a company that has been building software products for over twenty years and during that time has spent significant time and money perfecting the art of delivering products. Yet Microsoft still doesn’t get it right all the time. You may argue that Google has smarter people than Microsoft but I think you’d be wrong. Both companies have actively recruited bright people and Microsoft has been at it much longer.

When I look at the quality of Google’s recent releases, the lack of obvious revenue opportunities for many of those releases, and the fact that Blogger has been down more this week than up, I can’t help but think that someone needs to take control over there. Process is not a bad word. Project managers and Product managers are important. Maybe Google should invest in a few of those types and put some processes in place before the market place stops taking them seriously.

Technorati tags:


Digipede is Rockin!

Dan was interviewed today by the .NET Rocks! guys and the podcast will be available next week on June 13th. Word is that it was a great conversation and I’m really looking forward to hearing it. So don’t miss it, I’m sure that you will find it both enlightening and entertaining. We are talking about Dan here. :-)

Having a bad hair day...

For the last two shopping trips I’ve been looking for conditioner. I use Clairol Herbal Essences shampoo and conditioner and for the record I started using the products long before the tasteless commercials for it came out (the ones with the woman having a sexually charged experience getting her hair washed.) Anyway, I haven’t been able to find the product at either Albertsons or Safeway. So I started wondering if the product had been discontinued. I really can’t tell.

I did a little Googling and found out that the products are made by Procter & Gamble, searching through the site I ended up on a new site that seems to be just for the Herbal Essences products and wouldn’t it just figure that the site is a Flash presentation. This is really annoying, quit f*cking with me and just tell me what is going on. Why can’t I find the products I want? What happened to them?

My shampoo and conditioner of choice has been Herbal Essences Normal Hair Moisture-Balancing Shampoo/Conditioner, wouldn’t it have been a lot more user friendly to just put up a chart that says, “If you were using this, then you’ll want to switch to this.” But I suppose that would have been too easy to use and not flashy enough so I’m stuck with doing a stupid questionnaire that seemed totally irrelevant so that I can find out what new product replaces my older preferred product.

Here are the two irrelevant questions:

I am

A) the girl-next-door
B) far from perfect
C) a diva, baby

I’m more likely to:

A) gossip with my friends than about them
B) sing in an elevator than in the shower
C) I’ll never tell

Now, for the love of GOD! Does anyone know what those questions have to do with selecting a shampoo? And I can’t just by-pass the questionnaire; I have to answer ALL the questions. Dumb, dumb, dumb.

I’m informed that the new shampoo I want is Herbal Essences hello hydration. Totally different scent and it says it’s for dry hair. I don’t have dry hair.

I’m sooo not looking forward to finding a new shampoo that we can all be happy with.


Looking for a new blogging tool

I finally did it and bought a domain name and got a hosting company. My big plan for this weekend was to move my blog off of Blogger and onto WordPress. But because my hosting company is GoDaddy and I have the Windows hosting option, this didn’t work. The only way I could use WordPress to blog on GoDaddy would be to switch to the Unix hosting option and I want the ASP.NET 2.0 solution to play around with. So WordPress isn’t going to happen for me.

I then noticed that GoDaddy has a blogging tool called QuickBlog and I actually moved my blog over and I was getting really excited until I realized that I couldn’t access the template. I sent an email to GoDaddy asking about that and they confirmed that there is no way for me to put any of my own code into the template. This doesn’t work for me. But I have to say that QuickBlog looked very good and I think for more casual bloggers it is an outstanding tool. If I wasn’t so attached to some of the tools I’m using to monitor this blog, I would have made the move.

My next attempt will have to wait for later in the week. I just downloaded DotNetNuke 4.0.3 and hopefully this experiment will work out. Bill had posted that he had a good experience with it, so I’m going to give it a shot.


I’ve been so busy this week that this is the first chance I’ve had to write for the blog. On Tuesday or Wednesday I got a rejection letter from Haas. At first I was a little stunned, "How COULD they reject me!" Then I just started laughing. While I was extremely enthusiastic about the school when I first decided to apply, later interactions with the school’s minions had left me concerned. (I never did get a response from that email I sent.) And I had basically decided that if I got in great, but if I didn’t I would just pursue plan B, C, or D.

One of the funny things about this is the running dialog in my head. Rejected. REJECTED! I keep hearing a male sports commentator’s voice...."Its Greenlee driving for the net...she makes her move, she's past Russell...she's driving for the net...jumpshot....REJECTED!...WHAT a play by Smith....."

Haas is the highest ranking MBA program in the Oakland area that has an MBA program for the working people but after doing a little more research I’ve found that there are some other MBA options available. I’m moving along on my statistics class with calculus to finish up by the end of August. After that I’ll do a little refresher for the GMAT and see if I can’t get the score up. Shouldn’t be a problem. Of course I’ll have to suck up to John and Dan to get them to write me some more letters of recommendation. Dan, I’m not getting your coffee. ;-)