My Resume

                                                                      Vipul Patel                                                                     


__________________________________________________________________________________________


 


Education:


                 


Masters in Computer Applications                                               


 


Bachelor of Engineering


 


Certifications           MCSD (Microsoft Certified Solution Developer in .NET)


                                    View Transcript. (ID = 657210, Code = vipuldp868)


 


Recognitions              Awarded the MVP award from Microsoft.


 


 


Experience:


Aug ‘04-Present                         St Jude Medical LA, CA


St Jude Medical is an industry leader in the field of cardio-devices. The project involves verification of Next Generation Programmer.


                                    Platform                                    Java, Excel, TDE


                                    Operating Systems                     Windows 2000/XP


                                    Testing tools                              TDE


                                    Duration                                                1 year – ongoing


 


(Stages involved: Analysis, Testing)


                                    Software Test Engineer


-    Responsible for developing Test design, automated as well as manual test scripts and executing the same.


-    Formulating test strategy for the use cases.


 


Till – Aug ’04                


                                    Software Engineer


Executed projects for multiple clients.


a. Telelogic USA  (DOORS Test Director Integration, C#, ASP.NET Web-service)


         Platform                           C#, .NET, XML Web Services, VS Installer


         Operating Systems            Windows 2000/XP


         Testing tools                     N/A


        


Telelogic Technologies Ltd. is the leading provider of solutions for advanced systems and software development. The project involved designing and implementing a XML web service in C# which would communicate between DOORS (Requirements Tool) and Test Director (Test Management Software) and synchronize the datasets between the two applications. This would help see which requirements were matched with test scripts.


         (Stages involved: Coding, Testing)


         Software Developer, Build & Release Engineer


-          Implemented the web service which communicated between Test Director and DOORS


-          Created the installer for deployment of the product.


 


b. Vorne USA (Display-Pro XL , C#, ASP.NET)


         Platform                           VC#. NET, ASP.NET, XML, MSDE


         Operating Systems            Windows 2000/XP


         Testing tools                     Manual testing


        


The project involved creating an integrated Windows-cum-web application suite called Display-Pro XL, designed to work with Vorne-compatible industrial devices. This software is designed to configure products for specific applications as well as support factory floor data acquisition and data distribution, which would communicate between industrial displays and set/get values from it through serial port communication through RS-232 and RS-485 interfaces. The data was stored in XML files and in MSDE.


         (Stages involved: Analysis, Coding, and Testing)


         Software Development & Test Engineer, Build & Release Engineer


-          Study of Functional Specifications of the application and formulating the test strategy.


-          Implementing functionality as per Functional Specifications


-          Preparation of exhaustive test cases in accordance with the functional specifications and executing them in coordination with the developers. The scope of the test cases included unit testing, integration testing, and regression testing.


-          Formulation of coding standards guidelines and verification of the implementation of the same in the developed code.


-          Make suggestions/recommendations to the client to make the requirements specifications document more understandable.


-          Report the test results to the development team and verify the fixes implemented.


-          Created the installer for deployment of the product.


 


c. Telelogic (DOORS 6.1 Internationalization, C++)


        


         Platform                           VC++ 6.0, VB 6.0


         Operating Systems            Windows NT/2000/XP (English/Chinese/Japanese/


                                                Korean/Taiwanese), Unix (Solaris 2.7/2.8), Citrix


         Testing tools                     Test Director, WinRunner


         (Stages involved: Testing)


         Software Test Engineer


 


The project involved internationalization & localization of the already existing requirements management software of Telelogic DOORS. The end product was the first truly internationalized product in the field of requirements management software.


-          Managed a team of 3 testers


-          Study of Functional Specifications of the application and formulating the test strategy.


-          Preparation of test cases in accordance to the functional specifications.


-          Guiding a team of dedicated testers for design and executing the test cases.


-          Report the findings to the development team and verify the fixes implemented.


-          Formulation of coding standards guidelines and verification of the implementation of the same in the developed code.


 


d.  Dairy Centric Integrated Application


 


            Platform                        VB 6.0, SQL Server 2000, Microsoft Transaction


                                                Server


Client                            Uttam Dairy


 


The project involved automation of all the basic processes of a typical dairy industry, such as Inventory management, Purchase order management, Veterinary module, Marketing, Sales, Fixed deposits, etc. The project involved requirements study of the dairy industry, developing GUI prototypes of the designated modules.


 


Responsibilities:


·         Study of Functional Specifications for the inventory module.


·         Review of Design.


·         Design and coding of application, business and data layers of the application.


·         Preparation of test cases for the implemented functionality and executing the same.


·         Fixing the defects found during testing.


e.      Metrics Generator


 


Platform                  VC++ 6.0, Crystal Reports


Case Tools              Visio


Client                     Patni


 


The project involved development of a Software Metrics generator application. The metrics to be evaluated included the different metrics of project, class, file, such as LOC, number of functions, number of classes, number of private members, public member, protected members, etc.


 


The developed application was used to determine the actual efforts put in by a person by evaluating the source code developed.


 


Technical                    Programming Languages:           C#


                                    Operating systems:                    Windows (all platforms)


                                    Databases:                                MS SQL Server


                                   


Other Activities:                Assistant Manager, Mumbai User Group


                                    Chairperson (Computer Society of India, Nirma University Chapter – academic)


                                   


 

How many threads does a typical managed process have when it just starts to run?

Source: Yun Jin’s blog at http://blogs.msdn.com/yunjin


Answer: regardless how many threads the user creates, there are at least 3 threads for a common managed process after CLR starts up: a main thread which starts CLR and run user’s Main method, CLR debugger helper thread which provides debugging service for interop debuggers like Visual Studio, and the finalizer thread which runs finalizers for unreachable objects. Depends on what the program does, CLR might create more threads to perform special tasks.   


Sometimes it is important to know what “special” threads would be created in CLR so we could understand better the implicit impact of our managed programs. Here is a list of most common special threads: 


1. Finalizer thread. The thread is to run finalizers for “dead” objects. This thread is created when GC heap is initialized during EE start up. In Rotor, the thread proc for the thread is GCHeap::FinalizerThreadStart in vm\gcee.cpp. Because GC is undeterministic and finalizers are executed in a separate thread, you can’t predict when exactly an object will be finalized. Because there is only one thread to run all finalizers, if one finalizer is blocked, no other finalizers could run. So it is discouraged to take any lock in finalizer. Also see Maoni Stephens’s blog for details about finalizer thread.



2. Debugger helper thread. As its name suggests, this thread helps interop debugger to get information of the managed process and to execute certain debugging operations. The thread is created when EE initializes debugger during start up. In Rotor, the thread proc for this thread is DebuggerRCThread::ThreadProcStatic (debug\ee\Rcthread.cpp). Also see Mike Stall’s blog about impact of this helper thread?



3. Concurrent GC thread (doesn’t exist in Rotor). As explained in Maoni and Chris Lyon’s blog, concurrent GC is a special GC mode which allows garbage to be collected while managed threads are running simultaneously. To achieve this goal, CLR creates a thread to perform GC concurrently with user threads. The thread is only created when CLR decides to do a concurrent GC (even when concurrent GC mode is on, not every GC is concurrent, read Maoni’s blog for details) and will be recycled when there are no concurrent GC work to do.


4. Server GC threads (doesn’t exist in Rotor). Maoni and Chris also explained Server GC mode where on multi-process machine CLR creates one GC heap for each CPU and one thread to do GC for each heap. When Server GC mode is enabled, server GC threads will be created at EE start up time when GC heaps are initialized.



5. App Domain unload helper thread. In CLR V1.X, when a thread requests to unload an App Domain and the thread is in that App Domain itself, it needs to create a worker thread to do the unloading work. The worker thread will be dead once the target AD is unloaded. In Rotor, the thread starts with UnloadThreadWorker.ThreadStart (bcl\system\Appdomain.cs). In Whidbey, all AD unload work is performed in a special thread regardless whether the requesting thread is in the unloading domain. The helper thread is created when first non-default App Domain is created (default domain is never unloaded) and will stay alive since then. Also see Chris Brumme’s blog about details of AD unload.


6. Threadpool threads. Depends on how a program use CLR threadpool, CLR might create threads of a varieties of types. There is only one thread for some thread type. For other types, number of threads is related to number of CPUs, the work load, and some user configurable settings. The thread types including wait threads (threads to perform asynchronized wait, could be more than one); worker threads (threads to execute user work item, could be more than one); Completion port threads (threads wait for completion port IO in Windows, could be more than one, doesn’t exist in Rotor); Gate thread (thread help to monitor status of completion port threads and worker threads, only one); Timer thread (thread manages timer queue, only one).

MICROSOFT WINDOWS MALICIOUS SOFTWARE REMOVAL TOOL UPDATED

On 17 August 2005 the Microsoft Windows

Malicious Software Removal Tool has been updated with added detection

and cleaning capabilities for the following Malicious Software:

* Zotob.A

* Zotob.B

* Zotob.C

* Zotob.D

* Zotob.E

* Bobax.O

* Esbot.A

* Rbot.MA

* Rbot.MB

* Rbot.MC

The updated version of the Microsoft Windows Malicious Software Removal

Tool is available for download from the Download Center at this

location:

http://www.microsoft.com/downloads/details.aspx?FamilyId=AD724AE0-E72D-4F54-9AB3-75B8EB148356&displaylang=en

NOTE: This updated version is currently NOT available on Windows Update,


Microsoft Update or through Windows Server Update Services.


More information on the Microsoft Windows Malicious Software Removal


Tool is available here:


http://go.microsoft.com/fwlink/?LinkId=40573

Mydoom.bv (aka Bobax.AF) – An email flavor of MS05-039

http://secunia.com/virus_information/20710/

W32.Bobax.AF@mm is a mass-mailing worm that opens a back door, downloads remote files, and lowers security
settings on the compromised computer. The worm spreads by exploiting the Microsoft Windows Plug and Play
Buffer Overflow Vulnerability (as described in Microsoft Security Bulletin MS05-039) and by sending a copy of itself to email addresses gathered.

VSS – Timezone difference between VSS client and server

Imtiyaz says:


From: Imtiyaz Alamshah 
Sent: Wednesday, August 03, 2005 6:03 AM
To: Vipul
Subject: Query- Timezone difference between VSS client and server



Hi Vipul,

 

I have one query regarding VSS.

 

We have VSS server at onsite and working from india(OffShore) there is time difference of 4 and half hour between Onsite and OffShore.

 

We have problem with Time Zone difference. Suppose we check-in our changes at 5:30 PM (1:00 PM Onsite) then at 2:00 PM Onsite (6:30 PM OffShore) somebody label it to Version2.0. Our changes are not included in that label as time of label is 2:00Pm which is before check-in time 5:30 PM.

 

Can you please let me know if there is any solution available for it.

 

I believe that VSS server should consider Time Zone also as we are in +5:30 time zone and server in +1:00.

 

Is there any setting we can do at server side so server should consider time zone also with system time.

 

Thanks in Advance

Imtiyaz

 

 

Solution:

http://groups-beta.google.com/group/microsoft.public.vsnet.vss/browse_thread/thread/7e9056ec6730ab7f/c0ec004e840646e1?lnk=st&q=VSS+timezone+issue&rnum=1&hl=en#c0ec004e840646e1

 One has to be careful using SourceSafe over different time zones. The Time Stamp on the files being checked in are marked according to the client’s  configuration clock.  One way around this problem is to sync all computers interacting with sourcesafe acroos time zones to a common time. Another way is to use a third party add -on SourceOFFSite www.sourcegear.com.

</Extract>

VSS – Allow multiple developers to work on the same file – VSS project structure best practices

 


Got a mail from Narendra asking me about VSS project management:


Excerpts from the mail as below:


—– Start of email


—–Original Message—–
From: Narendra Bisht

Sent: Wednesday, August 03, 2005 5:30 AM
To: vipul_d_patel@hotmail.com
Subject: Hi Vipul : Query on VSS


Hi Vipul,
How are you doing? I was reading your Webchat transcript QA session at
http://msmvps.com/vipul/articles/48606.aspx. It was really quite informative. I have got few queries which are not related to VSS as such directly but more to management of Projects in VSS. Let me give you a brief overview of our current development environment.


We are into software development and develop solutions for our clients. As a typical SDLC, you might be aware that after implementation of application at client site, we had to resolve bugs whenever they occur, and for few projects after implementation, while we are supporting them we also have to do some fresh development/enhancement for the client. So as a result of this at times one file might be required by multiple developers, like one developer is fixing a bug while the other developer is doing some enhancement in the same file. And on top of this, we have to test the application by merging both the changes (bug fixing & fresh development). Now my query to you is that wha is the best project structure that we can create to handle such scenarios? We should also be able to keep track of our releases.


Right now, everything is a in a confused state, one developer have to wait for the other developer for finishing his work then only he can check out it and starts working. We are not able to finalise a structure where it will make the code version management a lot easier and quite smooth. Our proposed structure is defined below:


$Root
|
+———-Shopping Cart – Development (Project )
        |
        +____Code
        +____DB
        +____Images etc


+———Shopping Cart – Enhancement (Project)
        |
        +—–Code
        +___DB
        +___Images


+———Test
        —same structure as above——
+——–Release
        —same structure as above——


Pros of this structure:
1. We can seperate out bug fixing and enhancements related to a project seperately and later on can merge them, once successfully merged we send it to Test (create same project structure), test it and then release it to Release.


Cons of this structure:
1. Here there is lot of movement of files from one project to other project and we have to maintain 4 Projects for one single Project.


2. It also occupies a lot of space, if the project size is big.
3. It is also possible that lets say there were 4 bugs, now the developer has corrected 2 bugs and he is working on the remaining bugs, a second team member needs this file on which the developer has fixed 2 bugs coz he had some dependency on this file and since the 2 bugs has been fixed the second developer can resume his work with this file with these two changes, now we have to release this to a central place so that other developers can take it for their reference/dependency.


Hope you will be able to understand what I am trying to describe here. So, can you please suggest some project structure for the above mentioned problems, so that we can carry on bug fixing and enhancement as well as smooth partial and complete testing and then a smooth release of the application with proper RELEASE versioning.


Hoping to hear from you soon.
Thanks & Regards
Narendra


—– End of email


My solution


Narendra, first and foremost, you can have multiple people working simultaneously on the same file.


How to enable it? VSS Admin > Tools > Options > Enable multiple checkout.


This will enable multiple users to checkout the file. More details regarding the process to do this is available at http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/tdlg_ch6.asp. Search for “Multiple File chechout” and you should be there. More info is available at http://msdn.microsoft.com/library/default.asp?url=/library/en-us/guides/html/vstskcheck_out_multiple_files.asp


Dont forget to check out how to resolve merge conflicts at http://msdn.microsoft.com/library/en-us/guides/html/vstskresolve_merge_conflicts_with_visual_merge.asp and http://msdn.microsoft.com/library/en-us/guides/html/vstskresolve_merge_conflicts_without_visual_merge.asp


The only drawback of this solution is that the developer needs to understand how to resolve merge conflict , lest it create more bug than to fix it.


Regarding the multiple folders which Narendra suggests in his email, I would not recommend them. Every branch in the VSS project seems to add a burden in the backup and restoring process and hence, I would like to keep as few maintainable branches as possible. Also if you use sharing feature in VSS, then you need to do periodic checks to verify the integrity of the  VSS structure. That alone is the deterent.


But Narendra has different requirements as per his mail




From: Narendra Bisht
Sent: Wed 8/3/2005 8:41 PM
To: Patel, Vipul
Subject: RE: Hi Vipul : Query on VSS


Thanks Vipul for a prompt reply, but your solution doesn’t fulfill my all the requirements, it is good for allowing multiple checkouts for a particular file but I had asked for VSS structure of the Project (basically best practices for organizing your project structure in VSS), so that we can handle bug-fixing, enhancements, their testing and finally Release of the application.
Hope you will be able to help me.
Thanks and Regards
Narendra
 
So here is what I suggested
 
—–Original Message—–
From: Patel, Vipul
Sent: Thursday, August 04, 2005 9:35 AM
To: Narendra Bisht
Subject: RE: Hi Vipul : Query on VSS

Hi Narendra,
the problem is that repeated branching affects the performance
 
BUt here is what will help you..
 
The solution assumes that the directory structure that your have outlines is being used.
 
Work on Shopping Cart – Development (Project ) is complete. Developer checks in all the relevant files to this stream. Release engineer then does a Get latest of this directory structure to the local path of the “Test stream“. And then he checks whether new code is  buildable.  If yes, then he goes ahead and builds a release for an internal release. After building the release, he gives it to the testing team. The testing team verifies whether the developement effort is in the build or not. If yes, then this code is checked in to the Test stream. If not, the bug is reported and the developer is asked to work in the Shopping Cart – Development (Project ) stream and once again the cycle is repeated.
 
Once the test has confirmed that the build is good, the code can be checked in to the “Release stream”.
 
The same cycle will repeat for the “Defect fixing” cycle.
 
 
Essentially your suggestion for the streams is good and workable.
 
Regarding the cons of this structure: (inline)
1. Here there is lot of movement of files from one project to other project and we have to maintain 4 Projects for one single Project.
Since you require such a functionality, this is an necessray evil. The good thing is the specific groups will touch the specific stream. Developers will touch only the Shopping Cart – Development (Project ) and the Shopping Cart – Defect Fixing (Project ). Testers will take code from the Shopping Cart – Development (Project ) and the Shopping Cart – Defect Fixing (Project)  and check in into the Testing Stream.  Release enginner will take baselined code from the Testing stream (after approval from the test team) and check it into the Release stream.
 
2. It also occupies a lot of space, if the project size is big.

To reduce the space consumption, remove all .bin files, temporary files from the source control. If your project is a VS.NET project, do a clean project and do the diff between the folders on the VSS and your local drive. Any files which are not present in the local drive need to be removed. This will reduce a lot of space.


3. It is also possible that lets say there were 4 bugs, now the developer has corrected 2 bugs and he is working on the remaining bugs, a second team member needs this file on which the developer has fixed 2 bugs coz he had some dependency on this file and since the 2 bugs has been fixed the second developer can resume his work with this file with these two changes, now we have to release this to a central place so that other developers can take it for their reference/dependency.


This is a necessary evil. But you dont want a developer to use a dependency file which is not tested, do you?
 
Regards
Vipul
 

From: Narendra Bisht
Sent: Thu 8/4/2005 4:14 AM
To: Patel, Vipul
Subject: RE: Hi Vipul : Query on VSS

Hi Vipul, got ur prompt reply, one last thing, do u suggest that we should keep the same project structure along with all the files in all the 4 different projects e.g. Development, Defect Fixing, Testing and Release. If yes, then the size of the VSS will increase. And if we maintain 4 diff. projects in VSS for one SINGLE project then we will have so many projects. If we have 10 different Client projects then we will have 40 projects (10 X 4).
What do you suggest?
Thanks
Narendra
 

From: Patel, Vipul
Sent: Thursday, August 04, 2005 7:08 AM
To: Narendra Bisht
Subject: RE: Hi Vipul : Query on VSS

 

Hi Narendra,

 

Create a separate VSS database for each client project…. And  you can create thse databases on the same PC.. That will ensure that you only need only one server dedicated for CM activities.

 

Alterbately, switch to VSTS Foundation Sever. It has the solution to your projetc. i.e. it is like Rational Clearcase, which allows streams to be created.

 

Regards

Vipul

Power Collections for .NET

Did you feel that a powerful Collection library for public domain was missing?


Well, its here now…


Check out http://www.wintellect.com/powercollections/ 


A brief description:


With .NET 2.0 comes the ability to implement what has been known in C++ as template classes. Generics are like C++ templates, only better. To learn more about generics, check out Jason Clark’s article in MSDN Magazine: http://msdn.microsoft.com/msdnmag/issues/03/09/NET/


Leading the development effort is Peter Golde, formerly a Lead Designer for the C# language. Peter is currently building the starting set of classes as well as incorporating ideas from the community into a set of collection classes to be made freely available to the public.


The specifications for the library are at http://www.wintellect.com/powercollections/spec.aspx.


Wintellect is inviting the developer community to give in their suggestions…..More at http://www.wintellect.com/powercollections/