June 29, 2004

Visual Studio Add-in Proposal

I decided to collect all of my notes surrounding the vsprj2make Visual Studio .NET Add-in that I am writing and turn it into a proposal document of sorts. I later requested some feedback from my fellow Monoers and received some great comments.

Special thanks to Joseph Hill, Todd Berman, John Luke and Dan Morgan for their remarks and/or words of encouragement.

The work to flesh out a lot of the items proposed has already begun, but I am always open for suggestions and recommendations.

Posted by martinf at 06:27 AM | Comments (1)

If you want to upset me...

Here in Texas and back in my US military service days, there was always one thing that will always work to make me sad.

Any time I hear a co-worker say: "What we ought to do is drop a nuke over them, and get it over with.". Another favorite of mine: "The US should go over there and turn that place into a big parking lot!". It always sadden me or even piss me off to listen to those remarks. It also made me think a lot less about the speaker making such comments.

Is it Hollywood and the endless stream of crap a la "Aliens", "Star Ship Troopers" or some other sadistic teenage aimed block buster film that made some of our American citizens so dehumanized? In Iraq, Peru, Cambodia as well as in Alabama or Plano Texas you will find people. The kind that are women, children, men, and elderly. All of them are either fathers, sisters, uncles, sons or grand parents. All of them are human like you and I. Certainly not bugs or some despicable pseudo-mythical alien species.

The excesses and abuses that happened at Abu Ghraib prison in Iraq by our service members may have very well taken place because superiors ordered it. However, I believe that what enable it to happen is the erosion of some basic understanding that all men are created equal.

Posted by martinf at 06:00 AM | Comments (2)

June 26, 2004

Visual Studio Add-in Part 3 of 3 -- I don't think there were really 1000 parts

There are many differences between the project description files that Visual Studio uses and the ones shared by #Develop/MonoDevelop. The most significant difference from prj2make-sharp perspective is that MonoDevelop assembly references are specific enough to distinguish between GAC type and others. Visual Studio csproj files do not make that clear of a distinction. This means that if I am reading from a csproj file to then generate a MonoDevelop prjx file I have to first check to see if such a file can be found in the GAC and then query it for its full assembly information.

But which GAC? Now we have the Microsoft GAC and the Mono GAC. Wait! If I am in Windows using Visual Studio but I intend to generate a MonoDevelop prjx file that will be used in Linux, I may not even have access to the GAC of that other system. This means that when the part of checking a particular assembly in the GAC to see if it exists comes up it may not be possible. We must also remember that the detail information that an assembly will emit (culture, version, key, etc) may not be the same across platforms.

For brevity I will tell you what I plan to do. I will look in the Window's registry to see if Mono for Win32 is installed. When I last performed the installation on my system it left these entries:

[HKEY_LOCAL_MACHINE\SOFTWARE\Mono\Beta3]
"SdkInstallRoot"="C:\\mono\\Mono-Beta3"
"FrameworkAssemblyDirectory"="C:\\mono\\Mono-Beta3\\lib"
"MonoConfigDir"="C:\\mono\\Mono-Beta3\\etc\\mono"

Using the value of FrameworkAssemblyDirectory I will append mono\1.0 and/or mono\gac as necessary to perform my search and draw complete assembly information for the purpose of generating MonoDevelop files. At that point, I can only hope that the generated output files will work when deployed to a Linux, FreeBSD or Mac OS X machine running MonoDevelop.

A topic that is very important for me is GTK# in Windows. When writing this piece, the gtk# installer package available for Win32 was not intended to work in conjunction with Mono Win32 installation but rather with Microsoft .NET Framework GAC implementation. I want to have a combined installation package that install Mono AND GTK# in one swoop. Maybe one alternative may be to give users in Win32 a mechanism to take the gtk# assemblies that are installed in the MS GAC and installed them in the Win32 Mono GAC. This last may keep the community from writing many different installation packages to distribute the same binaries.

I think that this transitions us to the other point or functionality of the VS Add-in: 'Test in Mono'. The steps that I plan to take to test the solution a programmer is working on Visual Studio are:

Generate a Makefile.Win32, create a process that will have an environment suitable for Mono on Win32 (including gtk# in Mono's GAC), compile with mcs.exe and run with Mono. This is for console and/or gtk# applications. Library assembies (*.dll), would not have the final run to them, unless we give an option to launch a driver application or NUnit sort of test to run them.
For Web/ASP. NET applications that would run in Mono. I would use pretty much all of the steps above but would use an xsp.exe instance followed with a browser of choice launch.

Finally, I want to create a tabbed dialog box that will allow to save all of the specific configuration settings for the Add-in. The user selected preferences will then be stored int the registry (HKEY_CURRENT_USER) to be read upon startup of the Visual Studio IDE or when changes are performed as signaled by having press the 'OK' button on the Options dialog box.

I will make all three parts available in a sigle document.

Posted by martinf at 08:24 AM | Comments (0)

Should a Soldier Going to Iraq Watch Fahrenheit 9/11?

I went to the Movies yesterday with my good friend Jay Dugan. We watch Michael Moore's latest film Fahrenheit 9/11. I personally don't think I like Mr. Moore -- not so sure I like his tactics when interviewing and so forth. What I will tell you is that I feel everyone old enough to vote in America, if not the entire World, should see this Movie.

But a moment later I started thinking. Should I recommend my son --a soldier in the 2nd ID on his way to Iraq -- go see this Movie?

I don't know. I was a soldier myself and still think that a self defense force can and should be kept at a national level. I feel that our leadership has miss represented Americas best interest in the world.

But you know what? our troops are our children -- no matter how miss behaved they may be or in need of a spanking -- and we have to support them 1 million percent!

I don't want my son to go or anyone else son or daughter to that matter. But if they are going, I want them to be totally focus and to be responsible of mission objectives. I want them to act ethically. Above all, I want them to come back.

So back to Mr. Moore's film do I want to show this to an Infantry man on his way there?

I think so. Perhaps the easiest way to look at this is:

Would I have wanted to look at a piece like that before the invasion of Grenada, the Libyan bombing, the tense days of a central Europe when we were always hearing about the Red Army Faction or the Eastern Block Intelligence Agents, the pursuit of Noriega in Panama and of course the Gulf War I. Should I have seen the Fog of War when I was guarding Inter-continental Ballistic Missiles in the Dakotas?

Should Jenna Bush see either film before having her beers at the Chuy's in Bagdad after a grueling 14 hour shift ends on a Thursday night along with her other Military Police buddies I made that up. I just think that she would be a perfect female MP or AF Security Police woman?

I say Jenna, and her parents, Paquito and his parents should all watch both films a couple of times. And by the way Mr. Kerry, you should watch also.

Posted by martinf at 07:45 AM | Comments (4)

June 25, 2004

Visual Studio Add-in Part 2 of 1000

I want to contnue yesterday's discussion on the Visual Studo Add-in that I am working on.

The other very important option that will benefit both Visual Studio .NET users as well as MonoDevelop users is the “Import” of MonoDevelop solutions. My goal for this one is to present an Open File dialog box that will allow a user to select a *.cmbx (MonoDevelop solution or workspace file) or a *.prjx (MonoDevelop project file) for convert ion into the Visual Studio counterpart formats (*.sln and/or *.csproj) and subsequently open them as the current solution in the VS IDE.

I say that this will benefit the MonoDevelop user community because this will require for me to write a long overdue convert ion that prj2make-sharp needs in other to endow it's sister project prj2make-sharp-lib – the MonoDevelop Add-in that is used today to import Visual Studio solution and project files into MonoDevelop. So, Todd Berman, yes this is the bases for “Export to VS .NET” menu option.

One of the issues I always have with using the word “Export” or “Import” is that I end up having a mental image that the original item before the export begun is no longer available, has change locations, or has mutated in any way shape or form. So I tend to stay away from those particular choices of words and favor more “Generate” or “Create” as my menu entry labels. Prj2make-sharp always generates a new file or files without affecting the original source or even its location. Maybe this is the transition point to talk about the creation of MonoDevelop file type from the currently open solution.

Prj2make-sharp has now been released incrementally quite a few times. I have tried to track the changes in Mono to the best of my abilities and limited time. One of the most traumatic changes – for me at least – in the short but very active history of the Mono project was the addition of the GAC.

Before the GAC was introduced (in Beta 1, I think :S) Mono was able to find library assemblies based on the users PATH environment variable or even the MONO_PATH environment variable. If that has changed or not is not as important as to what is the correct way and/or place where core Assemblies are located, I am talking about things like System.dll, System.Windows.Forms.dll, gtk-sharp.dll, etc. There was a time where all of it went to /usr/lib or /usr/local/lib and that was that – of course I am talking about *NIX. Then came the GAC which we all new we had to support sooner or later because it is a good Idea – in principle – and it is also a big part of the Microsoft .NET Framework architecture.

I never thought that it would have caused so much headaches. For most users it was not such a big deal but for people who design tools for developers such as NAnt, MonoDevelop and prj2make-sharp it became a different ball game over night. I urge you too read this email message form Miguel de Icaza: [Mono-devel-list] GAC and third party libraries: post Beta planning. and maybe some or all of the discussion that followed.

Off to work but will continue tomorrow. Who knows I may even finish and moveon.org to coding already :)

Posted by martinf at 06:40 AM | Comments (0)

June 24, 2004

Father's Day == Fiesta Nacional

Paquito is back in Korea, after having spent a week and some change with us here in Texas. We had a great time, and we will never forget the memories generated by his visit. "Dios te bendiga mijo".

I have begun writing a Visual Studio .NET Add-in that will be a good companion for Mono and hopefully assist in the deployment of source code archives that can be compiled at their destinations without the need of having Visual Studio installed. My original design goals are modest and few. The add-in will:

  • Be a self contained unit with as few external dependencies as possible.
  • Create Makefiles suitable for nmake.exe and/or gmake.
  • Import MonoDevelop Solutions.
  • Generate or Export the current solution to MonoDevelop.
  • Test in Mono.
  • Provide a GUI facility to change settings and the like for the add-in itself.

Now let me do a quick elaboration on some of the points above. The first bullet talks about being self contained. By that I mean to have the MSI (or the more likely NSIS) package use to distribute and installed the add-in have nothing more than a single library assembly (.dll). I don’t want to have dependencies from binary versions of prj2make-sharp stand alone programs or conflicts with it if it resides on the same computer.

Nothing else is required, to create Makefiles that target the nmake.exe build tool. However, when generating Makefiles intended to be used by gmake in *NIX environments, I may provide a setting for users to specify the base directory where Mono 1.0 should be found. The setting will be pre-populated with /usr/lib.

As usual I am running a bit late for work and will continue and/or finish discussing the remaining four points in a future blog entry.

Posted by martinf at 05:35 AM | Comments (0)

June 03, 2004

Surprise!

So I am in this meeting with my a co-worker and friend Dan Scott when I receive a phone call from my wife telling me that she is at the HEALTHvision parking lot with some invoice she wants me to look at. I thought that was some unlikely story but I thought I go check it out. As I walk to the parking lot I see my son Paquito leaning against Maria's mini van!

Yup, it was quite the surprise!!!!

He leaves on June 13 back to South Korea to help his militray unit with the packing just before they head out to Iraq this August.

Posted by martinf at 06:06 AM | Comments (0)