Friday, August 19, 2011

Latest Videos - Maheshbabu - Doookudu Video Songs



Tuesday, August 2, 2011

Build a Killer Online Portfolio in 9 Easy Steps


Every freelancer should have an online portfolio. You’ve got one, right? If not, skip to the last paragraph of this post. It’s written for you.

If you do have one, you can breathe a sigh of relief. You’re halfway there.

Building your portfolio is easy. The hard part is making it good. A killer portfolio does more than just showcase your work. It transforms visitors into clients. Best of all, it’s an automatic work generator.

In this post, I want to show you how to take your online portfolio to the next level.

1. ASK THE QUESTION

Online portfolios tend to come in one of three shapes: a blog, a website, or a dedicated solution (something that’s just a portfolio, without any of the extra stuff).

The question I’d like you to have in mind as you read this is: how well does my site answer the questions potential clients are likely to have?

2. FOCUS ON SIMPLICITY

Your portfolio exists to impress and persuade potential clients. If you have a blog or website, though, you might (wisely) be trying to draw traffic from other sources. Maybe you’re sharing your knowledge, or providing value in other ways.

This has one potential drawback, though: you’re catering to so many people that the clear message you want to send potential clients might be getting lost in the noise.

If you’re looking for work, don’t be afraid to say it simply and boldly. Stick a ‘Hire Me’ button, link or section on your site.

If you’re looking for work, don’t be afraid to say it simply and boldly. Stick a ‘Hire Me’ button, link or section on your site.

Simplicity is the key to good web design. Potential clients will have one key question:where do I go if I’m thinking about hiring this person?

Give them the answer, as simply as you can.

3. OPTIMIZE YOUR ‘ABOUT’ PAGE

The importance of a good ‘About’ page can’t be overestimated. It’s the place potential clients will visit when they want answers to some essential questions:

  • Who is this person?
  • What qualifications and experience do they have?
  • Do they seem trustworthy and reliable?
  • Are they looking for work?
  • Can I see some examples of previous work?

You can answer the trustworthy and reliable question in two ways. You can include testimonials from previous clients, or you can emphasize the ways in which you’re a decent, normal person: you have a family, hobbies and so on.

For the last question, I think it’s important to link to a page containing examples of your previous work and nothing else: the portfolio in its most traditional form. It will allow potential clients to get to know what you’re capable of without any distractions.

4. PROVIDE A CLEAR MEANS OF CONTACT

It can’t hurt to put contact information at the bottom of your ‘About’ page, but this isn’t the only place you should make it available.

Website usability is conversational. If a potential client wanted to get in contact with you, would they ask you to tell them about yourself? Probably not. It doesn’t really make sense. They would instead ask: how can I get in contact with you? A prominent ‘Contact’ page is a clear and simple answer to that question.

5. CREATE A DEDICATED ‘HIRE ME’ PAGE

If your portfolio is a traditional showcase of your work, your ‘About’ page will suffice. If your blog or website is aimed at a broader audience, however, you’ll probably want to use your ‘About’ page to explain what your site does and what it has to offer.

That’s when a ‘Hire Me’ page becomes important (though you’d probably call it ‘Hire Jonathan’, or whatever your name is). It should include all the information listed in the ‘About’ page section above.

Link to your hire page in a prominent way from your site’s front page. If you want to get hired, be bold about it.

6. SHOW OFF ONLY THE SKILL YOU’RE SELLING

This might sound too common-sensical to be worth mentioning, but it’s a mistake I see made in a lot of online portfolios.

The freelancer showcases a wide range of great work. You head to their ‘About’ page, only to discover that they’re only looking for work in one of the areas covered. They’re presenting their portfolio as a vanity folder rather than a useful resource for potential clients.

If you only want web design work at the moment, for example, don’t showcase your photography. The items in your portfolio should always demonstrate your skill in the area you’d like to be hired in.

7. TELL STORIES POTENTIAL CLIENTS WANT TO HEAR

People who hire web designers, for example, are rarely designers themselves. They’re unlikely to appreciate your work for its creative value alone.

It’s very likely that you know more about the area you freelance in than your potential clients do. People who hire web designers, for example, are rarely designers themselves. They’re unlikely to appreciate your work for its creative value alone.

For that reason, you need to tell stories about your work. Not lies, of course — real, genuine stories. Stories about results. What did it do for your client? How did they benefit from your work?

Don’t showcase the items you’re most proud of. Showcase items that yielded the best results for your clients. Did website traffic spike 30% after that redesign you did? Did the last article you wrote for a client make the front page of Digg?

Potential clients are more interested in the story than the work itself. Always remember that your work is a means to an end: more traffic, more profits, more sales. By focusing on the end result, you’re focusing on what potential clients really want.

8. BUILD TRAFFIC TO TURN VISITORS INTO CLIENTS

You can source-out potential clients and point them to your portfolio, or you can create a portfolio people will find without your help. Some of those people will be potential clients. Get enough traffic, make a good impression, and your portfolio could become an automatic work generator.

More quality traffic generally means more work. However, it takes a lot of effort to build a popular website. Not necessarily a lot of effort in one go, but a sustained effort over time. For most successful bloggers and webmasters, that sustained effort feels more like a rewarding hobby than a chore.

As a freelancer, there are a number of ways you can add value to your site:

  • Share your knowledge with other freelancers.
  • Mentor wannabe freelancers.
  • Showcase your own work and work you like.
  • Create useful tools.
  • Share personal stories.

That’s just five options. I don’t doubt there are a hundred more. There are no right or wrong answers, so stick with something you love doing. That way, your enjoyment will still be there, even when the traffic isn’t.

9. ADD A LITTLE DOSE OF SEO

If you don’t want to work at creating content and generating inbound links, I’d suggest using this simple tip to optimize your site for search engines. Some of you reading this will be familiar with SEO, but for those who aren’t, it essentially refers to the things you do to place your site higher in the search results for certain keywords.

If you can pull this off, you’ll get an automatic stream of search traffic without doing too much work.

If you’re a web designer working out of the Bay Area, for example, potential clients will probably be searching Google for ‘Bay Area web designer’. Incorporate this word string into your site as much as is possible (and natural). Put it in your site’s title bar, work it into your ‘About’ page, and so on.

Just remember that you need to keep it subtle. Unless there’s plenty of competition for your keyword string, a few mentions should be enough.

The traffic you’ll get from this practice is made up of people looking to hire someone just like you. It’s easy to do, and very much worth doing.

* Those without a portfolio, this is the paragraph for you. You can create a dedicated portfolio in a few minutes at Carbonmade.

Done? Great. You might want to expand on it after reading this post, which you should do, now you’ve got an online portfolio and all…

Wednesday, June 29, 2011

Difference between PHP4 and PHP5

Here's a quick overview of what has changed between PH4 and PHP5. PHP5 for the most part is backwards compatible with PHP4, but there are a couple key changes that might break your PHP4 script in a PHP5 environment. If you aren't already, I stronly suggest you start developing for PHP5. Many hosts these days offer a PHP5 environment, or a dual PHP4/PHP5 setup so you should be fine on that end. Using all of these new features is worth even a moderate amount of trouble you might go through finding a new host!

Note: Some of the features listed below are only in PHP5.2 and above.

Object Model
The new OOP features in PHP5 is probably the one thing that everyone knows for sure about. Out of all the new features, these are the ones that are talked about most!

Passed by Reference
This is an important change. In PHP4, everything was passed by value, including objects. This has changed in PHP5 -- all objects are now passed by reference.

PHP Code:
$joe = new Person();
$joe->sex = 'male';

$betty = $joe;
$betty->sex = 'female';

echo
$joe->sex; // Will be 'female'
The above code fragment was common in PHP4. If you needed to duplicate an object, you simply copied it by assigning it to another variable. But in PHP5 you must use the new clone keyword.

Note that this also means you can stop using the reference operator (&). It was common practice to pass your objects around using the & operator to get around the annoying pass-by-value functionality in PHP4.

Class Constants and Static Methods/Properties
You can now create class constants that act much the same was as define()'ed constants, but are contained within a class definition and accessed with the :: operator.

Static methods and properties are also available. When you declare a class member as static, then it makes that member accessible (through the :: operator) without an instance. (Note this means within methods, the $this variable is not available)

Visibility
Class methods and properties now have visibility. PHP has 3 levels of visibility:
  1. Public is the most visible, making methods accessible to everyone and properties readable and writable by everyone.
  2. Protected makes members accessible to the class itself and any subclasses as well as any parent classes.
  3. Private makes members only available to the class itself.
Unified Constructors and Destructors
PHP5 introduces a new unified constructor/destructor names. In PHP4, a constructor was simply a method that had the same name as the class itself. This caused some headaches since if you changed the name of the class, you would have to go through and change every occurrence of that name.

In PHP5, all constructors are named __construct(). That is, the word construct prefixed by two underscores. Other then this name change, a constructor works the same way.

Also, the newly added __destruct() (destruct prefixed by two underscores) allows you to write code that will be executed when the object is destroyed.

Abstract Classes
PHP5 lets you declare a class as abstract. An abstract class cannot itself be instantiated, it is purely used to define a model where other classes extend. You must declare a class abstract if it contains any abstract methods. Any methods marked as abstract must be defined within any classes that extend the class. Note that you can also include full method definitions within an abstract class along with any abstract methods.

Interfaces
PHP5 introduces interfaces to help you design common APIs. An interface defines the methods a class must implement. Note that all the methods defined in an interface must be public. An interface is not designed as a blueprint for classes, but just a way to standardize a common API.

The one big advantage to using interfaces is that a class can implement any number of them. You can still only extend on parent class, but you can implement an unlimited number of interfaces.

Magic Methods
There are a number of "magic methods" that add an assortment to functionality to your classes. Note that PHP reserves the naming of methods prefixed with a double-underscore. Never name any of your methods with this naming scheme!

Some magic methods to take note of are __call, __get, __set and __toString. These are the ones I find most useful.

Finality
You can now use the final keyword to indicate that a method cannot be overridden by a child. You can also declare an entire class as final which prevents it from having any children at all.

The __autoload Function
Using a specially named function, __autoload (there's that double-underscore again!), you can automatically load object files when PHP encounters a class that hasn't been defined yet. Instead of large chunks of include's at the top of your scripts, you can define a simple autoload function to include them automatically.

PHP Code:
function __autoload($class_name) {
require_once
"./includes/classes/$class_name.inc.php";
}
Note you can change the autoload function or even add multiple autoload functions usingspl_autoload_register and related functions.

Standard PHP Library
PHP now includes a bunch of functionality to solve common problems in the so-named SPL. There's a lot of cool stuff in there, check it out!

For example, we can finally create classes that can be accessed like arrays by implementing the ArrayAccess interface. If we implement the Iterator interface, we can even let our classes work in situations like the foreach construct.


Miscellaneous Features

Type Hinting
PHP5 introduces limited type hinting. This means you can enforce what kind of variables are passed to functions or class methods. The drawback is that (at this time), it will only work for classes or arrays -- so no other scalar types like integers or strings.

To add a type hint to a parameter, you specify the name of the class before the $. Beware that when you specify a class name, the type will be satisfied with all of its subclasses as well.

PHP Code:
function echo_user(User $user) {
echo
$user->getUsername();
}
If the passed parameter is not User (or a subclass of User), then PHP will throw a fatal error.

Exceptions
PHP finally introduces exceptions! An exception is basically an error. By using an exception however, you gain more control the simple trigger_error notices we were stuck with before.

An exception is just an object. When an error occurs, you throw an exception. When an exception is thrown, the rest of the PHP code following will not be executed. When you are about to perform something "risky", surround your code with a try block. If an exception is thrown, then your following catch block is there to intercept the error and handle it accordingly. If there is no catch block, a fatal error occurs.

PHP Code:
try {
$cache->write();
} catch (
AccessDeniedException $e) {
die(
'Could not write the cache, access denied.');
} catch (
Exception $e) {
die(
'An unknown error occurred: ' . $e->getMessage());
}
E_STRICT Error Level
There is a new error level defined as E_STRICT (value 2048). It is not included in E_ALL, if you wish to use this new level you must specify it explicitly. E_STRICT will notify you when you use depreciated code. I suggest you enable this level so you can always stay on top of things.

Foreach Construct and By-Reference Value
The foreach construct now lets you define the 'value' as a reference instead of a copy. Though I would suggest against using this feature, as it can cause some problems if you aren't careful:

PHP Code:
foreach($array as $k => &$v) {
// Nice and easy, no working with $array[$k] anymore
$v = htmlentities($v);
}

// But be careful, this will have an unexpected result because
// $v will still be a reference to the last element of the $array array
foreach($another_array as $k => $v) {

}


New Functions

PHP5 introduces a slew of new functions. You can get a list of them from the PHP Manual.

New Extensions
PHP5 also introduces new default extensions.
  • SimpleXML for easy processing of XML data
  • DOM and XSL extensions are available for a much improved XML-consuming experience. A breath of fresh air after using DOMXML for PHP4!
  • PDO for working with databases. An excellent OO interface for interacting with your database.
  • Hash gives you access to a ton of hash functions if you need more then the usual md5 or sha1.
Compatibility Issues
The PHP manual has a list of changes that will affect backwards compatibility. You should definately read through that page, but here is are three issues I have found particularly tiresome:
  • array_merge() will now give you warnings if any of the parameters are not arrays. In PHP4, you could get away with merging non-arrays with arrays (and the items would just be added if they were say, a string). Of course it was bad practice to do this to being with, but it can cause headaches if you don't know about it.
  • As discussed above, objects are now passed by references. If you want to copy a object, make sure to use the clone keyword.
  • get_*() now return names as they were defined. If a class was called MyTestClass, then get_class() will return that -- case sensitive! In PHP4, they were always returned in lowercase.