More servicesWindows Live
HomeHotmailSpacesOneCare
 
MSN
Sign in
 
 
Spaces home  Pankaj's BlogPhotosProfileFriendsBlog Tools Explore the Spaces community

Blog

    • View next 20 entriesView last 20 entries
    July 25

    Make a CAT5 Intercom

    It has been over a century and a half since Alexander Graham Bell whispered the words ‘Mary had a little lamb’ and changed the way mankind communicated. Modern life is unimaginable without a telephonic device—be it a sophisticated cell phone or an archaic pulse dial telephone still in use in certain parts of India. If you have gone fully digital, don’t thrown out your land line instruments in a hurry. This workshop will help you make a functional small distance intercom device.

     

     

     

    A straightforward way to build a simple intercom at home is to use two old land line telephone handsets, run a wire between them and apply some power. An improvised circuit can include a buzzer at both ends, so that the person at the other end can be alerted to pick up the phone. First of all, you need to decide which rooms you will install the intercom. Then you need to collect all the materials listed on this page before getting down to work.

     

    There are different ways to power the circuit. The first is to simply use a 9V battery. However, the downside to this option is that battery will drain out in no time leaving the intercom connection dead. Alternatively, you can power the circuit using any good pure 12 V DC power adapter. Any laptop’s idle or unused power adapter is the best choice. Don’t worry if the voltage level isn’t exactly 9 V—anything with an output voltage below 24 V will do the job. Note that the intercom needs to be powered at one end of the circuit only.

     

     

     

     

    The scenario for which we designed and built this intercom included two rooms having computers connected over a network CAT5 cross-cable. Since a network cable consists of four pairs of wires, of which only two pairs are used by the network adapter, the other two unused pairs were perfect for our purpose. We only require four wires for the intercom to function, so if you don’t already have a network cable connecting computers between floors or rooms, you can use any ordinary telephone cable with four cores or two pair wires.

     

     

    Construction

     

    If you plan on using an existing network cable, (like in our workshop), note that pins one, two, three, and six (from the RJ45 connector) are used by the network adapter while the rest are just not needed. Check which wires are used in your cable. In our case it turned out to be the orange and orange-white, green and green-white. Using a wire cutter, we need to cut and separate out the remaining four wires. We shall now be using these four wires for our workshop. Now simply cut the sleeve of the CAT5 cable carefully and dig out the unused wires, then cut them carefully. The other wires can continue to be connected to the RJ45 connector, and be used for the existing network.

     

     

     

     

    Now that the wires are ready to be used for the workshop, twist the ends so that you have pointed tips. Refer to the circuit diagram above and connect all the elements—the switches, buzzers and RJ11 jacks. Finally, hook up the telephone’s cord to the RJ11 jack and power up the circuit with the battery. Now, your intercom device is all ready to be used.

     

    Testing

     

    Press any one switch to check if the buzzer beeps at both ends to confirm whether the ringer is functioning. Next, pick up the handsets at both ends, start a conversation with the person at the other end of the line to confirm the working of the intercom circuit. And Voila! the intercom is ready.

     

     

     

     

     

    If the intercom doesn’t seem to be working properly, refer to the circuit diagram and find the fault to ensure that the connections of the circuit are correct. This short workshop described a method to install an intercom device in your home. To improve on this, you can design your own complicated array of switches in a more efficient manner by connecting more wires and handsets to make a larger intercom.

    July 18

    SQL Server clustering

    What is Clustering?
    A Microsoft SQL Server Cluster is nothing more than a collection of two or more physical servers with identical access to shared storage that provides the disk resources required to store the database files. 

    These servers are referred to as "nodes".  Each of the nodes talk to one another via a private network, sending a heartbeat signal between them.  Should one node not communicate its heartbeat to the other node in the cluster the secondary node will take ownership of any dependent services being run by the node that lost communication.  This process is referred to as "failover". 

    A failover can occur both automatically (a server's heartbeat stops communicating) or manually.  A manual failover is beneficial in the event that patching or some other form of maintenance is required at the physical server level.  You would typically implement clustering in order to ensure that if you ever encounter hardware failure on the physical server hosting your SQL instance, your databases would continue to be available for dependent applications and their users. 

    Unlike other clustering technologies that are implemented for better performance or for increased processing power via load-balancing, SQL clusters are designed for providing highly-available databases; eliminating downtime associated with hardware failure.  This architectural concept is referred to as "High Availability Clustering" or "HA Clustering" for short.  The service or groups of services that are hosted on a clustered node are respectively referred to as resources and resource groups.  Since these resources must be available to all nodes in a cluster then they must reside on a shared disk array in the form of SAN-NAS disk.  Each resource group will be mapped to a logical drive that is physically hosted on the shared disk array and will also have it's own associated IP address and network name. 

    The SQL Server Installation Process on a Cluster
    The SQL Server installation process detects when an installation is being attempted on a clustered node and will prompt you as to whether you wish to configure the SQL instance as clustered or not.  If you proceed with creating a clustered instance of SQL Server, the instance will be hosted on a "Virtual" Server.  Resources such as data and log files will be created on the shared SAN-NAS disk for SQL Server, SQL Server Agent, and Full-Text Indexing.

    If selected in the installation process, Notification Services and Analysis Services are also cluster-aware in SQL Server 2005.  Conversely, the associated program files for the instance will be installed on the local drives of each of the clustered nodes in an identical fashion and registry values are set identically across all clustered nodes.  Since the "Virtual" server resides solely on the SAN it can be "owned" by any of the nodes you allow.  Each of the nodes can run these resources in identical fashion because each physical server/node has the program files and identical registry settings necessary to run the SQL instance. 

    Furthermore, the users are oblivious to the underlying fluidity of the server.  They connect to it as they would any other physical server:  by server name (virtual server name in this case) if the default instance or by virtual server name\instance name if a named instance.  This is key for application connectivity.  Since the SQL instance simply changes ownership during a failover, connection strings the applications rely on to connect to their databases need not be recoded; the physical server may become unavailable, but the virtual server persists after the failover.

    Active/Active or Active/Passive Clustering
    Clusters are often referred to as either Active/Active or Active/Passive.  Just as you would expect by the name, in an Active/Active cluster there will be two or more nodes, each one owning an instance of Microsoft SQL Server.  If one node fails, the instance it owns would fail over to the other node, running along side (and contending for resources with) the other instance.  An Active/Passive architecture  requires that no matter how many nodes make up the cluster, at least one node is not the owner of an instance of SQL Server.  It is "passive" and only exists to accept a failover of a node hosting a SQL instance in the event of a failover. 

    Current Microsoft licensing policies require you to only license the active nodes running Microsoft SQL Server.  The passive node need not be licensed.

    How Many Nodes?
    Today's clustering technology under Windows 2003 and Microsoft SQL Server 2005 Enterprise Edition allows for up to eight nodes to be combined into a single cluster.  The release of Windows 2008 and Microsoft SQL Server 2008 Enterprise Edition will bring with it the ability to double that to sixteen nodes.  (You are limited to two nodes if you utilize SQL Server Standard Edition.)  Do you want to cluster multiple databases of various SLAs within many nodes on a single cluster?  Is it beneficial to dedicate a two-node cluster to a single database?  The answer is:  "It Depends."  We look into this in detail in a future tip.

    Pros and Cons
    While clustering protects you from hardware failure relating to the server hosting the SQL Server instance, it does not protect you from media failure.  Unlike replication, database mirroring, or log shipping there is only a single copy of your database.  If the SAN-NAS encounters a failure then you could not only conceivably incur downtime, but possibly data loss.  It is recommended that you incorporate redundancy of your SAN-NAS or database mirroring with your clustering configuration to protect you from media failures.  Hardware and licensing costs may be high.  In an Active/Passive clustering model you'll purchase hardware you hope to never need to use.  The cluster build is more complex than a standalone server setup.  The physical build of the cluster is outside the scope of this discussion however.  Additional benefits for clustering include simplicity for installation of SQL and ease of administration and maintenance.

    Summary
    There is plenty to consider when planning on clustering SQL Server.  Hopefully you were able to get a better understanding of what clustering is and an idea of the terminology associated with clustering SQL Server 2005.  In the remaining tips in this series we will review these items in greater detail, walking you through the decisions you'll make on architecture, the installation process, the tools available to monitor the state of the cluster and its resources, as well as comparing clustering to the other high-availability options associated with Microsoft SQL Server.

    June 13

    How to back up a database using script in SQL SERVER 2005

    Use this script in order to backup a database :

    /*
    Author : Suprotim Agarwal
    Creation Date: Jan 2, 2008
    */
    CREATE PROCEDURE [dbo].[usersp_BackUpDB]
    @DBNAME nvarchar(50),
    @PATH nvarchar(200),
    @BCKUPNAME nvarchar(50)
    AS
    BACKUP DATABASE @DBNAME
    TO DISK = @PATH
    WITH NOFORMAT, NOINIT,
    NAME = @BCKUPNAME,
    STATS = 10

    You can call this script using :

    DECLARE @return_value int
    EXEC @return_value = [dbo].[usersp_BackUpDB]
    @DBNAME = N'Northwind',
    @PATH = N'C:\temp\Northwind.bak',
    @BCKUPNAME = N'NW'
    SELECT 'Return Value' = @return_value
    GO

    Read more about this topic over here :

    How to see active connections for each Database in SQL Server 2005

    At times, we need to check the number of active connections for each Database on our server. This can be done easily using the following script. The script displays the DatabaseName, the number of connections and the login name :

    SELECT db_name(dbid) as DatabaseName, count(dbid) as NoOfConnections,
    loginame as LoginName
    FROM sys.sysprocesses
    WHERE dbid > 0
    GROUP BY dbid, loginame

    June 12

    How to send an email using SQL Server 2005

    Sql Server Reporting Services provides a few global collections that you can use in your reports to retrieve report information. One such collection is Globals

    Globals contains global variables which can display information such as the report name, execution time or page number. You can use these variables as expressions in a textbox and place these textboxes in the report footer. Some of the expressions are as follows:

    Execution Time :

    = "Your report executed at " & Globals.ExecutionTime

    Page Number :

    ="You are viewing page " & Globals.PageNumber & " of " & Globals.TotalPages

    Report Path and Name :

    =Globals.ReportFolder & Globals.ReportName

    Similary you can also explore Globals.ExecutionTime which displays the execution date and time as well as Globals.ReportServerUrl which displays the URL of the SSRS server on which the report is being executed.

    Populate a table from a .CSV or .TXT file using SQL Server 2005

    You can use Bulk Insert or SSIS to import text/csv files. There are some advantages and disadvantages using any of these methods. In this article, we will explore how to use the OPENROWSET to read a data file and populate a table.

    Note: In SQL Server 2005, OPENROWSET can read from a data file without loading the data into a target table. This lets you use OPENROWSET with a simple SELECT statement.

    Follow these steps:

    Step 1: Create a database called 'Employees'. Create a table called '
    EmployeeDetails' in it using the script given below:

    USE [Employee]
    GO
    /****** Object: Table [dbo].[EmployeeDetails] Script Date: 04/11/2008 11:12:32 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    SET ANSI_PADDING ON
    GO

    CREATE TABLE [dbo].[EmployeeDetails](
    [EmployeeID] [nvarchar](50) NOT NULL,
    [EmployeeName] [varchar](50) NULL,
    [EmployeeAddress] [varchar](50) NULL
    ) ON [PRIMARY]
    GO
    SET ANSI_PADDING OFF

    Step 2: To run ad-hoc queries on the SQL server, you would first need to enable it using the following query:

    sp_configure 'show advanced options',1
    RECONFIGURE WITH override
    GO
    sp_configure 'Ad Hoc Distributed Queries',1
    RECONFIGURE WITH override
    GO

    Step 3: Create a txt/csv file with the following format on your C:\. The file is called 'Employee.csv'

    EmployeeID EmployeeName EmployeeAddress
    1 Kat 23/Avenue. Park
    2 Jim Jeoff Street
    3 Tom Lifer Road

    Step 4: The final step is to run the query and populate the EmployeeDetails table

    USE Employee
    GO
    INSERT INTO EmployeeDetails(EmployeeID,EmployeeName,EmployeeAddress)
    SELECT *
    FROM
    OPENROWSET('MSDASQL', 'Driver={Microsoft Text Driver (*.txt; *.csv)};
    DEFAULTDIR=C:\;Extensions=CSV;','SELECT * FROM Employee.csv')
    March 31

    Fundamental Programming Namespaces

    The .NET Framework class library provides access to system functionality and is designed to be the foundation on which .NET Framework applications, components, and controls are built. The following sections describe many of the namespaces provided in the .NET Framework class library. To browse the entire WinFX class library, see Class Library.( from microsoft.com)

     Fundamental Programming Namespaces
    • System – contains classes and base classes that define commonly used value and reference data types, events and event handlers, interfaces, attributes, and processing exceptions. Other classes provide services supporting data type conversion, method parameter manipulation, mathematics, remote and local program invocation, application environment management, and supervision of managed and unmanaged applications.

    • System.Collections – contains interfaces and classes that define various collections of objects, such as lists, queues, arrays, hashtables, and dictionaries.

    • System.Collections.Generic – contains interfaces and classes that define generic collections, which allow users to create strongly typed collections that provide better type safety and performance than non-generic strongly typed collections.

    • System.IO – contains types that allow synchronous and asynchronous reading and writing on data streams and files.

    • System.Text – contains classes representing ASCII, Unicode, UTF-7, and UTF-8 character encodings; abstract base classes for converting blocks of characters to and from blocks of bytes; and a helper class that manipulates and formats String objects without creating intermediate instances of String.

    • System.Threading – provides classes and interfaces that enable multithreaded programming. This namespace includes a ThreadPool class that manages groups of threads, a Timer class that enables a delegate to be called after a specified amount of time, and a Mutex class for synchronizing mutually exclusive threads.

     Configuration Namespaces
     Data and XML Namespaces
    • System.Data – consists of the classes that constitute the ADO.NET architecture, which is the primary data access method for managed applications.

    • System.Data.Common – contains classes shared by the .NET Framework data providers. Data providers describe a collection of classes used to access a data source, such as a database, in the managed space.

    • System.Xml – contains classes that provide standards-based support for processing XML.

     Globalization and Localization Namespaces
    • System.Globalization – contains classes that define culture-related information, including the language, the country/region, the calendars in use, the format patterns for dates, currency and numbers, and the sort order for strings.

    • System.Resources – provides classes and interfaces that allow developers to create, store, and manage various culture-specific resources used in an application.

    • System.Text – contains classes representing ASCII, Unicode, UTF-7, and UTF-8 character encoding.

     Interop Namespaces
     Networking Namespaces
    • System.Net – contains classes that provides a simple interface to many network protocols.

    • System.Net.Mail – contains classes used to send electronic mail to a Simple Mail Transfer Protocol (SMTP) server for delivery.

    • System.Net.NetworkInformation – provides access to network traffic data, network address information, and notification of address changes for the local computer.

    • System.Net.Sockets – provides a managed implementation of the Windows Sockets (Winsock) interface for developers who need to help control access to the network.

     Reflection Namespaces

    System.Reflection – contains classes and interfaces that provide a managed view of loaded types, methods, and fields, with the ability to dynamically create and invoke types.

     Security Namespaces
    • System.Security – provides the underlying structure of the common language runtime security system, including base classes for permissions.

    • System.Web.Security – contains classes that are used to implement ASP.NET security in Web applications.

     Serialization Namespaces
    • System.Runtime.Serialization – contains classes that can be used for serializing and deserializing objects. Serialization is the process of converting an object or a graph of objects into a linear sequence of bytes for either storage or transmission to another location. Deserialization is the process of taking in stored information and recreating objects from it.

     Service Namespaces

    The namespaces in the .NET Framework for interacting with a variety of back-end server resources include the following:

    • System.Diagnostics – consists of classes that allow you to debug your application and to trace the execution of your code. System.Diagnostics also provides classes that allow you to start system processes, read and write to event logs, and monitor system performance using performance counters.

    • System.DirectoryServices – consists of classes that provide easy access to the Active Directory from managed code.

    • System.IO – provides classes that listen to the file system change notifications and raises events when a directory, or file in a directory, changes.

    • System.Management – provides classes for managing information and events about the system, devices, and applications instrumented to the Windows Management Instrumentation (WMI) infrastructure.

    • System.Messaging – provides classes that allow you to connect to message queues on the network, send messages to queues, and receive or peek (read without removing) messages from queues.

    • System.ServiceProcess – provides classes that allow you to install and run services, long-running executables that run without a user interface.

    • System.Timers – provides the server-based Timer component, which allows you to raise an event on a specified interval.



    March 06

    Windows Home Server - PHP for IIS

    If you’re interested in running a website from your home server, you may have considered various options, including running PHP. But running PHP with IIS can be fraught with problems - or at least was, until WGS reader, Christopher Courtney, wrote the following guide to installing PHP for IIS on Windows Home Server. Over to Christopher…

    Because running IIS and Apache really isn’t feasable, one needs to be able to install PHP into IIS. If you have tried before or searched for how, you will notice many different ways, and a lot of problems with doing so. I’ve tried several times and gotten the same problem, but finally fixed it and got PHP working under IIS. Now I am going to share it.

    What You Will Need

    What to Do

    You will need to download PHP. There are a number of issues with the installer, so we are going to be using the zipped file. Make sure the zip file is accessible from the server (it needs to be in one the shares, or on the SYS drive of the server.

    You will need then need to gain remote access to your Windows Home Server box (Use a Remote Desktop Connection or Advanced Admin Console).

    Install PHP

    1. Extract the files from the PHP zip and place the files in “C:\php”. Extract the PECL modules to “C:\php\ext”.
    2. Rename C:\php\php.ini-recommended to “C:\php\php.ini”.
    3. Open both the php.ini file you have now and uncomment cgi.force_redirect in php.ini and set it to 0
    4. Find SMTP = localhost and make sure it is uncommented. If your mail server is somewhere else you may specify it here. Also set this line just below the above: sendmail_from = someone@yourhost.com
    5. Change session.save_path as “session.save_path=C:\php\sessions” and make the directory C:\php\sessions
    6. Set the line “extension_dir” as “extension_dir = “C:\PHP\ext”.
    7. Uncomment the following extensions:
      extension=php_mssql.dll
      extension=php_msql.dll
      extension=php_mysql.dll
      extension=php_mysqli.dll
      extension=php_java.dll
      extension=php_ldap.dll
      extension=php_iisfunc.dll
      extension=php_imap.dll
      extension=php_filepro.dll
      extension=php_gd2.dll
      extension=php_gettext.dll
      extension=php_dba.dll
      extension=php_dbase.dll
      extension=php_dbx.dll
      extension=php_mbstring.dll
      extension=php_pdf.dll
      extension=php_pgsql.dll
      extension=php_sockets.dll
      extension=php_xmlrpc.dll
      extension=php_xsl.dll
      extension=php_zip.dll
    8. This will enable you to use pretty much any database you may have installed. Additionally, it should allow you to use most functions for php that you will need.
    9. This part may not be necessary, but it was definitely for me. Go to “C:\” an right click on “Properties”. Go to the Security Tab, and click on the “Advanced Button”. Enable “Replace permission entries on all child objects with entries shown here that apply to child objects”, and click okay.
    10. Go to Control panel > System Properties > Advanced Tab > Click “Environment Variables”.
    11. Now add “C:\PHP;” to the very beginning.
    12. Now run “regedit.exe” or Start Registry Editor (same program)
    13. Add HKEY_LOCAL_MACHINE\SOFTWARE\PHP\IniFilePath = “C:\php” to the registry.
    14. Open Internet Services Manager which is in your Administrative Tools.
    15. Right Click on Web Service Extensions located on the left hand side and choose Add a new web service extension. Enter in php and click add. Browse to C:\php\php5isapi.dll. Also set extension status to allow. Click “Okay”.
    16. Right Click on websites and choose properties. Go to the Documents tab and add index.php as a start document. Go to the Home Directory Tab and click on Configuration. Now go to the mappings tab and click on add. Enter .php for the extension and enter “C:\php\php5isapi.dll” in the executable textbox. Make sure all verbs is checked and click ok, click ok, click ok. You are done installing it. Now you need to test it. 
    17. Go to C:\Inetpub\wwwroot and make a new text file and name it phpinfo.php. Open it up with your text editor ant put this in it: <?php phpinfo(); ?>.
    18. Open a web Browser and go to http://SERVER/phpinfo.php
    19. If you followed all the instructions, it should work fine.

    Installing Your Database

    Once you have downloaded the MySQL installer, run it on the server. I would run step by step through the install, but pretty much all the defaults are optimal for what we want. It’s going to run using as little resources as possible, and a small number of concurrent connections. This is what we want, because this the enviroment we are going to be running. We’re not running a dedicated database server after all.

    So, that’s how to install PHP for IIS on Windows Home Server - we’ll be featuring a number of technical guides from Christopher over the next few weeks, all of which will be stored on the forthcoming We Got Served Wiki.


    February 29

    Tips for selecting and buying Digital Camera

    Buying a good digital camera can be a confusing task as there are a lot of them out there. Here's a guide on what to keep in mind before investing in one.


    Megapixel


    The thing to look for in a digital camera is a mega pixel number, something between six and eight. Higher Mega Pixel means clear picture. Generally professional photographer uses high mega pixel (above 10 mega pixel) for clarity and large and massive print size option. With Megapixel there are also other factor that should be consider before purchasing any digital camera say Quality of Lens is also very important. That’s why good quality lens, such as Nikon/Olympus are the 1st choice of any professional photographer.


    Focal length


    The focal length is the distance between the centre of the lens and the film when an in-focus image of a far away object is formed. Wider focal length between lens of 28 mm -- 105 mm to the 35mm -- 105mm one is good and can be recommended.

    For example, in a room where space is a limitation, the 28 to 105 mm wide focal length lens would allow you to cover practically the whole room whereas a 35 mm lens would just photograph a portion of the room. Since both the lens (tele and wide angle) have a 105 mm zoom capability, they achieve the results of a 105 mm zoom lens. Thus, a 28 mm -- 105 mm lens is more versatile.


    Points to note:

    • A 28 mm lens has a greater "depth of field" than a 35 mm lens, which means objects closer to the camera as well as those at a distance, remain focused.
    • Depth of field is the distance in front of and beyond the subject that appears to be in focus.
    • The longer the focal length--35mm, 50mm or 105mm-- the smaller the "depth of field".


    Optical zoom

    Go for a digital camera with at least 3x optical zoom as this will increase the size of your 'subject' (the object/ person) that you are shooting.

    Avoid higher digital zoom cameras as they only increase the size of the pixels, making your images look stretched. Don't fall for advertisements stressing only on higher digital zoom but not the optical zoom.


    Easy operation


    Demand of features varies person to person. Features to look for include anything that assists in very low light capturing conditions, removal of hazy and moving features, minimise the surrounding noise and different flash modes. Olympus Zoom camera has three flash modes-- Red Eye Removal, Fill-in and the plain Flash. Thus, multiple flash options are offered in several digital camera brands.

    Using


    Some digital SLR (single lens reflex) cameras do offer a video capability, but then the number of video frames may be limited because of the higher resolution (leading to bigger image size) and the limitations in capacity on the memory/ storage in a digital SLR camera.

    Digital SLR Cameras


    In SLR cameras, the primary lens meant for taking the picture is also used as a 'view finder (display unit in a digital camera) and for picture composition. Since the exposure metering (for exposure control) is based on the light coming through the primary lens, the exposure metering is far more accurate than in the case of non - digital SLR camera. An exposure meter is used to make selective light readings. This instrument helps you in analyzing the amount of light being reflected from your subject. Some of the latest digital SLR cameras are equipped with an in-built exposure meter. Digital SLR cameras offer a set of interchangeable lenses, ranging from wide angle (say 28 mm) to telephoto/ zoom lenses for meeting various photography requirements. These facilities are not available in non-SLR cameras.


    Because of these facilities a digital SLR camera is costlier than other cameras.


    Best

    There are many top brands in the market today like Nikon, Olympus, Canon and Sony.

    Nikon is usually one of the costliest digital cameras, especially the digital SLR variety while cameras from Canon are usually good and have user-friendly features.


    From where ~

    • Ideally buy your camera from an authorised dealer and always insist on warranty.
    • Most camera brands have exclusive outlets across the cities in India.

    Photography exhibitions offer the latest discounts and accessories for your camera, so make use of them.


    Checklist

    Read the fine print. Whatever the cost of the digital camera, it should include the basic accessories mentioned with that brand like a camera case, batteries, charging cord, USB cord etc.

    Buy extra accessories such as memory cards, batteries, tripods from the same camera store if possible. Don't buy non-branded accessories from un-authorised showrooms. You may run the risk of ruining your digital camera and wasting a lot of money.

    • Check for special offers like free rechargeable batteries with charger or a 512MB/ 1GB memory card.
    • Amateurs can make do with an eight megapixel camera.

    • Read reviews from photography magazines and web sites. These will give you insights about brands, price and performance.

    • Ask for a demo. Try out a few digital cameras by taking pictures, zoom in and zoom out, wide or tele lens, to see which camera you are most comfortable handling.

    • Check out different stores before settling for the one you like.

    • Check with the camera store for equated monthly instalments (EMI) options.

    These are the general tips ... but not at all final one ... you should take review as per your need amd budget.
    February 28

    Effective IT Project Management

    Procedures & Guidelines for Project Management

    Many projects are canceled before they are completed. Many are completed late and cost well over their original estimates. And, of the rare few which are completed, on-time and within budget, many do not meet the needs of the project stakeholders.

    In addition, many organizations do not have procedures and guidelines to support project management efforts. Often organizational culture does not encourage open discussion of problems or possible solutions to those problems.

    Sound project management is the key to resolving these difficulties. Unfortunately, general managers are often asked to perform project management and while the two disciplines are similar, project management requires special knowledge and skills. Knowledge and skills which are best obtained by experience. (Using MS Project or another project management application will not suddenly turn general managers into project managers!)

    This series is intended to give you background information about the various processes associated with project management and to give you a start in understanding the nature of project management in general. It is not intended to be a substitute for experience.

    Please note that this series discusses project management in broad terms and does not focus on special needs projects such as those involving software or product development.

    People often view procedures (procedures are written documents which formally describe processes) as bureaucratic. They believe that procedures represent an obsession with detail and that they force people to rigidly (even blindly) adhere to arbitrary rules.

    Yet well respected competency assessment models (such as ISO-9000, the Deming Prize, the Baldrige Award, and others) define competence in terms of an organizations adherence to business procedures.

    But, there are good procedures and bad procedures. Bad procedures are indeed bureaucratic, rigid and usually difficult to interpret. Good procedures on the other hand, are clearly written documents which eliminate guesswork (a great time waster). And, a good procedure has built in flexibility that allows for creative implementations.

    In addition, procedures are an excellent way to maintain an organizations' operational knowledge. This is more imperative then ever given today's organizational climate were people change jobs like they change their clothes.

    I believe it is critically important for organizations to have clear, consistently applied procedures to guide their work efforts and  especially important to any organization that wants to become more successful in managing projects. 

    A list of project management procedures that are needed:
        * Procedures for the systematic identification of stakeholders
        * Procedures for the systematic identification of stakeholder needs
        * Procedures for developing clearly defined requirements
        * Procedures for planning budgets and schedules
        * Procedures for generating and capturing project performance data
        * Procedures for conducting quality assurance and control activities
        * Procedures for handling project documentation
        * Procedures for document approval
        * Procedures for conducting project close-out meetings

    What is Project Management?

    Project management, is the application of knowledge, skills, tools, and techniques to describe, organize, oversee and control the various project processes.

    But perhaps project management can best be described in terms of the things that you need to do to successfully manage a project:
      1.Develop and manage a project plan (Integration Management)
      2.Plan, define and manage project scope (Scope Management)
      3.Create a project schedule, plan resources and budget costs (Time & Cost Management)
      4.Develop a quality plan and carry out quality assurance and quality control activities (Quality Management)
      5.Perform organizational planning, manage staff acquisitions and promote team development (Human Resource Management)
      6. Develop a communications plan (Communications Management)
      7. Identify risks, prepare risk mitigation plans and execute contingency actions (Risk Management)

    This list may seem quite overwhelming but be assured that even the smallest project can benefit from each of these project management processes. Please note however, that the extent to which you carry out each of these activities should be based on the nature, size and complexity of your project and on your level of project management expertise.

    Project Management Processes

    Each management process below is described primarily in terms of its overall objectives and core activities. Practical 'how to' information is provided for most processes in the Project Planning Tutorial.

    The following processes are derived from the Project Management Institute's - American National Standard, though they are modified for practicality and are highly simplified.  Note that the standard includes many more management process activities.

    Integration Management - The objective of integration management is to coordinate the various interrelated processes of a project.

    To properly manage these activities a project manager needs to do the following:
        * Develop a project plan
        * Acquire approval of the plan
        * Manage the implementation of all the activities described in it
        * Update the plan as changes occur
        * Communicate the changes to key project stakeholders


    The project plan

        * describes the objectives of the project and how those objectives will be reached
        * describes the project deliverables
        * describes the activities that will occur for all of the various project management processes (i.e., the plan should have a section which deals with scope, a section that deals with the project schedule, with risks, etc.).

    The project plan acts as a guide for project implementation by describing what needs to happen, who needs to do it and when. The project plan also acts as a baseline for measuring project performance. The project manager compares actual work completed against work planned, actual costs against estimated costs, etc.

    Scope  Management  Project

    Scope Management ensures that the project includes all the work required, and only the work required, to complete the project successfully.

    To manage scope a project manager needs to:
        * define scope in terms of the project deliverables
        * respond appropriately to requests for changes by stakeholders (Be aware that changes to scope will almost always have an effect, usually negative, on project costs and/or timelines. This means you need to balance key stakeholder desires & demands against their needs and against their expectations regarding project costs and timelines.)
        * If appropriate, make changes to project scope based on project performance (reduce the number and/or complexity of deliverables if performance is inadequate)
        * Document changes to scope in the project plan
        * Communicate scope changes to key stakeholders via the modified project plan and if necessary secure approval to proceed
        * Controlling project scope is often one of the most difficult tasks for a project manager. A moving target is difficult to hit and improper management of scope will more then likely cause the project to fail (either it will be canceled, run over budget, be completed late or fail to meet the needs of the stakeholders).

    Time  &  Cost  Management

    The objective of time & cost management is to ensure that the project is completed on time and within budget.
    To do this a project manager needs to:
        * Develop a project schedule
        * Plan resources
        * Estimate costs
        * Monitor performance 

    A project schedule lays out the various activities (or tasks) for the project in an activity list. An estimate of how long the activity is expected to take is included for each. The schedule is then used to estimate the resources necessary (i.e., people, materials, etc.) to complete each activity. From there, the cost of each activity is calculated.  The resulting documentation is used to monitor project performance by comparing actual performance against the estimates.

    Quality Management

    The objective of Quality Management is to ensure that the project will satisfy the needs for which it was undertaken. 

    To do this a project manager needs to:
        * Develop a quality plan
        * Carry out quality control activities

    A quality plan describes what activities will be performed during the course of a project to ensure that the project will be successful (i.e., meet the needs of the stakeholders). A quality plan may be formal or informal, highly detailed or a simple checklist depending on the nature and complexity of the project. 

    Quality planning is currently outside the scope of this site. If you are interested in learning more about quality processes please refer to the International Organization for Standardization (ISO-9000 series).

    Human Resource Management

    The objective of the Human Resource Management process is to ensure the most effective use of the people involved with the project.

    In order to do this a project manager needs to:
        * Perform organizational planning
        * Plan staff
        * Promote team development

    Good organizational planning is a key component of successful projects. A project manager needs to precisely define roles and responsibilities so that there is no confusion over who does what and who decides what.

    Staff planning involves planning when and how people will brought onto the project team and when they will be taken off. This is especially important when your team consists of members who do not report directly to the project manager but to some other organizational member.

    Communications Management

    The objective of Communications Management is to promote effective communications between the project team members and key stakeholders.
    A communication plan describes who needs what information, when they need it and how it will be given to them. 

    To do this a project manager needs to:
        * Develop a communications plan


    Risk Management

    The objective of the Risk Management process is to ensure that project risks are identified, analyzed and responded to.

    In order to do this a project manager needs to:
        * Identify risks
        * Prepare risk mitigation plans
        * Take action as necessary

    Risk management is a highly complex topic and so is outside of the scope of this document.  

    What is Project  Planning ?

    Project planning is the key to completing a project successfully. Creating a project plan is the first thing you need to do when undertaking any kind of project.

    Many clients initially view the development of a project plan as a waste of time. They feel that they know what needs to be done and they should just do it. However, they soon come to realize that a good (even a mediocre) project plan can save considerable time, money and headaches.

    Each section in this tutorial presents a portion of a project plan document in a highly simplified and practical manner. For example, the section on Risk Management encourages you to use a simple table to list the project risks (as opposed to more formal and detailed risk management methods which are not only outside the scope of this document, but which require expert knowledge to implement).

    Upon completion of th