Wednesday, December 25, 2013

For Skilled Software Developers - A Journey from Employee to Self Employed (Entrepreneur)

For Skilled Software Developers - A Journey from Employee to Self Employed (Entrepreneur)

Are you a skilled and confident software developer who owns the guts of kicking away his/her secure and comfortable job and start his/her own business? Are you as a software developer want to be self employed and enjoy the sense of being entrepreneur? Well, the road is very rough and you will have to struggle a lot in your journey to reach your destination. If you feel you can do something different from the crowd, prepare a practical plan for you and go ahead. I am just trying to write down some suggestions which you should consider before typing your resignation letter.

1. Think twice before typing your resignation letter

Before you write that letter of resignation, think about why you want to become an independent software developer. 

A) Do you want to work from home? 
B) Do you want to travel? 
C) Do you want more money, fewer hours, or both? 
D) What are your main motivations for making this change? 

Write them down somewhere because chances are all of your goals will not be met immediately. When things get tough, that list will remind you of why you are doing this, and that can make the difference between giving up and success.

Above all, understand and accept that "going independent" means "starting a business," and a business is very different from a job.

Going independent can give you greater say in the kind of work you do. And in the world of software, there are many possibilities; you don't have to do exactly what you do at your current job. Consulting, development, products, training, and other services are all viable paths to independence. Make a list of everything you can do, everything you'd like to do, and everything you might be interested in learning how to do. Having that list will help prepare you to recognize opportunities when they arise.

Similarly, make a list of all the ways you can find and attract clients. When you make the leap, you'll want to be in a position where you have more offers than you can accept.

2. Securing your first contract is key

The first contract can be the hardest, or the easiest. It is not uncommon for someone to resign as an employee then turn right around and contract with their former employer, doing exactly the same job as before, just with a different financial arrangement -- but it is not guaranteed. Another option is to contact a recruiting firm and have them find you a position that you like -- and make the terms of engagement corp-to-corp. 

3. Diversify your business skill set

Your job responsibilities will include everything, not just coding. Going it alone means going it alone. You'll have to do all of the work that your current team and organization do for you. This applies to both technical skills and "soft" skills -- either you learn how to do it yourself, or you hire someone to do it for you. If you hire others to help you, you'll have to learn how to manage people at the very least, but ideally how to lead them. Communication skills may mean more to your bottom line than sheer coding talent.

4. Deliver exceptional service and quality

This may seem like an obvious platitude, but consider that the average office worker is productive only three to six hours per day, according to recent surveys. The rest of the time is sucked away in meetings, emails, social media, and various other nonproductive distractions.

When you are the business, you can eat Twinkies, drink Mountain Dew, and surf the Web all day if you want to. But chances are you only get paid when things get done -- so getting things done consistently, efficiently, and well will become paramount to the survival of your business. This makes Reddit a lot less interesting than a paycheck. Happy clients are key, and consistently delivering extraordinary results makes them happy.

5. Sweat the small stuff

Many tasks don't pay directly, but can lead to business failure (not to mention legal/tax trouble) if omitted. Accounting, cash flow, collections, contracts, liability insurance, and so on are easy to forget or postpone -- don't!

Other small things may suddenly matter, like being awake during business hours, answering your phone promptly, and having suitable clothes to wear to meetings with prospects and clients. The hip slacker image that works so well in your laid-back office job may not fly when you and only you represent the entire business. People will perceive you according to their inherent expectations, and you cannot control or change that -- but you can be aware of it, and prepare accordingly.

6. Always be marketing

Focusing only on the paying work in front of you and letting everything else slide is a good way to code yourself out of a job. Pay attention to additional opportunities with current clients, ask for referrals, continually prospect, and keep your pipeline full.

Marketing and sales are not evil; they are necessary. Even if all you have is a résumé on a job site, that is still marketing -- and the product is you. Even the best of clients can have sudden downturns; you do not want to be at the mercy of one client. If the vast majority of your income depends on one client, you don't have a business, you have a job.

7. Get organized

Since you are responsible for everything, you must be organized. 

Whatever you choose, get things out of your head and into the system, and review it consistently. It is far too easy to think that you can remember everything you need to be doing, and perhaps you can, for a while, but the effort is draining and wasteful. An organizational system is not supposed to be a straightjacket or a dictator; it is a tool. Apply your organizational system consistently to all of your areas of responsibility -- not just technical ones -- to ensure that you are always on top of everything that needs to be done.

8. Going independent is not a promotion

There is a huge difference between going independent and getting promoted to management. If you get promoted to management, you become responsible primarily for the work of others, along with a load of administrative issues that you may not enjoy. If you go independent, you get managerial responsibilities and keep all your technical responsibilities as well.

Many good programmers have been ruined when turned into managers; many excellent technical people are simply not happy in management roles. If this is you, that is fine, just be aware of it and plan accordingly -- perhaps by hiring an assistant or designating one day a week as "admin day." As an independent developer, you are both management and worker, and you must do both well to succeed.

9. Get out of your own way

Don't be your own barrier to business growth. At some point you will hit a limit of how much work you can do personally and still keep up with the business, maintain your health and family/social ties, and generally keep from burning out. You can raise your rates, but only up to a point. Learn how to delegate, sooner rather than later.

Many businesses that are otherwise doing well reach a tipping point where they fail because the person in charge cannot delegate, and that bottleneck strangles the business. If things are falling behind because everyone is waiting on you to do something, take this as a warning sign.

When you hit your limit, you can contract or expand. To do less, consider firing "bad" clients, raising your rates, and making better use of your time. To expand, consider hiring help, delegating or eliminating tasks, and diversifying your products and services.

10. Consider the product

Products have a distinct advantage over services: Products scale. You can only sell an hour of your time once, and it's gone, but you can sell a product over and over, even while you sleep.

Of course, products have their own overhead: First you have to write it, then you have to sell it. But once it is selling well, the only drain on your time is support, and counting your money. Consider building products (that people actually want) while supporting yourself by selling your services. If you can transform some of your services into products, so much the better.

11. Brand and network

People need to know about you. Whether you call it promotion or marketing or branding, the requirement is the same: Get the word out, with a consistent image and message about the kind of services and quality you provide. You can start a blog, join the local Chamber of Commerce, answer questions in LinkedIn groups, post instructive videos to YouTube, and so on.

Choose a few ways that you are comfortable with, and start. Be creative, use your imagination, find ways to stand out that represent you well, but above all make sure the channels you choose are populated with likely prospects. Try several approaches, track where your leads come from, and then concentrate on the avenues that prove fruitful.

12. Replace yourself

Eventually you may decide that you've had enough of being responsible for every aspect of your business; that's the time to replace yourself. You can replace yourself with one person, if it's the right person. More likely, your responsibilities will be divided among multiple people. This can be good, especially if the people you find share your philosophy and work ethic and are better at their jobs than you are.

Finding the right people can take a lot of effort, and you may have to go through a few to find the right one. It's best to test and fire early rather than invest too much time in trying to train or educate someone who is not up to your standards.

13. Take care of your primary asset

The primary asset of your business is you. If you become burned out, or ill, or your skills get out of date, your business will suffer. There are no sick days, there are rarely vacations, and deadlines don't care how you feel.

Be aware of new developments in your field, but spend R&D time wisely -- not only on things your clients want, but also on things that excite you.

Occasionally turn off the computer and go outside. Socialize with friends, spend quality time with family and loved ones, read a nontechnical book, and enjoy being human.

Most importantly, when the going gets rough, take time to recharge and remember why you started this journey. The payoff of time off to refocus is tremendous.

21 Best Free Open Source Databases

21 Best Free Open Source Databases

As a developer or DBA, you must be using some of the widely used databases like MS SQL Server, MySQL, Oracle, PostgreSQL, MongoDB etc. MySQL is the best free open source database which is used today, that we all know. Beside MySQL there are a lot of free and open source databases which you might not be knowing or never used. Some of the free free and open source databases are PostgreSQL, MongoDB, HBase, Cassandra, Couchbase, Neo4j, Riak, Redis, Firebird and lot more. I am using Firebird in my current project which with Delphi XE4. I have compiled a list of 21 Best, Free and Open Source Databases available to us. Lets have a look at them:

1. MySQL

The most widely used open source database for Web apps (and many other things) remains MySQL. Support for multiple storage engines, clustering, full-text indexing, and plenty of other professional features have allowed numerous other apps profiled here, from WordPress to Movable Type, to rely on MySQL as their default database. Graphical front ends, such as phpMyAdmin and Adminer, make using the database far less of a chore. And for those seeking escape from the long shadow of Oracle, there's a community fork named MariaDB, maintained by MySQL's original lead developer, Monty Widenius.

2. PostgreSQL

When Oracle acquired MySQL, reduced the development staff, and more or less killed the open source nature of the project, it reopened a market that MySQL had locked down. PostgreSQL has a much nicer set of drivers and supports both standard ANSI-SQL and extended features, in many cases better than MySQL. On the downside, its long legacy has left it multiprocess in the era of multithreaded. The high-availability/clustering features of PostgreSQL require a lot of elbow grease and leave much to be desired. Yet while organizations look for a community developed database, one of the eldest starts to look pretty good. Many cloud providers, such as Heroku, have chosen PostgreSQL as their RDBMS storage option as well.

3. MongoDB

NoSQL? Document database? The first name that comes to mind is MongoDB, due to a dual-edged blade from developer 10gen. On one side, MongoDB has strong venture capital and consequently an extensive marketing strategy. On the other side, it is the only comparatively mature document database in the NoSQL world. Highly scalable horizontally with automated sharding and highly available due to autoreplication, MongoDB offers a very reliable and yet simple solution to modern document database problems. The downsides: Working with stored procedures can be difficult, and performing data manipulation can require writing complex JavaScript code.

4. Hadoop (HBase)

Hadoop is the name brand in big data. It is also the convergence of "clustered storage" systems like Gluster and Ceph with NoSQL. Hadoop is really a collection of projects to solve large and complex data problems. In fact, there are multiple types of databases and query languages built on the overall Hadoop framework. Hadoop's complexity is as legendary as its capability, and its lack of high-availability features has both held it back and created a commercial add-on ecosystem.

The project aims to host very large tables like "billions of rows, millions of columns". It has a REST-ful web service gateway that supports XML, Protobuf, and binary data encoding options.

5. Apache Cassandra

Written in Java, this BigTable-based key-value database is getting more popular by the day. Open source and built to integrate with Hadoop, Cassandra offers the column family solution to developers wanting to move away from the relational database model while working with Hadoop. Focusing mainly on getting in very fast writes and providing high availability, Cassandra has slower reads than some alternatives. It is mostly used for logging purposes and real-time analysis.

Cassandra is a highly scalable second-generation distributed database that is used by giants like Facebook, Digg, Twitter, Cisco & more. It aims to provide a consistent, fault-tolerant & highly available environment for storing data.

6. Couchbase

While Couchbase was a fork of CouchDB, it has become more of a full-fledged data product and less of a ball of framework than CouchDB. Its transition to a document database will give MongoDB a run for its money. It is multithreaded per node, which can be a major scalability benefit -- especially when hosted on custom or bare-metal hardware. With some nice integration features, including with Hadoop, Couchbase is a great choice for an operational data store.

7. Neo4j

The database for interconnected data, Neo4j provides a reliable Java-based platform for conquering highly interconnected database problems. Available with full ACID transaction compatibility -- rare in a NoSQL database -- Neo4j has a SQL-like query language called Cypher and a scripting language called Gremlin for graph traversals. Best used to accurately and efficiently model highly complex, interconnected networks like network topologies, social networks, and conditional access control problems, it provides indexes on nodes and relationships. Direct path calculations take hundreds of lines of code for a RDBMS but two lines of code for Neo4j.

8. Riak

An open source distributed database written in Erlang and C, Riak treats all nodes equally. No one is a master or a slave. Thus, there is no fear a master will be a single point of failure. However, the masterless, fully distributed model with SNMP monitoring is not available in the open source version. Much simpler than its peers (such as Cassandra), Riak is optimal for places where even seconds of downtime would hurt.

9. Redis

There are many NoSQL databases, but Redis remains close to our heart because it has so many features that some call it a "data structure store." You don't just store numbers and strings -- you can dump in entire hashes, lists, sets, and other complicated structures. Then, to make the deal sweeter, Redis offers replication and persistence.

Redis is an advanced fast key-value database written in C which can be used like memcached, in front of a traditional database, or on its own. It has support for many programming languages & used by popular projects like GitHub or Engine Yard. There is also a PHP client named Rediska for managing Redis databases.

10. Firebird

Firebird is a relational database that can run on Linux, Windows & various UNIX platforms. It offers high performance and powerful language support for stored procedures and triggers.

11. Memcached 

Memcached is an in-memory key-value store for small chunks of arbitrary data (strings, objects) from results of database calls, API calls, or page rendering. It is intended for use in speeding up dynamic web applications by alleviating database load.

12. Oracle Berkeley DB

It is an embeddable database engine that provides developers with fast, reliable, local persistence with zero administration. Oracle Berkeley DB is a library that links directly into your application & enables you to make simple function calls rather than sending messages to a remote server for a better performance.

13. Hypertable

Hypertable is a high performance distributed data storage system designed to support applications requiring maximum performance, scalability, and reliability. It is modeled after Google's BigTable and mostly focuses on large-scale datasets.

14. Keyspace

It is a consistently replicated, fault-tolerant key-value store that works in Windows OS. Keyspace offers high availability by masking server/network failures & appearing as a single, highly available service.

15. 4store

4store is a database storage and query engine that holds RDF data. It is written in ANSI C99, designed to run on UNIX-like systems & offers a high performance, scalable & stable platform.

16. MariaDB

MariaDB is a backward compatible, drop-in replacement branch of the MySQL® Database Server. It includes all major open source storage engines + the Maria storage engine.

17. Drizzle

It is a fork of MySQL that focuses on being a reliable database optimized for Cloud and Net applications.

18. HyperSQL

It is a SQL relational database engine written in Java. HyperSQL offers a small & fast database engine which has in-memory and disk-based tables, supports embedded/server modes. Also, it has tools such as a command line SQL tool & GUI query apps.

19. MonetDB

MonetDB is a  database system for high-performance applications in data mining, OLAP, GIS, XML Query, text & multimedia retrieval.

20. Persevere

It is an object storage engine and application server (running on Java/Rhino) that provides storage of dynamic JSON data for rapidly develop data-driven JavaScript-based rich internet applications.

21. eXist-db

eXist-db is built using XML technology. It stores XML data according to the XML data model & features efficient, index-based XQuery processing.

Monday, December 23, 2013

Apple iPhone Application Development - Initial Steps

Apple iPhone Application Development - Initial Steps

Today, Apple iPhone application development is in full swing and iPhone developers are in great demand. In order to develop iPhone apps, you should be a good Objective C developer. If you have good grip on C++, OOPS Concepts, I can guarantee you that you can learn Objective C easily and quickly and can start building your iPhone apps. There are a lot of iPhone apps development tutorials available on the internet and very good iPhone apps development community on the stackoverflow, so you will not feel alone if you stuck anywhere while iPhone app development. Today, companies are hiring a lot of iPhone app developers for building their iPhone apps. XCode is the full featured tool which eases your iPhone app development to a large extent. A lot of demos, sample codes, sample applications are available on the internet which can fulfil your basic iPhone app functionalities. So, I am just giving the initial steps which you should take while iPhone app development.

Step 1: Think of a good idea

Have a unique idea for an iphone app? So what makes an app stand out?  Why would anyone want to use your app?  Why would they pay money for it if you are going to charge?

Be sure to check that there aren’t other apps that do the same thing that you are proposing. Or if you want to create something better than an app that already exists, think about how your idea will be better.  Draw it out on paper or on the computer.

Step 2: Get A Mac

The iPhone is an Apple product and uses a variation of the Mac OS. Currently, the iPhone development tools are only available for Mac users. You can buy a Mac mini relatively cheaply if you don’t have a Mac at your disposal.

Step 3: Register As An Apple Developer

To work with the Mac tools, you will need to become an official Apple Developer. Registration is free so you simply have to give them your information and agree to their terms.  You only need to register once, and you are able to use the same username and password used for your iTunes account. Once you are an Apple Developer, you can develop iPhone apps for any of the Mac products.

Step 4:  Download The Software Development Kit For iPhone (SDK)

Once you are an official developer, you can download the SDK for iPhone.  The version you need depends on the OS you are currently running.  This download is HUGE because it comes with all sorts of documentation, sample codes, and all sorts of things you will be glad to have later on. It could take a few hours, so you might want to start the download, put in a good movie, and wait.

Step 5: Download XCode

If you don’t already have it, download XCode.  According to Apple, “Xcode is a complete, full-featured IDE built around a smooth workflow that integrates the editing of source code, with the build and compile steps, through to a graphical debugging experience – all without leaving the view of your source code.”  This is another huge download, so you might want to rent a second movie.

Step 6: Develop Your iPhone App With The Templates In The SDK

Once you have your app drawn out on paper or in Photoshop, you can start designing it with the templates provided in the SDK.  This is where that HUGE amount of download time will be a huge benefit.  You will have lots of templates to choose from, and there are a lot of great YouTube clip tutorials on how to use the templates effectively.

Step 7: Learn Objective-C For Cocoa

If you love programming languages, you will love Objective-C.  If you don’t know how to program, this is the part that can get pretty sticky, so you might want to find a programmer friend or hire someone.  It really does help to get a book, too, for reference.

Step 8: Program Your App In Objective-C

Once you at least understand the basics of Objective-C (or at least know how to find answers to programming questions), you are ready to program your app.  It helps to take screenshots as you go along so you can remember what you tried.  Some apps can take just a few hours to program while other Apps can take months. Only you know how much detail you want out there for its maiden voyage in the App Store!

Step 9: Test The App In The iPhone Simulator

The SDK comes with a lovely iPhone Simulator.  You will need to load up your app and do your own testing.  You should try to work out as many bugs as possible and think about all the ways someone might use your app.

Step 10: Host A Bake Sale

Remember when I told you in the fine print that you would have to raise some cash?  This is that moment.  Sadly, loading an app into iTunes costs a one time member fee of $99 (USD).  There is no way out of this fee, but you might earn it back in triplicate if your app is worthy!  Truly though, you DO get a lot for your $99. For one, you get access to some of the coolest people on this side of Pluto!

Step 11: Have Others Test Your App

Once you pay your fee, you will be able to have others in the app community test your app and help you work out final bugs.  This is a great community, and testing new stuff is lots of fun. If you are a newbie like me, you will be in awe of the kings and queens of geeky stardom. Depending on the nature and complexity of your app, this process can take some time.

Step 12: Submit Your App For Approval

After testing your app in the community and working out all the bumps, you can submit the app to iTunes for approval.  You will be able to upload it right from the community.  The process of approval can take some time, so be patient!

Step 13: Watch The Dough & Traffic Roll In!

If you created a paid app, just wait for the money to roll in to shore. If you created a free app, watch the traffic!

ASP.NET Fundamentals: 7 Pillars of ASP.NET: A Basic Interview Question

ASP.NET Fundamentals: 7 Pillars of ASP.NET: A Basic Interview Question

If you are preparing for ASP.NET interview, must be ready for basic ASP.NET interview question "What are the Pillars of ASP.NET?" Pillars of ASP.NET means the fundamentals of ASP.NET like .NET Framework, CLS, CTS, MSIL, JIT, Object Oriented Concepts, Assemblies, DLLs, XCopy Deployment etc. I have listed down 7 Pillars of ASP.NET in detail.

7 Pillars of ASP.NET:

When ASP.NET was first released, there were seven key facts that differentiated it from previous Microsoft products and competing platforms. If you’re coming to ASP.NET from another web development platform, or you’re an old-hand .NET coder who has yet to try programming for the Web, these sections will quickly give you a bit of ASP.NET insight.


The .NET Framework is divided into an almost painstaking collection of functional parts, with tens of thousands of types (the .NET term for classes, structures, interfaces, and other core programming ingredients). 


ASP.NET applications, like all .NET applications, are always compiled. In fact, it’s impossible to execute C# or Visual Basic code without it being compiled first. 


No matter what language you use, the code is compiled into MSIL. MSIL is a stepping stone for every managed application. 


Perhaps the most important aspect of the ASP.NET engine is that it runs inside the runtime environment of the CLR. The whole of the .NET Framework—that is, all namespaces, applications, and classes—is referred to as managed code. Basic features of CLR are:

A) Automatic memory management and garbage collection
B) Type safety
C) Extensible metadata
D) Structured error handling
E) Multithreading


ASP.NET is truly object oriented. Not only does your code have full access to all objects in the .NET Framework, but you can also exploit all the conventions of an OOP (object-oriented programming) environment. 


ASP.NET addresses the problem of cross browser compatibility in a remarkably intelligent way. Although you can retrieve information about the client browser and its capabilities in an ASP.NET page, ASP.NET actually encourages developers to ignore these considerations and use a rich suite of web server controls. These server controls render their markup adaptively by taking the client’s capabilities into account. 


Every installation of the .NET Framework provides the same core classes. As a result, deploying an ASP.NET application is relatively simple. For no-frills deployment, you simply need to copy all the files to a virtual directory on a production server (using an FTP program or even a command-line command like XCOPY). 

ASP.NET Fundamentals: ASP.NET is integrated with the .NET Framework

ASP.NET Fundamentals: ASP.NET is integrated with the .NET Framework

The .NET Framework is divided into an almost painstaking collection of functional parts, with tens of thousands of types (the .NET term for classes, structures, interfaces, and other core programming ingredients). Before you can program any sort of .NET application, you need a basic understanding of those parts—and an understanding of why things are organized the way they are. The massive collection of functionality that the .NET Framework provides is organized in a way that traditional Windows programmers will see as a happy improvement. Each one of the thousands of classes in the .NET Framework is grouped into a logical, hierarchical container called a namespace. Different namespaces provide different features. Taken together, the .NET namespaces offer functionality for nearly every aspect of distributed development from message queuing to security. This massive toolkit is called the class library.

Interestingly, the way you use the .NET Framework classes in ASP.NET is the same as the way you use them in any other type of .NET application (including a stand-alone Windows application, a Windows service, a command-line utility, and so on). Although there are Windows-specific and web-specific classes for building user interfaces, the vast majority of the .NET Framework (including everything from database access to multithreaded programming) is usable in any type of application. In other words, .NET gives the same tools to web developers that it gives to rich client developers.

Tip: One of the best resources for learning about new corners of the .NET Framework is the .NET Framework class library reference, which is part of the MSDN Help library reference. If you have Visual Studio 2012 installed, you can view the MSDN Help library by clicking the Start button and choosing Programs ➤ Microsoft Visual Studio 2012 ➤ Microsoft Visual Studio 2012 Documentation (the exact shortcut depends on your version of Visual Studio). 

ASP.NET Fundamentals: ASP.NET supports all Browsers

ASP.NET Fundamentals: ASP.NET supports all Browsers

One of the greatest challenges web developers face is the wide variety of browsers they need to support. Different browsers, versions, and configurations differ in their support of XHTML, CSS, and JavaScript. Web developers need to choose whether they should render their content according to the lowest common denominator, and whether they should add ugly hacks to deal with well-known quirks on popular browsers.

ASP.NET addresses this problem in a remarkably intelligent way. Although you can retrieve information about the client browser and its capabilities in an ASP.NET page, ASP.NET actually encourages developers to ignore these considerations and use a rich suite of web server controls. These server controls render their markup adaptively by taking the client’s capabilities into account. One example is ASP.NET’s validation controls, which use JavaScript and DHTML (Dynamic HTML) to enhance their behavior if the client supports it. Another example is the set of Ajax-enabled controls, which uses complex JavaScript routines that test browser versions and use carefully tested workarounds to ensure consistent behavior. These features are optional, but they demonstrate how intelligent controls can make the most of cutting-edge browsers without shutting out other clients. Best of all, you don’t need any extra coding work to support both types of client.

ASP.NET Fundamentals: ASP.NET is Easy to Deploy and Configure

ASP.NET Fundamentals: ASP.NET is Easy to Deploy and Configure

One of the biggest headaches a web developer faces during a development cycle is deploying a completed application to a production server. Not only do the web-page files, databases, and components need to be transferred, but components need to be registered and a slew of configuration settings need to be re-created. ASP.NET simplifies this process considerably.

Every installation of the .NET Framework provides the same core classes. As a result, deploying an ASP.NET application is relatively simple. For no-frills deployment, you simply need to copy all the files to a virtual directory on a production server (using an FTP program or even a command-line command like XCOPY). As long as the host machine has the .NET Framework, there are no time-consuming registration steps. Chapter 18 covers deployment in detail.

Distributing the components your application uses is just as easy. All you need to do is copy the component assemblies along with your website files when you deploy your web application. Because all the information about your component is stored directly in the assembly file metadata, there’s no need to launch a registration program or modify the Windows registry. As long as you place these components in the correct place (the Bin subdirectory of the web application directory), the ASP.NET engine automatically detects them and makes them available to your web-page code. Try that with a traditional COM component!

Configuration is another challenge with application deployment, particularly if you need to transfer security information such as user accounts and user privileges. ASP.NET makes this deployment process easier by minimizing the dependence on settings in IIS (Internet Information Services). Instead, most ASP.NET settings are stored in a dedicated web.config file. The web.config file is placed in the same directory as your web pages. It contains a hierarchical grouping of application settings stored in an easily readable XML format that you can edit using nothing more than a text editor such as Notepad. When you modify an application setting, ASP.NET notices that change and smoothly restarts the application in a new application domain (keeping the existing application domain alive long enough to finish processing any outstanding requests). The web.config file is never locked, so it can be updated at any time.