Open Protocols

Yesterday I got this month’s issue of Doctor Dobbs Journal. As usual I poured through it immediately. The inside of the front cover had a Microsoft advertisement for its Open Protocols. I had heard this term used before. However I did not know much about it. So I decided to take a closer look at them.

The goal of this initiative is to “create smarter, interoperable products”. Microsoft is providing the specifications for Windows Vista, the .NET framework, Windows Server 2008, SQL Server, Microsoft Office 2007, Exchange Server 2008, and SharePoint Server 2007. The tag line in the advertisement was innovation, quality, and community.

I went to the Microsoft site that hosted the Open Protocols. They are described as protocol specifications for developers. They target Microsoft’s high volume business products. The documentation itself is provided free of charge. However you may need a patent license from Microsoft if you are to use some of the patented technology commercially. This initially made me think there was something not too open about this. In my mind, open usually connotes free of charge.

Now I have always been a little interested in the format of Microsoft Word documents. This was a good opportunity to get some insight into that format. This binary format was indeed covered by the Open Protocols. However the document that describes the Word format was a whopping 19 megabytes. The table of contents alone for the document spanned 13 pages. At least it looks like they are giving you everything you need. I found it a little strange that they provided the information in PDF format.

I have heard some grumbling in the developer community regarding the Open Protocols. Perhaps it was the part about the patent licensing which also took me by surprise. I am going to keep an eye out for more comments from other developers regarding this program by Microsoft.

Managed Services Engine

I read an article on the DevX web site entitled “Virtualize Your SOA with the Managed Services Engine” by Steve Spefanovich. I had not heard about the Managed Services Engine (MSE) before. So I read through it with interest.

Steve said that it is difficult to keep the enterprise SOA up and running. The MSE is a product that eases this pain. Steve reviewed the Windows Communication Foundation (WCF). He said that WCF is split between contract and implementation.

The MSE uses the idea of service virtualization. It provides a service layer on top of the services you provide. The MSE extends rather than replaces the WCF. It acts as a proxy service host, which is the only point of entry to your SOA.

The four major parts to the MSE are the service catalog, messenger, broker, and dispatcher. The MSE runtime server can act as a messenger, as a broker, or both a messenger and broker. It can import existing services. It is also able to version the services you provide.

Only the published service is listed in the WSDL. You can only publish one version of your service at a time. The MSE eliminates tight coupling between consumer and service.

Visual Studio

Microsoft released Visual Studio 2008 this year. This release is also known as Visual Studio 9. Plans for the next version of Visual Studio have been shared with the public. This next version shall be Visual Studio 10. According to the InternetNews web site, there are 4 major “pushes” that come with this new version: experience, customer, platform, and architecture.

Visual Studio has grown to much more than just a code compiler. It includes tools to deal with new user interface models like Silverlight. As you may already know, Silverlight is a plugin for web browsers.

A specific change for the next version of Visual Studio is to improve the C++ performance. That is good news to me as I am a C++ programmer. However right now I am still using Visual Studio 2005 (Visual Studio 8). The next version of Visual Studio shall also have a Windows Presentation Foundation (WPF) editor.

Microsoft is also adding the Visual Studio Extensibility (VAX) to Visual Studio. This includes numerous concepts and components such as the Visual Studio SDK. You can extend the tool using add-ins and packages. Visual Studio will host functional units called packages.

There are some long range ideas for Visual Studio, which may not make it into the Visual Studio 10 release. The tool is to get a WPF look and feel. Instant messaging for users on a team is to be built into the tool. Finally there will be an updated Visual Studio Tools for Applications (VSTA). It is an application customization toolkit based on .NET.

Forefront

I read a couple trade magazines. More often than not, Microsoft has an advertisement on the first page. They are pitching something called Microsoft Forefront. I found it strange that I had never heard of this product. I used to be a Microsoft Man (exclusively using their technologies). So I decided to take a look at what this beast is.

The advertisement itself says that Forefront takes on security threats. Somehow the product makes this task easier. It can help you defend your system. It is being marketed as an integrated family of products. They protect the client, server, and network.

I figured I should go to the source to find out more. So I perused Microsoft Technet. This is where I found out that Forefront is a business security product. Perhaps this is why I have not run into this product yet. I work in the enterprise. But I develop software. I do not deal with enterprise security at all. This tool protects the network by controlling access.

There are 5 main pieces to the Forefront family: client security, security for exchange server, security for Sharepoint, security and acceleration server, and intelligent application gateway 2007. The first one protects against malicious software such as spyware and viruses. The second integrates multiple commercial scan engines. It automatically downloads the latest signatures of new malicious code. The third scan documents going in and coming out of Sharepoint. The forth is a gateway to securely publish content. And the final piece is a remote access solution.

A little more searching on the web gave me the impression that this family of tools provides multiple layers of defense. That sounds good. But I still do not have a hands-on feel for the product. Perhaps I could talk my company into sending me to some training. Or I could do a rotation into the network security group. I think we do a lot of that work for our clients.

Free Products

I discovered a great program from Microsoft called DreamSpark. It provides professional versions of Microsoft software to students for free. You need to verify that you are a student. Then you can download the software at no cost to you. Microsoft does not ship the software to you. However it is the real versions of the software. This is not trial or beta versions.

Here are some examples of software that Microsoft provides through this program. I have included the MSRP of each product to demonstrate the magnitude of this deal:

* Visual Studio 2008 Professional $799
* Windows Server 2003 Standard $999

Microsoft also provides older versions of software through this program such as:

* Visual Studio 2005 Professional
* SQL Server 2005

Recently I have applied to attend college in order to learn some web technologies. So I was very excited to learn about the DreamSpark program. I wanted to get Visual Studio for my home. However I was disturbed to find that my university was not listed as one of the colleges participating in this program. Oh no they didn’t. It is time to get on the horn with my university. Microsoft is offering a goldmine to me through this program. My college needs to get on the ball and sign up with Microsoft. I don’t care if it costs the college a little case. The savings to me are too great.

There is a lot of anti-Microsoft sentiment out there. Yes they are a huge firm that plots to take over the world. But they are offering free software to students. For that they get my respect. I will let you know if I succeed in getting my college to sign up for the program.

MDAC

The Microsoft Data Access Components (MDAC) are a framework from Microsoft for accessing databases. As you can read in the Software Maintenance blog, you can run into a lot of MDAC pain during installation.

MDAC consists of three major components:
1. ADO
2. OLE DB
3. ODBC

The last version of the MDAC released by Microsoft was 2.8. To be more precise it was 2.8 SP 1. Since then, the MDAC functionality has been built into Microsoft Windows 98, XP, 2000, and Me.

Microsoft provides a redistributable installer for the MDAC. You can check the version of the MDAC on your system with the Microsoft Component Checker tool. You can also look in the Windows registry to find the MDAC version number. However this is not as reliable as the Component Checker.

Virtual Offerings

While riding the train to meet our customer, I read an article in Information Week magazine. Microsoft has released its Application Virtualization product. It was formerly named SoftGrid. I suspect that was also the name of the company that it acquired to get that product.

Microsoft Application Virtualization is also called App-V. It stream applications from a server to the PC. Even though Microsoft has just released version 4.5 of App-V, you can be sure that they will be hyping this product in their upcoming Get Virtual Now event.

The strange thing about this product is that it is not offered as a stand alone product. When I heard that, I was disappointed. I guess Microsoft is using this as a way to sell bundles to big customers.

Clone Detective

I read an InfoWorld article by Paul Krill entitled “Cloned Code Finder Offered For Visual Studio”. It announced a web based product from Microsoft called the Clone Detective. This is a tool that works with Visual Studio. If analyzes C# source code, and locates duplicate code. It has been released under the Apache 2.0 license. That means the software is free to use. It also means that you can use it in other open source projects as well as in proprietary projects.

There is a plan to release future Clone Detective versions that work with other popular languages such as C++ and Visual Basic. There is also a plan to add “fuzzy clone detection” to the tool in the future. This will allow you to locate code that is not an exact cut and paste, but close to it.

It is too bad that this product only analyzes C# right now. Almost all the code on my current project is written in C++. It is a huge legacy project around 15 years old. Some of the code was well thought out and designed well. However there are a lot of places where changes were hacked in. So I know we have a load of code that was cut and pasted. It would be nice to refactor a lot of that code to make a cleaner code base. It is possible to do this manually. However it would be nice to use a tool to analyze the code and at least find the places where we have duplicate code.

I might write up some dummy projects using C# just to give Clone Detective a spin. Of course I will use poor practices while coding up this sample app. And I will cut and paste galore. However I will make a few changes in the code copies and see how well the detective can, well, detect.

StyleCop

Microsoft has released StyleCop 4.3 to the developers. StyleCop is a source code analysis tool for the C# programming language. It has been used at Microsoft internally for many years. The tool enforces the best practices in source code. It is similar to another tool from Microsoft called FxCop. However StyleCop works on source code, while FxCop works on binary files.

StyleCop does not focus on the design of code. Instead it focuses on the layout, readability, and documentation in the code. The overall goal is to produce code that others can easily read. The rules which the tool enforces cannot be easily configured. The tool implements around 200 best practices in the code. Some of these are location of brackets, spacing, ordering of elements, and variable naming. The tool can be run within the Visual Studio IDE. It can also be integrated with builds.

There was a lot of interesting feedback to the release of StyleCop. Many people including myself were interested in a tool like this for other programming languages. There is also a great desire to disable and configure the rules enforced by the tool. Users have commented that some of the rules are just plain silly. The VS Law program performs a similar function for Visual Basic code. Some developers worried that this tool would be used by control freaks for evil purposes.

Unfortunately we code almost exclusively in C++ on my current project. So StyleCop would not be of much use. However we try to cover best practices when doing peer reviews. It would be nice it we could delegate that task to a tool such as StyleCop. Come on Microsoft. Hook us up.

Visual Studio Uninstall

A system administrator cloned a development machine for me, and provided me with a virtual machine to use for development. I got some code that I needed to change. Then I figured up Visual Studio 2005. The C++ compiler immediately complained that I needed to repair the Visual Studio installation. So I got the install media and attempted a repair. The repair warned that I might not have enough disk space for the install. Then it kept requiring a reboot. However when I rebooted the install did not pick back up. I went through the repair a couple more times until I gave up.

At this point I decided to uninstall Visual Studio 2005 and try again. So I used Windows Add/Remove programs. I selected Visual Studio 2005 and chose to remove it. This removal took quite a long time. At the end of the install I got a horrible warning message. Microsoft wanted me to manually go in, find out if any listed components were present on my system, then remove them one at a time. What the heck is this? The install program was smart enough to know what items to install. Can’t it also uninstall them without me prodding it for every component? Bad form Microsoft.

Just so you don’t think I am overreacting, take a look at the warning message for yourself:

Next Step: Uninstall additional components

Additional components might have been installed on your computer by Visual Studio during setup.
These components must be manually uninstalled using Add or Remove Programs in the order listed below.

Note: Uninstalling these components might affect other applications you have installed that rely on these components.

The following components might have been installed with Visual Studio:

Microsoft MSDN 2005 Express Edition
Microsoft Visual Studio 2005 Tools for Office Runtime Language Pack
Microsoft Visual Studio 2005 Tools for Office Runtime
Microsoft Device Emulator version 1.0
Microsoft .NET Compact Framework 1.0
Microsoft .NET Compact Framework 2.0
Microsoft SQL Mobile 2005 Development Tools
Microsoft Visual J# 2.0 Redistributable Package
Microsoft Visual J# 2.0 Redistributable Language Pack
Microsoft Document Explorer 2005
Microsoft Document Explorer 2005 Language Pack
Microsoft Data Access Components 2.8 SP1 (Windows 2000 only)
The following components might have been installed with SQL Server Express, and need to be removed in the order listed below:
Note: Uninstall of the SQL Express instances will leave behind the user-created databases, which can then be re-attached to the new instance.

Microsoft SQL Server 2005 Express CTP
Microsoft SQL Server 2005 Express Tools CTP
Microsoft SQL Server Setup Support Files
Microsoft SQL Native Client
The following components must be uninstalled last:


MSXML 6.0 Parser and SDK (only on 32bit)
MSXML 6.0 Parser and SDK x64 (Only on 64bit)
Microsoft .NET Framework 2.0 Language Pack
Microsoft .NET Framework 2.0

Midori Operating System

I recently read an article online at Software Development Times. It was about a new operating system from Microsoft called Midori. The unusual thing about this operating system is that it is not a new version of Windows. It is instead based upon another research operating system from Microsoft called Singularity. Midori is meant to coexist with old Windows applications. However it does get rid of dynamic link libraries. It also builds Service Oriented Architecture into the runtime. The API is object oriented. Application created for the new operating system will be written in .NET languages. This project falls under the Microsoft Research division.

Since the Midori Operating System is based on Singularity, I thought I would mention a bit about it. Singularity is another operating system from Microsoft Research that was released in 2007. It is a microkernel operating system. It has some unique characteristics. Applications run in one process (address space). The kernel, device drivers, and application are all written in managed code. The goal is for the operating system to be highly dependable. Low level interrupt code is written in a combination of assembly and C programming languages. The hardware abstraction layer (HAL) is written in C++.

The Midori Operating System is being written with the Bartok compiler. The Bartok compiler is yet another project out of Microsoft Research. It is intended for writing efficient code needed to write operating systems. The compiler itself is written in C#. This compiler was also used to write a lot of the Singularity operating system. This operating system allows an application running in it to choose a version of components (such as garbage collection) at run time.

Obviously there are some very interesting projects coming out of Microsoft Research. I wonder if any of these will reach a production status on par with something like Microsoft Visual Studio.

Help Compiler

Recently our team has migrated from Visual Studio 6 to Visual Studio 2005. This was a long overdue upgrade. We skipped over some intermediate versions of the tool. And I think it made our migration more difficult. Most of our applications are old and have no built in help systems. However one recent application has a pretty good contextual help system. The developer tasked with migrating that application complained that the compilation for the help bombed immediately.

After a bit of research, the developer found that Visual Studio 2005 does not by default install the Microsoft Help Compiler. This seemed very strange. What was Microsoft thinking? They do provide a freely downloadable help compiler. Maybe developers no longer ship help with their applications. Or maybe they use other tools like RoboHelp from Adobe. I don’t know.

I believe Microsoft ships its Visual Studio 2005 on DVD. There should be plenty of room on that DVD for the Help Compiler. Not including it has made our life a bit more complicated. It is no big deal for developers to download and install the help compiler. But things get tricky for other individuals. Our configuration management team normally does our builds. They did not know how or where to install the Help Compiler.

To tell the truth, I have not even installed the Help Compiler on my machine. I guess I will not be building that application locally any time soon. Before completing this post I decided to browse the web to find out why Microsoft chose not to include the Help Compiler with Visual Studio. I think I quickly found out the answer. Microsoft’s new solution for help is HTML Help. Perhaps the old Help Compiler (which Microsoft calls the WinHelp Compiler) is going out of style.

My hope is that Microsoft does not leave us stranded having developed an extensive WinHelp component to one of our applications. Why convert to a new HTML Help system when it will not improve our end user experience any? Knowing Microsoft, I had better brush up on the new HTML Help system to be safe.

Microsoft Marketing

I recently read a blog post making fun of a Visual Studio advertisement by Microsoft. This interested me because I had seen the ad in a magazine before and thought it was funny. The ad features before and after pictures of a developer who has started using Visual Studio. Apparently Visual Studio has enabled the developer to get a better laptop, a BMW to drive, and the attention of some attractive females in his cubicle.

The blog post is from . This is a blog about open source software. So you know it was going to razz Microsoft. Essentially the author modified the ad, and pointed out the humor that ensues. It was nice to see that there were 30 responses to the blog entry. And I wanted to add my 2 cents. Unfortunately I got the following automated reply when I tried to add a response”:

“Sorry, but your comment has been flagged by the spam filter running on this blog: this might be an error, in which case all apologies. Your comment will be presented to the blog admin who will be able to restore it immediately.
You may want to contact the blog admin via e-mail to notify him.”

Now I am hoping that a human will review my response. It was actually a meaningful reply that was not spammy in the least. A human should be able to detect this. My first thought about being rejected by spam filter was maybe due to the fact that I have black hat in my e-mail address. Then I started thing some more. I am a Microsoft developer. In other words I am pro-Microsoft. Maybe the blog author has written a really smart spam filter that blocks out posts that are not pro-open source.

To quickly determine whether my e-mail address was the problem, I submitted the same response to the blog post using another email address. This time I made sure there was no reference to “black hat” in my e-mail or home page URL. I still got the same automated response from the blog. Who knows? Maybe all responses must get approved by the blog author. Well just for that I am not linking to his blog from this post.

New Windows

Bill Gates recently came out and said the next version of Windows will be released in about a year. That version will be called Windows 7. I hope it will get a warmer welcome than Vista. Somehow to me it seems that Microsoft is a bit off in its numbering. Here is how I figure we should be up to Windows 8 by then:

3.1 Windows for Workgroups
4.0 Windows 95
5.0 Windows NT
6.0 Windows XP
7.0 Windows Vista
8.0 (the next Windows?)

Perhaps Microsoft has a different numbering strategy. Maybe Windows 95 and NT both count for one generation of Windows. Or maybe Windows NT does not count in the grand order of home windows operating systems.

I bet that, by the time the next version comes out, it will have a sexier name than Windows 7. Who knows? I could come up with a snazzy name myself and submit it to Microsoft for consideration. All I would want are bragging rights, and maybe a link from the Microsoft web site to my little blog. Not too much to ask for if I do say so myself.

Visual C++ 6.0

At work we maintenance a set of legacy applications developed with Visual C++ version 6.0. This version of the IDE came out back in 1998. So it is relatively ancient technology. However it works. And there are no surprises when maintaining the software we support. The problem is that developers like to work with the latest and greatest tools. In fact I have a trial copy of Visual C++ 2005 at work for side projects.

At home I also run Visual C++ version 6.0. This allows me to view work that I take home, as well as work on my side software development business. I bought my copy of Visual C++ a long time ago. It has and continues to serve me well. Recently I have been writing software to release on my new blog Black of Hat. My latest program is Crawl. It was written in Visual C++ version 6.0. Details on the program can be found on my post entitled Crawl Program Released.

I am still debating whether to purchase an upgrade to Visual C++ version 6.0. An upgrade would be beneficial to learn how to develop in the Dot NET environment. But for now my goal is to knock out programs quickly.

Windows Explorer

With this post, I want to get back to some basics. Specifically I want to talk about Windows Explorer. Not Internet Explorer (the browser). I want to talk about Windows Explorer. This is the program that let's you navigate your disks and cd-roms and such. It is light years ahead of the old directory command from the DOS days.

You can start up Windows Explorer by right clicking on the Windows Start menu, and then clicking Explore. You can also run the executable "Explorer.exe". Right clicking on an object within Explorer usually let's you choose from a number of options in a context menu.

Choosing About from the Help menu in Explorer tells you interesting things such as the version of Windows you are running, and also how much RAM you have on your computer. I bet there are a lot of other cool features of Explorer that I don't even know about. I hope that Explorer is one piece of Windows that we agree Microsoft did a good job with. Wouldn't you say so?

The Visual Studio Family

I recently installed a trial copy of Visual Studio 2005 Team Suite. To tell the truth, I do not know much about this software. Just hoping that I can dig a little into dot Net development. My background is legacy Visual C++ development.

The thing that amazed me is that the installation program for Visual Studio 2005 mentioned that many components were being installed. Here is a list of some of the ones that caught my eye:
  • MSXML 6.0 Parser
  • .NET Component Framework 1.0 SP3
  • .NET Component Framework 2.0
  • Visual J# 2.0
  • SQL Server 2005 Mobile Edition
  • SQL Server 2005 Express Edition
My hope is that I will be exposed to these components/tools in the months to come. I had got to get a move on this learning. The trial version of the software expires in 180 days. And the full version costs a whopping $800 to purchase.

Don't Forget Explorer

I saw a question on a software development board about how to restart Windows Explorer. This is one that I actually know the answer to. First you need to bring up the Windows Task Manager. Then you must kill the "explorer.exe" process. When it is killed, you choose File New Task from the Windows Task Mangager menu. And you type in "explorer.exe" in the open dialog. It will take a little while for Explorer to restart and show the desktop, task bar, and start menu. But this comes in handy when things go awry with Windows Explorer.

The new thing I recently learned about Explorer is that there are a number of optional command line options for the program. For example, "/n" will

[Open] a new single-pane window for the default selection. This is usually the root of the drive Windows is installed on. If the window is already open, a duplicate opens.

Source Fource?

Let me start by saying that Microsoft Office is one of the Microsoft tools I use the most. This might sound strange seeing as how I am a C++ developer. However it turns out that I spend a lot of time on my project doing mundane activities like sending e-mail, reading and writing documents, and generating presentations.

This brings me to a weird marketing attempt my Microsoft Corporation: The Source Fource. To tell the truth, I am not exactly sure what Fource means. That is how they spell it. Could be a knockoff on the Force. Maybe they are combining that with the Source?

The Source Fource is a bunch of action heroes based on the Microsoft product line. Perhaps some interns and good graphic arts employees cooked this up. I do not know. I can say that the "Office Master" who represents Microsoft Office has the best action figure. LOL.

What will Microsoft come up with next? I am hoping for more free downloaded like Visual Studio Express Edition. But that is a story for another post.

Interesting Commands

While it is fresh in my mind, I thought I would list out the Windows commands that I plan to cover in future posts. They are listed here with one-liners describing their function.

ASSOC - Displays or modifies file extension associations.

AT - Schedules commands and programs to run on a computer.

CACLS - Displays or modifies access control lists (ACLs) of files.

FIND - Searches for a text string in a file or files.

SUBST - Associates a path with a drive letter.

If you can't wait until I write my next few posts, you know you can always type HELP at the Windows command prompt. This will give you a lot more information on the command usage.

Windows Command Prompt

I thought I would start at the very beginning. In my library are a couple books on scripting for Microsoft Windows. And at least one of these books emphasizes that you should not overlook the Windows command prompt. There are a number of commands available that have their origins in the Microsoft MS-DOS world. Typing "help" at the Windows command prompt provides you with basic information on the following commands. Note that all this stuff is most likely copyright Microsoft.
  • ASSOC AT ATTRIB BREAK CACLS CALL CD CHCP
  • CHDIR CHKDSK CHKNTFS CLS CMD COLOR COMP
  • COMPACT CONVERT COPY DATE DEL DIR DISKCOMP
  • DISKCOPY DOSKEY ECHO ENDLOCAL ERASE EXIT
  • FC FIND FINDSTR FOR FORMAT FTYPE GOTO
  • GRAFTABL HELP IF LABEL MD MKDIR MODE MORE
  • MOVE PATH PAUSE POPD PRINT PROMPT PUSHD
  • RD RECOVER REM REN RENAME REPLACE RMDIR
  • SET SETLOCAL SHIFT SORT START SUBST TIME
  • TITLE TREE TYPE VER VERIFY VOL XCOPY

If you have ever done any DOS batch programming, these will look very familiar. I intend to review a couple of these command to remind how useful some of them can be.

The Way of BillG

In the old days, the saying was "nobody gets fired for going with IBM". Then Microsoft took over and dominated the personal computer. So for a while the popular choose was to choose Microsoft for your IT needs. This included software development.

I want to reminisce about the many tools I have used from Microsoft. And also review where we are today with Microsoft's latest offerings. As if this were not enough, eventually I want to get an idea of what the future of Microsoft software development tools are.

Please join me in the software way of life known as Microsoft.