Archive for the ‘Software Development’ Category
Ten Ways to Use PHP on your Website
PHP is a programming language that allows your website to go beyond a basic HTML document, and create an interactive experience. Open source means that the source code is available to someone with proper access to the site, so that they can easily make changes. When the Internet was first getting started, most of the pages on websites were basic HTML documents. Meaning that when you visited a page (about.html, for example), you downloaded all of the content of the page into your browser.
How Do I Know if I have a PHP Site?
If you are visiting a site, and you see that the page name ends with .html, this means that the page is most likely a plain old HTML page. If the page name ends in .php, then you the site is a php based site. Other dynamic programming languages include .jsp (Java Server Pages) or .asp (.NET or Active Server Pages). Occasionally you’ll see sites that end in .html that have dynamic code embedded in them, but this requires some tricks to accomplish on the server.
We have several sites that use static HTML pages and have great results. There are some pages that have dynamic content, but most of the pages are built in straight HTML. It’s great for search engine optimization, as some of those pages have been active for years. However, as the number of pages grow, it becomes increasingly difficult to update menu or navigation items, because it means you have to open each page, one at a time, and modify the contents.
Advantages of using PHP
PHP works a little differently. Instead of downloading the entire page (with the navigation, content and everything in one file), php allows you to embed programming code that isn’t displayed to the end user. This programming code allows you to tell the page, “Insert the top navigation here.” Or, “put the content for the page over there.”
PHP allows you to personalize a page, for example, or automatically detect that a user is coming into the site from a mobile device and display a different version of the site that is optimized for their Blackberry or iPhone. PHP keeps most of the code for the site “behind the scenes” so that the page that is displayed to the end user loads quickly and doesn’t require the browser to do processing work — the work is handled instead by the server.
PHP Is Ideal For Working With Databases
One of the biggest advantages of a programming language like PHP is that it allows you to easily interact with a database. If you’re unfamiliar with databases, think of a database as a souped-up form of an Excel spreadsheet. You have columns (i.e. page name, content, title) and rows. Rows typically would hold information that is organized by column headings.
PHP makes it easy to read information from a database, and then display information onto a web page. So, if you’ve ever used a site where you type in your zip code to find a store location near you, the system likely is taking your zip code, performing a database query (i.e. find all stores within 10 miles of the 80303 zip code) and display the results so that you can find your way. In order to do this, we have a geolocation database that allows us to tell the approximate distance between two zip codes.
You could do the same thing by building out a series of web pages that has each location. And while this is fine for three or four locations, as the number of locations increases, PHP allows you to automate the process.
Keep Content Organized
One of the ways we’ve been able to streamline the process of building websites is that we’ve standardized our process using our PageDirector content management system. There are many, many ways to build websites. Each designer seems to have a slightly different way of putting a site together. We are frequently asked to work on sites that other people have created, and in order to make simple changes to the content or navigation, we often have to dig around in the code to find where things are located. This takes time and isn’t very efficient. The PageDirector system, however, keeps all of the content for the site neatly organized in a database table. So that anyone can easily find the content and make changes quickly and easily. One of our clients said to me in an email to me yesterday, “It’s really efficient and a simple tool to use PageDirector. It makes my life easier being able to update the website fast.”
How Does It Work?
When someone clicks on a link to go to a page, the system pulls the right content from the database, grabs the menu items from another location, and on-the-fly creates the page for a person.
Summary
PHP is a server-based programming language that allows you to create an interactive experience for your site visitors, and keep content and other information organized within a database.
By Chuck Matthews in Webmasters
Ten Ways to Use PHP on your Website
PHP is a programming language that allows your website to go beyond a basic HTML document, and create an interactive experience. Open source means that the source code is available to someone with proper access to the site, so that they can easily make changes. When the Internet was first getting started, most of the pages on websites were basic HTML documents. Meaning that when you visited a page (about.html, for example), you downloaded all of the content of the page into your browser.
How Do I Know if I have a PHP Site?
If you are visiting a site, and you see that the page name ends with .html, this means that the page is most likely a plain old HTML page. If the page name ends in .php, then you the site is a php based site. Other dynamic programming languages include .jsp (Java Server Pages) or .asp (.NET or Active Server Pages). Occasionally you’ll see sites that end in .html that have dynamic code embedded in them, but this requires some tricks to accomplish on the server.
We have several sites that use static HTML pages and have great results. There are some pages that have dynamic content, but most of the pages are built in straight HTML. It’s great for search engine optimization, as some of those pages have been active for years. However, as the number of pages grow, it becomes increasingly difficult to update menu or navigation items, because it means you have to open each page, one at a time, and modify the contents.
Advantages of using PHP
PHP works a little differently. Instead of downloading the entire page (with the navigation, content and everything in one file), php allows you to embed programming code that isn’t displayed to the end user. This programming code allows you to tell the page, “Insert the top navigation here.” Or, “put the content for the page over there.”
PHP allows you to personalize a page, for example, or automatically detect that a user is coming into the site from a mobile device and display a different version of the site that is optimized for their Blackberry or iPhone. PHP keeps most of the code for the site “behind the scenes” so that the page that is displayed to the end user loads quickly and doesn’t require the browser to do processing work — the work is handled instead by the server.
PHP Is Ideal For Working With Databases
One of the biggest advantages of a programming language like PHP is that it allows you to easily interact with a database. If you’re unfamiliar with databases, think of a database as a souped-up form of an Excel spreadsheet. You have columns (i.e. page name, content, title) and rows. Rows typically would hold information that is organized by column headings.
PHP makes it easy to read information from a database, and then display information onto a web page. So, if you’ve ever used a site where you type in your zip code to find a store location near you, the system likely is taking your zip code, performing a database query (i.e. find all stores within 10 miles of the 80303 zip code) and display the results so that you can find your way. In order to do this, we have a geolocation database that allows us to tell the approximate distance between two zip codes.
You could do the same thing by building out a series of web pages that has each location. And while this is fine for three or four locations, as the number of locations increases, PHP allows you to automate the process.
Keep Content Organized
One of the ways we’ve been able to streamline the process of building websites is that we’ve standardized our process using our PageDirector content management system. There are many, many ways to build websites. Each designer seems to have a slightly different way of putting a site together. We are frequently asked to work on sites that other people have created, and in order to make simple changes to the content or navigation, we often have to dig around in the code to find where things are located. This takes time and isn’t very efficient. The PageDirector system, however, keeps all of the content for the site neatly organized in a database table. So that anyone can easily find the content and make changes quickly and easily. One of our clients said to me in an email to me yesterday, “It’s really efficient and a simple tool to use PageDirector. It makes my life easier being able to update the website fast.”
How Does It Work?
When someone clicks on a link to go to a page, the system pulls the right content from the database, grabs the menu items from another location, and on-the-fly creates the page for a person.
Summary
PHP is a server-based programming language that allows you to create an interactive experience for your site visitors, and keep content and other information organized within a database.
By Chuck Matthews in Webmasters
Lead Management Software, The 5 Mistakes That Kill Sales
In today’s business climate it’s no secret for the need of a strong customer base and to keep attracting new ones. Yes, we all want more customers with less leads. This is a strategy that greatly improves your profit and saves your company from throwing away money for marketing. Bringing in customers with less leads is key in this climate. Companies are throwing away opportunities every day. If you want to win more deals its important to use proper sales management to increase your sales numbers! It’s important to fix these gaps in your sales process to put you on top!
Here are 5 common lead management mistakes that should be fixed to increase sales performance:
1. Email Doesn’t = CRM Software
This is unquestionably the top killer of sales leads. Email is a communication tool. Meant for short-term discussions or collaborations, not sales account management. It is not a tool to build sales relationships, with hundreds of clients, over numerous years.
Fact: the human brain can only manage so much information.
Your attempts at remembering to follow-up and diligently stay on top of hundreds of prospects and customers is a guaranteed failure. Real sales performance needs a system that will routinely automate some contacts and remind you to reach out personally on a regular basis.
2. One Call Close are Unlikely
It is certainly the stuff of sales legend, that Boiler Room like close. The real sales pro’s understand that this ranks up with winning the lottery. So, if you hit it be happy, but don’t expect to pay your bills and feed yourself playing that game.
This is why a disciplined process of following up, on all prospects, is critical to success. Industry surveys show that the average lead takes a minimum of 5-7 contacts to close and generally requires 30-60 days. So, don’t get frustrated and toss out that two week old lead–nurture it.
3. Stop Picking Threw Leads
The Call of the Wild fouls this one up too, our primal nature lures us to the biggest fish (whale) of the freshest meat (new lead). Two notoriously bad choices.
We can’t pick the right leads! We invariably gravitate to our biases, which is typically counter productive to our sales numbers.
Grabbing for the brass ring (tackling only the biggest accounts or loan amounts) and neglecting the opportunity to land a few small ones along the way, is the perfect example. Your sales management system should help you create an ideal lead profile for each of your sales agents. You will be amazed at how different your “perfect lead” looks from your “preferred lead.”
4. Start to Value Your Leads
Are you trashing valuable non-responsive customers? More so than ever, leads need to be effectively nurtured. Challenging economic conditions slows everyone’s buying decisions. Stay top of mind, so you will be first in mind when the pain or the need becomes right for the big buy.
This doesn’t mean just throwing all your old leads into the autoresponder. Smart sales people build a detailed follow-up plan that includes email, mail, and telephone. And don’t forget the value at each of those touch points–an interesting article or report, an example of success, or best practices session.
5. Get to the Next Lead!
Sales usually always comes down to the numbers.
How many times do we spend too much time organizing or getting ready to do something? The best strategy in most cases is to do as my Dad was found of saying, “Do something, even if it’s wrong.”
Simply getting onto the next lead will produce more sales than any other strategy. Get To Your Leads Now!
By Bill Rice in Advertising
PHP, XML And XSL For Wireless Content
This article is another illustration of why using PHP with XSL to transform XML data to various presentation layers is beneficial. With that being said this article will demonstrate how to present the same data to several different wireless technologies using PHP and XSL, instead of an article completely focused on PHP and XSL.
There are plenty of articles on the web that already do this, but most them only focus on presenting data through HTML. This is what this article is for to give more examples of XSL other then with HTML. A recent article on “Using PHP and XSL to Transform XML into Web Content” by Benson Wong is available at Zend.com.
As well an installation on how to do a “Step by Step Install of Apache PHP SSL and more”, also includes XSL module, is available at
a style=”font-size: 11px; background: none transparent scroll repeat 0% 0%; color: #1f3a56; font-family: Verdana, Helvetica, sans-serif; font-variant: normal; text-decoration: none; webkit-background-clip: initial; webkit-background-origin: initial;” href=”http://www3.telus.net/jasonlam604/linux002.html” target=”_blank”>http://www3.telus.net/jasonlam604/linux002.html.
As well you can refer to
http://www.xslt.com/ or
http://www.w3schools.com/default.asp for more information on XSL.
Brief Recap of XSL and XML
XSL (eXtensible Stylesheet Language) is used to transform XML into data/form for a particular device whether it be a screen, voice or paper so that it can understand what the XML data is. Reason being XML tags are not predefined so devices like browsers are unable to understand XML and that is what XSL is for. At the same time it allows for different stylesheets to be applied to the same XML data for different devices as the following examples will show.
The Familiar HTML
Okay, let us start with the familiar HTML example first. As well present the PHP code used to transform the stylesheet and the XML data itself.
PHP Source Code:
<?php
include_once(”./xslt.class.php”);
$xslt = new Xslt(”c://data//books_html.xsl”, “c://data//books.xml”);
header(”Content-type: text/html”);
print ($xslt->transform());
?>
PHP Helper Class Source Code:
class Xslt {
var $xsl_file;
var $xml_file;
var $fileName;
function Xslt($xsl_file = '', $xml_file = '') {
$this->xsl_string = "file://" . $xsl_file;
$this->xml_string = "file://" . $xml_file;
}
function transform() {
$this->result = '';
$xsltHandle = xslt_create();
//xslt_set_base($xsltHandle,'file://c://php//xslxml//');
$this->result = xslt_process($xsltHandle,$this->
xml_string,$this->xsl_string);
//$this->result = xslt_process($xsltHandle,'file://d://'
. $this->xml_string,$this->xsl_string);
if (!$this->result)
die("Transformation failed");
xslt_free($xsltHandle);
return $this->result;
}
}
XML File
<?xml version="1.0" encoding="UTF-8"?>
<books>
<book>
<title>Professional PHP4 Programming </title>
<author>Deepak Thomas </author>
<price> 49.99 </price>
<special> 34.99 </special>
<size> Paperback 974 pages ; Dimensions (in inches):
2.08 x 9.00 x 7.26 </size>
<publisher> Wrox Press Inc; 1st edition (January 2002)
</publisher>
<isbn> 1861006918 </isbn>
< /book>
<book>
<title> PHP Fast and Easy Web Development, 2nd Edition
</title>
<author> Julie C. Meloni </author>
<price> 29.99 </price>
<special> 0.00 </special>
<size> Paperback 504 pages ; Dimensions (in inches):
1.03 x 9.24 x 7.32 </size>
<publisher> Premier Press; 2 edition (August 26, 2002)
</publisher>
<isbn> 193184187X </isbn>
</book >
<book>
<title >PHP MySQL Website Programming: Problem - Design
- Solution </title>
<author >Chris Lea </author>
<price> 34.99 </price>
<special >24.99 </special>
<size> Hard Cover 500 pages ; Dimensions (in inches):
1.15 x 9.08 x 7.22 </size>
<publisher> Wrox Press Inc; (March 2003) </publisher>
<isbn> 1861008279 </isbn>
</book >
</books>
XSL File
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" >
<xsl:template match="/">
<html>
<body>
<h2>PHP Books </h2>
< table border="0" cellspacing="0" cellpadding="0">
< xsl:for-each select="books/book">
< tr>
< td>
< u> < b> < xsl:value-of select="title"/>
< /b> < /u> < br/>
< b> < xsl:text> Author: < /xsl:text> < /b>
< xsl:value-of select="author"/> < br/>
< b> < xsl:text> Price: < /xsl:text> < /b>
< xsl:value-of select="price"/>
< xsl:if test="special > 0">
< b> < xsl:text> On Sale For: < /xsl:text>
< xsl:value-of select="special"/> < /b>
< /xsl:if> < br/>
< b> < xsl:text> Paperback: < /xsl:text> < /b>
< xsl:value-of select="size"/> < br/>
< b> < xsl:text> Publisher: < /xsl:text> < /b>
< xsl:value-of select="publisher"/> < br/>
< b> < xsl:text> ISBN: < /xsl:text> < /b>
< xsl:value-of select="isbn"/> < br/>
< br/>
< /td>
< /tr>
< /xsl:for-each>
< /table>
< /body>
< /html>
< /xsl:template>
< /xsl:stylesheet>
Output:
The XML file is your key file where dynamic data is stored, changed or removed. It does not affect any the layout of the pages themselves. This you should already know. After looking at the above code and from your experience working with XSL to transform XML files to HTML output, you are probably saying to yourself this is not worth it.
I agree with you one hundred percent, not only is it a lot of work; but also requires you add to your skill set XSL and XML. In fact, if there is no requirement to output the data to anything but a regular browser it might be in your best interest to simply stick to PHP and HTML. But if you are going to support other devices or media you should seriously consider using PHP and XSL.
The following three XSL transformations will demonstrate this, the technologies used will be WML, cHTML and VXML,
WML
PHP Source Code:
<?php
include_once("./xslt.class.php");
$xslt = new Xslt("c://data//books_wml.xsl",
"c://data//books.xml");
header("Content-type: text/vnd.wap.wml");
print ($xslt->transform());
?>
XSL File
< ?xml version="1.0" encoding="UTF-8"?>
< xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
< xsl:template match="/">
< wml>
< template>
< do type="accept" label="Back"> < prev/> < /do>
< /template>
< xsl:element name="card">
< xsl:attribute name="id"> books< /xsl:attribute>
< xsl:attribute name="books"> PHP Books
< /xsl:attribute>
< p>
< small>
< xsl:for-each select="books/book">
< u> < b> < xsl:value-of select="title"/>
< /b> < /u> < br/>
< b> < xsl:text> Author: < /xsl:text>
< /b> < xsl:value-of select="author"/> < br/>
< b> < xsl:text> Price: < /xsl:text>
< /b> < xsl:value-of select="price"/>
< xsl:if test="special > 0">
< b> < xsl:text> On Sale For: < /xsl:text>
< xsl:value-of select="special"/> < /b>
< /xsl:if> < br/>
< b> < xsl:text> Paperback: < /xsl:text>
< /b> < xsl:value-of select="size"/> < br/>
< b> < xsl:text> Publisher: < /xsl:text>
< /b> < xsl:value-of select="publisher"/> < br/>
< b> < xsl:text> ISBN: < /xsl:text>
< /b> < xsl:value-of select="isbn"/> < br/>
< br/>
< /xsl:for-each>
< /small>
< /p>
< /xsl:element>
< /wml>
< /xsl:template>
Output:
cHTML
PHP Source Code:
<?php
include_once("./xslt.class.php");
$xslt = new Xslt("c://data//books_chtml.xsl",
"c://data//books.xml");
header("Content-type: text/html");
print ($xslt->transform());
?>
XSL File
< ?xml version="1.0" encoding="UTF-8"?>
< xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
< xsl:template match="/">
< html>
< head>
< title>< xsl:value-of select="page/title"/>
< /title>
< /head>
< body>
< xsl:for-each select="books/book">
< small>
< u>< b>< xsl:value-of select="title"/>
< /b>< /u>< br/>
< b>< xsl:text>Author: < /xsl:text>< /b>
< xsl:value-of select="author"/>< br/>
< b>< xsl:text>Price: < /xsl:text>< /b>
< xsl:value-of select="price"/>
< xsl:if test="special > 0">
< b>< xsl:text> On Sale For: < /xsl:text>
< xsl:value-of select="special"/>< /b>
< /xsl:if>< br/>
< b>< xsl:text>Paperback: < /xsl:text>< /b>
< xsl:value-of select="size"/>< br/>
< b>< xsl:text>Publisher: < /xsl:text>< /b>
< xsl:value-of select="publisher"/>< br/>
< b>< xsl:text>ISBN: < /xsl:text>< /b>
< xsl:value-of select="isbn"/>< br/>
< br/>
< /small>
< /xsl:for-each>
< /body>
< /html>
< /xsl:template>
< /xsl:stylesheet>
Output:
VXML
PHP Source Code:
<?php
include_once("./xslt.class.php");
$xslt = new Xslt("c://data//books_vxml.xsl",
"c://data//books.xml");
header("Content-type: text/xml");
print ($xslt->transform());
?>
XSL File
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:template match="/">
<vxml version="2.0">
<form id="intro">
<block>
<xsl:for-each select="books/book">
<xsl:value-of select="title"/>
<break size="large"/><break size="large"/>
<xsl:text>Author </xsl:text><
xsl:value-of select="author"/><break size="large"/>
<xsl:text>Price </xsl:text>
<xsl:value-of select="price"/><break size="large"/>
<xsl:if test="special > 0">
<xsl:text>On Sale For </xsl:text>
<xsl:value-of select="special"/><break size="large"/>
</xsl:if>
<xsl:text>Paperback: </xsl:text>
<xsl:value-of select="size"/><break size="large"/>
<xsl:text>Publisher: </xsl:text>
<xsl:value-of select="publisher"/><break size="large"/>
<xsl:text>ISBN: </xsl:text>
<xsl:value-of select="isbn"/><break size="large"/>
</xsl:for-each>
</block>
</form>
</vxml>
</xsl:template>
</xsl:stylesheet>
Output:
It is unlikely you will have the voice-recognition technology equipment to run the VXML example. However, you can visit one of the VoiceXML providers such as VoiceGenie.com or Tellme.com. As well in this demonstration the output will stream the entire information from start to finish. When developing VoiceXML applications you should tailor the application towards voice interaction.
In this example, it would probably be better to list out the titles of the books in menu like fashion, possible as abbreviated titles. From there the user should select an option and thereafter the details of the book would be told to the user. The implementation of this is beyond the scope of this article.
The Benefits
Because we are using the same content in all cases, whether it is HTML, WML, cHTML or VXML the same XML data file is used. If additional books are added, books need to be removed or changes need to be made such as sales price all you really have to do is change the data in the XML file. As well this provides another layer of abstraction between the presentation layer and server-side code.
It keeps your code a lot cleaner rather then having several different files or several if statements in your PHP code to output the appropriate content for the appropriate viewer. As well it prevents you from inserting difficult to find and difficult to debug PHP code in all the different files for all the different devices being supported.
However, you will notice the Sale price is only displayed based upon the if statement in the XSL stylesheet, if this for some reason needed to be changed you would have to make the change in each XSL stylesheet. To avoid this, simply generate dynamic XML files with PHP and have your logic in the PHP code determine what goes into the XML file.
As well you can then use PHP to determine which appropriate pre-defined XSL stylesheet to use. This way your XML files are purely used as means of holding data in meaningful structure without any processing logic at all.
Furthermore, you have not only saved maintenance time but as well reduced the amount of effort needed if you were to support other features such as:
• Reports in PDF format
• RSS feeds
• WebServices
• SVG
• ChessML
• AvantGo
• AIML
• XHTML
• HDML
the list goes on and on.
Web Services is especially important when you want to start sharing the same information to other businesses or simply to other devices that are not script based such as SymbianOS devices, Palm, J2ME enabled devices and SmartPhones. This is because you are working with an agreed upon industry standard largely based on XML.
Summary
Even though there were several different types of technologies being used the over all goal was to demonstrate XSL is indeed beneficial when providing the same content to several different types of devices. As well if you aren’t familiar with some of the above wireless technologies that this article has now peeked your interests into something new.
By Jason Lam
Outsourcing IT Development: Advantages And Disadvantages
You can outsource almost anything. Maybe you don’t know it yet, but it’s true. A couple of days ago, when I was drinking coffee in the kitchen, my wife pointed at the faucet that was leaking big time. The good ole faucet was there when we moved in about ten years ago, and trying to fix it again didn’t make sense any more. Since I religiously believe in DIY, I bought a new faucet and set about working. When the old faucet was gone, I found out the metal pipe under the sink had to be replaced, too. There was no way I could do it without recourse to welding. I realized I was ready to outsource that part of the project, so I called the plumber.
IT development outsourcing isn’t much different than any other kind of outsourcing. When you face an insistent need to start a new IT development project, you have to weigh your current in-house capacity first. If your experience and budget allow you to cope with the task without resorting to any outside expertise, you should probably take full advantage of your potential and do it yourself. However, if there’s danger that you’ll bite off more than you can chew, it’s about time to consider the advantages and disadvantages of outsourcing.
Advantages
Basically, outsource service providers offer you higher quality services at a lower cost. This makes the advantages of IT development outsourcing obvious, so let’s have a look at just a few of them.
Outsourcing IT development is a most effective way to stretch your budget. When managers plan IT development outsourcing, they usually make it their aim to cut down the company’s expenditures by 30%. This is a figure that speaks for itself. Of course, there’s always the risk of failure, but if you outsource prudently, you’ll afford to implement projects of such a scale that would be impossible for you to reach on your own.
If you need to have state-of-the-art IT solutions worked out and innovations implemented with small losses, outsourcing may be the only way out. It will save you from the nightmare of retraining your employees (or even hiring new ones) and/or paying for re-equipment.
Cutting your costs and upgrading the quality of the services you offer will allow you to expand the competitive capacity of your business. I suppose the state the IT market is in today makes this simple argument a crucial one.
When you outsource IT development to an outside company, you can concentrate on your core activities. You won’t be able to completely forget all about the project or its part that you have chosen to outsource as soon as you sign a contract with an outsource service provider, but you won’t have to get scattered, either.
If you deal with an experienced and highly qualified vendor, you’ll be able to gain valuable expertise in support of your IT capacity. Almost any vendor will surely try to set a dependency trap for you, but it doesn’t mean you have to acquire the dependency pattern instead of learning everything you can derive from the vendor’s expertise.
Disadvantages
So, you have finally decided in favor of outsourcing. Will it automatically make you wealthy and happy? This is far from true. Various studies show that 20% to 35% of IT outsourcing contracts are not revived after they expire. Needless to say that most customers in these cases are not satisfied with the quality and/or price of the services. Outsourcing as a nightmare was eloquently illustrated by Beth Cohen, president of Luth Computer Specialists, Inc., “There was a company in Dayton that decided to outsource much of its IT and production to a foreign company about five years ago. After about nine months of outsourcing, the company realized that there was a huge loss in quality for both production and IT support. The company decided to cancel the contract and rehire their old employees. They ended up getting most of their old employees back but at a higher wage than before. Most people would think that the story ends there. However, as hard as it is to believe, the company is actually considering outsourcing again. They think it will be different this time. It will be interesting to see what happens.”
If you need to have state-of-the-art IT solutions worked out and innovations implemented with small losses, outsourcing may be the only way out. It will save you from the nightmare of retraining your employees (or even hiring new ones) and/or paying for re-equipment.
Cutting your costs and upgrading the quality of the services you offer will allow you to expand the competitive capacity of your business. I suppose the state the IT market is in today makes this simple argument a crucial one.
Forewarned is forearmed. This is why I suggest we discuss the pitfalls expecting a business that puts out to the sea of outsourcing.
You will lose control over the project or at least over the part that you have chosen to outsource. This is the problem that frightens almost any manager who has little or no experience in outsourcing. This is the challenge any business involved in outsourcing faces. This is the risk you have to take. It is inevitable that outsource service providers should take control – at least in part – over outsourcing projects. However, they are not supposed to abuse the confidence reposed in them by their customers. In order to minimize the risk, you have to be extremely careful studying the background of your potential vendor. Once you decide in favor of this or that company and begin negotiating the contract, you should try to make the whole process of the project implementation as transparent for you as it is possible.
It’s usually difficult to avoid the inherent problems of communication.
Telephone conversations are bad enough, but email and communicating via some instant messaging program online takes even more time. You’ll have to put up with an endless amount of emails to be sent and received. Besides, if you are dealing with an overseas vendor, the time zone problem will surely arise – the difference between your vendor and you may be seven hours or more. Just imagine: you arrive at the office at the same time when your vendor’s employees are going to leave. The best way around this problem is to set the mutually acceptable time for online meetings and to require that your vendor should stick to the schedule. In fact, you can even benefit from the difference in time zones between your overseas vendor and you. For instance, you transmit a rush order to the vendor at the end of your working day, the vendor receives it in the morning (their morning) having those seven or more hours behind, and by the time you arrive at the office, a considerable amount of work will have been done.
Standards of correspondence may be different to the extent of misunderstanding. If you are having any problems like that while corresponding with your potential outsource service provider, you should try to work out some standards that both of you will find easy to follow, or you’d better start looking for another vendor.
Language and/or cultural problems might contribute to all kinds of mix-up. For instance, a lot of people knowing some fundamentals of English are sure that when they ask your opinion about something and you say, “It’s okay,” it means you like it a lot. Don’t waste your time on foreign vendors communicating in something like “Pidgin English,” and even if the person you’re contacting has a fairly good command of English, ask for the resumes of those employees who are going to be responsible for each part/stage of the project to make sure they are fluent in English.
An outsource service provider might be trying to diversify the business so zealously that achieving progress in one particular area becomes questionable. The solution to this problem lies in the company’s portfolio. Examine the relevant case studies and success stories, ask the vendor for references, and, if you are still uncertain, do not hesitate to check these references.
Some vendors advertise services and even take up projects having little or no experience in the corresponding areas. Apparently, they intend to farm out at least some parts of such projects to subcontractors – which certainly doesn’t look very attractive to the customer. This problem resembles the previous one, and the recommended solution is the same.
Almost all outsource service providers place the highest emphasis on the most advantageous projects. It’s only natural, but it surely doesn’t make the life of the customers with lower profit potential easy. In order not to become a neglected customer, you should:
Insist on appending to the contract a project implementation schedule that includes as many milestones and deadlines as you find it necessary;
Stipulate for tough financial sanctions in case the vendor fails to meet any of the deadlines;
Agree on some incentive payments for completing the project on schedule (or even ahead of schedule);
Last but not least, build partnership relations with the vendor whose work you are satisfied with and whose high-value customer you want to become.
Most vendors try to accumulate as many projects as they can. It’s also easy to understand. However, the burden might appear to be beyond the vendor’s strength, and this will most likely wreck the project schedule, if not the whole project. If you don’t want it to happen to you, you can:
Find out the scale of the vendor’s operations including the approximate number of employees and customers – of course, if it’s possible;
Request the resumes of all the vendor’s employees that are going to be involved in the project implementation;
Ask the vendor to describe in detail these employees’ responsibilities;
Follow the advice given in the previous paragraph.
An unscrupulous vendor may be simply unqualified for the project that an imprudent customer have chosen to outsource. One of the ways to solve this problem is to focus your attention on the expertise of your potential outsource service provider at the selection stage.
A number of problems may arise due to the incompetence of a customer who is a novice in outsourcing. That’s right, you don’t have to think that an outsource service provider is the root of all evil. Incompetent customers tend to make modifications in standards and procedures that have been long established. A vendor who knows that the customer is always right tries to implement the project the way the customer wants it, which finally leads to a total mess-up. In order to avoid this kind of situation, try to find out as much as you can about IT development outsourcing from your contacts and… from articles like this.
Conclusion
Will outsourcing IT development really profit your business? Uh, maybe yes, or maybe no. In other words, it depends.
If you don’t possess in-house expertise and/or budget necessary to implement a vital IT development project, outsourcing it – in full or in part – to an outside company seems to be the best solution you can find.
However, you should be discreet selecting the vendor, examining the vendor’s expertise, negotiating the contract, and monitoring the project implementation. In this case, outsourcing IT development will be rewarding, and the return on investment might be the greatest you have ever had.
Then again, if you are not cautious and thorough enough, you might end up paying through the nose for much worse service than you expected to get. This is what I’m thinking of right now, when the plumber’s bill is laying before me.
By Basil Tesler
How To Use Regular Java Classes With JSP
In this topic, you’ll learn how to use regular Java classes to do the processing that a JSP requires. In particular, you’ll learn how to use two classes named User and UserIO to do the processing for the JSP of the Email List application.
The code for the User and UserIO classes
Figure 4-9 presents the code for a business class named User and an I/O class named UserIO. The package statement at the start of each class indicates where each class is stored. Here, the User class is stored in the business directory because it defines a business object while the UserIO class is stored in the data directory because it provides the data access for the application.
Figure 4-9: The code for the User and UserIO classes
The code for the User class
package business;
public class User{
private String firstName;
private String lastName;
private String emailAddress;
public User(){}
public User(String first, String last, String email){
firstName = first;
lastName = last;
emailAddress = email;
}
public void setFirstName(String f){
firstName = f;
}
public String getFirstName(){ return firstName; }
public void setLastName(String l){
lastName = l;
}
public String getLastName(){ return lastName; }
public void setEmailAddress(String e){
emailAddress = e;
}
public String getEmailAddress(){ return emailAddress; }
}
The code for the UserIO class
package data;
import java.io.*;
import business.User;
public class UserIO{
public synchronized static void addRecord
(User user, String filename)
throws IOException{
PrintWriter out = new PrintWriter(
new FileWriter(filename, true));
out.println(user.getEmailAddress()+ "|"
+ user.getFirstName() + "|"
+ user.getLastName());
out.close();
}
}
Note
The synchronized keyword in the declaration for the addRecord method of the UserIO class prevents two users of the JSP from using that method at the same time.
The User class defines a user of the application. This class contains three instance variables: firstName, lastName, and emailAddress. It includes a constructor that accepts three values for these instance variables. And it includes get and set methods for each instance variable.
In contrast, the UserIO class contains one static method named addRecord that writes the values stored in a User object to a text file. This method accepts two parameters: a User object and a string that provides the path for the file. If this file exists, the method will add the user data to the end of it. If the file doesn’t exist, the method will create it and add the data at the beginning of the file.
If you’ve read the first six chapters of Murach’s Beginning Java 2, you should understand the code for the User class. And if you’ve read chapters 16 and 17, you should understand the code in the UserIO class. The one exception is the use of the synchronized keyword in the addRecord method declaration. But this keyword just prevents two users from writing to the file at the same time, which could lead to an error.
Where and how to save and compile regular Java classes
If you’re using Tomcat 4.0, figure 4-10 shows where and how to save your compiled Java classes (the .class files) so Tomcat can access them. Usually, you’ll save your source code (the .java files) in the same directory, but that’s not required.
Figure 4-10: Where and how to save and compile regular Java classes
Where the User class is saved
c:tomcatwebappsmurachWEB-INFclassesbusiness
Where the UserIO class is saved
c:tomcatwebappsmurachWEB-INFclassesdata
Other places to save your Java classes
c:tomcatwebappsyourDocumentRootWEB-INFclasses
c:tomcatwebappsyourDocumentRootWEB-INFclassespackageName
c:tomcatwebappsROOTWEB-INFclasses
c:tomcatwebappsROOTWEB-INFclassespackageName
The DOS prompt window for compiling the User class

Description
-
Although you can save the source code (the .java files) in any directory, you must save the class files (the .class files) in the WEB-INFclasses directory or one of its subdirectories. This can be subordinate to the ROOT directory or your own document root directory.
-
To compile a class, you can use TextPad’s Compile Java command, your IDE’s compile command, or the javac command from the DOS prompt window.
-
If you have trouble compiling a class, make sure your system is configured correctly as described in appendix A.
The two paths shown at the top of this figure show where the User and UserIO classes that come with this book are saved. After that, the figure presents the syntax for other paths that can be used to store Java classes. If you review these paths, you’ll see that each one places the Java classes in a subdirectory of the WEB-INFclasses directory.
Since the User class contains a package statement that corresponds to the business directory, it must be located in the WEB-INFclassesbusiness directory. In contrast, if the package statement specified “murach.email”, the compiled classes would have to be located in the WEB-INFclassesmurachemail directory.
Since TextPad is designed for working with Java, you can use it to compile regular Java classes. However, you may need to configure your system as described in appendix A before it will work properly. In particular, you may need to add the appropriate WEB-INFclasses directory to your classpath.
If you use the DOS prompt window to compile your classes, you can do that as shown in this figure. Here, a DOS prompt is used to compile the User class. To start, the cd command changes the current directory to the WEB-INFclasses directory. Then, the javac command is used with “businessUser.java” as the filename. This compiles the User class and stores it in the business package, which is what you want.
A JSP that uses the User and UserIO classes
Figure 4-11 shows the code for the JSP in the Email List application after it has been enhanced so it uses the User and UserIO classes to process the parameters that have been passed to it. In the first statement of the body, a special type of JSP tag is used to import the business and data packages that contain the User and UserIO classes. You’ll learn how to code this type of tag in the next figure. For now, though, you should focus on the other shaded lines in this JSP.
Figure 4-11: A JSP that uses the User and UserIO classes
The code for a JSP that uses the User and UserIO classes
<!doctype html public "-//W3C//DTD HTML 4.0
Transitional//EN">
<html>
<head>
<title>Chapter 4 - Email List application</title>
</head>
<body>
<%@ page import="business.*, data.*" %>
<%
String firstName = request.getParameter("firstName");
String lastName = request.getParameter("lastName");
String emailAddress = request.getParameter("email");
User user = new User(firstName, lastName, email);
UserIO.addRecord(user, "../webapps/murach/WEB-INF/
etc/UserEmail.txt");
%>
<h1>Thanks for joining our email list</h1>
<p>Here is the information that you entered:</p>
<table cellspacing="5" cellpadding="5" border="1">
<tr>
<td align="right">First name:</td>
<td><%= user.getFirstName() %></td>
</tr>
<tr>
<td align="right">Last name:</td>
<td><%= user.getLastName() %></td>
</tr>
<tr>
<td align="right">Email address:</td>
<td><%= user.getEmailAddress() %></td>
</tr>
</table>
<p>To enter another email address, click on the Back <br>
button in your browser or the Return button shown <br>
below.</p>
<form action="join_email_list.html" method="post">
<input type="submit" value="Return">
</form>
</body>
</html>
Description
-
This JSP uses a scriptlet to create a User object and add it to a file, and it uses JSP expressions to display the values of the User object’s instance variables.
-
Since the User and UserIO classes are stored in the business and data packages, the JSP must import these packages.
In the scriptlet of the JSP, the getParameter method is used to get the values of the three parameters that are passed to it, and these values are stored in String objects. Then, the next statement uses these strings as arguments for the constructor of the User class. This creates a User object that contains the three values. Last, this scriptlet uses the addRecord method of the UserIO class to add the three values of the User object to a file named UserEmail.txt that’s stored in the WEB-INFetc directory. Since the WEB-INFetc directory isn’t web-accessible, this prevents users of the application from accessing this file.
After the scriptlet, the code in the JSP defines the layout of the page. Within the HTML table definitions, the JSP expressions use the get methods of the User object to display the first name, last name, and email address values. Although these JSP expressions could use the String objects instead, the code in this figure is intended to show how the get methods can be used.
Conclusion
This tutorial is an excerpt from chapter 4 of Murach’s Java Servlets and JSP. If you had any trouble understanding the HTML presented in this excerpt, or if you had any trouble getting the Email List application to run under Tomcat, you may want to download chapters 1 through 3 of this book. Within those chapters, you’ll find an HTML tutorial, and you’ll find detailed instructions on how to install and configure the Tomcat servlet/JSP container.
On the other hand, if you want to learn more about working with JSPs, you may want to download chapter 4 in its entirety. The remainder of the chapter shows how to use three more types of JSP tags and how to work with JSP errors. And if you want to know more about servlets, you may want to download chapter 5 of this book. This chapter shows how to implement the Email List application using servlets. Once you learn how JSPs and servlets work separately, you can learn how to use the best features of each by using them together within the MVC pattern.
| By Joel Murach |
Do You Need a Content Management System?
If HTML isn’t your thing and you’re planning a website with lots of content, you might want to consider using a “Content Management System,” also known as CMS. With CMS, content is stored in a database away from the site’s templates, which makes it impossible to destroy the design structure of the site when editing.
CMS systems allow anyone to edit his or her website, regardless of technical skill level. Pages can be added or changed easily without knowing any intricate coding. Many websites that use CMS resemble a portal design. This type of system also works well if multiple people or departments will be making updates to the website.
Most CMS systems must be installed on your web server and require that PHP and usually MySQL also to be installed. Once you decide that CMS is for you, you’ll need to decide on which software you’ll want to use. Many content management systems are “open source,” which means there is no charge to use them and most come with complete documentation for setup and use. Most all of them also offer support forums if you run into problems when installing or you need to ask a specific question.
Let’s take a look at some of the more popular CMS options available:
1) CMSimple:
Small open source program that’s less then 50KB. It’s free to use but contains a link back to CMSimple’s website. If you’re willing to pay $40.00 to register the software, you can remove it.
This program is written in php and runs on Linux and Windows32. It does not need a database as the entire site is stored in one simple html file.
2) Typo3:
Free again and open sourced software that comes with a list of default plug ins such as calendars, forums, guestbooks, polls and more. This software is not for the faint of heart, as there are many customization features along with a big learning curve.
3) Rodin:
Requiring PHP & MySQL, on your server this open source software consists of 9 small files weighing in at under 12KB. Very simple to get up and running. If you want more functionality, there are extra add-ons that can be downloaded as needed.
4) WebApp:
Free software written in Perl and runs on a Unix server. WebApp creates a “portal type” set of pages that includes forums, polls, news and others. This system does not require SQL on your web server, but does require Perl 5. One drawback is the limited number of themes that are supplied.
5) ASPBite:
A free ASP CMS system with many expandable modules. You’ll first need to download and install what’s called the “base station” as everything else is built on top of that. Add-ons include; polls, feedback forums, FAQ and more. There are more extensive “Pro” modules such as shopping carts and classified ads and others that are available for a fee. ASPBite is easy to use and comes highly rated.
6) PHP-Nuke:
This software runs on Linux and Windows servers and does require SQL be installed. Very popular and packed with features including; themes manager, banner ad systems, polls, forums, search engines and others. You’ll find a lot of web support and add-ons for this popular CMS system. Price $10.00.
7) CityDesk:
Unlike the others, CityDesk is downloadable Windows-based software you install on your PC. A very simple layout that allows you to add articles easily. You won’t need any special software installed on your web server to use it. Two versions are available: one free, which allows up to 50 files on any one website or the Professional version, which will set you back $299.00. You’ll find City Desk as simple to use as any word processor program.
Metadot:
This open source portal software is Perl based and allows many user-based customizations. Metadot runs on Linux, Apache and requires MySQL. This system would be a great choice for anyone planning a “community site.” It comes standard with calendar, polls, end-user personal websites and more. Totally free.
9) DotWidget CMS:
CMS software made very easy. Features include a built-in WYSIWYG text editor, multiple users and access levels, customizable templates and more. Your web server must have PHP and mySQL installed. You can easily install DotWidget and begin building your site’s structure and adding content. No client-side software is required and all editing is done through your browser. Only $49.00.
As you can see there are many content management systems to choose from, most of which won’t cost you a dime. Before deciding on which one is right for you, you’ll need to know what software is installed on your host’s server and you’ll also want to read over the support forums at each site to get an idea of any known problems or issues with each particular system.
A great site for reviewing and rating all types of CMS software is CMSMatrix.org. You can check boxes of the software packages you wish to compare and you’ll be shown a side-by-side comparison of each along with a full description.
If you’re planning a community site or any type of website that will require constant editing and additions, a content management system might be just what you’ve been looking for. We would be happy to design a custom Content Management System that is developed for your needs only.
By Merle








Recent comments