Aquarium Blog

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.


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 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 "" 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 (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.


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 to The old feed still exists, but it is dead. If the sent any notice, I missed it.