Stayin' Alive in a Windows World

27. November 2006 13:55 by Csaborio in General  //  Tags: ,   //   Comments (0)

It’s been almost 5 months since I brought a black MacBook to work.  At first I thought it was not such a good idea due to the incompatibilities I could face.  So far the experience has not been a bad one, and I can run most of the software I need without having to strive against slow performance or incompatibilities.  With the exception of screwing up some of Jose’s powerpoint slide animations, I don’t think there has been mayor damage done.

The following compromises a list of the software that any individual looking for to work in a Windows environment should have on their list:

Parallels: If you must run Windows on OS X, then you need Parallels.  It’s performance is superb and it will allow you to run a Virtualialzied Windows with a little performance hit.  This blog I am writing as of now is under BlogJet using a copy of WindowsXP.  I also run Office 2007, Firefox, Messenger, Project, and Visual Source Safe (watch out Parallels, someone is lurking in the dark)

Crossover: it allows you to run Windows binaries without having to run Windows.  It is based on the Wine project and so far I have been able to run Office 2007 and Internet Explorer 6 without having to run Windows.  Still on early beta stages but nonetheless quite impressive.

TSClient: I mentioned this on an earlier post.  It has become my default RDC client, extremely fast.

NeoOffice: a port of OpenOffice but does not require x11 on your system.  It runs faster than Microsoft Office for Mac on my MacBook.  Until there is a universal binary for Office, I am using this one for Office productivity.

And finally, if all else fails (as is the case of running VTune on a VM), I can always boot into Windows natively using BootCamp.   Fortunately, thanks to the great programs above, this is something that is happening less often every time.

Automatically Adding Users to a Windows 2003 Server

27. November 2006 13:35 by Csaborio in General  //  Tags:   //   Comments (0)

A crucial part when carrying out training labs is setup. Without a well thought plan that takes into consideration everything that can go wrong (because it will), your labs are toast. We've done about ~70 trainings so far and in every one of them something pops up. With more and more trainings, you start to develop a sixth sense of complete and utter pessimism that will help you identify problems before they even show up.

That being said, we are in the middle of testing all of the setup for a series of Virtualization training labs in December 2007. We needed a way to quickly and painlessly add a bunch of users to a Windows 2003 Server. The following is the series of commands to create a user callled student1 on the server with Administrative priviledges that belongs to domain admins and an account that never expires:

net user student1 p@ssw0rd /ADD /DOMAIN
net group "domain admins" student1 /ADD /DOMAIN
net localgroup Administrators student1 /ADD
net accounts /maxpwage:unlimited /DOMAIN

There are plenty more of options so check out the net command to find a command that best suits your need.

Migrating VB6 to VB.NET Safely

27. November 2006 05:48 by Fzoufaly in General  //  Tags:   //   Comments (0)

This is an interesting blog post about some tips to prepare for a VB migration. 

Link to Migrating VB6 to VB.NET Safely « Star Struck Developer

Interestingly, now the dilemma is no longer weather I should upgrade or not but HOW do I upgrade and minimize the potential issues in doing so.

"But life does march on and .NET is now an essential part of any serious developers inventory. So this is the strategy I am following to at least provide the team the opportunity of migrating code to C# or VB.NET."

Safe Migration to VB.NET

27. November 2006 05:44 by Mrojas in General  //  Tags:   //   Comments (0)
    My colleague Juan Pastor forward us an interesting link. It was called "Safe Migration to VB.NET". By Phillip Munce.
He provides an interesting point of view of how to address a migration. He's approach is based on the Agile Development strategies.
Mainly he states that a good way to address a migration project is developing a set of Unit Test cases. For which you could use either NUnit or the Visual Studio Team System.
In that way is easier to establish a measure that let's you know when the project is migrated if it meets the original application test cases.
He also sees it as an oportunity to document and improve maintability for the application.
Here at Artinsoft we also give special attention to testing and the establishment of the test case scenarios because they are our main tool to determine the "Functional Equivalence"
 of the application being migrated which is the goal of most of our clients.
Testing is not always appreciated by developers but as applications grow and maintability becomes complicated, it is harded and harder to keep track that new functionality and patches do not destroy the rest of your application.
Take a look at Phillips Blog here.

Identifying Key Stakeholders, Part II

24. November 2006 16:25 by jpena in General  //  Tags:   //   Comments (0)

There are several key questions you need to ask yourself regarding each particular stakeholder that identify in your project.  Answering these questions will help you understand these people’s needs and concerns, and will allow you to classify them so you can communicate the right message to each individual stakeholder or group of stakeholders.  Some of these questions are:

  • How will this person (or group) be affected by the migration project? How will their work be changed?
  • What is the level of influence that this person has in the project? Are they supporting the project, threatening it or just awaiting its results?
  • What is the level of authority that this person has in the organization?  Is he or she a decision maker?
  • What kind of information does this person expect about the project? Do they need progress, financial or technical reports?
  • What kind of language should be used with this person? Technical, administrative or just simple language?

Note that this list is not exhaustive, as more questions may be necessary depending on your particular situation.  Once you have answered these questions, you will be able to classify project stakeholders into several groups, based on their influence, authority, concerns and informative needs.  This will allow you to focus on the most important stakeholders (without abandoning the other ones, of course!), and to project the most appropriate messages about the migration project to each stakeholder or group of stakeholders.  Keeping important stakeholders on your side will help pave your way to a successful migration project!

In the next posts, we will take a look at some of the typical stakeholders in a migration project.

Oh, yes, and the upgrade guide as well!

24. November 2006 09:53 by Jaguilar in General  //  Tags:   //   Comments (0)

Planning and performing a Visual Basic 6.0 migration is not that straightforward. You need to keep track of many small details, and you need to keep in mind the complete migration process – in other words, always see the big picture. The tool I posted about yesterday, the Code Advisor and the Assessment Tool, are invaluable in the help that they provide during the planning stages of the project. For the complete upgrade process, however I have to recommend the Upgrading Visual Basic 6.0 Applications to Visual Basic .NET and Visual Basic 2005 guide from the patterns & practices Developer Center over at MSDN.

This guide was written as a joint effort between Microsoft and ArtinSoft, and details all the steps necessary to succesfully upgrade your applications to Visual Basic .NET. It also deals with the actual technical hurdles you normally face when performing these types of conversions. Overall it is very comprehensive, and should be in your library if you ar planning or performing one of these projects.

If you are using the VB Upgrade Companion, and decide to upgrade to C# instead, most information from the guide still applies. That is one of the beauties of the .NET Framework – the concepts from VB.NET work with C# as well.

And don't forget the Assessment Tool!!!

23. November 2006 12:34 by Jaguilar in General  //  Tags: ,   //   Comments (0)

Yesterday I blogged about the Code Advisor, that will pinpoint common programming practices that difficult the migration of a VB6 application. Well, another very important tool that you can add to your arsenal is the Visual Basic 6.0 Upgrade Assessment Tool. This tool was developed by ArtinSoft, and creates a spreadsheet with detailed information of actual upgrade issues that will be present in the .NET code after the migration.

This tool is also a free download from Microsoft’s website. You can also check out ArtinSoft Visual Basic to .NET page for more information on upgrading Visual Basic 6.0 applications.

Remeber the Code Advisor!

23. November 2006 12:02 by Jaguilar in General  //  Tags: ,   //   Comments (0)

If you are considering to upgrade your Visual Basic 6.0 application to Visual Basic .NET or C#, remember that the recommended first step is to run Microsoft’s Code Advisor. The Code Advisor, according to the website:

The Code Advisor for Visual Basic 6 is an add-in used to review your code to ensure that it meets predetermined coding standards. The coding standards are based on best practices developed by Microsoft to produce robust and easy-to-maintain code.

The Code Advisor detects issues that are not converted automatically during the automatic migration, increasing the manual work required after running the conversion tools. These include Variant variables, late binding, soft binding of different objects, and others.

Check it out: Code Advisor for Visual Basic 6.0

Updating Win32 API Calls

23. November 2006 05:30 by Jaguilar in General  //  Tags:   //   Comments (0)

The Visual Basic Upgrade Companion allows you to convert calls to the Win32 API from Visual Basic 6 to C#. API calls in VB6 have the following syntax:

Public Declare Function RegOpenKey Lib "advapi32.dll" _
Alias "RegOpenKeyA" (ByVal hKey As Long, _
ByVal lpSubKey As String, phkResult As Long) As Long

The equivalent API call in C#, using platform invocation (p/invoke) is:

[DllImport("advapi32.dll">)]
extern public static int RegOpenKey(
IntPtr hKey,  string lpSubKey,  out IntPtr phkResult);

Even though the upgrade companion performs the conversion automatically, there are times when the protoype of the function may be slightly off. This happens mostly because of the changes in the data types between VB6 and C#. One example is when a string is sent to a method and its contents are modified in the call. String management is always tricky, and, in those cases, chances are that the VB Upgrade Companion will convert the VB6 fixed length string to a System.String object in C#. The correct conversion would be a System.StringBuilder object – remember that Strings are inmutable in C#, but StringBuilders are not, and they can be marshalled to the API as the strings that need to be modified.

If you ever have a doubt regarding the prototype of a Win32 API function in C#, I recommend that you check out PINVOKE.NET. This website contains the P/Invoke signatures for most methods of the API, classified by DLL. It is very complete, and can definitely save you lots of time if you are having problems with a particular methods.

If you are new to p/invoke, I also recommend that you check out this MSDN article on the subject.

Creating a Scheduled job in ORACLE

22. November 2006 06:41 by Mrojas in General  //  Tags:   //   Comments (0)

This is easily done with the Oracle 10g interface, there is a nice article that explains that in at this address

However sometimes you don't have access to the Administrative UI. Is there another way to create or schedule jobs?

Sure just use the he DBMS_SCHEDULER package.

There are several things you should do:

1. GRANT CREATE JOB TO MYUSER;

2. ALTER SYSTEM SET RESOURCE_LIMIT = TRUE;

3. Create Scheduler Program:

BEGIN
   DBMS_SCHEDULER.CREATE_PROGRAM(
      program_name=>'MYUSER.PROGRAM1',
      program_action=>'begin
         INSERT INTO TABLE1
         SELECT * FROM TABLE2;
         end;',
      program_type=>'PLSQL_BLOCK',
      number_of_arguments=>0,
      comments=>'Loads a table from another',
      enabled=>TRUE);
END;

 4. Create a schedule program:

BEGIN
   sys.dbms_scheduler.create_schedule( 
      repeat_interval =>   
         'FREQ=DAILY;INTERVAL=2;BYHOUR=18;BYMINUTE=0;BYSECOND=0',
      start_date => 
         to_timestamp_tz('2006-11-22 US/Eastern', 'YYYY-MM-DD TZR'),
      comments => 
         'Schedule for periodic loads',
      schedule_name => '"MYUSER"."DOLOADS"');
END;

 

5. And finally link both together to create a JOB:

BEGIN
   sys.dbms_scheduler.create_job(
      job_name => '"MYUSER"."JOB1"',
      program_name => 'MYUYSER.PROGRAM1',
      schedule_name => 'MYUSER.DOLOADS',
      job_class => 'DEFAULT_JOB_CLASS',
      comments => 'Loads a table',
      auto_drop => FALSE,
      enabled => TRUE);
END;

At least this is how I did it. This is just a quick summary of the following article:http://www.oracle.com/technology/oramag/oracle/04-jul/o44tech_dba.html

 

 

Acronis P2V/V2P

20. November 2006 16:32 by smurillo in General  //  Tags:   //   Comments (0)

There are news from Acronis on their "introduction" to the P2V scenario, and the quotes only mean that this is definitely not unexplored territory for them. Acronis True Image is a tool that helps you create a full backup of your hard disks. It is intended to be used for backup and recovery of your systems, but for years now, lots of IT administrators out there have found an alternative use for it, P2V. Although it wasn't meant to be used with this purpose specifically, it can certainly help do the trick.

P2V stands for Physical To Virtual conversion and the idea is that in order to explode part of the benefits of virtual machines, you must not only be able to create new VMs from scratch but also take your existing workloads and move them into a virtualized environment and back.

In the past if Acronis True Image was the weapon of choice for you to complete this task, then there are good news for you. Acronis has announced that a new product called Full Circle will be released this year, and although it holds all of the benefits for image cloning that you know and like, this product is specifically intended to fit your P2V needs, and as its name hints it, your V2P (virtual to physical) requirements as well. It supports both 32-bit and 64-bit x86 hardware, virtualization software from VMware, Microsoft, Xen, Parallels and SWSoft, and Windows and Linux guests, which makes it a very complete and universal proposal.

This product will be made available in December, no word on pricing yet. Read more about Acronis Full Circle here.

TSA providing Airport Security Checkpoints Wait Times

18. November 2006 09:32 by Csaborio in General  //  Tags:   //   Comments (0)
Whether you travel a lot or just a few times per year, you have probably noticed the nuisance that it is dealing with the security checkpoints.  Depending on the airport you are in, it can easily take you anywhere from 20 minutes to up to an hour (in my experience, MIA is the worst airport in waiting times for anything - even for a sandwich!).  If you are flying in internationally to the US and you need to make a connection, there really is no way of knowing how bad the security checkpoints are to see if you are going to make your flight - until now.

TSA has published this web page that lists the estimated wait time when going through security.  By selecting a couple of check boxes, you can get detailed information on the average wait time to arrive at a particular gate at a particular time.  This can really help you out beforehand in case you will miss your flight to reschedule a new one ASAP.


Identifying Key Stakeholders, Part I

17. November 2006 14:08 by jpena in General  //  Tags:   //   Comments (0)

Stakeholders are people who will somehow be affected –positively or negatively-- by your migration project.  In a typical migration, you will be able to identify stakeholders that perceive the project with great enthusiasm: they know that having their applications moved to newer technologies will improve their work, making them more productive as developers and even as end users.  On the other hand, some stakeholders will be afraid of the results of the migration project.  For example, some developers may fear that their skills will become obsolete in the new software platform, while some managers may worry about the possible disruption that the transition to the new system may generate, and some end users may want to minimize the learning curves that the new version of the application may mean to them.

In an organizational context, you can’t execute a project without taking stakeholders into account.  Sooner or later, they will show up in your project to influence it according to their needs or preferences, which in turn may result in helpful support or frustrating disapproval.

The first step that you have to take regarding stakeholders is identifying them.  Look around you and identify those people that in some way will be affected by the migration project.  Make a list of identified stakeholders, then try to identify their interests and the way in which the project may cause an impact to each one of them.  

A key word in stakeholder management is communication.  You will be able to deal with the different stakeholders in your project if you learn how to communicate with each one of them, and this is what we will cover in the next few posts.

AJAX in ASP.NET

17. November 2006 11:08 by Mrojas in General  //  Tags:   //   Comments (0)

ASP.NET AJAX 1.0 Beta 2 (formerly code-named “Atlas”) is now available for download.

ASP.NET AJAX allows creating great responsive interfaces. I think this framework was previously called “Atlas” you might even find a document on the site describing how to migrate your Atlas applications to this release. http://ajax.asp.net/files/Migration_Guide.doc

Recently I reviewed the samples at http://ajax.asp.net/ajaxtoolkit/. These are some of my impressions:

Accordion



à à

AlwaysVisibleControl


Animation


I t allows to add effects to pages, the examples popups a region. You can do a lot more.

CascadingDropDown


This is very simple a common scenario where the combo box values depends of what you select on another combo.

CollapsiblePanel



It adds an widget to the panel that allow it to collapse.

ConfirmButton


Just for the typical are you sure!

DragPanel


Cool!! It lets you create windows that you can drag around.

DropDown


Add a nice style of menus




DropShadow


Mmm just add a shadow to your panels

DynamicPopulate


:/ it just like a way to generate something in the server with ajax. I really don’t get it a lot.

FilteredTextBox


Client side validations

HoverMenu


I think is handly is a way to display additional info for web page element and only show them when needed

ModalPopup


I like this!! It really lets the user focus on what you want


MutuallyExclusiveCheckboxes.


Not that sexy but useful in some cases when you have several check boxes options and some contradict the other.

NoBot



This control avoids entries by automated processes (BOTS)

NumericUpDown

The name says it all

PagingBulletedList


I have never needed this but looks nice


PasswordStrength


Nice. It gives feedback to the user indicating if his/her password is good enough







PopupControl


Nice!! It adds popability to any control. You can use it to make data entry easier

Rating


Jejeje Starts rating control

ReorderList


Is a list where you can drag the items to reorder them and the datasource will be updated

ResizableControl


Great! Resizable images and text containers. I suppose it can be also applied to other things.

RoundedCorners


:/ not very exciting just adds rounded corners to panels

Slider



Slider controls

TextBoxWatermark


Displays a message in a textbox before the user enters some text. After he enter the text the message disappears.

ToggleButton


Modifies checkboxes to use images

UpdatePanelAnimation


Adds effects to panels things like fade and Collapsing and background changes

ValidatorCallout


Very nice



Seamless Remote Windows

17. November 2006 09:52 by smurillo in General  //  Tags:   //   Comments (0)

Making a remote desktop connection to a server just to run a single application is a very common situation. It is true you can configure a connection to log on automatically and even launch the desired application. For example you could specify the username, password and Notepad as the application to launch.

RDP01

But once you connect you get the same old Remote Desktop Connection window with just Notepad inside, which is still disruptive. Imagine if you could see a remote window as if it was running locally, resize it, move it and close it just like a regular window.

This feature is included in RDP 6.0, but if you want to try it without upgrading your system first, then you can access this article on the Code Project website. For developers out there this is a great introduction to the Remote Desktop Protocol, and for those who are not interested on getting to understand the protocol, you can just download the application from the author Martin Wickett on 2005.

Functional Equivalence first, Improvements later!

17. November 2006 07:55 by jpena in General  //  Tags:   //   Comments (0)

Migration projects can be quite complex.  When you take an application built on a legacy platform and port it to a new language, numerous changes have to me made to achieve the state of Functional Equivalence in the target platform.  Because of this, it is recommendable to make Functional Equivalence the most immediate goal of the project, leaving any desired improvements to the application as post-migration tasks.  This way, no additional bugs will be introduced due to new code or application changes.

Project leaders should always keep this in mind when directing a migration, since new requirements and improvements will add extra complexity and risk to the migration project.  Exceptions to this rule are those improvements that are automatically performed by the migration tool, such as the conversion to Structured Exception Handling and the conversion to ADO.NET that are executed by the Visual Basic Upgrade Companion.

Application improvements can be done gradually once Functional Equivalence has been reached.  In the case of migrations to .NET, applications can be improved in a step-by-step process to take advantage of the features provided by the target platform.  Some of the improvements that are recommended as post-migration tasks are:

  • Code Refactoring based on the Object Orientation features of .NET.
  • Implementation of Web Services.
  • Changes to the User Interface.
  • Performance Testing and Tuning.

MSBUILD

15. November 2006 18:13 by Mrojas in General  //  Tags:   //   Comments (0)

MSBuild

Microsoft has develop the Microsoft Build Engine (MSBuild). This is the new build platform for Microsoft and Visual Studio. It is an XML configuration (very similar to other build tools like ANT) It allows to orchestrate and build products in build lab environments where Visual Studio is not installed.

It is a great aid with other tools like CruiseControl.NET, relation that I will further elaborate in other posts.

The following is very simple MSBuils script

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

<PropertyGroup><OutputPath>.\bin</OutputPath></PropertyGroup>

<Target Name="HelloWorld">

<MakeDir Directories= "bin"/>

<Csc Sources="HellWorld.cs" TargetType="exe"

OutputAssembly=".\bin\HelloWorld.exe" />

</Target>

</Project>



This sample shows the basic structure of an MSBuild. This is a very basic script maybe not very useful, but general scripts will be made up of Several Targets, Properties and some dependencies between them.


Properties

To define properties just define your tags inside a <PropertyGroup> Tag. If you want for example to define an OutputPath property just do something like:


<PropertyGroup><OutputPath>.\bin</OutputPath></PropertyGroup>

And to use it just reference it as $(OutputPath)


Groups of files

You can specify groups of files with the ItemGroup tag

<ItemGroup>

<File_Image Include="$(OutputPath)\Image.jpg"/>

<cs_source Include=".\*.cs" Exclude=".\Foo1.cs" />

</ItemGroup>

And you will reference them like @(File_Image) and @(cs_source).


Dependencies between Targets


<Target Name="CreateOutputPath" Condition="!Exists('$(OutputPath)')">

<MakeDir Directories= "$(OutputPath)"/>

</Target>

<Target Name="FooCompilation" DependsOnTargets="CreateOutputPath"

Inputs=" Foo1.cs"

Outputs="$(OutputPath)\Foo1.exe">

</Target>


Error Starting Carmine: The credentials provided do not have sufficient privileges on localhost

14. November 2006 13:10 by Csaborio in General  //  Tags:   //   Comments (0)

Today, while creating the final image for our SCVMM (System Central Virtual Machine Manager), one of the guys in our team stumbled into a problem in which the SCVMM (which I will refer to as Carmine from now on), was refusing to start up even though we had met every pre-requisite it had listed.  We were completely baffled, the error given was:

Access denied while contacting the Virtual Machine Manager server.  The credentials provided do not have sufficient privileges on localhost.(ID: 1605)

The account had full admin privileges, so what could be wrong?  The machine had joined our domain, how come it did not have the right credentials?  Well, after a while Jose suggested to check if the DNS were set to that of the domain controller (see previous entry regarding this) and indeed that was the culprit.  After setting the DNS severs, Carmine started up without any problems.

Virtualization Training

10. November 2006 15:57 by Csaborio in General  //  Tags:   //   Comments (0)

Are you new to Virtualization?  Do you want to learn the best ways to manipulate Virtual Server using the Virtual Server API?  Do you want to learn about future Microsoft Virtualization technologies such as Carmine and VT support in Longorn?  Well, today is your lucky day.

In its continuing effort to provide customers with the latest technology, Microsoft has launched the Virtualization Events lab series.  During 3 days, you will learn everything you need to know in order to code your way through Virtual Server.  Please bear in mind that the lab is not targetted for the IT Pro, but instead for programmers who want to learn the latest tips and tricks without having to read through thousands of pages of documentation.

Virtualization is a very hot topic, and I would not be surprised if the events filled up very quickly, so act fast if you want a seat reserved!

VHD Test Drive

10. November 2006 14:52 by Csaborio in General  //  Tags:   //   Comments (0)

On November 6th, Microsoft had a big announcement to make.  This announcement is only the beginning of something that will, without a doubt, become a huge success: the VHD Test Drive program.

The program’s idea is that a user can download a pre-configured VHD that has and operating system already installed.  The idea is evolved a bit more in the sense that the VHD not only has an OS, but also has some kind of pre-configured environment in order to test out a particular product without the hassle to go through difficult setups.

For instance, if you want to test drive Exchange Server 2007 quickly and effortlessly, just download this VHD and you are good to go.  Want to install something on Windows Server R2 without having to install the OS?  This VHD right here will help you accomplish your task. 

There are 4 VHDs available for download, the entire list is summarised below:

For the official press release, click here.

Categories