Friday, January 11, 2008

8 e-mail mistakes that make you look bad

1. Failing to follow e-mail etiquette. I believe in the old adage, "You catch more flies with honey than with vinegar." There's no point in belaboring the etiquette issue. We all know we should be polite. But here are a few points to consider:
• Don't write when you're angry. Wait 24 hours. Calm down. Be reasonable. Have someone else edit your e-mail.

• Don't use sarcasm. You may think you're clever, but the recipient will be put off.

• DON'T USE ALL UPPERCASE! That's the e-mail equivalent of yelling. Your recipient won't be appreciative. Go easy on the exclamation marks, too. Overuse dulls their effectiveness.

• Use clear subject lines. That will help people decide whether to read the e-mail now or later. We're all busy. Your correspondent will appreciate your thoughtfulness.

• Keep it short. If your e-mail is more than two paragraphs, maybe you should use the telephone.

• Change the subject line if you change the topic of a thread.

• Unless the recipient has previously agreed, don't forward poems, jokes, virus warnings and other things. You're just wasting valuable time and bandwidth.

2. Thinking you are anonymous. If you are sending nasty missives, you might think no one will be able to figure out that the e-mail came from you. After all, you set up a phony Web address. Think again. E-mail contains invisible information about the sender.
That information is in the header. All major e-mail programs can display header information. Here's how:
• In Microsoft Outlook, double click the e-mail. Then click View > Options.

• In Microsoft Outlook Express, click the e-mail. Then click File > Properties and select the Details tab.

• In Eudora, double click the message. Then click the Blah Blah button.

• In Netscape, click the message to open it. Then click View > Message Source to display the header.
The sender's revealing information is in the sections that begin with "Received:." There may be several of these, depending on the number of computers the e-mail traversed. The originating computer is in the bottom "Received:."
That section will have an Internet Protocol (IP) number, such as 124.213.45.11. It can be traced on a number of Web sites. I use InterNIC (www.internic.net). The number is probably assigned to the sender's Internet service provider, rather than the sender. But the ISP will be able to identify the sender using that number. Remember the header if you're tempted to send an anonymous e-mail. You may be less anonymous than you think.

3. Sending e-mail to the wrong person. Today's e-mail programs want to make it easy to send e-mail. This means that when you start typing the address of a recipient to whom you have previously sent mail, the "To:" field may already be populated. Be careful. Always double-check the recipient is the intended one.
In addition, if you're writing something ugly about Joe Smith, you'll have Joe's name on your mind. Don't send it to him. I once knew an intern at a newspaper who did just that. He didn't like his supervisor and said so in graphic terms in an e-mail. Then he accidentally sent the e-mail to his supervisor. (The intern kept his position, but the atmosphere was cold, to say the least. And there was no job offer at summer's end.)
4. Using one e-mail address for everything. I have four different e-mail addresses: private, public, one I use for online mailing lists, and another for when I go shopping online. These addresses attract mail for those specific areas.
I can have as many as I want, because I host my own e-mail server. But if you are using an Internet service provider, you still can do this. Most providers will give you a half-dozen e-mail accounts. You can also use addresses on the Web for personal accounts. Both Hotmail and Yahoo! are good. You can reach those accounts from anywhere, assuming you have Web access.
5. Forgetting to check all of your e-mail accounts. Checking all these accounts can be a chore, especially from home. So I use ePrompter (www.eprompter.com), which can check 16 different password- protected accounts. Best of all, ePrompter is free. There are other programs that will do this for a fee, including Active Email Monitor (www.emailmon.com).

6. Clicking "Send" too fast. Reread every e-mail before you send it! I actually get e-mails from job applicants with misspellings and missing words. They all go to the same place: the garbage. This is a pet peeve. I'm not going to hire someone who is careless.
Even if you're not looking for a job, you want to be careful. People will judge you subconsciously on mistakes. None of us is perfect. But you can catch 99% of these problems by rereading the text.
And don't depend on the spell-checker. It will catch misspellings. But if you use "four" instead of "for," or "your" for "you're," it won't tell you. It also is not likely to catch any missing words in a sentence that you inadvertently failed to include. So take a minute and reread your text. Don't look like an ignoramus.

7. Forgetting the attachment. This seems obvious, but I can't tell you how many times I've received an e-mail with a missing attachment. Since we all do it occasionally, it shouldn't be a huge deal.
However, if you consistently make this mistake, people (perhaps important people) may think you're losing your marbles. They might even hesitate to do business with you in the future. When you get ready to send your e-mail, think: "What am I forgetting?"

8. Using your ISP's domain and not your own. Make your company look big. If you use a Web account or an ISP's name for your business, you're not going to look professional. You can buy a domain name separately for $20-$30 per year from a company such as VeriSign (www.netsol.com), or as part of a package from a Web hosting and e-mail service such as that offered by Microsoft Small Business. Assuming someone else hasn't already grabbed it, you can have your company in the domain name.
Let's say you run The BoolaBoola Co. If you use an ISP's address, you would have something like JoeBoolaBoola@SomeISP.com. But if you buy your own domain name, it could be Joe@TheBoolaBoolaCo.com. That's much more likely to impress your customers.
E-mail is almost like talking. We use it so much that we don't really think about it. But there are rules and courtesies, just as there are with talking. And there are other considerations involved in communicating by written word only.
Giving them some additional thought could make your e-mail experience more satisfying and your recipients much happier.

Thursday, January 10, 2008

Optimizing Your Asp.Net Pages for Faster Loading and Better Performance

By: John Belthoff

John Belthoff is an avid web developer who writes about Asp.Net in his spare time. He owns a Windows Asp.Net Web Hosting Company: www.hostsstation.com where you can contact him about hosting your website/blog or just to learn more.

If you read the internet and all of the websites dedicated to Asp.Net you will inevitably read about the wonders of the DataGrid, DataList, and Repeater controls. While each of these has its place, if you are only displaying data there is a much faster and more efficient means to do so.

Let's say you have a page that displays articles based on a query string. Take my article pages for instance. Each article is stored in a database and displayed on the page based on the unique id of the article as stored in the database.

A normal asp page execution procedure goes something like this. The code queries the database based on the Article I.D. and then brings back that information to the page where you display it in the fashion that you would like. This is a fairly straight forward approach with asp and is done all the time.

So how do we speed up our asp.net pages?

Number 1: Use Asp.Net Caching!

This is a no-brainer, and I won't go into the brilliance or details of asp.net caching here because at the time of this writing Google has 2,780,000 articles on the topic. Basically instead of querying the database each time the page is loaded you only query the database once and load that result into the system cache. Subsequent calls to load the page retrieve the data from the cache as opposed to the database which gives you an instant and considerable performance boost. You can then set the cache for how long the cache should store the information as well as many other features. If you are not using the cache, you should be whenever possible!

Number 2: If possible, do NOT use the standard Asp.Net controls.

That's right. The standard asp.net controls are designed for rapid development and not page performance. They allow you to design pages that grab and display data very quickly but their actual performance suffers because of the extra overhead which is there for ease and speed of development time and not page execution speed.

Instead, create either a User Control or even better yet a Web Custom Control which is by far the fastest performance wise and really quite easy to create and use.

Number 3: Use an SqlDataReader or even better yet use a set based command for Sql Server data retrieval and simply execute that one command against the database.

An asp.net SqlDataReader is a fast forward only datareader that closes the connection after it reads the last set of results. Now for my article pages we are only returning 1 particular result. In this case we would opt for the set based command. If you had more than 1 result returned, in your table of contents for instance, you would use the SqlDataReader because you are returning multiple results.

Set based commands are stored procedures that bring back data through parameters as opposed to a result set which then in turn needs to be looped through to obtain your data. So instead of writing your stored procedure like the following which brings back 1 result set:

Select Title, Body, Author
From Articles
Where ArtID = 215

We can write it using a set based command like this.

Create Procedure mysp_GetArticle

@Title varchar(200) Output,
@Body varchar(8000) Output,
@Author varchar(500) Output

As

Select @Title = Title, @Body = Body, @Author = Author
From Articles
Where ArtID = 215

GO

The above query will return only the three parameters called for and not a result or record set so you don't have to then walk through the returned record set that has only 1 result in it anyway. This second little process of work decreases your performance so do not use it if you can. Combine this technique with the asp.net cache.

Number 4: Use Classes and ArrayLists as opposed to returning an SqlDataReader.

Create a class and then if there are more than one set of results store those results into individual instantiations of that class. Finally store each of those classes into an ArrayList. You can then store only that ArrayList into the asp.net cache. So instead of getting the results back from a SqlDataReader when loading your page you get them from the ArrayList which is stored in the cache. Nice huh?

Finally... you want to incorporate all of these techniques into your final results which would be performed in the following manner and sequence.

On the first time the page loads, query the database and return all of your data storing it into individual classes. Then store each of those classes into an ArrayList. If you only have one single result you may store only the class into the cache. Then take your ArrayList and store it into the cache.

Next create a Web Custom Control and pass the cached ArrayList to the custom control and loop out your data using the HtmlTextWriter which is very fast. Remember each subsequent call to load the page will be called from the cache which stores your ArraList of classes or your single class.

Certainly it takes a significant amount of additional coding to do it in this fashion, especially when you take proper error handling into consideration, but if you follow this approach your pages will be screeching fast, you will immediately notice the difference, and your asp.net pages will execute in the proper sequence - Data handling in the Page_Load function and the html display in the Page_Render function. Further, you will be glad you did and so will your visitors.

Happy Programming!

The Waterfalls And Rapids Of IT Projects

By: Vernon Riley

Vernon Riley is a senior consultant who understands both project management and technology. He has 20 years experience of major IT projects, and the difficulties of delivering complex projects. He can be contacted via Kutchka

Even when a good governance structure is in place the structure of an IT project is more important than is often assumed. The structure can make estimating difficult, and make it impossible to deliver whilst retaining the confidence of the management and external stakeholders. Yet the structure is often assumed without proper debate - either with the customer or with the project team.

Many organisations and project managers still like to use the so called 'waterfall' method of controlling IT projects, because they believe it gives them greater commercial control, and allows fixed cost projects. This method splits up the total project into a series of logical steps : - Work out what items should be done - Estimate what these will cost. - Agree these definitions and costs. - Undertake formal design. - Build the items. - Test the items. - Deploy and use the items.

The waterfall method can appear to offer a clear logical path from inception through to completion. The commercial control supposedly occurs because the facts are determined before agreement is reached, thereby allowing the following steps to be controlled within an agreed financial framework.

If the project uses 'well known' technology or is very similar to previous projects then the waterfall method can be successfully used. Where there is a substantial part that is new, or uncertain some serious issues exist with this approach.

In some cases the proportion of the total project costs and time that need to be spent before sufficiently precise estimates are generated can be substantial. Clients and suppliers can disagree whether this should this be free or paid for. In many cases a messy compromise is arrived at where the costs of the business analysis and estimation will be paid for ( or at least negotiated about ) after it is decided whether the project is to be accepted.

In other cases it isn't certain that people are good at thinking through complex systems with sufficient accuracy to make the design 'fit for purpose', prior to some good 'proofs of concept'.

Quite apart from the difficulty of identifying the 'facts'; the fixing of features up front can lead to an 80/20 split where 80% of the costs produce 20% of the benefits and vice versa. This should give most clients cause for concern.

There can also be significant change in the business requirements during a project of 2 or 3 years duration. This has encouraged the move to Rapid Application Development ( RAD )

Good estimates are difficult It is difficult to produce good estimates. Increasing the granularity can lead to estimating safety margins being accumulated ( if say the minimum estimating unit is 1 day - then something that took 1 hour would be recorded as 1 day giving a 7 hour accumulation per task of this length).

Estimates need to be distinguished from use of historical data to give timings. But the latter need to be very carefully annotated and used to ensure they are being used properly.

Perhaps the thought that 'estimation should be democratically controlled, and execution involve authoritarian methods rather than as often happens the other way around'; is one of the most useful maxims here.

Acceptance of the facts It is very difficult to know the extent to which the ultimate customer actually has bought into the design and estimates being produced. There may in fact be no acceptance other than of 'that is the way our supplier chooses to do things' giving the opportunity for later disputes.

In some projects it can be very difficult to establish who is entitled to sign off documents as correct on behalf of the organisation. This makes any approach other than time and materials problematic.

Rapid Application Development ( RAD )

Rapid development techniques are now accepted in many cases. These methods involve using a number of iterative prototypes are built to give the customer greater control over the finished result. Thus the analysis, design, build and test sequences of the whole project is split into a number of successive cycles.

There are, however, unanswered questions about the range of IT projects for which RAD is suitable, and issues about whether all of the suggested elements of RAD are as important as one another. For instance some approaches time box 3 to 6 week periods, whilst others simply allow incremental delivery over a number of months. Yet others regard the complete incorporation of automated unit testing into the coding ( build ) stage as perhaps the most important contribution.

There are numerous variations on RAD, including pairing - where two programmers work together with one writing tests and the other writing code to satisfy those tests. There is still a real need however to prioritise the efforts.

Some of the serious criticisms of RAD are that it can allow scope creep, lack of rigour, and cost overruns. It can be particularly difficult to stop 'gold plating' on particular easily understood elements (e.g. the user interface) at the expense of underlying functions that are more complex and less easily explained or understood by business people ( when the latter are involved in the assessment of each iteration ).

Here again, therefore, we encounter evidence that the structure of the project can have substantial impact on the viability of the development.

There are a number of problems therefore with both traditional and RAD methods of controlling custom and or complex IT projects. Many projects would be improved if expert help and more time were spent restructuring the project at the start to help the IT supplier clarify the design choices and the IT client clarify the business requirements. Whilst this does involve an explicit acceptance that money will be spent 'investigating' and 'researching'; this is actually nothing more than bringing present good practice out into the open.

Do You Want To Discover The Truth About Your Projects ?

By: Vernon Riley

He different types of project review each has their own characteristics and benefits. For any review however it is important to decide what the overall purpose is, and who should gain what from the output. This step is missed out in many cases and the design of the review is not given sufficient attention. Standard methodologies for carrying out project reviews can be helpful, but must be supplemented by intelligent thought! In the author's experience a review should consider both the project management standards and the subject matter of the project. Mistakes in either or both of these can lead to disaster, and it can take considerable skill and knowledge to uncover the truth.

If you are responsible for a project's success then you need the truth, and you are responsible for setting the principles and scope that will govern how effective the review will be in uncovering that truth. In particular you need to pick the reviewer so that you understand what bias is likely to be reflected in the results. Bias can arise from background, review methodology or political interests; and may not be intentional.

Bias due to interests
the review may be commissioned, designed or just operated by people who wish to prove certain results and disprove others. It may be that some wish to prove a particular methodology works, and therefore the review concentrates on the extent to which that methodology has been completely and fully employed. This may be completely different from assessing whether the project itself is likely to succeed or fail. The Prince2 manual for instance has a comprehensive health check. This will check for the complete use of Prince2 but the questions are mostly of the 'is there...item X' type, and there are very few questions asking about the quality of any of the items whose existence is being checked. Jobs and career progress may be at stake and informal alliances may be formed to ensure that the "correct results" are obtained by the review.

Bias due to role

The UK government OGC gateway review is an externally focused health check, which concentrates on the extent to which the project is still required and could deliver the benefits sought by stakeholders. It is also quite reasonably designed to protect a purchaser (because the UK government almost always has this role), rather than the creator or supplier of the project. This affects the questions and can lead to a situation in which the project is affirmed as meeting all the criteria for the purchaser but is doomed as a result of events being suffered by the supplier (e.g. commercial losses, staff turnover etc.)

Bias due to reviewer's background
There can be subtle issues arising from the background of those carrying out the project review. Some reviewers will be much more technologists than project managers, whilst others will be the reverse. Although it makes competent practitioners much harder to find there is a good case for insisting on both sets of skills.

Bias due to distance
Reviews are sometimes undertaken by those who inhabit a management world of reports. If they then communicate with project managers and others who are somewhat distant from the actual tasks then the overall effect may be that the blind are leading the blind. Remember that real people, somewhere, should be actually doing the work to deliver the tasks required by the project. A competent reviewer needs to find them, understand them and discover what they think. This necessitates not only people and managerial skills but also some understanding of the skills employed by the project staff.

Checklists
These are useful for ensuring appropriate coverage but it is equally important that the reviewer can think freely and explore the implications of the information that the project team give. This information is normally messy and ill organized. Coherent results pointing in a single direction are unlikely and the reviewer needs to be able to cope with

So what should the balance be?
Project Management skills in medium or large projects are certainly critical as the need to be organized is a critical success factor. 'Ready aim fire' expresses the simple truth that without those competent to first aim the project team members in the correct direction there is little chance of the target being hit. It is important that clear business justification and rules for project control are created and maintained during the life of the project. Appropriate risk management and planning are also vital to enable the overall project to achieve its intended results.

That the reviewer also possesses a reasonable level of subject related understanding is also critical so that those who are undertaking the work can be questioned rigorously about the quality and assumptions underlying the work they are undertaking. This isn't about the facility to do the work, but the ability to discuss designs, build dependencies, test conditions and the like in the detail that will establish whether the sequence of work intended is viable.

Reviews can be very important, but deciding who should carry them out, and how they should be undertaken is not simple. The most important determinant of success is your choice of reviewer.

Project Management

1. Build and Maintain Contacts

Contacts are the lifeblood of any successful business. Most people have short memories hence its imperative to keep in touch with prospective clients, business contacts and industry people. You never know who may need you when and for what work.

2. Build a Strong Portfolio

When service buyers see provider portfolios on the freelance websites, apart from the price bid, the profile of the service provider, client referrals, work examples and overall presentation plays a major role in the selection process. Hence, it is important to build a professional portfolio with clearly laid out skill sets, contact information, customer references, academic qualifications, professional qualifications and examples of work done.

3. Define Scope of Work

When you win a project, make sure you clearly discuss the scope and functional features of the project with the client. This leads to healthy client relationships and makes it easier to plan the project execution. If you frequently contact the client with your queries, he might think that you did not understand the project and may become apprehensive working with you.

4. Design System Architecture

After finalization of project scope, design the architecture of the project in the form of a diagram and discuss it with the client so that you need not make too many changes after delivering the project to the client. Make sure you or your team sticks to this design so that the project development does not become haphazard.

5. Project Documents

It is a good practice to store all project related documents and client instructions in one place for quick access and timely action.

6. Time Allocation

- Define Projects Tasks, Sub-Tasks and Allocate Time for each activity so that you can match client deadlines and also monitor the progress of work with respect to pre-decided timelines.

7. Allocate Tasks to Team Members

Keep track of Tasks allocated to team members for quick reporting and monitoring the progress of work.

8. Set Deadlines

Estimate and Set Deadlines on the various project related activities.

9. Monitor Progress of Work

Monitor the progress of work frequently so that you can communicate the same to your clients. Clients expect you to keep in touch with them and intimate them of the state of affairs.

10. Keep Track of Project Costs and Expenses

The primary purpose of business is to earn profits. For this you need to keep track of your expenses and revenue generated from work.

11. Client Communication

Frequently communicate with clients, intimating them of the progress of work. This leads to development of client confidence in your abilities.

12. Deliver the Project

After completion, deliver the project to the client and keep record of the delivery so that you can generate invoices on the client.

13. Raise Invoices on Clients

Raise Invoices on Clients and record of payment receipts for timely reminder to clients and to manage your inflows.

14. Manage Project Change Requests

Often, clients may ask you to change certain parts of a project. As part of efficient customer service, you should record and keep track of such requests and intimate the client upon making the change.

15. Use a System to Manage

Activities– Utilize a software system to manage all these activities. There is plenty of software available that can help you manage one or more of the above activities.

Javascript Certification


http://www.brainbench.com/transcript.jsp?pid=6127671

Test: Javascript
Date: 27-May-2006
Score: 3.19
Weights: 100% Javascript
Elapsed time: 33 min 16 sec
Javascript
Score: 3.19
Percentile: Scored higher than 35% of previous examinees

Demonstrates a solid understanding of core concepts within this topic. Appears capable of working on most projects in this area with moderate assistance. May require some initial assistance with advanced concepts, however.
Strong Areas
  • Objects
  • Statements
Weak Areas
  • Components
  • Controlling Windows, Documents


.Net Certification

http://www.brainbench.com/transcript.jsp?pid=6127671

Test: .NET Framework
Date: 27-May-2006
Score: 3.48
Weights: 100% .NET Framework
Elapsed time: 21 min 18 sec
.NET Framework
Score: 3.48
Percentile: Scored higher than 83% of previous examinees

Demonstrates a solid understanding of core concepts within this topic. Appears capable of working on most projects in this area with moderate assistance. May require some initial assistance with advanced concepts, however.
Strong Areas
  • Common Language Runtime (CLR)
  • .NET Framework Class Library
  • Assemblies
Weak Areas
  • .NET Programming
  • .NET Metadata
  • .NET Architectural Overview


Wednesday, January 09, 2008

A Time-Saving Programming Tactic that Doesn't Work

By: V. Berba Velasco Jr., Ph.D.

Let's say you are working on a software project that's under critical deadline, that is so tight that you already know it will involve many late nights of black coffee and frenetic programming. What can you do to make this process go faster?

I honestly don't know, since the correct answer will depend on one's individual circumstances. However, I can tell you how many programmers do respond under such circumstances. They decide to save time by skipping over the software planning and design phase, and immediately start coding away.

To an inexperienced or otherwise undisciplined programmer, this seems to make sense. After all, the finished product is what truly matters, right? The customer doesn't care about flowcharts, class diagrams or software architectures. All they want is something that works.

It seems to make sense, but it's a foolhardy approach. That way lies madness. We've all heard that an ounce of planning is worth a pound of cure, but in the world of software development, this adage is often forgotten.

If a real estate developer needs to get a house built quickly, does he save time by skipping over the architectural design phase? Does he decide to dispense with blueprints, and just start laying down concrete? Of course not. He knows that the results would be chaotic, and that work will progress more slowly without careful forethought and a concrete plan.

Yet that's the approach that many people take when it comes to software. They decide to just start coding away, thinking that this makes the software development process more efficient. On fairly simple projects, this might work. On anything of moderate complexity though, such an approach is doomed to fail. Sure, you may save time at first. However, without a concrete software plan and a carefully considered design, problems are bound to catch up with you before long. Many of these problems won't become clear until the testing phase comes around, and by then, it may be too late.

Sadly, such reckless thinking is often encouraged in the corporate world. Due to time constraints, a misguided manager may instruct his team to skip over the design work and just start hacking away. This makes the team seem focused and productive, but this strategy can wreak havoc on the project timeline. What's more, the resultant code is often a tangled, poorly documented, chaotic mess. If this software must be maintained for years to come, then you have a recipe for disaster.

Mind you, I'm not saying that an elaborate design is always necessary. If time is short, then one might not have the luxury of an intricate software plan with exhaustive design documentation. However, one should at least have a general software architecture laid out"”one which is detailed enough to make the software development process smoother and easier. Programmers rarely err on the side of over-planning, but they frequently fall into the trap of insufficient design detail. Don't make this mistake, if you really want to save time.

Questions to ask the Interviewer....

By Erin Hovanec

The interviewer asks you, "Do you have any questions for me?"

You say ... "Yes!"

This is the easiest interview question out there. Always say yes.

Asking questions shows that you're interested in the job. It also gives you a chance to show how knowledgeable you are about the position and the industry. Most important, it lets you highlight why you're the perfect candidate.

You have to choose your questions carefully, though, depending on who's doing the interviewing. An excellent question for a recruiter might be inappropriate for an executive. And you don't want to ask your potential boss something that's best suited for a future coworker.


Also, there are certain questions you should never ask early in the interview process -- no matter whom you're meeting. Don't ask about salary, vacation, 401(k) or anything else that might make you seem more interested in the compensation than the company.

This article shares questions appropriate for every type of interviewer.

The Recruiter: The 'Big Picture' Person

It's the recruiter's job to identify strong candidates and guide them through the hiring process. Think of the recruiter as the "big picture" person. They can give you an overview of the company and the department as a whole. (Save very specific questions about the job for the hiring manager.) The recruiter is also the best person to answer questions about the hiring process.

Some questions to ask the recruiter:

* How would you describe the company culture?
* What type of employees tend to excel at this company?
* Can you tell me more about the interview process?

The Hiring Manager: Your Future Boss

The hiring manager will likely supervise you if you get the job. They're the most knowledgeable people about the position and its requirements. You should direct specific questions about the job, its responsibilities and its challenges to them. You may also want to ask what kind of candidate they're seeking.

Some questions to ask the hiring manager:

* What are the most important skills for the job?
* How would you describe your ideal candidate?
* What's a common career path at the company for someone in this role?

The Executive: The Industry Expert

Senior managers and executives are likely to be most knowledgeable about the latest happenings in their industry. If you'll be working closely with an executive, you can ask them some specifics about the job. But you should focus most of your questions on the future of the company and the industry. This is your chance to show off your industry knowledge!

Some questions to ask a senior manager or executive:

* How do you think this industry will change in the next five years?
* What do you think gives this company an edge over its competitors?
* What's the company's biggest challenge? How is it planning to meet that challenge?

The Coworker: The Straight-Talker

Some interviews will also include a meeting with a potential coworker -- the interviewer most likely to "tell it how it is." A potential colleague may be most candid about the job, its challenges and the work environment. However, don't expect inside information -- and certainly don't ask for it.

Some questions to ask a potential coworker:

* What's a typical day like in the department?
* How would you describe the work environment at the company?
* What's the most enjoyable part of your job? What's the most challenging part?

Delivering software as a service

Traditionally, companies buy software and then install and maintain these applications on their own machines. That model is giving way to one where companies will buy subscriptions and access services over the Internet from software developers that host their own applications.

* Some applications will migrate to the new delivery model faster than others, but all software makers should begin to explore the economics and necessary capabilities for online delivery.

* Revenue models for these developers will change, since software as a service delivers fees over time rather than large up-front license purchases.

* Customer service and R&D capabilities will also need to adjust to the reality of ongoing relationships with customers rather than periodic upgrades.

Artificial Intelligence

I was reading this article on Science Daily Website, I liked it and wanted to share with my friends. All Credit goes to Science Daily Website.

The modern definition of artificial intelligence (or AI) is "the study and design of intelligent agents" where an intelligent agent is a system that perceives its environment and takes actions which maximizes its chances of success.

John McCarthy, who coined the term in 1956, defines it as "the science and engineering of making intelligent machines." Other names for the field have been proposed, such as computational intelligence, synthetic intelligence or computational rationality.

The term artificial intelligence is also used to describe a property of machines or programs: the intelligence that the system demonstrates. AI research uses tools and insights from many fields, including computer science, psychology, philosophy, neuroscience, cognitive science, linguistics, operations research, economics, control theory, probability, optimization and logic.

AI research also overlaps with tasks such as robotics, control systems, scheduling, data mining, logistics, speech recognition, facial recognition and many others. Computational intelligence Computational intelligence involves iterative development or learning (e.g., parameter tuning in connectionist systems).

Learning is based on empirical data and is associated with non-symbolic AI, scruffy AI and soft computing.

Subjects in computational intelligence as defined by IEEE Computational Intelligence Society mainly include: Neural networks: trainable systems with very strong pattern recognition capabilities. Fuzzy systems: techniques for reasoning under uncertainty, have been widely used in modern industrial and consumer product control systems; capable of working with concepts such as 'hot', 'cold', 'warm' and 'boiling'. Evolutionary computation: applies biologically inspired concepts such as populations, mutation and survival of the fittest to generate increasingly better solutions to the problem.

These methods most notably divide into evolutionary algorithms (e.g., genetic algorithms) and swarm intelligence (e.g., ant algorithms). With hybrid intelligent systems, attempts are made to combine these two groups.

Expert inference rules can be generated through neural network or production rules from statistical learning such as in ACT-R or CLARION.

It is thought that the human brain uses multiple techniques to both formulate and cross-check results.

Thus, systems integration is seen as promising and perhaps necessary for true AI, especially the integration of symbolic and connectionist models.

Monday, January 07, 2008

It's New Year

I wish upon the stars that your year is a beautiful one... with

A Spring filled with Joy
A Summer filled with Peace
An Autumn filled with Love
and A Winter filled with Warmth....

Hope it's a dream-come-true year for you!

How to install Apache and Microsoft IIS on the same machine

If you're developing sites on both the Apache web server and Microsoft's Internet Information Services (IIS), it's sometimes convenient to be able to run and

test both platforms on the same box.

Assuming you're running Windows, the easiest way to do this is to install IIS then Apache on your machine and have IIS listen on port 80 (the default, so you

need to do nothing) and have Apache listen on another - typically port 8080.

This can be specified during the Apache install using the wizard or if you've already installed Apache, you can change the port as follows:


Locate the httpd.conf file in the conf directory of the Apache install
Find the "Listen" line in that file
Change the line to: Listen 8080
Save the file
Restart Apache

Your IIS pages will be available via http://localhost and your Apache pages via http://localhost:8080

Happy New Year!

I wish all my friends, family and the rest of the world a very happy, prosperous and peaceful new year. I am optimistic that this will be a great year for us as well as for everyone else.

Subconscious Mind!

What if I told you that there was a part of your mind that is always working, even when you are asleep? This part of your mind is known as...