Saturday, November 12, 2005

Visual Studio 2005: Our list of annoyances

UPDATE 3/1/2006: The hotfix is officialy out for the Visual Basic background compiler crash. Thanks to Lisa, Margaret, and the VB Team.

UPDATE 2/12/2006: All I can say for now is that we have seen great progress with the bugs we reported to MSDN Feedback (Ladybug). I feel remorse because after the honor of having Scott answer to this post, most of the bugs I was able to detail were not related with ASP.NET (by far the piece of technology I use and abuse more nowadays). Anyway, we have reported a few other bugs that were not in the original annoyances list and while sometimes the answer is "we cannot repro, please attach a sample", when we have done that the response has been very satisfactory. Special thanks to Lisa and all the VB Team.

UPDATE (a few days later): I finally begun detailing these bugs on the product feedback site. I have been busy trying to finish some critical use cases at work.
The background compiler bug is here:
FDBK42191

Sumedh, of the MSBuild Team, asks me why should I bother to rebuild project dependencies every other week. The answer is, in a very positive tone, that we do it because of too many bugs.

I admit beforehand that we deal with MSBuild and Visual Studio 2005 project files as black boxes. The less we get involved with them, the better, as we already have other complexities to deal with. However, I have spent sometime comparing different versions of project files for troubleshooting.

We are only a couple of developers working on an ASP.NET application making use of 11-12 separate components. Here is a short list of some problems we have experienced. Many of them are not related to MSBuild, I think, but in the end, the aggregate result leads us to rebuild our references from time to time:

  • Many times a day the Visual Basic background compiler crashes on our project. Once it has crashed once, it will crashing every two seconds. So, we need to quickly kill the devenv.exe process to get rid of the never stopping Watson window.
  • After one of those crashes, most times Visual Studio will refuse to reload our solution. Instead it will kill itself and vanish of the desktop, not even bothering to summon Watson. We have learned a couple of tricks for that. First trick it is to create a new VB Windows Forms project and then restart the IDE (DonÂ’t ask me why, but this is sometimes enough). When the first trick fails, we usually go and delete the .SUO file. After that we usually get Visual Studio to load the solution without a glitch.
  • For simplicity we have chosen to use a single solution file both for development/debugging and for integration. Within the solution, we organize our projects using solution folders and we use project level references among the different assemblies. But in order to get a streamlined development environment, we usually hide and unload project groups selectively (solution folders are very handy for that). Then, when we need to reload and modify a project, we sometimes get in trouble. It seems that the in-process build system in Visual Studio gets something wrong with dependencies or whatever, and we end up receiving very bizarre errors messages (like missing members in standard System.Web classes or in our own classes). So, the usual workaround is to clean the solution and make a complete rebuild. Of course this takes time and make us wonder why do we need a sophisticated build system in the first place.
  • We have been lately looking for ways to improve the time of our build process. We found that each build was writing around 150 files to disk, so we started by sending all external assemblies to the GAC and turning “copy to local” off on every project. The front end project is a Web Site, so this is the only project that needs every assembly in its “bin” folder. These measures improved things.
  • Maybe because of the crashes, because of us deleting the .SUO file or because of a bad interaction with our Version Manager (we use PVCS VM and Tracker add-in, which I figure is not ideal), sometimes things go really bad. Some times we loose information in our solutions, like which projects are meant to be built or some project level references. Other times we get error messages while the IDE loads the solution, saying that it cannot load the version manager add-in.
  • When things go too bad, what we do is start from a new solution file from scratch, and then is when we have to rebuild our dependencies. I think this happens approximately once every two weeks. I know we could save a working copy for this. But due to the few things that change (added and removed projects) and with all our configuration management practices in place (but failing to deliver), we usually think like: "I don't remember what changed, lets rebuild the whole thing".
  • Web site projects have proven more troublesome that regular projects. For instance, we have found that we cannot have a Web site two folder levels down the solution file. For instance if we have the solution file in a folder called “\System” that contains a Web site located in a folder called “System\UI\Web” we cannot get this to work correctly. Eventually (we still need to catch it in the act), the web site is copied to “System\Web\”. Conversely, when we tried to fix this by deleting the site located in “System\Web” and trying to re-add the site located in “System\UI\Web” we usually get a message saying that “the site located at “System\UI\Web” has been deleted or moved. It says that, but it is clearly trying to find it at “System\Web”.
  • Also, with Web Sites, there seem to be some ambiguity that confuses us a lot regarding what is a reference and what is just an assembly copied in the “bin” folder. For instance, when we try to add a project level reference to a web site (one that is not showing in the reference list) it will say it cannot add a reference if the assembly has already been copied by other means.

All this said, we still got to do significant work with Visual Studio in a few months. We like a lot how our ASP.NET 2.0 application runs, and we are not looking back. If we get those annoyances solved soon, Visual Studio 2005 will be, without a doubt the most productive environment I have ever used.

I intend to search and submit every one of these problems to MSDN Feedback when I have enough time.

Monday, November 07, 2005

Visual Studio and SQL Server 2005 launch day

Was Visual Studio 2005 ready to ship, or was it rushed out the door? Many very informed bloggers have already posted their opinions. Having used the products for months, I feel obliged too.

This is a comment I wrote today in Mini-Microsoft's blog:

I think it is good that Microsoft shipped Visual Studio 2005, even in this state. At least RTM means that it has support, while CTP does not. I have been working intensively with the IDE for months and I know it is still buggy, but most problems have workarounds, and Microsoft can afford this situation better than the no-ship situation.

I don't need a service pack in six months. I prefer the 20% of the bugs that make for 80% of the annoyances are fixed much earlier. For me, that 20% means the "Visual Basic background compiler crash", and the "IDE vanishes while opening solution" bugs.

By the way, Microsoft right now has no means of estimating the actual number of occurrences of these crashes, because most developers click on "don't send" button when the Watson tool surfaces. You can read details here.

UPDATE: I must add to this that when the IDE simply vanishes, there is no Watson submission. Also, talking about workarounds: For the first, the best is usually to restart Visual Studio, clean the solution and rebuild. Besides, if you unload projects you are not updating, Visual Studio will be faster and more stable. For the second bug, my workaround is to create a blank Windows Forms VB project and exit the IDE. Next time you start it, your solution will probably load.

So, in the end, I agree with those that say VS 2005 had to be shipped. I love .NET 2.0 and I am happy my company took the risk some months ago to adopt it.

However, I think we are witnessing that Visual Studio code base and/or Microsoft's software process failed to scale to the level of complexity that the products required.

Of course, I am just guessing based on what I have read.

I have read about expert developers needing months to get familiar with Visual Studio code in order to fix bugs. I also read about developers not being able to fix bugs without triggering regressions. I have heard of Rascal, the lightweight IDE many developers choose internally over Visual Studio.

To some extent, this is all normal. But if things are getting worse at an exponential rate, as happened with Vista, then maybe it is time for a "reset".

This reset would hopefully imply both code base and process refactoring.

Is it time for Microsoft to go shared source with Orcas? Whatever helps streamlining the process and the code is good. Sometimes the sole process of preparing the code for being scrutinized and extended by an external community is worth the ticket. However, I expect 90% of future development would be by Microsoft personnel anyway.

I just hope they will think about this possibility.

But my most urgent need is that they fix VS 2005 steadily, and I need them to start right now.

They do that, or I will loose all my nails and hair!

UPDATE: Thinking more about it, I have the idea that the software development process have improved a lot at Microsoft over the last several months and few years. That is not to say that the process is good enough, but it is improving.

Then maybe the main problem is the code base, or perhaps the goals are simply set too high.

Regarding SQL Server 2005, I think it is a much more solid release, but I haven't really used it that heavily.

Sunday, November 06, 2005

How much is your blog worth? (boring sunday stuff)

While I was trying to find out why Microsoft's "Desarrollador Cinco Estrellas 2005" site is broken, I found this:


My blog is worth $4,516.32.
How much is your blog worth?

Friday, November 04, 2005

I haven't blogged for a while, but yes, I am following the Live thing

I am a feeling far from this blogging thing lately, as I have been very busy at work, and tired at home. Anyway, I must say I have been following the new Live theme Microsoft has announced.

I am really surprised that some see this as a desperate move. I think the opposite, that Microsoft is proving to be the big company that could. The one that can find a solution for the scalability problem that delivering a new version of Windows is, and at the same time is agile enough to own Start.com and Live.com (by the way, I like this domain very much, I hope the will keep it).

Only time will tell.

On the specific details, I hope the Favorites feature will someday sport some of the features I described in this old post: My favorites: A killer application for WinFS?

By the way, I noticed in my referrals that the other day someone from Microsoft Research was reading that article. Whoever it was, I hope he/she found it somewhat interesting. Specially if it was Susan Dumais.

PS: And Susan, thanks for your email regarding Stuff I have Seen availability.

MSDN Product Feedback is Really Working!

Have you ever get your bugs or suggestions fully addressed by Microsoft? I think I can count the times with the fingers of my knee... But that is until today. Take a look at this:
Opened by Diego on 2005-10-07 at 08:45:27

Recurrent crashes discourage developers of sending crash information every time. Also under certain configurations, the "watson" tool cannot contact Microsoft servers. This way, Microsoft is not getting actual metrics of crash occurrence.

Proposed Solution:

Make it possible to send a lighter crash report. Maybe try to identify if a recurrent problem so if the second time does not provide additional information, only send the "light" version. Also, solve the circumstance in which sending crash data does not work through a firewall (I have not isolated the reason, but in my office some computers can send the reports and some say they cannot reach Microsoft servers).

Edited by Microsoft on 2005-10-07 at 13:34:16

Hi Diego - I have opened a bug against the Watson team for them to consider your feedback.Thanks!Aaron BrethorstVS Platform

Edited by Microsoft on 2005-10-13 at 13:42:16

Hi Diego - I just received resolution on this issue from the Windows team that owns this. Here's what they said:In [Windows Vista] Beta 2 the crash reporting experience for VS will be improved. We will send the most lightweight report possible which does check for recurrent problems. Additionally we queue reports for later if connectivity cannot be established at the time of the report. Additionally users will have the option during install whether to automatically send or not.

Edited by Diego on 2005-11-04 at 19:46:32

Great, I think this covers everything I asked for! Was this really my idea or what?
I swear… I find the sensation very strange...

Saturday, October 22, 2005

Tropical Storm Alpha (we ran out of names)


I knew our dominican experience would not be complete without a little tropical storm. If it has to be, I am happy its name is a greek letter.

See that line? I goes straight over my home.

Monday, October 03, 2005

One Laptop per Child

The MIT Media Lab has launched a new research initiative to develop a $100 laptop—a technology that could revolutionize how we educate the world's children. To achieve this goal, a new, non-profit association, One Laptop per Child (OLPC), has been created. The initiative was first announced by Nicholas Negroponte, Lab chairman and co-founder, at the World Economic Forum at Davos, Switzerland in January 2005.

I think this is an amazing concept. You can read about it here and even see some pictures here.

I have been a fan of the Media Lab since I was 12 years old, and I am happy they are coming with such an ambitious project. I see this is the realization of a dream for Nicholas Negroponte, Seymour Papert and for Alan Kay. I hope they will have a great success.

What Negroponte says about taking the fat out of the system is right: "Two-thirds of their software is used to manage the other third, which mostly does the same functions nine different ways." I hope the project will get massive support and will trigger a race for sleekness across the software industry.

Probably because of the lack of deep technical detail in the announcements I have read so far, there a few concerns in my mind:

  • Hardware expandability: They say the laptop is not going to have much storage space. I hope it will be easy to expand storage with off-the-shelf hardware. The USB ports are a good start.
  • Software extensibility: They speak about a P2P mesh developed by the Media Lab. They also say the computer is not going to be available to individuals. They will run Linux, and while Linux is widely available, there is a binary compatibility problem among different versions of Linux. I wonder how easy it will be to target the computer for software writers.
  • Software platform lock-in: You can easily see what the commercial companies sponsoring the initiative, including Red Hat and Google, are looking for with this project: A big PR campaign, and a huge captive user base. I wish the software story were more open. Don’t take me wrong. I want this project to be feasible. I just don’t like the idea of any government paying hundreds of million of dollars to force those brands through children throats all around the world. It smells as something either fascist or corrupt or both things at the same time. It would be the same if Bill Gates funded the program. This concern gets addressed if there is choice.
  • One-way globalization: I happen not to fully understand the globalization phenomena, although I have heard assertions from many people that think they do. The fact is globalization sometimes seems to be a one-way path. In poor countries, it usually takes more from people than what it gives to them, most likely because they are less prepared for the exposition. A computer, even if it is the most powerful thinking tool of all times, can also be used as a broadcast, one-way device. What originated as one of the most massive empowerment initiatives of all times could end up being the final stab for local cultures and become a powerful tool of oppression. Anyway, I know the minds behind the project would rather cut their hands than do that damage.

Sparkle performance

John Gossman answered my silly comment to his previous post about Expression Interactive Designer (aka Sparkle):

In my history of Sparkle I mentioned I had worked on ToolBook. That solicited this comment:


Asymetrix's ToolBook? Wow, that was so ahead of its time! Just make sure Sparkle runs faster! :P Sorry, could not resist. I am sure Sparkle will rock.

We are currently in a performance milestone on Sparkle, dealing with our obvious perf problems and reporting real and potential Avalon perf problems to that team. The good news is overall perf is good. Startup is fine, working set is fine, but as these things go we have individual areas that don't scale well or just are awful. In Avalon you build your UI compositionally by creating Templates that generate elements for the structure. For example, rather than a Button having a Render() method that draws a bunch of rounded rectangles and text, you create a Template of primitive Shape and Text Elements, include a layout container like a Grid or Canvas and every time the system sees a Button it stamps out a copy of all those elements. Elements are not free however, and if you aren't careful with your Templates they can explode into huge structures without you noticing. This is a working set hit and layout and render takes longer. We added commands to our diagnostic menu that let us count the number of elements in different parts of the tree and dump them for further study. When we started perf work before the PDC Sparkle would startup with over 8000 elements in its UI. Today that is down to 3000 with no difference in the look and feel. I expect this number to improve considerably this week and more next as more changes come in. We virtualized some things and just got more careful in a bunch of places.

Now, let me tell you, I am trully ashamed. Did you see Sparkle running? If not, go to see the Channel9 video? It is one of those things that make me drool.

This is my answer to John, I wrote originally in his blog comments:

John, all this made me blush a great deal, however I am happy my comment led you to speak about Sparkle’s performance characteristics. I am also glad you are making so much progress. I saw in the videos on Channel9, and I think Sparkle already looked VERY impressive before the PDC.

Now, I have one concern: Not that we are all going to write such a complex UIs, but it appears that making a sophisticated Avalon application reach good performance takes much tuning.

Now, I am a newbie, but I assume that by virtualization you mean that you create and dispose (perhaps reuse?) UI elements whenever they become visible or hidden. Wouldn’t it be nice that this kind of optimization were performed by Avalon itself? This could be especially useful, since I think there is a balance to be kept among working set (number of elements) and creation-destruction rate.

And thanks for the inside story of ToolBook. I didn't use the product a lot, but I have a friend that did, and I always had a great respect for the technology.

Tuesday, September 27, 2005

Sophisticated SPAM

Yesterday I received an email saying something like "What is this about? Stop sending me email". The almost obvious intent was that I answered so they could validate my email account is active and I am silly enough to buy from spammers.

Today I received what seems to be a "reply to all" to the first email saying something like "Why did you accuse me of sending that email?"

So now the intent is to make the first email credible, so if I feel smart enough to help everybody else understand SMTP, but I am actually fool enough not to detect this is a scam, I would then send an answer.

No way!

But, I must say I haven't seen a scheme like this before. So, congratulations spammers! Cockroaches do not take evolutionary leaps this often.

Sunday, September 25, 2005

The WSJ Story on Microsoft's Overhaul

A very interesting read, even if not technically deep, Battling Google, MicrosoftChanges How It Builds Software, tells us everything we wanted to know about the Longhorn delays.

By late October, Mr. Srivastava's team was beginning to automate the testing that had historically been done by hand. If a feature had too many bugs, software "gates" rejected it from being used in Longhorn. If engineers had too many outstanding bugs they were tossed in "bug jail" and banned from writing new code. The goal, he says, was to get engineers to "do it right the first time."

Recognizing Mr. Gates's concerns over the impact on programmers, Mr. Srivastava hit on a plan to win their hearts and minds. On Nov. 5, he visited the computer-filled office of Dave Cutler, a revered elder statesman among Windows engineers and a stickler for good code writing. Would he publicly throw his weight behind the new approach? Mr. Srivastava asked.

On Dec. 1, Mr. Srivastava escorted Mr. Cutler to Microsoft's auditorium where the software guru told 1,000 engineers that he had used the tools to build Windows code that was nearly bug-free. That Mr. Cutler -- famous for never attending meetings -- would emerge to back Mr. Allchin's revolution helped persuade some engineers to drop their objections.

I have to say I didn't know there was such a level of dissent about Longhorn, but I see it as something very natural and healthy.

Over anything else, I am glad that Amitabh Srivastava was onboard to help solve this crisis at Microsoft.

With all those press stories reporting the "millions of lines of code" in Windows and the heroic lives of the build team members, I have been convinced for some years that Microsoft was inexorably going to hit a hard boundary. Of course, I am not a genius, so for sure many engineers inside Microsoft knew about the problem better. It is amazing, however, that things got to become that ugly before somebody changed the process.

If you also feel that the WSJ article lacks the technical detail you need, look at the Center for Software Excellence page for an idea of what this people used to streamline the Windows Vista continuous integration process.

By the way, do you remember TracePoint? That was Amitabh old job. I do remember downloading it and testing it against my Visual Basic code of that time. It was a wonderful piece of code, incredibly easy to use and useful for optimizing your code. Never again I saw something like that.

I guess next week I will pay more attention to the code analysis tools in Visual Studio 2005… Yes I hope whatever Microsoft is using will eventually get integrated into Visual Studio Team System. After all, developing a mid-sized system with just thirteen assemblies at the office, has proven a nightmare at times.

UPDATE: After thinking a little bit more about this, I am now convinced that the measure of letting lower level executives take more decisions about products by themselves makes a lot of sense.

This means higher level executives accept some things are not in their radar and they may be wrong, so let the people that are more in contact with product development should have the last word.

In this case, the hard boundary I mentioned, that Windows was getting too difficult to integrate, wasn’t probably in Bill Gates radar.

Go Live License for Visual Studio 2005 Release Candidate

I am happy to report that this has changed, or maybe previous reports that Go-Live was only for Beta 2 were wrong:

Visual Studio 2005 / .NET Framework 2.0 Go-Live License
Microsoft’s Beta EULA does not permit production deployments of customer applications. In response to strong customer demand, Microsoft will provide an addendum to the EULA for some of the pre-release products listed below. If you are interested in deploying an application built with Visual Studio 2005 Beta 2 or Visual Studio 2005 Release Candidate in a live production environment, please see the Visual Studio 2005 / .NET Framework 2.0 Go-Live License.

Visual Studio 2005 Team Foundation Server Beta 3 Go-Live License
Visual Studio 2005 Team Foundation Server Beta 3 can now be used in a production environment. Microsoft is committed to supporting a complete migration from Beta 3 to the final RTM version of Team Foundation Server. Details of the Visual Studio 2005 Team Foundation Server Beta 3 Go-Live license will be forthcoming.

I think I asked about this in the comments of some Microsoft blogger, before. I wish there were an easy way to find my comments and add the good news.

UPDATE: I found the comments I placed in Soma's blog. He responded himself to the question about the Go-Live License here. Thanks!

Thursday, September 22, 2005

Finally, someone I seem to agree completely with

Following, there is some kind of mini-easay a man called Joshua Ellis wrote. I don't know him , although this seems to be his worst photography, wow! ;). In his esay he seems to write a nice synthesis of my own political position, just written in "good" English:


I think the problem is that the future, maybe for the first time since WWII, lies on the far side of an event horizon for us, because there are so many futures possible. There’s the wetware future, the hardware future, the transhumanist future, the post-rationalist (aka fundamentalist) future.

And then there’s the future where everything just sort of keeps going on the way it has, with incremental changes, and technology is no longer the deciding factor in things. You don’t need high tech to change the world; you need Semtex and guns that were designed by a Russian soldier fifty-odd years ago.

Meanwhile, most of the people with any genuine opportunity or ability to effect global change are too busy patting each other on the back at conventions and blue-skying goofy social networking tools that are essentially useless to 95% of the world’s population, who live within fifteen feet of everyone they’ve ever known and have no need to track their fuck buddies with GPS systems. (This, by the way, includes most Americans, quite honestly.)

You can’t blame them for this, because it’s fun and it’s a great way to travel and get paid, but it doesn’t actually help solve any real problems, except the problem of media theory grad students, which the rest of the world isn’t really interested in solving.

Feeding poor people is useful tech, but it’s not very sexy and it won’t get you on the cover of Wired. Talk about it too much and you sound like an earnest hippie. So nobody wants to do that.

They want to make cell phones that can scan your personal measurements and send them real-time to potential sex partners. Because, you know, the fucking Japanese teenagers love it, and Japanese teenagers are clearly the smartest people on the planet.

The upshot of all of this is that the Future gets divided; the cute, insulated future that Joi Ito and Cory Doctorow and you and I inhabit, and the grim meathook future that most of the world is facing, in which they watch their squats and under-developed fields get turned into a giant game of Counterstrike between crazy faith-ridden jihadist motherfuckers and crazy faith-ridden American redneck motherfuckers, each doing their best to turn the entire world into one type of fascist nightmare or another.

Of course, nobody really wants to talk about that future, because it’s depressing and not fun and doesn’t have Fischerspooner doing the soundtrack. So everybody pretends they don’t know what the future holds, when the unfortunate fact is that — unless we start paying very serious attention — it holds what the past holds: a great deal of extreme boredom punctuated by occasional horror and the odd moment of grace.

I don't know you, but all I see lately is facists everywhere.

Thanks go to Dare Obasanjo for the link.

Monday, September 19, 2005

The horrible state of empathy

First, there is this article in CRN that states Microsoft Opens Security Service Beta To All in the title, but then says it is only open to U.S. residents. Gregg Keizer signs as the author. His last name doesn't seem to be very American, does it?

Reminded me of the video clubs here in the Dominican Republic. They all have a small section called "Foreign Cinema". There you will find all non American movies, including the few Dominican movies that they have... I figure globalization didn't work both ways here!

Now, for a really crude sample on how bad is the state of empathy in this world, you can read this Russell Beatie's post:

Now we know why they didn't walk out of New Orleans

Darn, I am so disappointed!

Saturday, September 17, 2005

Happy to be in the .NET side of the fence

Dave Wheeler is concerned because C# is becoming more complex in 3.0:
C# 3.0 is reaching a point where a developer with only a few months experience will be unable to read what an "advanced developer" will be writing for, say, data access. This has an impact, particular on businesses that are looking to hire developers to work on their applications. If you like, the total cost of ownership of a developer is going to go up, because they will need more training and more experience before they can get into the code to maintain it.

This is an important point of view, but only one part of the puzzle.

Even if Microsoft is trying to differentiate the languages and make VB more RAD like than C#, Visual Basic is generally taking the same route with LINQ.

I think Microsoft expects the increase in productivity will more than compensate for the increase in complexity. And given what I have seen about LINQ (and all the LINQ supporting features that are being added to the languages), I think this is how things will be.

But there are ingredients in the mix:
  1. You can expect more good designers (graphical RAD tools) from Microsoft, that will help encapsulate complex components, the way the Typed DataSet designer does in Whidbey. So let those designers come to the rescue both for pros and beginners.
  2. With DLINQ most of the magic is under the hood. You don't need to touch the mapping of the database tables with the data types in your code. Less code to mantain, fewer bugs.
  3. Using queries, lambda expressions, comprehensionsons, class extensions, projections or whatever, is not something you will do to obscure your code. All those features, when used in the right context, have the power to simplify code. They take less lines of code, are more natural, and just make more sense than the existing practices. Compare a query expression with tens of lines of spaghetti concatenated SQL, field accessors data type conversions and null checks. That is expresiveness.
  4. If the names of these features seem frightening, just use friendlier names.
  5. There is nobody more conservative about adding features to C# than Anders. You can be sure for every feature added, there are thousands that never left the whiteboard.

As a developer I am today very happy with the investment I have made in .NET. Let's see how long it takes now for Java to catch up.

Thursday, September 15, 2005

Shock and awe (TM)

It has been a great PDC. I was able to follow the news trough the blogsphere, mostly for free (connection fees may apply) but still think it would have been wonderful to be there.

There are some employees that say this is the best of 30 years of Microsoft history. Other observers think that Microsoft's overhaul is complete. Truth or not, I think Microsoft has distilled and leveraged a massive amount of kool aid on all Microsoft based developers around the world.

The coolness factor is so high tonight for Microsoft, that they could take the chance to announce something really controversial tomorrow morning. Think of something in the lines of Microsoft Linux (Did you notice they never wanted anybody else to hold the Lin - D O W S name? ;)), Mono funding or at least new versions of .NET, Avalon, Office 12 and Expression application support for the Mac...

Why would they do something like that? Two guiding ideas: "we want those to be our customers, again, or at last" and "we just do software" (not necessarily Windows software).

If they did that, the coolness wave they would "sparkle" around the world would instantly make them more famous (and relevant) that Jesus... Or the Beatles... Or Oasis... Or whatever.

After all, when it comes to the Web, they already play nicely: They support Firefox along with Internet Explorer.

UPDATE: Brad Feld in a recent post seems to agree with my perception. Interestingly, he also mentions openness in his last paragraph:

Now - if we can only get them to say "Open Source" instead of "Shared Software Services" life would be a little easier.

It is not that I am an Open Source zealot, but time has come that we need more openess in the development tools we use everyday.

LINQ

Atlas is one of my favorite technologies announced in the PDC, with Windows Workflow Foundation comming close. Of course, I hope to get a chance to play with the Expression tools and with Office 12 soon.

But in my opinion, the most important announcement from the PDC is LINQ.

C# and VB become mixed functional/object oriented/imperative languages.

The data impedance mismatch is over. Rumors about this being ripped from Foxpro and 4GLs are largely wrong. This is much more elegant and powerful. As a developer, this is a happy day.

I have read some people concerned the idea that LINQ, specially DLINQ will push .NET develiopers to mess up the layered architecture.

You don't only isolate concatenated SQL in a DAL component for aestetic reasons.

You do it, for instance, for the abstraction and the scalability provided by a special execution environment.

But with LINQ the "functional power" of the query language is not anymore limited to data that is on the database. You can now use the same language constructs to query any data, regardless of location.

Thanks to all the teams that made this happen. You can count on me giving you feedback.

First two pieces of feedback:
  • I want to see transactions to become a first class citizen in the CLR.
  • I hope to see many legacy database 4GLs (includding FoxPro) to adopt the CLR as a runtime. Now that the CLR comes with queries, it can be a true life saver, both for the products and for the developers that mantain those billions of lines of code.

Sunday, September 11, 2005

In support of Adam Barr's idea for opening current Microsoft Office formats

His post is here: An Open Letter to Jeff Raikes

...

No doubt you're aware of the recent fuss over Massachusetts' decision to require open formats for its official documents. Microsoft's predictable response was to plead confusion, hurt, and sorrow for the innocent users forced to abide by such a policy. I have another idea. Instead of responding like a sad puppy, Microsoft should embrace what Massachusetts is proposing.

...

No, I'm saying that Microsoft should go back to the fundamental reasoning behind the Massachusetts decision, and embrace that. Massachusetts is not adopting OpenDocument for its own sake; it is adopting it because it meets a set of criteria the state has established--criteria which Microsoft could also meet if it chose to.

...


I like the idea and this post is in support of it. Times change quickly, and what still fitted in Microsoft's Business Model a couple of years ago, is turning against it now.

At first I thought that licensing the formats only for reading and not for writing sounded too restrictive. But then I realized that he is talking about the current formats, that are already becoming obsolete. The new formats are already being developed as open standars.

UPDATE: I have just added this to Adam's post comments:

I am not sure there is such a thing as delusional blogger self-importance disease. When I do test software, if I have a bug to report, I report it. I don't loose my time thinking that a tester smarter than me already found it and reported it. Nor do I think a developer smarter than me coded the feature and I must be crazy to think it is broken.

Classical Office formats are about to become obsolete, and there is no real business reason to keep them in obscurity (I can imagine possible security reasons, but I am not sure they exist). There is a real business case in opening them, though.

Actually, I have similar feelings about Microsoft not including MFC and ATL in Visual C++ Express, but then, I don’t work for the company...

Good luck to everybody in the PDC

I am green with envy, but good luck anyway ;)

So, is it LINQ or IQF?

I have read about it before at Luca Bolognese's blog, and news from it are coming in pieces from conversations in the PDC.

Sometimes referred as Integrated Query Framework, sometimes as Language Integrated Query, or maybe as Common Query Runtime (this one is foggy in my mind).

Whatever the name is, this new .NET feature is coming out more less the way I hoped it to be.

UPDATE: I found that the original post in jpox.blogspot.com has been deleted. I guess it was not correct information or maybe the author decided to help keep the secret.

We will see soon anyway.

UPDATE: Updated link sent by Joris. Thanks!

Tuesday, September 06, 2005

Eureka! Integrate your custom ADO.NET Provider with Visual Studio 2005, using Data Designer Extensibility (DDEX)

I have been looking for this information for some time. The fact that I could only find it tonight (when it has been published since May) is proof that there is not enough "hyperlink glue" among the words in the subject out there in the Web.

The sole purpose of this post is to provide some of this glue, so you can find the information more easily from now.

I once tried posting a question on Steve Lasker's team Smart Client Data blog:

What do I need to add to a custom ADO.NET provider to get design-time support in your tools?

But unfortunatelly my comments were deleted, likely by an anti-spam filter.

Just for the record: Once again, I think the tools provided by the Visual Studio Data Team (I don't recall the exact name of the team right now) are great, and I would say this to Steve Ballmer and Bill Gates if they asked me :)

But I am guilty of wanting more features and more openess in the development tools I use everyday.

Tonight I finnaly found a clue in this blog. There, someone talks about receiving some information from Microsoft on how to integrate a custom ADO.NET provider with Visual Studio. That someone does not actually uses the name Microsoft , but that very mature M plus a $ dollar sign thing. The post contains no link nor a detail about any API. It even says "ad.net" instead of ADO.NET. Now I cannot remember how I managed to find it!

A few minutes later, I got some inspired search string in Google (or was it MSN Search?). And here are the results!

So what is DDEX about? It is simple:

If you created your own "custom" ADO.NET 2.0 Provider and what it to be listed and exploited by the many design-time data tools in Visual Studio 2005 (like Server Explorer, Typed DataSet Designer, Data Sources, etc.) it wont be enough to add your provider to Machine.Config. You will need to create a "Provider Provider" using Data Designer Extensibility (DDEX).

I will probably be helping test this with an office mate tomorrow. He wrote our ADO.NET Provider.

Friday, September 02, 2005

MSDN Product Feedback closing bugs and suggestions at full speed

They add a message asking us to send them an email with the FDBK code, so they keep track of the issue!

At first glance, this looks as a very silly way of using your bug/suggestion tracking system. Why not just postpone the review for the next iteration and keep it in the database?

Why do you need to clean up the bugdatabase?

Is it a law at Microsoft that the database must be emptied of pending (no matter pending for when) items before RTM, or what?

Thursday, September 01, 2005

Hacking CSS

Start.com (Update: Wow! They have a new address, and they are looking even better!) has been my home page for a while, both at home and at the office. It is the only thing out there that is better for me than about:blank. It is not very fast to load, but it loads much content in an asynchronous way (the A in AJAX). It is full of nice features and ticks and I am a such a newbie in Web development. It is difficult to even imagine how they do all this.

fortunately, there I met Scott Isaacs' blog. His insights are a little different than the others. Here, for instance is his post about how to do wonderful things in CSS without the hackery we are used to get from others. You should read Scott post, but for short, he recommends you get the server to inject special class attributes on the HTML tags, including the browser type and version. This way you can use html.browsername.version selectors on your CSS for style sheet that are tailored to a specific browser.

Scott's timing is excellent. I am doing a lot of ASP.NET 2.0 programming, and in the meanwhile I am learning CSS. I should better say that I have already learned CSS, and I am still learning how bad current implementations are. I am hating it, and I was about to go to the dark side, when Scott saved me.

Thanks a lot!

Anyway, I am open minded regarding any hack that would provide me a decent "abstraction layer" and that would offer reasonable forward compatibly.

UPDATE:

I just want to add a very simple implementation of this pattern for ASP.NET 2.0:

I put this on my default master page:

<body class="<%= Me.GetBrowserCssClass %>">

I am not using the HTML tag as Scott suggests because VS says a class attribute there breaks the standard.

Then I add this to the code behind class:


Protected Function GetBrowserCssClass() As String
If Session("BrowserCssClass") Is Nothing Then
Dim b As HttpBrowserCapabilities = Request.Browser
Session("BrowserCssClass") = _
LCase(b("browser") & _
" m" & _b("majorversion") & _
" d" & Replace(b("minorversion"), ".", "", 2) & _
" " & Left(b("platform"), 3))
End If
Return Session("BrowserCssClass")
End Function

I am not sure saving the string in the Session is a good thing. I think the Capabilities collection is going to be populated anyway, so it is possible as much work to retrieve the string from the session as it is to build it again. Only testing would tell.

And I know the way I create the string is a little naive, but it works with what I have at hand for testing. I don't know how the platform string looks for browsers running in other operating systems.

My blogger atom feed does not work

It is still stuck showing my "blog depression booklet" post at the top. I wonder what can go wrong Blogger software. Maybe this post helps.

Update (September 9, 2005): No response yet from Blogger Support (does it even exist?), but I found the solution. Blogger just changed the feed address. It switched from http://diegov.blogspot.com/rss/diegov.xml to http://diegov.blogspot.com/atom.xml. The old feed still exists, but it is dead. If the sent any notice, I missed it.

Tuesday, August 30, 2005

As I said, where is WinFS?

Well, actually, here it is, on all its glory, and of course, alive and kicking:

Another piece of feedback was concerns over the WinFS api’s being a different data access pattern than our existing managed code data access APIs. Further, that our APIs were not aligned with broader data platform needs like OR mapping. This was a big one, and as you explore the SDK and the APIs, you will see the beginnings of how we will be addressing this. We are in the process of building-out the next version of ADO.NET to have new features that provide a data model, object-relational mapping, and flexible query infrastructure. The new data model is about entities, and the WinFS data model of Item types is built on that model. Looking through our SDK and code samples you will see how Items are composed of underlying entities. OR mapping is a big requirement - WinFS is a very prescribed mapping (defining a type in WinFS generates both the underlying storage schema and the partial class to program to that type). But the real-world has lots of requirements for flexible mapping – to existing data, to existing objects, etc. On query, many of you have heard about Anders Hejlsberg’s work on Language Integrated Query – and the new ADO.NET functionality will plug directly underneath so that you can use the new query patterns on any entity data, including of course now WinFS Items.
So, my personal understanding is that ObjectSpaces and C-Omega evolved and became the Integrated Query Framework, which is tightly integrated wth the CLR and the .NET languages. At the same time WinFS will be built on that, instead of using previous technology.
So, I guess part of the reason WinFS was delayed was they found that it made more sense to wait and get it right from the beginning. Then, I am grateful!

Monday, August 29, 2005

So, it wasn't that boring, Luca!

I was wondering what Luca Bolognese was really doing in the C# Team after Microsoft apparently ditched ObjectSpaces.

Now that the name of .NET Language Integrated Query Framework has come out, I think it could be the coolest piece of software of 2006. I mean the coolest piece of software for us doing database related development.

And now, what happened really to WinFS? Suddenly the pieces are fitting in place.

Monday, August 01, 2005

Blog Depression Booklet

Update:

This is the last post included in the old site feed http://diegov.blogspot.com/rss/diegov.xml.

Please subscribe to the new feed: http://diegov.blogspot.com/atom.xml.

I found this PDF file through Scoble. It is actually fun, but also nice and consoling and an even more fun way. The darn whole paragraph stinks!

It is the first time I have the notion idea (you really like cursi words, don't you?) that probably every blogger feels its his/her blog sucks. Its? yeah, I know what you mean... It is not that it had me too worried! It has been a while since I decided I would just let my blogging flow. ...And it shows!

Thursday, July 28, 2005

Limitations of Typed DataSets in Visual Studio 2005

The teams responsible for the new features in ADO.NET 2.0 and the typed DataSet designer included in Visual Studio 2005 deserve a good vacation. They have put a big effort on making typed DataSets a powerful foundation for our data access layers.

If you choose to go the typed DataSet way now, you will be able to create most of your data access layer without writing a single line of code. You just visually pick the tables or stored procedures, define relations, create SQL queries with parameters and all the code for your DataTables and DataTableAdapers is created behind the scenes. It all gets stored in a XML schema defition file, and a tool automatically generate a set of classes from it. The generated code itself is very simple, but in my opition is efficient, and it works. Moreover, if your data schema changes, you don't have to touch a single line of code.

Coupling typed DataSets with binding objects like ObjectDataSource and bindable controls like the new GridView, makes up a solutions that reminds me of Microsoft Access for its simplicity. I think this is the first time I have used a RAD tool that supports multi-tier development.

I have to say, I would love to use typed DataSets for all my future development.

Unfortunatelly, while normal DataSets are database engine agnostic, they forgot to teach the typed DataSet code generator (MSDataSetGenerator) about the new DBProviderFactory included in ADO.NET 2.0.

So, once you have choosen your data source in design time, the code generator will produce a DataSet that is database engine specific. You can still choose the OLEDB provider, but DBProviderFactory makes a much better model for ADO.NET, because it allows you to use a native managed provider in runtime, if it is available.

This is all a pity, because everything else in the DataSet is so well though. For instance, table columns and query parameters are all of database independent types. They even use Nullable for variables that can be null. The new ConnectionString setting stores a ProviderName attribute anyway. And it only takes a couple of lines of code to create a connection or command from a DBProviderFactory. So why did they do it this way?

I don't see technical reasons (maybe I am blind). So, I am suspicious that someone though: "Ok, let's make this database specific so we sell more copies of SQL Server 2005". OK, maybe Microsoft.NET makes SQL Server 2005 a more attractive SQL Server, but this doesn't work the other way.

For instance, in the software development company I work for, we do database engine independent software, and we are good at it. We have had the same factory pattern for some time.

Even if we love SQL Server, database independece has been always one of our top requirements. If a new customer comes to us, we will offer SQL Server to them, but in many cases, they have already a big investment in a databaes engine, and this can be any engine they like.

Since source code for MSDataSetGenerator is not available, and since it is not practical to touch ourselves the generated code, we need Microsoft to tweak this for good.

It is very late for this, but if you care, please, vote for this suggestion on MSDN Feedback.

Sunday, July 24, 2005

Codename Avalon and Indigo Beta 1 Comming Soon?

If what happened with Virtual Earth site is any indication (the site was down for some hours before launch), I think maybe Avalon and Indigo is comming soon to, as Beta 1 RC download page is off line.

UPDATE: This was obvious stuff. Codename Avalon and Indigo Beta 1 <=> Windows Vista Beta 1.

Nice British Sarcasm on Virtual Earth

The problem with Virtual Earth is that it only serves USA images. But this guy explains it much better in "Attention All Aliens".

How Honest Can a Zero Bug Bounce Be?

I have mentioned before how much I like reading Adam Barr's blog. This time a read a post about a few bugs in Monad and a few peculiarities of communication inside the Monad team. What got my attention is these two paragraphs:


...

Anyway Lee filed this bug and I resolved it back to him as "By Design", but then a few days later he opened it back up saying "We really should fix this." So I chonked it right back to him. We are nearing a milestone and need to get our bug counts down; this means that using the bug database as a form of communication works pretty well because people check their bugs often, but I also don't want bugs lurking around on my plate.

...

I could blog about it, but not much point in displaying code that I know doesn't work (I have posted some code that could be improved, like the -contains to -eq change, but at the time I posted it I thought it was right). I could file a bug, but at this stage every bug filed raises the stress level. I could email him, but it might be hard to explain. I could go talk to him, but then I wouldn't have the script on my machine to show him. Hmf. And to think that our group, for whatever reason, doesn't use Instant Messenger, or that could be another choice.

...


Now, I am currently diving in the Rational Unified Process and I have studied the Microsoft Solution's Framework in the past, but I would say I am a newbie when it comes to formal software engineering processes.

However, I am convinced a bug tracking system is a critical tool. Also, I always thought that bug convergence and the zero bug bounce were concepts intended to help you identify the right time for a project to ship a release candidate and jump to the next phase.

Maybe Adam is talking with a bit of irony, but I think when you begin tampering with your bug count just because you have a deadline approaching, I see no way you can avoid your product's quality from suffering. I would say it is preferable to cut features than to cut quality.

Anyway, I know us developers are human, and we don't set deadlines. So let's stretch things a little bit and suppose it is ok to stop registering new bugs because your boss wants the bug count to reach zero by yesterday, or because the staff is stressed. Then, what are you going to do with the bugs you didn't register?

Dishonest accountants solved this centuries ago by keeping a second set of books in the shadows. They did it because keeping accurate information of what was really happening was more important to them than evading taxes.

A Little of Feedback for Virtual Earth

UPDATE: After playing with it a little, I see some of my feedback is irrelevant. For instance, the scratchpad serves as a link collection (I don't know if you can persist it).
UPDATE 2: I am ashamed. I wish my English was better, and that I had enough time to correct this a little bit. I tend to correct my posts a few days after.


Just a few crazy ideas I am filling on VirtualEarth feedback forms:

What do you like about this design for Virtual Earth?

  • The general look is good. Labels, signs, panes, and the images themselves look great.
  • Mouse wheel support rocks!

What can we improve about this design for Virtual Earth?

  • I would like to have the option to see planet Earth as a globe instead of the projection, but this is impossible to implemente on DHTML, isn't it?
  • I would like to be able to search for a place based on cordinates.
  • I would like to be able to enter my exact cordinates in "Locate me" and maybe save a cookie.
  • Then I would like the "Locate me" button to change to a split button/drop-down, labeled "My locations", so I can go to my location on a single click.
  • Further, itegration with Passport should bring the ability to persist multiple preset locations to a server database.

What kinds of information would you like to see on Virtual Earth?

  • I would like it to be very extensible. For instance I would like to be able to subscribe to some kind of location web services or xml file, the same way today you subscribe to an RSS feeds on an aggregator.
  • Then any website could publish a geocoded file or web service (in case there are too many points to map), for instance, for its branch offices, or whatever makes sense to put on a map.
  • Ideally those points should be taken and rendered at the browser.
  • This could help information from other sources to be added to the map. For instance, blogs from FeedMap.
  • Going even further, integration with passport should allow some of those geocoding feeds to be saved on a server, for later display.
  • I could even like seeing the current location of my MSN contacts.

Anything else you'd like to tell us?

  • I am impressed with Virtual Earth. However, it is a little sad that in this first iteration the zoom levels for most cities I have lived in, are even poorer that on Google Maps, Google Earth or NASA's World Wind.

Virtual Earth is Online

I was seeing the whttp://www.virtualearth.com was down after reading the post by Seteve Rubel, but then I guessed that if they were going to go online on monday they would do it at http://virtualearth.msn.com/. And there they are!

Wednesday, July 20, 2005

Don't let us down again with the new Hotmail

I remember when I heard they were about to upsize Hotmail accounts from 2MB to some big number.

I want all of you to know that in most countries in Latinamerica that never happened. The reason? I guess there must be more than one, but I believe the most important is that MSN has been selling Hotmail Max in Latinamerica for some time.

Hotmail Max is a paid (cheap) service that enhances Hotmail basic services in various ways, includding storage capacity.

No matter how successful they have been on this, companies that decided not to discriminate the Latinamerican market like Google and Yahoo are getting a larger stake of it everyday, and I hope MSN will revise their plans with the upcomming version of Hotmail.

Apparently everybody else will get now 2 GB wich is on pair with GMail. Good! But I don't believe it until I see it on my mail box.

A note for those that tend to see evil on everthing Microsoft does: Microsoft believes in selling software and services. That pays their bills. They don't completely buy, as of yet, Jonathan Schwartz's "Free software is like TV" model. When they decided to give out Internet Explorer for free and later to bundle it with the operating system, they did it because they had no other chance. Everybody else was doing it already.

Hotmail has been an exception. They bough a free email company, and they saw the value of it. But don't expect them to give you something for free just because you think it is cool.

Fascinated by AJAX

I know I am not early to the party, but it is on purpose. I refused to blog about this before because I don't want to give anybody the false impression that I am a cool geek.

Anyway, I am seeing more and more AJAX (Asyncronous Javascript and XML, more less)applications emerge, and I since yesterday I see some AJAX in my future.

I am glad someone (yes, Microsoft, but also some independent developers) have listened to the call for an abstraction layer that will enable all of us to create richer experiences in Web applications.

By the way, Google is cool, but Microsoft has made some of the best AJAX applications I have ever seen. It just came to my mind the day I found MSDN replaced its Java based content tree with a DHTML based one. I am not sure this is AJAX as we conceive it today, but how many years ago was that? Six? And when did they come up with DHTML, eight years ago?

Now that I saw the light, I am really looking forward for Project Atlas.

Sunday, July 10, 2005

About OS/2 and the 850 million Microsoft paid IBM

Update: I cannot avoid editing this article, mostly because I see in my stats that a few (even from inside IBM) are reading it. I don’t want to change at all the sense of what I wrote, but I feel I have to correct mistakes and improve the style and tone of it in order to make it readable.

I received today the Stardock Magazine by email, and it contains a link to an article in which Stardock’s Brad Wardell discusses some of his experiences as an OS/2 developer and the deal that Microsoft and IBM have just cut:

...

Birthdays, anniversaries, whatever, I have trouble remembering. But OS/2 2.0’s release date is burned into my mind. And for the subsequent 6 years, I devoted nearly every waking hour to making OS/2 succeed. It wasn’t about money. It wasn’t about business. It was a cause. OS/2 was my cause. It was a better way of doing things. Some people get wrapped up in ideologies. Other people go on religious crusades. I was on an OS crusade.

And we lost. Badly.

Another date I remember well was Fall of 1996. That was when Microsoft release Windows NT 4.0. And within a year, the OS/2 market died. Microsoft’s effective FUD (fear, uncertainty, and doubt) combined with IBM’s unwillingness to strongly back OS/2 made it ripe to be toppled over by Windows NT 4.0 which, while not as good as OS/2 Warp 4, was "good enough" and had good industry support.

By 1998, our once thriving company was laying people off and struggling to survive. And I wasn’t a 20 year old college student anymore. I was 26, married, with a young son. I had responsibilities to my family and my employees. We limped our way into the Windows market, tail between our legs. Nowadays, we’re a pure Microsoft shop. .NET solutions across the board. Microsoft SQL. Microsoft Office. Our company makes a great demonstration of Microsoft solutions now. Which is pretty ironic since we were once OS/2 zealots. I’m not a Windows zealot today. I’m not even a Windows advocate really. It’s just business.

The romanticism of OS technology has warn off and there’s nothing as relatively cutting edge as OS/2 was back then. So now I don’t really think of the OS choice much beyond market share and what makes good business sense. Now it’s about the software WE make. I am still dedicated to a cause -- making stuff that enables people to use their computers however they want. And I want to make software that is cool and useful. That’s where software like Object Desktop and now ThinkDesk comes in.

So today IBM and Microsoft announced that they’re closing the books on that uglyness that was OS/2. Almost 10 years after Windows 95 was released, Microsoft is paying IBM off to not sue them over all the "unpleasantness" that Microsoft was involved in to ensure that 95%+ of you are using Microsoft Windows instead of IBM OS/2. We’ll never know if we would have been better off if OS/2 had won out instead of Windows. But at least IBM got to recoup some of their costs for trying.

Are you kidding? Do you call what IBM did "trying"? Well, maybe the tried, but they also gave up miserably. I understand how it will always be so cool for you to write "Microsoft" and "FUD" on the same phrase, however, as an ex OS/2 zealot, I disagree with you, 80%.

By 1988, I did programming and support for an organization that had tens PS/2 and PC computers connected on a Token Ring LAN. I was 18 and it was my first job. Even the servers ran PC DOS 3.30 and the PC LAN Program 1.3 (I think those were the version numbers).

I remember when one day, a new box with a few diskettes came to my hands. -"Try this", they told me. I was able to install and try OS/2 1.1, but it was very difficult to make the networking work. I remember I had the feeling that I was for the first time seeing a real operating system running on a PC. It also left me very frustrated.

On my second job, by 1991, I also worked in the same network, but this time I was hired by a company that provided much of the hardware and software for it. The network eventually grew to hundreds of nodes, and became a WAN using FDDI. Performance of file sharing database (Clipper based) applications on PC LAN Program was getting really bad.

OS/2 1.3 came to rescue. I remember being there with my boss the day we installed OS/2 1.3 on the new PS/2 Model 90 (or were them 95?) servers. It was the nicest piece of software, and the nicest piece of hardware that I had ever seen. Performance went up like a rocket. That was probably the greatest triumph I remember from that job, and I am sure for my boss it also meant a lot.

OS/2 was still the product of collaboration between Microsoft and IBM. OS/2 GUI, Presentation Manager was very resembling of Windows 2.x, a DOS GUI program I only knew because of Excel. I think version 1.3 was vastly optimized by IBM alone (or was it 1.4?). It included a 32 bit version of HPFS that installed in case you had a i386 or i486. I must say it worked like a breeze.

By the time Windows 3.0 was out, I was a deeply convinced OS/2 zealot. No way an "inferior product" like Windows was going to win in the long run, it was just impossible.

OS/2 2.0, the first fully 32 bit version of OS/2 came out late, but it was wonderful. I still remember the cover of BYTE magazine. IBM had gathered a great team for OS/2 2.0. They had such a great vision they didn’t know very well when the product was ready to ship. They kept adding more and more sophistication. On the technical side, as a fan of Object Oriented Programming, version 2.0 was full of interesting things to look at under the hood. Its compatibility with legacy software was also incredible.

Maybe it wasn’t a better Windows than Windows itself, but it was very close, and it was clearly a better DOS than DOS, and the best OS/2 ever. The Workplace Shell was not very polished and it was inconsistent at times, but it showed promise.

During 1993 and 1994, I had access to beta versions of OS/2 3.0 (Warp). I don’t remember if it was a formal beta or if somebody at IBM found a way to make the diskettes reach my hands. I saw the betas improve so much that, I was one of the first in my city to buy it when it was released. It was around USD 69 I think, and I wanted it for my home computer.

I was the last time I saw a new version of an operating improve its performance so much on the same hardware.

"Warp" helped to consolidate on us OS/2 zealots the feeling that we were on the right side and Microsoft was on the wrong side. We were sad and skeptic every time Microsoft made any progress.

For instance, we knew 1995 was the year of Chicago, the much improved Windows 95 that was supposed to steal much of the innovation made on the user interface of OS/2. But we were not too worried because Chicago was going to be just a DOS shell. OS/2, on the other side, was a full 32 bit operating system, and it was the best.

I must admit, I needed to be defeated first, so I could realize how ridiculous it is to be an OS zealot.

The first time I saw Windows 95, I just knew Microsoft were going to win the battle. It was simpler, more consistent, it performed better, it came with better hardware support, it used only the best UI artifacts found on OS/2 but also had some innovations of its own. Even if it was a DOS Shell it was 32 bit in most areas and multitasked relatively well. I saw it was a winner, but at first I didn’t see it as an OS/2 killer.

At the beginning I though OS/2 were going to survive, just not as a dominant platform. SMP was on the way and IBM was porting it to the Power PC Platform, which was poised to eventually displace the PC.

After that, we only got disappointments and more mistakes. OS/2 proved impossible or very difficult to port. The Power PC was abandoned, for no known reason.

Microsoft had an absolutely great team doing the architecture of their Windows NT (original though was OS/2 NT). Those people weren’t believers of using hand tuned assembler code in operating system, but of building hardware abstraction layers and designing operating systems to be portable. Ironically Microsoft got a commercial version of NT to work on the Power PC, something that IBM never fully accomplished with OS/2.

Now I think IBM lost this OS war by itself. Microsoft didn’t win it because of FUD, it just battled better on every front. While Microsoft was able to attract a lot of developer support. IBM just abandoned OS/2 development, like they abandoned every other related initiative, like Open Doc, Power PC, etc. I guess they fired every developer years before they publicly admitted they weren’t going to fight.

A few years later, Windows 2000 was, in my opinion, the first version of Windows NT that was better than OS/2 in every area.

The last time I saw OS/2 running was during a trip to Italy, I think during 1999 or 2000. My wife and I came to a train station and bought a ticket on an automated kiosk. When I saw the light yellow text and list boxes and the "^" and "v" shaped scrollbar buttons on that screen, I almost cried.

Let me be clear on this: I hated it when I learned that Microsoft bullied OEMs not to distribute Netscape. I think this kind of practice should be illegal in every industry, in any country, by any company.

But I think what happened to OS/2 was absolutely different.

Microsoft wasn’t the bad guy. They weren’t kicking a poor old man, but a stronger giant that would have loved to do the same to them. They simply were faster, smarter, successful, whatever. Eventually, it became almost impossible to buy a new PC with OS/2 preloaded, even from IBM.

Besides, I don’t think it is our mission as mere mortals to lick the wounds of big corporations. It was the case of two very capitalistic big companies fiercely competing. Neither needed our consolation.

So, the question is: What were the stakes for us zealots on it?

I mean, if you contribute to an open source operating system like Linux or FreeBSD, you have a clear justification to be zealot. After all, you have your beloved code in it. But why were we so passionate about OS/2? Why did we hate Microsoft so much? Was it because OS/2 was a "better way of doing things"?

Then I think we were probably a bunch of pathetic OS fascists.

About the USD 850 million Microsoft gave to IBM, I think it is just because Microsoft today prefers to donate the money to competitors in the tech industry than give it to the lawyers. They must be so sick of litigations!

But this doesn’t make this end any fair or happy, in my opinion. IBM does not deserve the money. Certainly, IBM is a company I could not trust again.

The best they can do is to distribute the money among people like Brad Wardell that dedicated their time and own money to a cause IBM embarked them on, just to abandon them in the middle of the journey. They could also give some to the original developers that made OS/2 one of the best PC operating systems of its time. And they could also give me 2 dollars, for my 2 cents.

If you think IBM should release their OS/2 source code, sign the petition here. It wouldn’t bother me that Microsoft allowed the parts that they co-own to be released too. I think Serenity Systems would still have a business model (maybe a better one) if OS/2 source code were to be released.

Friday, July 01, 2005

I don't agree with Bill Gates on H-1B Visas

I read a couple of months ago about Bill Gates remarks on the H-1B visas cap in the USA. While I can understand how he and other technology industry leaders got to think this way, I strongly disagree.

Like in many countries, in USA there seem to be plenty of people that think that foreign workers are stealing their jobs (look at the comments on the ZDNet's article for a sample). Most seem to feel fear, anger and hate. I don't agree with them either.

I am not American, and I am not thinking about going to work to USA. I am currently a foreign worker in the wrong country I would say, because here wages are very low compared to the cost of living.

My problem with H-1B visas is that it engenders the status of a second rate citizen, somebody that needs to comply to whatever her/his sponsor wants. It is not easy to switch to a different job if you go to the USA this way. Whatever mistake you make, or whatever changes with your job status (the company breaks, or your job requirements change, for instance), you will probably need to leave the country.

So this creates a deep distortion in the labor market. H-1B workers do not compete with American workers. They come from the beginning for lower wages that Americans would not accept. Corporations do not need to keep them happy like they need to do with the nationals. They have bargained for quasi-slaves instead. In my view, in this area the power of corporations has gained terrain over basic rights and law.

It rings an alarm to see Gates, an otherwise true philanthropist in my opinion, saying that he would eliminate the cap. He is, I think, defending the interest of his corporation over what is right.

I would say instead, eliminate the H-1B Visas altogether. And, if American tech corporations want access to the global market pool, replace H-1B for something that convert temporary foreign workers in immigrant workers and first rate citizens under the law. This will level the playing field, at least inside the borders.

So foreign workers will tend expect a higher income, closer to what natives have. And they will switch companies at will. There will be true competition.

American workers, and for the case, people from all developed countries in which income is over the average, will be still exposed to the uncertainties of off-shoring. This is the reason they need to support policies in their countries that help leveling the playing field all around the world.

This is a serious problem. They should act today or their children will face a very hard laboral environment.

Free your mind of fear, anger and hate. Stop the double standards. Welcome empathy.

Thursday, June 30, 2005

How to recover source code from your old VBA projects

Yes, I have been on blog vacations, or hiatus for the Nth time. I have much going on in my life, but I just don't feel like writing lately. Not every day.

Anyway, I have just found by myself a solution for a long standing problem, and I wanted to share in on the web, just in case somebody else needs it. The fact is that I have googled a lot for a solution for this, and I have found the same question formulated several times, but never an useful answer.

Now, straight to the story...

Some years ago, using Office 2000 Developer (or was it Office XP Developer?) I created a little Outlook addIn that helped me remove duplicate mail items with ease.

If you are wondering why did I need that, there are several possible reasons. Think about POP3 server request that timeout too fast and download the same emails on each retry. It happens to me all the time with large attachments in my GMail account. Another reason would be odd rules in Outlook that creat create duplicate emails.

On the days of Office 2000 and XP Microsoft used to provide the option to create addIns straight from within VBA. Those projects were saved as .VBA files and you could also compile them to DLLs. That functionality used to come with the Developer Edition of Office.

Later, when Office 2003 came out, this functionality was cut. I mean, Office 2003 Developer Edition does not exist at all. What exist is Access 2003 Developer Extensions, which covers most, but not all the Access related functionality found in previous Developer Editions, and Visual Studio Tools for Office, which is a brand new creature.

Among the most important features that Microsoft left orphaned on Office 2003 I can mention:
  • Access - Source Safe Integration (which was fortunatelly addressed more recently via a free download)
  • The ability to create compilable, self contained VBA Projects and Office addIns.
I am not really interested in continuing the development of my "remove duplicates" addIn as a VBA project, as this is clearly obsolete technology. But I recently found a few bugs on it, and I wanted to get access to the original source code in order to migrate it to VSTO. But, I haven't been able to see the source code since support for VBA projects was discontinued.

Mine is a really simple addIn, but I am too lazy to write it again. So, being laziness the mother of invention (or, er... hacking), this is what I found today:

Off all Microsoft Office 2003 applications, there is at least one that allows you to create macros in VBA but don't have an application specific file format: FrontPage. Instead of defining a proprietary file format, FrontPage allows you to edit standard HTML and related files, so I guessed FrontPage had to save VBA macros somewhere else. Yes, you guessed it! It saves its macros in a file called "Microsoft FrontPage.fpm" in %USERPROFILE%\Application Data\Microsoft\FrontPage\Macros.

Update: A few minutes after posting this, I found that I could have used Outlook's own VbaProject.OTM, with the advantage that the code could possibly run.

A simple binary comparison revealed that both the .FPM file and my old .VBA shared the same header format. Hmmm.... So the .FPM file uses the same conspicuous self contained format that .VBA projects used!

The obvious solution was to temporarily rename the .FPM and to copy my VBA project to the same folder with name "Microsoft FrontPage.fpm". Next you open FrontPage, you go to the Tools menu, Macro, Visual Basic Editor, voilaá, your VBA code is back.

I copied it to a text file, closed FrontPage and restored the files to their original names and locations. Enough for today. Lazinesss rules!

Disclaimer: if you want to reproduce the steps described above, and you make a mistake, you are on your own.

PS: Isn't it amazing how many problems you can solve by temporarily renaming files? I have found quite a few otherwise unsolvable problems with SQL Server and Outlook that I could solve this way. Well, they are otherwise unsolvable because I don't have access to source code!

PS2: I plan to publish the lame code for this addIn in a future post. Maybe when I am able to port it to VSTO I will publish both sources and a detailed comparison.

Friday, June 10, 2005

Microsoft giving some goods for free, based on customer feedback

A few days ago, I learned trough Tim Heuer's blog that Microsoft has decided to include a Team System Server for 5 users with each copy of Visual Studio Team System. That is great. A testimony to how much a company can improve customer relationships just by listening (mostly listening to what is said in the blogsphere).

Also, today I learned that Reporting Services is going to be included in every version of SQL Server 2005, even in the Express edition (without the report builder). Oh dude! That is great news, and the good thing to do. A reporting runtime that will be everywhere and will be used by everybody was born.

My entry on the "Blog your way to the PDC" contest

So, now I have to explain why I would like to go to the PDC?

First, the same reasons the others want to go: It is the best place to learn about the present and future of software development for the Microsoft platforms (although, a Geek Cruise would be good enough ;)).

Second, the place is going to be filled with bloggers I read every day. Some of them are like rock stars to me. I want to meet them in person for once. By the way, is the Don Box Band playing this year?

I have never been in such a major event, but in local dev days in Argentina and in conferences in the Dominican Republic.

If I win, however, I would like to buy a Tablet PC and blog the PDC in real-time, but in Spanish (yes, my Spanish is WAY BETTER than my English). That would be, I think, a nice way to share the gift with the community.

I can think of other ways. What about writing some code with the new tools and publishing some articles in both Spanish and English? Well, were you going to ask me for proof that I can actually do that, you would put me in trouble because I am not doing it at present. But I know I could do fine.


blogging my way to pdc


Ok, I know I am not going to win this contest... But, what the hell? Choose me!!!

Monday, June 06, 2005

Microsoft to be third Transitive customer?

I woke up to late to the Internet today, and everybody is talking about Apple's inminent switch to Intel hardware. I read a few articles about it, and the rumor is that the main reason is the DRM hardware support included in upcomming Pentium D processors. Fascinating. I wonder how is this related to Paladium. They also mention future video iPods, which Apple has hinted int the past were a terrible idea. So, were Apple playing pocker then or is industry journalism too dizzy today? Only time will tell.

Reports also mention Apple will be liscencing Transitive hardware virtualization technology to ease the transtition of Mac OSX applications to the new processor. This company is said to claim that it can run anything on any platform without performance penalties (uh?). Fascinating also.

Even if I my last crystal ball prediction (that Google would buy Skype within a month, more than a month ago) was incorrect or perhaps too much ahead of time, I will risk again. Transitive says in its site that they have "engaged with six of the world’s largest computer companies", but they can only tell about one, SGI. The also add:

Transitive expects to announce that a second computer OEM will deploy products enabled by its technology during the 1st half of 2005 and that others will deploy QuickTransit before the end of the year. Unfortunately, strict confidentiality obligations prevent us from discussing these relationships in any detail.


So, if the the second would be Apple (to be probably officialy announced today), my guess is that the third and four would be Microsoft and Sony, that would use Transit for XBOX 360 and PlayStation 3 respectively. Let's wait an see what happens.

Sunday, May 22, 2005

Rory doesn't like Episode III

Gorge Lucas directing, according to Rory:

George: OK - cut!
Actor: Cut? I was just practicing for when we actually do the scene. I didn’t know we were filming yet.
George: Good enough!
Actor: But I was reading from the script! It was in my hands the whole time!
George: Fine. We’ll Photoshop it out later. We’ll stick an ewok in there or something.
Actor: You can’t do that! It’s going to look like I have my hand up the ewok’s ass.
George: Good point. We’ll make it look surprised.

Hehehe! Well said, but I still like it.

I never understand how two people can disagree so much about a movie when they think alike in other matters. I guess the thing is I watched the movie with a more "naive" attitude, on purpose. I do not have the same mindset when I see something from David Lynch or even Martin Scorsese. So yes, I would never put any episode from Star Wars in my Top 10 movies of all time, yet I feel free to enjoy most of them.

Well, at least I see that Dare Obasanjo and Chris Sells think more like me.

Star Wars Episode III

After reading all the critics I was sure I was to hate this movie. But I was wrong.

For instance I read from the critics that the dialogs were unspeakable. The movie is an epic story, a tragedy, about ancient alien civilizations. So, what do you expect to hear, accent and manners from Missouri, Shakespeare? Dialogs are ok.

They say that scenes in which Padmé and Anakin are alone together are impossible to believe. In my opinion this is not true. I think they show what the movie demands, which is a woman loving a deeply troubled guy. Natalie Portman makes the most of her role, which is just the right size. Ewan McGregor does such a great Obi-Wan, Alec Guinness himself would love it. Hayden Christensen is not bad as Anakin, I don't know what the problem is supposed to be. That he looks weak of temper, uncarismatic, sometimes pathetic? I think that is exactly the idea.

Not to insult the actors, but do you really remember how the first movie was? I mean, Episode IV? It was a joke compared to this movie, the acting (besides Harrison Ford and Alec Guinness), the effects (I actually don't care much about FX)... In general, the execution was amateur compared to this movie.

I am not too fond of the science fiction genre, but I think Star Wars is ok because it is an epic story at the same time. My favorites are Episode II, III and V and I wish Geroge Lucas had the time and the wish to make Episode I and VI again, but without the darn critters.

I am looking forward to "Episode III and a half" wich I am almost sure Lucas has in mind. More on Obi-Wan and Han Solo story maybe?

Well, I saw the movie today. Let's wait until tomorrow to see what happens.

Tuesday, May 17, 2005

Windows 'Eiger' to support legacy hardware

I found many interesting news today at ActiveWin. The one that blows my mind was about codename Eiger, a new 'lean' Windows XP version that is in the works.

This is exactly the answer to my previous post in which I explained why I felt Microsoft needed to pay more attention to legacy hardware.

Here is an excerpt from the Microsoft-Watch article:


"We have a set of customers running old PCs and old operating systems even as old as Windows 95," said Barry Goffe, a Windows group product manager. "These customers are primarily concerned about security, though some also are concerned about improving the manageability and TCO (total cost of ownership) of these systems."

Eiger will bring these users up to par with the level of security provided by XP Service Pack 2, Goffe said. It won't include the XP help and support content, wireless networking support and certain operating services found in XP, however.

Eiger will run on legacy systems with as little as 64MB of RAM, a Pentium-class processor and 500 MB hard drive. Eiger is designed to replace Windows 95, Windows 98 and NT 4 Workstation running on these systems.

Sounds great so far. But then it says:

"Eiger is not a general-purpose operating system. It can't run games, office-productivity software or line-of-business applications," he said. "We'll tell users that these kinds of things won't run well in this environment."

Hmmm... Hey, guess what you are missing? Either Microsoft also builds a 'lean' version of Office, or those users will run someone else software on 'Eiger'.

Saturday, May 07, 2005

Please include MFC and ATL with Visual C++ Express and Visual C++ Toolkit

I left this comment on AprilR's blog a few days ago:

I am a pro developer, but I don't use C++ as often as I wish during the day. So, I recently found that I could play with the language by getting involved in some open source projects. I found an interesting group that produces a free program for Windows.

While getting acquainted with this area of the “ecosystem”, I learned how much the community appreciates your recent release of the C++ Toolkit and the upcoming Express version.

Free or inexpensive software is necessarily built with free or inexpensive tools. In this case, using a commercial compiler had been limiting the reach of the project among developers. However, there is a big challenge: Big chunks of Visual C++ the product relies on, namely MFC and ATL, are absent from the “free” versions.

I can see why Microsoft would consider those libraries only belong to the professional version of Visual C++. But reality is that if MFC and ATL are not available, some existing projects like the one I have mentioned have few chances but to look somewhere else for alternatives. New free software projects have scarce motivation to target Microsoft tools and platforms.

I have also seen a huge number of compiling errors while porting from the Visual C++ 2003 to Visual C++ 2005 Beta 2. It seems that better ISO conformance, while a great feature, makes lots of errors surface. Perhaps you could add better aid tools for this task, even if it out of cycle. Thanks. Diego.

More on Visual Studio Team pricing estimates

A few days ago I saw the video in wich Rick Laplante explains the issues on Channel9. I have been thinking in the background about it, so I want to give some shameless feedback.

I think you are wrong when you say that nobody will really pay for the full price, that that is retail, etc. This is exactly what prices are for, or setting how much people have to pay for the goods. Simple is beautiful. So, please, keep it simple.

Also, as far as I understand, the problem with the prices is that they do not scale. A small independent consulting company with one to two developers should be able to get the product for a lot less. On the other side, a company with 1000 developers that will use the whole capacity of the Team Server should probably pay more.

Also, unit testing and some other selected features should be on all packages.

That's all.

Wednesday, May 04, 2005

My wild prediction: Google will announce it buys Skype in less than a month

Directly from my crystal ball. This one is very easy. Unless there is a big impediment, Google will (or should) buy Skype. It has bought other cool companies in the past, like Picasa and Blogger. Besides, they need a good messenger to complete the model an compete with Microsoft and Yahoo.

Also, I think SkypeIn will be really big, do you agree?

Tuesday, May 03, 2005

64-bit computing and legacy hardware support: The two sides of the Windows fence

Here is Scoble calling for nominations for Team 99, some kind of "external evangelists" group that will provide Microsoft with feedback on Longhorn and will also help with "communicating the good news" about the OS.

I posted there a link to my blog, in case somebody will want to nominate me. However, I am not expecting this to happen, as I am not very well known. I don't care. I usually give my feedback just because poorly worked software pieces (not only from Microsoft) annoy me a lot.

There are a few things interesting in the discussion following Scoble's post:

Andre Da Costa says:


Ok, if any of you get to become a part of this Team, try and deal with some of issues facing Windows today. Try and think beyond the average user base, think about Windows world wide. I am from a third world country where its still difficult to buy a PC because of cost. Try to think about how Windows can better conform to the needs of these economies or how Microsoft can better meet the needs of users in these countries through programs such as Starter Edition.

Good! Very good! I have spent a lot of time to thinking about this, and I agree completely. Microsoft needs to pay more attention to this.

Scoble replies (to me):

Diego: yup, and on the other side of the fence, Paul Mooney just reminded me not to forget 64-bit enthusiasts too.

Well, that is very important too. On one hand, if MS doesn't get 64-bit computing right with Longhorn, it will certainly loose some market to Linux and others.

But if they don't get legacy hardware support better than in the past... Well I wouldn't want anybody at Microsoft to get the idea that those millions of old government computers around the world will stick to Windows 98 and 2000. It is more likely that they will switch to Linux instead. And with them will go many developers all around the world.

It has been typical of Microsoft to push the hardware envelope on each new version of Window and this way they have increased their revenue and helped the hardware industry at the same time. Historically, most Windows copies have been sold on brand new computers, but year over year, the size of the installed base has grown.

This time, maybe the balance has shifted enough. Maybe it is time what is good for Microsoft is not exactly what is good for hardware makers. I mean, people would be happier paying for software, hadn't they have to pay for hardware upgrades so often.

What I would like to see is a very secure, manageable and stable version of Windows that is light enough to run on the same hardware that used to be the Windows 2000 baseline. It doesn't really matter if it is not very beautiful. It is enough that it runs Office, Internet Explorer and Terminal Server Client well.

I am cool with Microsoft adding 10 million lines of code to Windows on every new version, if they let people disable or avoid installing the heavier parts of it. For instance, I agree Avalon makes a lot of sense, and it is understandable that it will need serious GPU power and large amounts of video RAM. But I would like that XAML applications were able to "degrade gracefully" on older hardware.

Moving to MSDN

I haven't decided yet, but it is very likely that I will stop blogging here for some time. For some background, I have moved to the sate...