QUIZ: What do you know about VB 6 migration?

4. October 2006 11:18 by Fzoufaly in General  //  Tags:   //   Comments (0)

SearchVB website just published a QUIZ to test your knowledge about VB6 migration.

I read the questions, the answers and the pointers to more resources.  It is a fun way to learn a bit more about the process.  I do agree with most answers and pointers even if sometimes the comments on why to move or how to move are a little away from what I believe.  I still think you can find this useful.

Webcast: How to upgrade legacy VB 6 applications

4. October 2006 10:59 by Fzoufaly in General  //  Tags:   //   Comments (0)

-- "It's not tremendously exciting stuff and we'd all like to be able to start from scratch, but there's a huge investment in these legacy applications," said Keith Pleas, MVP architect and head of Keith Pleas & Associates. --

There is a fundamental question in the software world.  Are applications like cars? Do we use them a few years and then we throw them away?  Or are applications like buildings?  We treat them as important assets and we try to extract as much value as possible from them?  Nobody blows away a building just to build a new one from scratch ( well... maybe in Vegas!) , on the other hand we tend to do exactly that with software applications.  Should we???

You ought to yourself and the company you work for to evaluate Automatic Migration as an option to bring new life to VB6 applications.  As Keith points out, there is a huge investment and we need to maximize the ROI.

This web cast about the VB Migration Guide gives you a nice overview of the content of the book and some essential guidance to make decisions.

Link to Webcast: How to upgrade legacy VB 6 applications

OpenMP is your friend

4. October 2006 08:42 by Jaguilar in General  //  Tags: ,   //   Comments (0)

OpenMP is very easy-to use API that you can use to very rapidly add multi-threading to your C/C++ applications. OpenMP allows you to parallelize the execution of a region of code by just adding a few pragmas to the code. For example, take this code:

   for(int i = 0;i<=100;i++){
       a[i] = a[i]*10;
       ...
   }

The code above performs a for loop sequentially. Since each iteration could be executed independently, we can easily add multi-threading to the application by adding these simple pragmas:

#pragma omp parallel for
   for(int i = 0;i<=100;i++){
       a[i] = a[i]*10;
       ...
   }

The omp pragmas tell the compiler to generate code to parallelize the execution of the for loop. That means that if you run this code on a 4 core machine, it will create 4 threads, and each one will execute 25 iterations of the loop. Just by adding those pragmas, you now have a multi-threaded application that takes advantage of multi-core systems.

Yes, it's that simple.

VB Migration in Japanese: パートナー情報

3. October 2006 11:15 by Fzoufaly in General  //  Tags:   //   Comments (0)

My friend Chazu Lee from Microsoft in Japan shared this page with me.  It contains lots of resources in Japanese for VB Migrations.  Thank you Chazu!!

 

Link to パートナー情報

ArtinSoft News And Events: ArtinSoft and Microsoft Announce New Webcast on VB6 to .NET 2005 Migration Methodology

3. October 2006 11:05 by Fzoufaly in General  //  Tags:   //   Comments (0)

In this webcast, we present a complete and proven methodology for semi-automatically upgrading a Microsoft Visual Basic 6.0 project to Microsoft Visual Basic .NET 2005. We cover all of the phases involved in migrating to Visual Basic .NET 2005, from initial assessment and return on investment (ROI) calculation to final testing and deployment of the application. Tune in to learn about ArtinSoft’s proven expertise, including actual statistics from real-world migration projects.

Presenter: Hendel Valverde, Senior Consultant & Trainer, ArtinSoft

Link to ArtinSoft News And Events: ArtinSoft and Microsoft Announce New Webcast on VB6 to .NET 2005 Migration Methodology

Centro de Excelencia en Migracion MSDN (Center of Excellence for Migrations)

3. October 2006 10:56 by Fzoufaly in General  //  Tags:   //   Comments (0)

 Si usted habla español este sitio es un excelente repositorio de información acerca de las migraciones a .NET en general.  Por el momento el enfoque es más hacia Visual Basic.

Link to Centro de Excelencia en Migración MSDN

 

"El CEM.Net es un programa de apoyo a clientes en Latinoamérica, que busca asegurar el éxito en los proyectos de migración de software hacia la plataforma .Net. "

El CEM tiene cómo meta \de compartir conocimiento, dar soporte y apoyar el creciente número de clientes con necesidades de migración a .Net. ¡Actividades como eventos en línea y capacitaciones en sitio están disponibles!

-----

The Center of Excellence for migration is a Microsoft program targeted at LATAM customers to help them make the JUMP to .NET.  If you speak spanish this is an excellent repository of information.

VB6 to .NET apps migration given a jolt or Microsoft Tool Brings VB6 Developers to .NET

2. October 2006 13:07 by Fzoufaly in General  //  Tags:   //   Comments (0)

I find it always interesting that new ways to postpone the VB6 migrations are introduced. the title of this post is the combination of an Infoworld and an Eweek article on the subject.  I understand where a tool (Microsoft InteropForms Toolkit 1.0 ) that attpepts to tempt VB6 developers use .NET while retaining a safety net in VB6 is coming from. The whole idea is to reduce the risk, to make a transition smoother. But are we really achieving the business benefits by doing it? I think it goes all back to the fact that people do not believe an automatic migration from VB6 is possible. I firmly believe it. If you have followed this blog, you probably believe it too.  In any case, every effort in the direction of helping customers move is laudable!

 

Look at the Infoworld article: http://weblog.infoworld.com/techwatch/archives/008022.html

or the Eweek article: http://www.eweek.com/article2/0,1895,2019386,00.as...

Upgrading Visual Basic 6 to C#?

2. October 2006 12:49 by Fzoufaly in General  //  Tags:   //   Comments (0)

This is another big overlook of mine.  ArtinSoft's VB Companion has been able to directly generate C# for ages.  How come I have not told about it here?

Anyway, maybe the question to ask is: Should I move to VB.NET or C#?  Of course the answer is not obvious.  From the technical perspective both languages give you pretty much the same power.  Microsoft is positioning VB.NET more as a RAD environment and C# more for Systems programming.  However, in my opinion it is more a question of preference.  If your company has chosen C# for .NET development then the VB Companion can help you go straight there.

What do you prefer? C#? or VB.NET? Which one do you think is easier for the VB6 Programmer?

Upgrading Visual Basic 6.0 Applications to Visual Basic .NET and Visual Basic 2005

2. October 2006 04:44 by Fzoufaly in General  //  Tags:   //   Comments (0)

I cannot believe I just overlooked this link for so long.  I have announced back in May that the VB Upgrade Guide is available in print, but I forgot to mention that it is also available for download at MSDN. 

Link to Upgrading Visual Basic 6.0 Applications to Visual Basic .NET and Visual Basic 2005

This is a great resource to understand how to perform the upgrades.  In addition, if you are looking for the VB Companion mentioned in the guide please go to: http://www.artinsoft.com/pr_vbcompanion.aspx it substantially reduces the cost of an upgrade.

 

I'd like to hear comments on the usefulnness of the guide.  Let me know!

SCVMM Guest OS Profiles

27. September 2006 06:33 by smurillo in General  //  Tags:   //   Comments (0)

As you may know already System Center Virtual Machine Manager can be used to create virtual machine templates. Templates have three main elements: a VHD file to use as a base for the template, a hardware profile and a guest OS profile. If you are familiar with Virtual Server you will have no problem understanding the first two, but the guest OS profile will be news to you.

The guest OS profile contains Sysprep information. When you create a virtual machine based on a template it will copy the selected VHD to it, use the hardware profile you select, and sysprep the virtual machine using the guest OS profile. Clive Watson makes an introduction to Templates and Profiles in his blog, but I just wanted to clarify a couple of things you need to have in mind before trying to make this work.

When you create a virtual machine based on a template the creation process includes a few additional steps:

On step 3 a Sysprep Virtual Floppy Disk is created, and then on steps 8, 9 and 10, that disk is attached, the VM is started and the disk is released. By then the VM should have been started and Sysprep'd, after which it is just shut down and ready to go.

Two important things you should consider for this to work are:

  1. When SCVMM starts the VM it doesn't just move on to step 10, it waits for a heart-beat. That means the image you use needs to have VM Additions installed first. Therefore a blank VHD will never work for this.
  2. SCVMM will not really Sysprep the machine, it will simply use the Virtual Floppy Disk to enter the guest OS profile as the Sysprep data. This means that the VHD will have to be Sysprep'd first by the Administrator, and that it should be ready to run fully automated, so that the OS can start and so that the VM Additions can send a heart-beat back to SCVMM. Jose Aguilar explains how to fully automate sysprep on his blog.

If your VHD is not pre-sysprep'd the virtual machine will still be created, but the guest OS profile will simply be ignored. The VM Additions are completely necessary, otherwise the creation process will fail.

Sysprep on Windows XP

26. September 2006 12:31 by Jaguilar in General  //  Tags: ,   //   Comments (0)

A while back I documented the process for doing a Sysprep on a Windows 2003 installation. Well, that same process works for a Windows XP installation. The sysprep GUI on Windows XP is slightly different, but you only need to make sure that the “MiniSetup” and “Pre-Activate” options are selected before pressing the Reseal button and shutting down the machine.

Here are the instructions to run Sysprep on Windows 2003.

Automating windows

25. September 2006 10:22 by smurillo in General  //  Tags:   //   Comments (0)

Do you ever find yourself doing repetitive tasks on your computer? When you are a developer and this happens to you, the tendency is to start thinking about how you can automate that task and if it's worth the effort. You could immediately start thinking about WMI or API's, but there could probably be a simpler and quicker solution, macros.

I remember using the discontinued Macro Recorder on Windows 3.1 and thinking how useful it was. Recently I found myself taking lots of screenshots and adding borders to them using Paint Brush (I know there are lots of image editing tools that could easily do that for me). When I had done it a few times I started remembering the old macro recorder and I thought it couldn't have helped me much on this.

I started looking for modern alternatives and found AutoHotkey and what a long way we've come. It's not just a recorder, you can automate all sorts of stuff, interact with windows and controls, wait for events and automate tasks through hotkeys and hotstrings. Best of all, you work with text scripts that you can edit manually and even compile them into executable files.

Since I have been working on the virtualization scenario for a while now I also think about the impact this can have in terms of virtual machines. For example, perhaps you could add startup scripts that will install applications that could not be included in the image for licensing reasons.

Visual Studio Magazine: Refactor Your Way to Migration Success

19. September 2006 10:19 by Fzoufaly in General  //  Tags:   //   Comments (0)

 This is a very interesting article with yet another way to approach the Visual Basic migration issue.  It demonstrates once more that the process is not only feasible but highly rewarding.

Refactor Your Way to Migration Success

Source: Visual Studio Magazine – Refactor Your Way to Migration Success

 

In addition, I would like to also comment that ArtinSoft's Visual Basic Upgrade Companion product already implements most of the suggested refactorings and thus reduces dramatically the time required to move from VB6 to Optimized .NET.

SCVMM on Domain Controllers

19. September 2006 09:34 by smurillo in General  //  Tags:   //   Comments (0)

While I was playing with System Center Virtual Machine Manager Beta 1 I bumped into a problem when I tried to add a second host. Since the Virtual Server service won't even start on a VM, you can't use a VM as a host; you depend on physical equipment to test SCVMM properly.

We are working with limited resources and the only x64 host available happens to be a domain controller. The other available host is a 32-bit computer, the one we are using to run SCVMM, which we are also using as a host. While trying to add the host we got the following error:

"Error (406) Access denied while contacting the virtual machine host x64svr0x.virtua"

At first we thought it would be a domain configuration problem, it wouldn't be terribly unusual. But everything else was working just fine so we started thinking about other theories. This is very normal for beta versions of a product.

After getting some help from the nice people at Microsoft, I can tell you that if you are having this problem and you are thinking of theories too, you should know that installing either SCVMM or host agent on a DC is not supported in beta1. Keep that in mind if you are testing SCVMM.

Joel Spolsky: Things you should never NEVER Do

19. September 2006 03:57 by Fzoufaly in General  //  Tags:   //   Comments (0)

"When you throw away code and start from scratch, you are throwing away all that knowledge. All those collected bug fixes. Years of programming work. You are throwing away your market leadership. You are giving a gift of two or three years to your competitors, and believe me, that is a long time in software years." Joel Spolsky. -- (The second NEVER in the title is mine, not Joel's!.)

I am not sure if when Joel wrote this quote (to which I profoundly agree) was thinking about automatic conversion of software.  I absolutely agree that if you have a running applicatiion and you want to move it to a new platform, a rewrite from scratch is the WORST possible option.  You would not believe how frequently I see this happening in my day to day work at ArtinSoft.

When you can automatically transform your source code to a new language you can have the best of both worlds.

Let me explain.  With automatic conversion you maintain all the knowledge that is embedded in your current application.  At the same time, you are able to move your source code to the more modern environment and immediately be able to take advantage of the new features and to effectively extend the life of your code.  The cost of migration of programmers skills is also reduced dramatically by the automatic upgrade approach.  What is the most difficult aspect to learn for a programmer?  Is it the new language or the inner workings of an application?  I would argue it is the second aspect.  Programmers are very adaptable in terms of technology, but learning the intricacies of a business model supported by an application can take years!  Again, the automatic migration approach allows a smooth transition for a programming team.  All the knowledge they had about the application is still there.  In fact, they can easily study the converted code and learn from it.  It is much easier to start modifying an existing program than creating one from scratch when you have never programmed in a certain language.

In summary, Joel is right.  You should NEVER throw away your code.  Automatic Upgrade from Visual Basic 6 to Visual Basic .NET is an excellent option to modernize your app while maximizing its ROI.

Getting started: Tips for VB6 to VB.NET 2.0 migration

19. September 2006 02:49 by Fzoufaly in General  //  Tags:   //   Comments (0)

 Some comments to the VB Upgrade Guide and how to approach the Migration exercise.

Link to Getting started: Tips for VB6 to VB.NET 2.0 migration

 

An excerpt of the above page that I believe is important to always remember when approaching a migration:

Functional equivalence
A migration of any kind tends to face a quandary. "As long as this application is being moved over," someone will ask, "why don't we add some features?"

In organizations large and small development managers are constantly pressed to create new functionality, but the essential goal when you move an application is to create a baseline reference of the app and the development team. How long does it take to develop/migrate? What has to be done? Does it still work the same? These are questions you need to answer, but cannot answer with assurance, if your application has morphed into something new.

Said Pleas, "When you add a feature, you are satisfying somebody's need and that can be important if they have the budget." It can be difficult to focus on the objective of learning as you migrate, Pleas indicated, but that is just what is needed if you are to achieve a successful outcome.

"It is very important to separate the actual migration project from further advances, said Eugenio Pace, product manager, Patterns & Practices, Microsoft. "We have found separating the migration [from other functional development] is very pivotal."

"It is important because you now will have a baseline against which you can test. If you had a test [before in the VB6 version], the application should now perform in the very same way," he said.

Achieving a "functional equivalent" is crucial, said Fedrico Zoufaly. As Zoufaly, Pleas and their co-authors point out in their migration guide, the process that you use becomes a key factor in upgrade projects. Maintaining functional equivalence as you move into the new technology is highly recommended.

Put another way: Take something over that you know is working in COM or DCOM and then you can actually see what is needed to make it work in .NET.

Thomas F. Abraham - On Technology : Code Conversion Tools - VB6 to VB.NET, Java to C# and more

19. September 2006 02:33 by Fzoufaly in General  //  Tags:   //   Comments (0)

Thomas, Thank you for your comments on ArtinSoft's technology. 

Link to Thomas F. Abraham - On Technology : Code Conversion Tools - VB6 to VB.NET, Java to C# and more

My blog has many links towards resources that can simplify the migration process and make the CIO justification much more palatable!

Expert's tips on SCVMM (Carmine)

11. September 2006 09:46 by smurillo in General  //  Tags:   //   Comments (0)

Clive Watson has been testing the new System Center Virtual Machine Manager Beta 1 and he has posted some articles about it on his Weblog. All of these parts together end up being a very nice user guide for this version of SCVMM:

Part 1: Introduction
Part 2: Host Groups and Self-Service policies
Part 3: Views for Hosts and Virtual Machines
Part 4: Adding a new Host
Part 5: Filtering views
Part 6: Host’s Managed Properties
Part 7: PowerShell
Part 8: PowerShell (cont’d)
Part 9: How to create a Virtual Machine
Extra: Can you help the help?
Part 10: Remote control
Extra: Summary and Diagram
Part 11: Template and Profiles

Extra: SCVMM Self-Service FAQ update

Since this is a Beta 1 version there is not a lot of documentation for you to start playing with it. Clive Watson has done a very good job on this, it’s really helpful and it can lead to a better testing of the product.

How to run Visual C++ Binaries in a 64-bit Machine without Visual Studio installed

11. September 2006 06:28 by Csaborio in General  //  Tags:   //   Comments (0)
Fact: You cannot install Visual Studio on an Itanium box - this is a "by design" issue and the installer will not budge regardless of what you try.

So if you are building binaries from Visual C++, how do you manage to make them run given that most of the libraries they need will not be found on the Itanium box?

One workaround is to statically link your binaries - which oftentimes lead to bloated sizes and defies the whole purpose of using dynamically linked libraries.

Another one is to install the Visual C++ Runtime libraries for Itanium and x64:
Install these on your 64-bit server and C++ binaries will run in all of their glory.  With Remote Debugging and these utilities installed, you won't even need a RDC to the 64-bit box to run your code.  Happy coding!

Detecting Virtual Machines

11. September 2006 05:09 by smurillo in General  //  Tags:   //   Comments (0)

I was a firm believer in the fact that an application could not for sure detect that it was running on a Virtual Machine. I had thought of things like checking if the VM Additions were installed, or checking if the hardware devices in the system matched those used by Microsoft's Virtualization products, but I still thought these techniques could not be conclusive enough, not beyond ALL reasonable doubt.

Then I decided to look for solid ways to detect if an application is running on a Virtual Machine. This could be helpful for example, if you want to release a time-limited trial version of an application you are developing and you want to restrict it from running on a VM.

Turns out if you check the motherboard on a Microsoft VM you are going to find that it was made by Microsoft. Since Microsoft doesn't really make motherboards (yet?), this is a clear indicator that you are in the presence of a VM. You can find a programmatic way to do this on Virtual PC Guy's Weblog. Of course if Microsoft decided in the future to start manufacturing motherboards your applications will refuse to work on some physical machines too :-)

I also found an interesting article on The Code Project website, that uses an exception method to detect a VM running on Virtual PC. And it also includes a technique for VMWare.

Turns out it is not impossible after all, there are plenty of ways you can find in the Web to detect when your application is running on a VM. Just be careful to choose one that is trust worthy and use it wisely.

Categories