What is CodeIgniter and How Does it Work

This article explains what the CodeIgniter framework is and gives insight as to how CodeIgniter works. 

CodeIgniter is Object Oriented, Model-View-Controller, a Rapid Application Development framework for PHP, that has a small footprint, is blazing fast, has a short learning curve, and is easy to install. CodeIgniter does this by providing commonly needed functionality, helpers, and libraries.

What is CodeIgniter

CodeIgniter was created by Rick Ellis the owner of Ellis Labs. The first release was on February 28, 2006. CodeIgniter was wildly successful and very popular within the PHP community. 

CodeIgniter has a lot going for itself.

Small Footprint

Version 3.1.11 is only 16 megabytes in size. That is small. In the early days, CodeIgniter was less than 4 megabytes.

Version 2.2.6 is about 4K compressed and is 5.1 megabytes uncompressed.

Blazing Fast

Most report CodeIgniter is lightning fast. It is compatible with shared hosting which it’s pears cannot say. The CodeIgniter framework puts little stress on the hosting server.

Excellent Documentation

The manual covers, in detail, every aspect of how to use CodeIgniter to build websites and web applications. All features and functionality are well documented.

The documentation can be viewed online at: Codeigniter 3 User Guide.

It is worth noting that in the upper right corner of the page there are three lines next to the search box. Clicking the three lines changes the layout to the old-style layout which is much more helpful. 

CodeIgniter Manual Layout Toggle

Once clicked, a tab will appear in the upper right area named “Table of Contents”. If clicked, it will display a full menu that will give you access to every bit of the documentation.

CodeIgniter Manual Menu Drop down Image

Easy to Use

Ease of use is one of CodeIgniter’s hallmarks. It was created early before PHP added several features that are complicated. CodeIgniter 3 is simpler than CodeIgniter 4. CodeIgniter 4 embraces the PHP features that make it more complicated. For the one-man-band, those features are not necessary.

Easy to Install

To install CodeIgniter all that is required is to download the zip file and upload it to your server and unzip it. And point your web browser to the instilled Codeigniter and it should show you the welcome page.

Object-Oriented

Even though CodeIgniter is Object-Oriented, an inexperienced programmer will probably not notice since everything is well structured and well documented.

Model-View-Controller

As you probably already know CodeIgniter is Model-View-Controller. This design pattern is widely used and respected. It helps structure one’s code and makes it easier for multiple developers to work on the same project. 

What is a Controller – This is the boss of the other two. It is the brain. This is where most of the programming logic is placed. 

What is a View – Is the display layer. This is where the HTML, Cascading Style Sheets (CSS), JavaScript, AJAX, and content come together to create what shows in your browser. 

What is a Model – This is where all the database functionality lives. These functions are called by the controller so the data can be processed and then sent to the view.

License

The current owner, British Columbia Institute of Technology, uses the MIT License. Here is what it says:

Copyright (c) 2014 – 2019, British Columbia Institute of Technology

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

The Online License

Versions

Currently, there is two versions of CodeIgniter. Version 3 and 4.

Some of the differences are:

  • CodeIgniter 4 is not backward compatible.
  • Version 4 has added support for Namespaces.
  • Autoloading support has been added to version 4

Life Cycle

According to the Codeigniter forums, Codeigniter 3 will be supported for about 2 more years. 

The repository will live on. The only real issue with using Codeigniter 3 after community support ends is PHP version upgrades and security issues will go unaddressed.

Loosely Coupled

CodeIgniter is referred to as loosely coupled because only a controller is required. The model and view are not required to make a working website. Though, this is not the default configuration. 

CodeIgniter Release History

VERSIONRELEASE DATEEND of LIFE
1February 28, 2006Unknown End of Life
2January 2011October 2015
3October 2015Currently Supported
4February 24, 2020Currently Supported

Helpers

There is about 21 helpers. Each is a set of functions that can be plugged into your code as you build your application. Helpers help the developer accomplish tasks. To get a feel for what a helper is let us look at a couple of helpers that are routinely used.

URL Helper Example

The URL helper is a set of functions that make working with URLs easier. You can read the on-line URL Helper documentation for more information.

For example, to convert the title of an article into a URL string, the helper function url_title($title) could be used. Here is some sample code:

$title = "Why I Like Ice Cream";
$url_title = url_title($title) 

$url_title will contain the string “why-i-like-ice-cream”. Which can be used to create a complete URL like example.com/why-i-like-ice-cream.

The whole idea is the helpers help the developer to write less code and spend less time doing so. This is the rapid application development feature mentioned elsewhere. 

Email Helper Example

The email helper makes it easier for the developer to add email functionality to his or her application.

For example, to validate an email the developer can use the valid_email() helper function.

Here is an example:

$is_email_valid = false;
if (valid_email('someemailaddress@example.com'))
{
        $is_email_valid = true;
}

You can read more about the email helper by reading the on-line Email Helper documentation.

[] 

Libraries

There are about 30 libraries in CodeIgniter 3. Libraries help the developer complete larger tasks such as sending an email. Sending email takes a lot more effort than checking the validity of an email address such as what we previously performed.

The email library is a class that provides comprehensive functionality for sending emails. A glance at the on-line Email Class (library) might be surprising given all the options and setting that are needed to send an email. 

What is CodeIgniter Used for?

Codeigniter is a PHP framework that was created as a PHP rapid application development tool. In the early days, Codeigniter was used to create all sorts of websites. CodeIgniter is still capable of creating any type of website you can think of, however, today it is mostly used to create web applications. 

The Installation Process

If you are familiar with the Linux utility wget you can download the zipped file directly to your server and unzip it.

It is that simple.

It is not necessary to have access to the server command line. 

Installation only takes a few minutes and is just a few steps.

With wget

  1. Use wget to download the CodeIgniter zip file into the hosting root directory.
  2. Unzip the source file.
  3. You may need to rename or remove the leading CodeIgniter directory.
  4. Point your browser to your CodeIgniter install and you should see the welcome page.

Without wget

  1. Download the CodeIgniter source file onto your local computer.
  2. Unzip the source file locally.
  3. Upload the files to your server using FTP. Make sure not to include the CodeIgniter leading or root directory when uploading.
  4. Point your browser to your CodeIgniter install and you should see the welcome page.

Verify it is Working

To verify your installation is working, all you need to do is point your browser to the server where you installed CodeIgniter. 

If it is installed correctly you should see the welcome page.

Image of the Codeigniter Default Welcome Page

This is a page that comes with CodeIgniter. It gives you the path to the view and the controller. Notice the last line contains a link to the User Guide. This is a local copy. You may want to bookmark this link so you will always have access to the documentation off-line.

How Does Codeigniter work

As you have read in this article, CodeIgniter is easy to install, is blazing fast, easy to learn, is well documented, and has a short learning curve. Add to that it is Model-View-Controller.

Codeigniter is a rapid application development tool for building PHP web applications. These applications can take the form of a content management system (CMS) to an interactive web application.

Because CodeIgniter comes with so many of the needed components for building web applications, in so many ways, it is plug and play. This keeps the developer from having to recreate the wheel every time they want to build a web application.

Let start by looking at the file system. Once installed you should see a file system that looks like this:

  • /application
  • /composer.json
  • /contributing.md
  • /index.php
  • /license.txt
  • /readme.rst
  • /system
  • /user_guide

To learn CodeIgniter it would be worthwhile looking through all the directories and open the files and read through them. Do not worry if some of it or even a large portion is hard to understand. It will be a worthwhile excise that will help you as you become a CodeIgniter developer. 

In this article, we will limit our discussion to 4 directories and how they work. Knowing what we will be covering will place you well on your way to becoming a CodeIgniter developer.

As a starting point, let’s look at the welcome controller, welcome view, and the routes configuration that ships with CodeIgniter 3.

  • The welcome controller is located in: application/controllers/Welcome.php
  • You can find the view at: application/views/welcome_message.php
  • And the routes files is located at application/config/routes.php

The default URL mapping is example.com/controller/function/argument. In the case of the URL for the welcome message, it is example.com/index.php/welcome/index. 

Controller

If we look in the controller we see several lines:

1) defined(‘BASEPATH’) OR exit(‘No direct script access allowed’); – this line verifies CodeIgniter is running. If not it sends a message to the browser and stops processing. This is a security measure so the only entry point is through the index.php file located in the root directory. This will keep the bad hackers from accessing your code in ways it was not intended.

2) class Welcome extends CI_Controller – Notice the controller class name is Welcome and it extends CI_Controller. This means it inherits everything in the CI_Controller class.

3) public function index()

{
   $this->load->view('welcome_message');
}

The index function is the default function in the controller. Remember the URL mapping is /controller/function/argument. If no function is listed, the default is the function named index.

In the case of the welcome URL it is /index.php/welcome/. You can drop welcome from the URL leaving it as example.com/index.php.

Two things are taking place. One is the default controller that is defined in the routes.php file is being processed and the default function in the controller is used to complete the process so the welcome page can be displayed.

The line $this->load->view(‘welcome_message’); Tells CodeIgniter to load the view file named welcome_message’) and display it.

View

The view can be located at: application/views/welcome_message.php. A quick look inside shows it contains HTML, Cascading Style Sheets, and a minor amount of PHP code. 

Data can be transferred to the view file and the view file can use PHP to display this data. It is possible to process data in a view, however, all the processing should take place in the controller and model.

Basically, a view is web content or what is known as the visual layer.

Model

In this case, there is no database in use so there is no model. We will cover the model later in the article.

Router

The routes file is located at: /application/config/routes.php. There is only one line in the file that we need to evaluate here. That line is: $route[‘default_controller’] = ‘welcome’;

What this line tells CodeIgniters is the default controller is the welcome controller that is listed above. That is why you can go to the website URL such as example.com/index.php and see the welcome message. 

Removing index.php from the URL

To remove the index.php from the URL (example.com/index.php) refer to the manual page at: CodeIgniter URLs and then scroll down to “Removing the index.php file”.

If you are using shared hosting it is probably already configured to remove the index.php from the URL. If it is not configured you will get a blank screen or an error message.

If an error occurs or you get a blank screen contact your hosting provider for help. 

Create a Model for the Welcome Application

Create a model class named “people_model” in the application/models/ directory. Name the file People_model.php. It is a good idea to create a model for each table. This will keep the models organized and by naming the model the same name as the table it makes it easy to understand what goes with what model and it also becomes self-documenting. 

The model code looks like this.

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class People_model extends CI_Model {

	public function get_people()
	{
 		$query = $this→db→get('people');
		return $query->result();
 	}
}

For more information you can refer to the online Model documentation.

We will be using MySql as the data engine. You should have MySql or one of it’s derivatives in your hosting account. 

We need to create a database, a table, and populate it with data.

To do so we need to:

  1. Create a database user. 
  2. Create a database.
  3. Create a table.
  4. Populate the database.
  5. Configure CodeIgniter so it will know about the database and be able to use it. 
  6. Create the model (listed above).

I’m going to make a simple database with a table that contains three names.

  1. Tom Cruise
  2. Tom Selleck
  3. Matt Damon

The SQL for Creating the Database

CREATE DATABASE contacts

The SQL That Creates the Table

CREATE TABLE `people` (
  `id` int(11) NOT NULL,
  `FirstName` varchar(100) NOT NULL,
  `LastName` varchar(100) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

The SQL That Inserts (adds) the Data to the Table

INSERT INTO `people` (`id`, `FirstName`, `LastName`) VALUES
(1, 'Tom', 'Cruise'),
(2, 'Tom', 'Selleck'),
(3, 'Matt', 'Damon');

Configure the Codeigniter Database 

Edit application/config/database.php

Scroll down until you see the following 4 lines

'hostname' => 'localhost',
'username' => '',
'password' => '',
'database' => '',

Set these values according to your database configuration.

For more information you can refer to the CodeIgniter configuration documentation.

Modify the Welcome Controller

In the welcome controller I added a constructor like this :

public function __construct()
{
 	parent::__construct();
 
 	$this->load->database();
 
}

The constructor was necessary so the database could be initialized.

Then I added two lines to the index function:

$this→load→model('People_model');
$data['people'] = $this->People_model->get_people();

and modified the load->view line by adding $data.

$this->load->view('welcome_message', $data);

This transfers the needed data to the view.

Modify the Welcome View

/application/views/welcome_message.php

Immediately after the <div id=”body”> tag, add:

<ul>
<?php
foreach ($people as $arr) {
	echo '<li>';
	echo $arr->id.' ';
	echo $arr->FirstName.' ';
	echo $arr->LastName.' ';
	echo '</li>';
}
?>
</ul> 

The Output

Image of the CodeIgniter Modified Default Welcome Page

As you can see the three names are listed on the home page.

Everything in CodeIgniter 3 is that easy. 

Related Questions

Is CodeIgniter easy to learn?

CodeIgniter is very easy to learn. If you already know how to program in PHP at the beginner level and understand the basics of Object-Oriented Programming in PHP, then you will find CodeIgniter easy to learn. CodeIgniter has the shortest learning curve of all the PHP Frameworks.

How long does it take to learn CodeIgniter?

To learn CodeIgniter might take 10 to 15 days if you spend 2 hours a day studying CodeIgniter. Hands-on is very important. If you follow the brief tutorial listed above, you will be well on your way. Learning Codeigniter comes down to understanding how to create models, views, controllers, and how to implement and use the helpers and libraries. 

Is CodeIgniter Still Relevant? 

CodeIgniter has lost a lot of its popularity since Rick Ellis decided to give CodeIgniter to a new home.

On July 9th, 2013, Rick Ellis, the founder of EllisLab, announced he was looking for a new home for CodeIgniter. At that time CodeIgniter was arguably the most popular PHP framework. Click here to read Ellis’ online statement – EllisLab is seeking a new owner for codeigniter

That announcement set the stage for 2 things to happen. First, it threw the Codeigniter community into chaos because the future was unknown. Because of that a lot of developers fled to other PHP frameworks. After the dust cleared it appears most of the developers moved to Laravel. The second thing put in motion was CodeIgniter would become like the other PHP frameworks. Its footprint would increase, it would become more complicated and harder to learn. Ellis said it: “

PHP as a language is maturing, and CodeIgniter deserves to take advantage of its new stabilized features.”.

This announcement was a death sentence for CodeIgniter. CodeIgniter 4 contains Namespace and utilizes PHP Composer. These two are not necessarily needed and add to the learning curve.

CodeIgniter is slowly losing what sets it apart – being blazing fast, having a small footprint, and being extremely easy to install and learn. 

British Columbia Institute of Technology eventually took control of CodeIgniter

CodeIgniter continues to thrive though. 

If you are looking at CodeIgniter as a future skillset I’d caution you to look beyond. Having said that, there are still COBOL programmers out in the wild. I suspect there will be a need for CodeIgniter developers for a while. 

There is a lot to be learned from using CodeIgniter. Installing and learning how to use it is a great learning experience. I learned a lot from using CodeIgniter and looking at its source code to understand how things work.. 

I learned about Model-View-Controller, and how to modularize my code. When it was all said and done I was able to analyze CodeIgniter to gain the knowledge necessary to develop my small framework. 

Installing and using CodeIgniter will never be waste, it is a great learning opportunity, especially if you go into it with that mindset. 

Is CodeIgniter Dead?

Some think the current owners of CodeIgniter, the British Columbia Institute of Technology, is taking CodeIgniter down the wrong path. 

The downward spiral started the day Rick Ellis announced he was looking for a new home for CodeIgniter. At that very point, the future of CodeIgniter was thrown into chaos. A lot of CodeIgniter users migrated to other PHP frameworks. Most moved to Laravel.

CodeIgniter’s niche used to be that is had a small footprint, was blazing fast, was easy to install, and had a small learning curve. With version 4 in its early days, CodeIgniter is starting down the path towards trying to compete with the other PHP frameworks. Trying to compete with the other PHP frameworks is a mistake. 

CodeIgniter needs to go back to its roots of having a small footprint, being blazing fast, being easy to install, and having a small learning curve.

Google trends show CodeIgniter gets about 60 searches a day.

Image of Google Tends for CodeIgniter

Then when we look at the comparison of CodeIgniter vs Laravel, it looks like CodeIgniter is getting less than 10 searches a day and Laravel is around 75 searches a month.

Image of Google Trends for CodeIgniter vs Laravel

This indicates the interest in CodeIgniter is rather low.

Conclusion

  • This article is a brief look at CodeIgniter. 
  • There is two version – 3 and 4.
  • CodeIgniter is MVC.
  • It has helpers and libraries.
  • It is easy to learn and has a short learning curve of maybe 20 – 30 hours before the developer is ready to start building real-world applications.
  • CodeIgniter has a small footprint, is blazing fast, and easy to learn (version 3).
  • Version 4 is starting down the path away from the roots of CodeIgniter and moving out of its niche.

What is phpMyAdmin and How Does it Work?

This article introduces phpMyAdmin and gives a brief overview of how it works.

phpMyAdmin is free, open source, and was created using the PHP programming language. It was created as a wrapper around the MySql database. PhpMyAdmin is a web interface that gives the user the ability to manage their databases from any device that runs a modern web browser.

What is phpMyAdmin

phpMyAdmin is a free software tool that is used to administer the MySql data engine. It was created in PHP. It was first released in September 1998. Being very mature, it is well documented and widely used. 

Some of the things you can do with phpMySql are create and test SQL queries, manage databases, and manage users.

phpMyAdmin is very feature-rich. It is used as a web interface for the MySql data engine and its derivatives.

I use it often when I need to create a complicated SQL query. SQL stands for Structured Query Language, which is how programmers interface with databases. 

In the next section, we will dig a little deeper.

How Does it Work

Login – To get started one must log in with a MySql username and password. This will give the user access to any databases they have permission to use.

Image of the phpMyAdmin Login Form

The phpMyAdmin Home Page – Once logged in you will see the phpMyAdmin Home Page that will look like the following.

In the upper left area is where you can find the main menu. 

Main Menu Functionality

  • To return to the home page click the “phpMyAdmin” text.
  • The “home” icon returns to the home page as well.
  • The next icon which looks like a door with a green arrow, is the logout button.
  • The round icon that contains a question mark links to the local phpMyAdmin documentation.
  • The icon that looks like a page with a smaller page over it is linked to the MySql reference manual.
  • The gear is liked to the settings pages.
  • The green icon causes the page to refresh when clicked.

Top Menu Functionality

The top menu will be referred to as tabs in this article.

  • Databases – Linked to the databases page.
  • SQL – Linked to one of the two query building pages. This is the less feature-rich version of the two SQL pages.
  • Status – Linked to a stats page. 
  • User account – Links to the user account overview page.
  • Export – Linked to the export database page.
  • Import – Linked to the import page.
  • Settings – Linked to a page that provides for import and export configuration.
  • Replication – Linked to the replication configuration page.
  • Variables – Linked to the server variables and settings page.
  • Charsets – Linked to the character settings and collation page.
  • Engines – Links to the storage engine page.
  • Plugins – Links to the plugins page.

Home Page List of Databases and Tables

On the left side of the home page, you will see a list of databases. By clicking on a database, it will expand to display the tables within that database.

Manage Users

  1. Create a User:
    1. Click the “home” icon, click the “User accounts” tab, then click “Add user account” which is about in the middle of the form.
    2. Complete the form.
  2. Modify a user account:
    1. Click the “home” icon, click the “User Accounts” tab, then click the “Edit privileges” link that is on the same line as the user account you want to modify.
    2. On this page you can:
      • Edit the user’s privileges.
      • Add privileges to other databases.
      • Grant or revoke global privileges.
      • Change the user’s password.
      • Change the login information (username, hostname, password).
  3. Remove a user:
    1. Click the “home” icon.
    2. Click the “User Accounts” tab.
    3. Click the checkbox next to the user you want to remove.
    4. Then select “Drop the databases that have the same names as the users” if you want to remove the database with the same name as the user.
    5. Click the “Go” button.

About User Privileges 

User privileges are what access the user is given. Such as what databases they can see and modify and from where, such as being restricted to the local server.

Manage Databases

  1. Create a database.
    1. Click the “home” icon, click the “Databases” tab.
    2. Enter the Database Name, select the collation, and click the “Create Button” button.
    3. A form will be displayed that allows you to enter the table’s name and the number of fields the table will contain. Complete the form and click on the “Go” button.
    4. Complete the form and click the “Save” button.
  2. Modify Databases.
    1. From the left column of the home page select the database you would like to modify by clicking on the database name. 
    2. The center panel will show all the tables in the database. From this form, you can branch-off to perform other actions to include creating a new table.
  3. Delete or drop a database.
    1. From the left column select the database you would like to drop by clicking on the database name. 
    2. Then click the “Operations” tab.
    3. Under “Remove database” click “Drop the database (DROP)” 

Manage Tables

Image of the phpMyAdmin Database List
  1. Click the home icon, then click the “Databases” tab. You will see a form like the one above.
  2. Click the Database you wish to manage. This will take you to the “Structures” tab. You will be on a form like the one below. This is where you manage your tables.
phpMyAdmin Structures Tab

You can now:

  • Browse – This allows you to “Edit”, “Copy” or, “Delete” each record. You will see the columns along with their data. You can also export data from this screen.
  • Structure – From this screen, you can modify the structure of each field – Change, “Drop”, or you can perform other operations.
  • Search – This allows you to search your data.
  • Insert – This is a form that allows you to add a record to the selected table.
  • Empty – This feature will remove all the records in the table. Be careful with this option.
  • Drop – Allows for the entire table to be removed/destroyed. Be careful with this option.

Note you can also use the list of tables in the left panel to drill down from your database to a table, and the table’s fields.

About Collation

Collation defines how to sort or how to weigh items in relevance to other items. For more information read the MySql documentation on supported character sets and collations [https://dev.mysql.com/doc/refman/8.0/en/charset-charsets.html] Notice MySql recommends you test your selected collation to ensure you are getting the results you desire.

Import Data

  1. From the top menu click on “Import”. 
  2. A form will appear. Click “Choose File”, which will open dialog page for selecting the file you want to import. To the right of “Choose File”, you will see the max file size that you can import. The value can be adjusted. Modifying this value is outside the scope of this article.
  3. Select the “Character Set”.
  4. Set or unset Partial Imports.
  5. Set or unset Enable foreign key check.
  6. Set the file format.
  7. Set the SQL compatibility mode or leave it at its default of none.
  8. Set or unset “Do not use AUTO_INCREMENT for zero values”.
  9. Click the “Go” button.

Export Data

  1. From the top menu click on “Export”. 
  2. Select the “Export method”:
    1. Quick – display only the minimal options.
    2. Custom – display all possible options.
  3. Select the “Format” from the drop-down.
  4. Click the “Go” button. 

SQL Queries

phpMyAdmin Plain SQL interface

SQL stands for Structured Query Language. This is another area you will want to become familiar with. SQL is your bread and butter when it comes to working with databases. I use the SQL box to build complex SQL statements.

There are two ways to get to the query interface.

  1. Click the “home” icon, then click the “SQL” tab to get to the plain SQL interface:
  1. From almost any page you can click the table under a database on the left column and then click the “SQL” tab. That will bring up an SQL interface that has a lot of features you will probably find useful. From here you can click any of the buttons that are directly below the query box. The cool part of this is it will create the type of query you want to create based on the table you selected. This is a great way from a beginner to learn SQL. 
Image of the phpMyAdmin Query Builder

The buttons I want to point out are:

  • <Select *> – Will create a wild card select (a select pulls data).
  • <Select> – Will create a select listing all the fields in the table. 
  • <Insert> – Will create an insert query. This query contains all the fields of the table (an insert creates a new record and populates it).
  • <Update> – Will create an update query. This query contains all the fields of the selected table and place holders for the data that is to be updated (an update query is used to update data). 
  • <Delete> – Will create delete query ( a delete removes a record). 
  • <Clear> – Will clear the text box. 
  • <Format> – This will format the query so it can be used within a program.

phpMyAdmin Documentation

There is a lot to know. This article does not cover everything. This link will take you to the phpMyAdmin documentation where you can learn more.

Conclusion

There are a number of tools you can use to manage your MySql data, each has different features you might find useful.

The nice thing about phpMyAdmin is it is a web application, meaning it runs in a browser. That means you can access phpMyAdmin from any device that runs a modern browser.

phpMyAdmin is very feature-rich and is a great tool for programmers and system administrators. 

11 SEO Tips for the Small Business

Search Engine Optimization or SEO is easy if you know what you are doing and is difficult and frustrating if you do not.

  1. My SEO History
  2. Title Tags
  3. Meta Tags
  4. Permalinks
  5. Focus On a Keyphrase
  6. Turn on Pingbacks
  7. Use Alt Tags
  8. Interlink
  9. WWW or Non-WWW
  10. Sign-Up to Google Search Console
  11. Content is King
  12. Building Links

My SEO History

My path is not without its failures.  Here is my story.

In 2002 I was a freelance desktop application developer.  I was trying to figure out how to market my skills. A friend of mine had been talking about SEO so I thought that was the answer.  With little understanding I set out to build a website for Tucson Custom Software.  About 9 months later I got a call from a guy that was looking for some help with a Word document.

In 2004 I ran into a guy that claimed he knew SEO.  I told him my story and showed him my website ranked number 1 for “Tucson Custom Software”.  He looked at my website and then jumped on his computer and told me no one was searching  “Tucson Custom Software”.  He was very nice about it and showed me what I was missing.  He showed me I needed to research what people are searching for and use those terms to build my website.

Back then I was building websites from scratch.  Not today.  Now I use WordPress to build websites.

WordPress Makes SEO Easier

WordPress SEO is easier than those sites I used to build from scratch.  I spend a lot of time on Drupal and found it to be time consuming to get it to the same place WordPress is right out of the box. Right out of the box WordPress is ready for SEO.  Be careful that the

Title Tags

The title of your pages / articles is very important.  The page / article title tag is important to Google.  Google uses the title taqg to determine what your page / article is about.  This will effect this particular page / article ranking and may effect how your whole site is seen.  The title tag should be an h1 tag and the page / article should contain only one h1.  The h1 for the WordPress page / article is built into the theme.

One of the things you can do to boost your WordPress SEO is to use search terms in your page / article title.  Only use words that describe or are contained in your copy.

Meta Tags

Permalinks

Focus On a Keyword or Key phrase

The word or phase people use while searching on the search engines (think Google) are referred to as keywords or key phrases.  I refer to them as search terms because that is what they are.

If you do not use Keywords and Key Phrases in your copy your site will take a lot longer to rank and may rank for terms you are not interested in.  Part of WordPress SEO is to use the search terms people are using to search for your products, services, and content.  Keywords and Key Phrases tell the search engines (think Google) what your content is about and to a greater extent what your website is about.

Be sure to use your chosen Keywords and Key Phrases sparingly so you do not over optimize your website, which could lead to a penalty on Google.

Turn on Pingbacks

Use Alt Tags

WWW or Non-WWW

Sign-Up to Google Search Console

SEO is supposed to be about all the search engines.  Over the years all of the traffic to mi=y website comes from Google with rare exception.  The current Google Search Console give a lot of information.  It will tell you waht terms your website ranks for and what the ranking is.  This alone is worth it’s weight in gold.  You can use this to track your and validate your SEO campaingn.  Great information.

Content is King

Title

Meta Tags

description

legith

KeyWord Usage

Uniqueue

This is an interesting one.  I used to be obsessed with back links or links from someone else’s website to mine.  Then I realized we are all in the same boat.  We want back links and they are hard to come by.

You will hear stories about link bate.  Stories about the guy that wrote this really cool article that went viral and he got tons of links to that article.  Who is this guy?  Do you know him?  I don’t know him, and you probably do not know him either.

So really it comes down to good WordPress SEO optimization and content.  They say content is king.  It takes good content to rank and it takes good content to keep the reader reading.

Skills a PHP Programmer Should Have – a Definitive Guide

Image : Skills a PHP Programmer Should Have

There is a lot of skills a PHP developer should have. Here is my list. 

Skills a PHP Programmer Should Have. A PHP developer needs to have a wide range of skills. This includes HTML, Cascading Style Sheets, JavaScript, PHP, MySql, and Linux. Along with this he or she should possess a strong understanding of security, good communication skills and, don’t forget decent project management skills.

HTML

HTML is the backbone or the bone structure of web pages. This is the foundation of all the skills a PHP programmer should possess.

Cascading Style Sheets (CSS)

Gives a web page and to a greater extent the entire website it looks and feel. This is the design layer.

JavaScript

JavaScript is a must-have skill for every PHP programmer. JavaScript runs in the browser and gives the programmer the ability to make a website interactive.

AJAX

Asynchronous JavaScript and XML (AJAX) is how JavaScript is applied to make the website interactive. When I think of AJAX I think of the ability to talk with PHP to send and receive data from the server to create fully functional web applications.

Some JavaScript Library Such as jQuery or Angular JS

JavaScript is very quirky, mainly due to the different implementations by the different web browser engines. The different implementations can drive a developer crazy. Luckily the community provides libraries such as jQuery that encapsulate or make these differences transparent to the programmer. 

The PHP Programming Language

A PHP programmer must know most of the following. There is a lot to know.

  • Understand that the PHP Ecosystem consists of the following:
    • PHP runs on a web server that more than likely is a Linux web server. 
    • PHP is Open Source and is native to Linux.
    • PHP works with a database server, more than likely MySql.
    • PHP can do a lot, such as server automation, FTP, work with files, interact with other servers, send emails and a lot more.
  • The Basic Skills a PHP Programmer Should Have
    • How to create a basic PHP script, complete with an opening tag that tells the server the file is a PHP program or script.
    • How to open a database connection and how to interact with the database so that data can be Created, Read, Updated, and Deleted.
    • How to include other PHP programs.
    • Control structures such as if statements and loops.
    • Working knowledge of variables, strings, constants, arrays, user-defined functions, variable scope, mail, cookies, sessions, commenting, and error handling.
    • How to embed PHP in HTML.
  • NameSpace – is a way of structuring “blocks” of code so that naming conventions do not become a problem.
  • Dependency Injection – DI is a design pattern that allows for including other code within the current code set or object, making the injected code available to the calling object.
  • GIT is for revision control. This is a set of commands that aid the developer in managing his / her code and the repository. There are several online repositories such as Github and Bitbucket.
  • Composer is a PHP dependency management system that works at the project level. It can be used for installing an application and managing it as well. Think version control.
  • AutoLoading takes the place of the programmer having to manually include every needed external program file.
  • Design Patterns such as:
    • Model View Controller (MVC) is used to separate the data (model), design (view), and the business logic (controller) in a way that makes development and management easier.
    • The Singleton pattern restricts the instantiate of an object to a single instance. This means the same object can be reused.
    • The Active Record pattern is used to aid the developer in designing database interaction.
    • Entity-Attribute-Value is a data model that is used to describe your data tables. This pattern is supposed to make extending your database easier. I have found this pattern to slow the application excessively.
  • Object-Oriented Programming (OOP) in PHP is a software design that, like its name implies, is based on objects. PHP allows for OOP and is also procedural.
  • Regular Expressions are used to filter data.
  • Website security is a skill all developers should possess.
  • Every developer must have project management skills at a personal level. Being able to manage (plan and execute) a project is a must.

MySql

MySql is a data engine and is the most popular data engine (MySql and it’s clones) used with PHP. There is a lot to know about MySql. Every PHP programmer needs to have a solid grasp of how to implement and use MySql. That includes the Structured Query Language (SQL), which is how PHP interacts with MySql.

A PHP developer needs to know how to use SQL to manage data as well as how to create databases, tables, and indexes.

Understanding database normalization is a huge plus that will help the developer when creating a new project.

Linux

The amount of Linux skills required will vary. From my experience, a seasoned PHP developer will need to know the following about Linux hosting server management. 

  • Be able to add and remove users.
  • Be able to create and manage virtual host configuration.
  • Be able to locate and decipher logs.
  • Be able to identify the correct php.ini file that is used on the server.
  • Be able to configure PHP via the php.ini file.
  • Must understand Mod_Rewrite, why it is used, and how to implement it. 
  • Be able to install and manage phpMyAdmin.
  • Knowledge of, and ability to, manage the .htaccess file.

A PHP programmer is not required to be a full-blown Linux systems administrator. The developer will need at least the listed skills though. 

Troubleshooting

  • How to turn on or off error reporting in PHP.
  • Location of server logs and which log to look in for what.
  • Some full-stack troubleshooting skills (HTML / JavaScript / PHP / MySql / Linux / Networking).

Code Editors

There are a lot of code editors. Every developer has their preference. Some editors are free and some come with a licensing fee. Here is just a couple:

PHPStorm – Made by Jet Brains, PHPStorm is a lightweight smart PHP Integrated Development Environment (IDE) that costs $199.00 for the first year and $159 a year thereafter. I would recommend you get your PHP feet wet before deciding to pay for an editor. 

Visual Studio Code – The source code editor Visual Studio Code is developed by Microsoft. It runs on Windows, Linux, and Mac. It is free and relatively easy to learn. This is where I recommend you start.

Atom – While free, Atom comes with a little bit of a learning curve. I would not recommend Atom for the beginner PHP programmer. Your mileage may vary.

Development and Production Hosting Environments

Development Server – This is where you will do all your development. This can be as simple as a localhost PHP development environment.

Testing Server – After you have done your development you can use a testing server for working with the stakeholders. 

Production Server – This is the server where your final product will do its magic. A production server is a public-facing server. Only fully tested code should make it onto the production server. 

Domain Name System (DNS)

Developers are not system administrators and therefore do not need to know DNS intimately. Eventually, every developer needs to have a working knowledge of DNS. 

Ability to Set and Meet Deadlines

Setting deadlines is based on the ability to estimate how long a task or project can take. Estimating how long a task or project can take, effects a developer’s ability to set deadlines and therefor will also effect meeting that deadline. 

This is a potential problem area. It is very difficult to estimate how long a task or project can take. It may take years to get good at determining how long a task or project may take. 

Project Management

This is a skill that will take a while to develop. As mentioned above, estimating how long a task or project will take is difficult. That is not the only skill required for project management. Project management entails managing the entire project from developing a quote, communicating all concerned at the appropriate time, and pulling together resources as needed to complete the project.  

Soft Skills

Soft skills are big in today’s market place. This list should get you started:

Communications – This is my pet peeve. I say communicate soon and often. As a developer, it is easy to recluse and work a project for a while. I have found the best approach is to get the stakeholders involved as early and as often to ensure a project stays on track. 

How to Work as Part of a Team – It is tough to be a developer working in the cube farm. It requires the ability to play well with others, be helpful, and avoid office politics. It is equally important to pull your weight. 

Ability to Know What is Changing – This one is difficult. How do you keep up with changes? You can become active in professional organizations. Another couple of things you can do is listen to your peers and read the updates on the technologies you are working on.

Know What You Don’t Know – It is extremely difficult to know what you don’t know. This may require a bit of humility. There are a few sources, such as, your coworkers, journals, and professional organization to name a few places where you can become aware of the things that you unaware of. 

Empathy – This is big. I’ve worked in the cube farm where other developers were not very understanding or empathetic. Everyone grows and learns at a different rate. Each person has their strengths and weaknesses. We should show empathy towards others as we would expect them to show towards us.

Patience – Sometimes things take a while. When working in a team environment it is wise to set back and let things work their way out. That does not mean to not be involved. On the contrary, we should be involved while also being patient.

Be Open Minded – Everyone has an idea. Some are better than others. We should solicit input from others and listen to others. This can be very helpful. 

Problem Solving Skills – Every developer needs to be a problem solver. Most often some level of creativity is required when solving problems. 

Accountability – Accepting responsibility is very important and often can become a teachable moment. Also, it will earn you a lot of respect. 

Time Management – Don’t let yourself become distracted. The modern-day comes with a ton of distractions. Keep social media, games, politics, news, etc for outside of work.

Strong Work Ethic – We have all gone to work and got sidetracked or distracted and neglected our assignments. This is something we should avoid. It is always good to show up early, stay a bit late, take only the allotted breaks while staying focused on our assignments.

Additional Skills Required if You Specialize

You will need to have a working knowledge of the ecosystem you plan to specialize in as well as strong PHP programming skills. Each of the following comes with a learning curve.

WordPress – WordPress is very popular, easy to implement, and use. As a developer, you will need to know how to create function files and plugins. The WordPress ecosystem is vast and somewhat complex.

Drupal – As an enterprise application it is not just a CMS. Drupal can be used to create almost any type of web application. Drupal comes with a steep learning curve. 

Joomla – Joomla is a CMS that is not widely used, however it does have some market share. You can plan on a learning curve if you are interested in becoming a Joomla extension developer.

WooCommerce – It is being reported that the WooCommerce market share is expanding at a rate greater than other shopping carts. WooCommerce is a WordPress plugin. If you are familiar with the WordPress Plugin ecosystem, you are well on your way to becoming a WooCommerce developer. 

Magento – I spent a couple of years working with Magento. Magento has an extreme learning curve. I would not recommend Magento unless that is what you are assigned to do. Magento requires a team to make it sing. It is not suited to the one-man-band. If you have your heart set on eCommerce, I would recommend taking a look at WordPress / WooCommerce. The CEO of a Magento agency told me to learn Magento takes about 500 hours of classroom and self-directed training plus about 500 hours of hands-on covering 6 months. Magento is not for the faint of heart.

PHP Frameworks – There are a lot of Open Source PHP Frameworks that are available. My favorite is CodeIgniter. It is well documented and is easy to learn. Worth a look. If you are looking for something a little bit more hardcore look at Laravel. Laravel is the most popular PHP framework at the moment.

The Skills a Freelance PHP Developer Should Have

As a freelancer, you might, and probably will, be working in a vacuum. You will do everything. You will snag projects, do quotes, manage projects, and empty the garbage, all from the comfort of your home office. I’ve listed out a few skills you might consider.

Communication Skills – Again my pet peeve. Your communication skills will need to be of the highest quality. This is a must-have skill. As a freelancer, you will need to interface with other business professionals. They are evaluating you every step of the way. This consists of and is not limited to emails, phone calls, quotes, and articles you have written.

Financial Management – You will need to account for all the money you earn. There will be income, expenses, bank fees, and other expenses. Your bookkeeping needs to be top quality. Don’t forget you will need to report all of this on your taxes at the end of the year. The IRS is watching and will expect your accounting and reporting is in order.

Time Management – As a freelance developer, you are solely responsible for how you utilize your time. If like me, you work from home, there is no one watching. It is easy to get sidetracked or mis-prioritize your time. Time is finite so manage it well.

Self Motivated – You will need to motivate yourself. This is a must-have skill. If you lack it you might want to look for a cube farm and a boss.

Marketing – You will need a marketing plan. What are you selling and to whom? You need to know who your competition is and how you differentiate yourself in the marketplace. Do your research before you jump feet first into consulting.

Sales – Noting happens in business until a sale is made. Unless you are a natural salesperson, you might want to take a course or two to learn a bit about sales before you go out on your own.

In Closing 

As you can see there is a lot to know to become a PHP programmer. And if you want to become a freelance PHP developer there is even more to know.

I hope this information is helpful. I wish you the best on your journey.

Everything a Website Owner Should Know

Image : Everything a Website Owner Should Know

Freelance PHP Programmers, Everything You Need to Know

Image : What Do I Need to Know About Freelance PHP Programmers?

Hiring a freelance PHP programmer is a serious undertaking. Let me share with you what I know about freelance PHP Programmers.

There are a few things to consider when hiring a PHP programmer like ensuring their skills and experience match your needs. Communication skills and fee rates are also important. There is a lot to consider when hiring a freelance PHP programmer. 

I recommend reading this guide before you search for and contract with a developer.

The PHP programming language is very popular and there is a ton of people that are willing to help you. There is only one problem – and that is what you don’t know can hurt you.

Every day I read about all the retail stores that are closing. Everything is moving to the web. Along with this, the Internet is much more complicated today than it was 20 years ago. Given this, having an experienced and professional PHP / MySql developer on your team is a must.

Assessing Your Need

The first step is to assess your needs. With that, you will have a better idea of what skills you are looking for. For example, if you are looking at building an eCommerce website, you may want to look for a WordPress and WooCommerce solution provider.

Analyzing your project will also give you insight into what type of developer you may want to hire. Below I list “the freelance developers you will find in the wild”.

Finding Someone Who Matches Your Needs

This is a tough one. Where do you look? You can start by searching the Internet. That is probably how you found this article.

There is a lot of websites that broker developers. They also get in the way. No direct contact. This has its pros and cons. The upside is you may be better protected. You will more than likely make your payments to the broker which are held in escrow. The downside is it is rather bureaucratic – you will never have direct contact with your developer. You will never build rapport nor will you ever know much about the person working your project. If that is what you want, great, if not you may want to try hiring a developer directly.

Using a broker website lends itself to small or short projects.

If you have a project that will take more than just a few hours you may want to consider hiring direct.

Hiring Direct Comes With More Than a Few Benefits

  • You Can Get To Know The Person – Getting to know the person that works on your web projects is a win-win situation. Not only do you get to know them, they also get to know you. This opens up better communications and will lead to better peace of mind.
  • You Can Evaluate The Prospective Developer – You can talk with them and evaluate their prior projects. You can also look at their social media accounts and look at their website.
  • You Have a Better Chance of Building Rapport – I think this is important. As a developer, I like to get to know the people I work with and for. I assume they like getting to know me as well. In my opinion, this leads to a much better working relationship.
  • You Can Make The Developer a Member of Your Team – Yes, making your solution provider a member of your team is a good thing. This can lead to a more efficient working environment. I like being a remote member of your team because I can learn what to expect and how to meet your needs. 

The Freelance Developers You Will Find in the Wild

You will run into these types of programmers in the wild:

  • The Guy or Gal That is Between Jobs – This is the guy or gal that was just laid off, or was fired, or may have quit their job. One of the potential problems with this person is what happened to your project when they find a new job. One of the other issues is this person may not have any real business experience. Running a project is tough. Running a project and a business at the same time is even more demanding.
  • The High School Student – My hat is off to this person. Sounds ambitious and may even have a lot on the ball. The downside is this person may not have much life experience and little or no experience running a business while juggling other obligations while trying to run a programming business. I would not expect this person to keep regular business hours.
  • The College Student – Same as the high school student except this person may be more mature and might have more life experience as well as business experience. Still, this person will be juggling many obligations. I would not expect this person to have much availability during business hours. 
  • The Hobbyist – This person is in it for the fun of it. That can bring a number of advantages and disadvantages. This person may or may not be available regularly. They may or may have low rates. One of the thrills this person my get out of a hobby business is seeing how much they can charge. On the other hand, compensation might take a backseat to other benefits and their rates may be low. 
  • The Side Hustle – This person may have a part-time or full-time job and does PHP programming on the side. The advantage might be a cheap project while the disadvantage is this person probably is not available during regular business hours and maybe less available than you would like.
  • The Offshore Developers – They usually work for far less than an American programmer who wants the going rate or something close to that. You may want to think about how the time zone difference may affect your project. I was working on a project with another company that had an Indian programmer. The time zone was 12 and a half hours different. One of the other challenges is the culture and language barriers. Even though your offshore coder may speak English they might not understand what you asking them to do – this is the language and cultural barrier. Since they are offshore there is much less accountability. Liability is always an issue when going off-shore. If your programmer does not follow your directs and does something that causes you liability, you are probably on your own. 
  • The Professional PHP Programmer – This is the guy or gal that holds regular business hours and is readily available during business hours. They probably have formed a business and I expect they will have a website. This is what they do – they provide PHP programming services. This person should have decent communication skills and should be able to run a business while attending to projects. I would expect that a freelance PHP developer would be the most stable and responsible for your project with respect to the other listed category of freelance developers. 

There are pros and cons to each one. Only you know what you are willing to endure to get your project across the finish line. In other words, do you hire a pro that can make your project easier, or do you hire a high school kid that will require you to manage them?

Type of Freelancers 

A freelancer is not an employee, they are independent contractors. These projects come in one of the following forms:

  1. Taking on short-term projects on a contract basis (gig workers).
  2. Taking on recurring tasks as an independent contractor.

As we move further into the gig economy, gig workers or freelancers will become more common.

What is the IRS Definition of an Independent Contractor

It is important that you understand what the IRS defines as an independent contractor. If you violate the IRS rules you may find yourself paying the IRS additional taxes and fees. 

The main test the IRS uses is:

  • A person is an employee if they have no control over what they do and how they do it.
  • A person is a contractor if they have control over what they do and how it gets done.

It comes down to control and relationship. If the person has a contract and comes and goes as they please while being self-directed they are probably an independent contractor.

A freelance PHP developer is someone who basically does gig projects on a contract basis. A guy I know says a freelancer is someone who created a job for themselves. I would say this is accurate and from my experience, most freelancers are a one-man-band. More than one developer is an agency. Working with an agency is usually different than working with a freelancer. 

Division of Website Developer Skills

I occasionally run into or hear about, a PHP developer that claims to be a designer and a developer or maybe an expert Linux system administrator. I’m not saying they do not exist, however, they are rare. I like to separate the skill sets that are necessary for the successful launch and ultimately the support of any website.

Here are the 5 skill sets. Keep in mind there will be some overlap. The PHP programmer will probably have the greatest overlap given the developer needs to know a little about everything.

  • Designers – This is the person that makes your website look good. They create templates or what is called the theme. They know HTML and CSS very well and will have a good eye for making things look very nice.
  • Graphics Designer – Making logos, images, and modifying pictures are what this person does. The graphics designer and the designer might be the same person.
  • PHP Programmer – This person does not make your website beautiful, they make it functional.
  • Linux Hosting Administrator – Your hosting expert. They are the ones who maintain your hosting server and it’s associated network(s). 
  • JavaScript / AJAX developer – Making your website interactive is the function of the JavaScript / AJAX developer. Depending on the requirements of your website or web app, a PHP developer might fill this role. 

The Basics to Look For When Hiring a PHP Programmer

  • Skill Level and Experience – You are looking for a solution provider and I keep taking skills. I often hear “Employers are looking for skills and website owners are looking for solutions.”. That is true. So why do I continue to talk skills? It is simple. Solution providers must-have skills and experience.
  • We can group skills and experience is three basic buckets.
    • Entry Level – This is a developer who is just beginning. If we look just at time that might be the first two years of full-time work as a PHP developer.
    • Mid Level – Someone who has more than two years of full-time experience. 
    • Senior Level – A senior developer will be well seasoned. It might take six years to get to this point, depending on the type of projects they have been working on.
  • What Niche Are They in – This is important because you will want to find a developer that aligned with the niche your project is in. For example, if you are building an eCommerce website using WooCommerce you do not want to hire a Drupal developer unless that developer has WooComerce Experience.
  • Communication Skills – This is my pet peeve. The person you choose needs to have good communication skills. Add to that they need to communicate often. A developer with poor communication skills can derail a project in a heartbeat.
  • Ability to Self Motivate – Your developer will be working from home and must be self-directed and have the ability to motivate themselves even when they do not want to work on your project.
  • Ability to Run A Small Business – Every person who does freelance work must understand the basics of running a small business. The basics consist of managing projects, writing contracts, completing projects, billing and managing income and expenses. It sounds easy and it kind of is, however, this means the developer you hire must be good at changing hats as needed.

An Overview of the Technical Skills a Freelance PHP Programmer Must Have

As I outlined in the prior section, there is a division of skills. Most developers do one or the other well while having some skills in other areas. However, you will find that some if not most designers know little about PHP development. 

As for the PHP programmer, I would expect them to have a decent grasp of the full stack. Some refer to the stack as the “LAMP” stack. The LAMP stack is actually a subsection of what is really required of a freelance PHP programmer. LAMP stands for Linux, Apache MySql, and PHP. 

This does not mean the PHP developer is an expert in these ancillary technologies. What it means is the developer needs to know enough to be able to add the PHP / MySql functionality to other’s work.  

This is a brief summary of the skills a PHP developer must-have. This is not an exhaustive explanation of each technology.

HTML – The basis of all web pages.

CSS – The definition of webpage styles such as the font family and size. 

JavaScript and JavaScript Libraries – These add interactivity to your web pages.

Asynchronous JavaScript and XML (AJAX) – Allows your web pages to talk directly with the server. 

PHP – The programming language we are talking about.

MySql – The data engine. This includes the Structured Query Language (SQL).

Linux Hosting Provider – Linux is the hosting server operating system.

Data Management Tools – phpMyAdmin and the MySql tool used to manage your website data.

Code Editor – Must have an editor that helps the developer speed up the process.

I intentionally left off Windows PHP hosting because PHP is native to Linux and was adapted to run on the Windows web server. I would never recommend running PHP on a Windows server. 

The PHP / MySql developer needs to be rather skilled in many areas while designers, JavaScript programmers, and Linux administrators, for the most part, only need to know their niche.

There is an exception and that is specialty hosting houses where the Linux Hosting Specialist is also somewhat of an expert in the software being hosted. For example, I supported a company that had a Drupal install that they used as a content management system. The hosting admins were also skilled in Drupal and were part of the solution.

Education is Always Nice

When I started a Bachelor’s degree was required. Today a degree s not necessary. For what it is worth I learned the basics of programming at my local community college. I pursued a Bachelor’s degree because I thought the University was going to reveal the secret sauce. No secret sauce was revealed. All of my web skills have been self-taught or learned while doing projects. 

Believe it or not, PHP programming is not taught at the University. You will find website skills being taught at the community college level. 

Soft Skills

  • Leadership Skills – Your developer will need to take the lead in almost all areas of your project.
  • Teamwork – Even though you are hiring a Freelance developer, he or she is part of your team. They do their part while you do your part. It is a team effort.
  • Communication Skills – As mentioned before your developer must be a good communicator otherwise your project will fail.
  • Work Ethic – This speaks to being a self-starter. Since your developer will be working remotely, the must have a strong work ethic.
  • Flexibility/Adaptability – Things change often and your developer must be willing and able to adapt to change. Having a change procedure and policy will be very helpful. 

Freelance Developers Work Remote

Why is this important? Because the developer you hire must have a professional work environment, all the necessary tools, and be self-motivated. The person you hire will need to be able to work remotely with little direction.

Project Life Cycle

The project life cycle consists of four parts:

  • Initiation – The very beginning step is to determine if the project is viable, or feasible. If you have a small project, you may be able to do this in your head. However, it is always a good idea to write it down and think it through. You need to understand the pros and cons of your prospective project.
  • Planning – You will need the assistance of a senior developer to accomplish the planning phase. I assume you are a layperson that is why you are reading this article. Given that you will need to work with a developer to sort out the technical details and to determine how long the project will take the cost and the required resources.
  • Execution – This is when you are working on the project. You should be following the project plan and managing any changes that may come to light. Even the best of plans do not allot for everything. Occasionally there will need to be a change order. 
  • Closure – When the project comes to a close, it is time to assess your project to ensure your plan has been executed properly. At this point, you should have a good idea or even a written plan for what it will take to keep your web project online and functioning properly for the time frame you desire.

Technology Life Cycle

When I talk about the Technology Life Cycle I am talking about the upgrades of each piece of technology you are using. This may drive changes to your software as well.

A PHP project consists of a stack of interacting technologies. Each of these technologies has its own upgrade schedule. This can be complicated and this is where your developer and hosting partner play a major role. You may need to bring in your designer as well. If you did not use your PHP developer to perform your JavaScript programming, you will need that person to freshen up your JavaScript from time to time. 

You will be using the usual combination of technologies such as HTML, CSS, JavaScript and JavaScript Libraries, AJAX, PHP, MySql, and Linux. 

Any other libraries or software you use may come with its own upgrade schedule as well.

Keeping everything up to date and knowing when to upgrade is the job of your developer and hosting partner. For a small project, all of this may fall on the shoulders of your developer.

Application Security

Security is a must when dealing with the hostile Internet. Getting hacked is no fun. Most modern PHP applications such as WordPress come with builtin functionality that can be tapped into to ensure your application is secure.

The PHP programming itself has a whole layer of security that can be used to ensure your application is secure.

Programming Language Selection

If you have a project in mind and are not sure what programming language to use, a developer can help you with that. Given PHP is run on about 80% of the websites and applications on the Internet, PHP probably can do the job.

Hosting Selection

There are three types of hosting server configuration:

  • Shared Hosting – Hosting providers put lots of websites on each servers creating low cost hosting solutions. Shared hosting is a good place to start with a new project unless your project needs advanced access to the server such as command-line access. Some web applications can require more resources than shared hosting provides.
  • Virtual Private Servers (VPS) – This is where a server is partitioned into multiple virtual servers. Most web applications will run nicely on a VPS. 
  • Hardware Servers – Top-level applications may require the power and the exclusive use of a hardware server. This is a server that is exclusively used by one entity.

Your developer should understand hosting and can help you rightsize your hosting server.

How Search Engine Optimization (SEO) Knowledge Makes for a Better Developer

There is a lot to know when it comes to SEO. I think all PHP developers should understand the SEO basics. Things like using relevant search terms in places like the alt tags of your images.

They should also know about duplicate content, how the title of your articles will affect ranking, and so much more. 

SEO is easy to learn if one knows and understands HTML. 

So how does knowing SEO help? As your developer changes things they will understand what SEO questions to ask and how to use that knowledge to help your website SEO wise. 

For example, if you are using WordPress, your developer can help you configure things like your website Permalinks. 

Newsletter Management

This speaks to understanding SPF and DMARC DNS records. Knowledge of how newsletters are rejected by the recipient’s server and how to take corrective action is also important. This is an advanced topic and I would expect a seasoned programmer to understand these concepts. 

Backup Management

Losing a website can be catastrophic. Losing your website could put you out of business. Backing up your website data, files, email, and in some cases server configuration files is a must. Your developer needs to help you develop a comprehensive backup plan as well as help you implement it.

Networking and DNS

Every website or web application is on a web server. Every web server is connected to the Internet. A basic understanding of networking and DNS is are essential skill sets of a PHP programmer.

What specialty are you looking for?

If already have a website or have a plan that utilizes a certain technology, then you will want to evaluate and hire someone who is a developer in that niche. Below I write about some of these areas, such as WordPress, Drupal, and Joomla.

PHP Frameworks

Using a framework for a project usually indicates you have a custom web application.

Having an existing website or web application created in a certain framework will indicate what skills your developer should have.

The Good, the Bad, and Ugly of the Job Boards

When I went out on my own in 2006 there were no job boards. The gig economy has presented the need for a market place where developers can market themselves.

A job board or market place is a place where developers and others can offer their services for hire. The board handles all communication. There is no direct communication between you and the prospective developer. All communications are managed by the job board. Once you select a developer, your payments will be made to the broad and will be placed in escrow until you are satisfied with the job. 

The Good – You have a system in place that might protect you. Your money is placed in escrow. It is easy to find people with the skills you are looking for and read their reviews.

The Bad – These sites are bureaucratic. You must communicate with your provider through the website. The broker website gets a cut of your project, so your developer will be paid less.

The Ugly – There may be rules in place that favor the developer. You will never meet the prospect nor can you build rapport with that developer. These boards lend themselves to cheap and short projects. 

If you want to find an independent/freelance programmer you probably want to steer clear of these boards. You will need to be able to work directly with your developer, especially if it is a project that may take more than a few hours. 

White Label Consulting

If you are a freelance designer or an agency you may need to hire a developer and brand their work as your own. Most of everything I write in this article applies. 

Depending on your need you may want to build a network of programmers you can rely on. 

Milestones and Payments

I like to use a contract as an agreement for the project that outlines what is to be done, who is to delivers what, when certain milestones should occur, and when payments will be made. I also like to agree on the method of payment.

This agreement supersedes all prior statements verbal or written statements. Making the contract or agreement the final statement will help reduce misunderstandings. 

Problem Solving

By the time a person becomes a freelance PHP developer, they should be good at problem-solving. They should have a history of problem-solving. I’m talking about full-stack problem-solving. Full-stack means all the technologies that come together to make your website or web application viable. 

Employers look for skills and those hiring a freelancer are looking for solutions You are looking for solutions and you should understand the skills a freelance developer should possess to be able to complete your project. 

Problem-solving is not limited to the stack. Your developer may find themselves in a position to resolve other issues that are not purely related to programming. Freelancers must be ready to solve logistics and communications issues as well.

Hire a Freelance PHP Developer

If you have a generic problem, such as an old school website that needs to be freshened up a bit, you just need a PHP developer. Any PHP developer that has any amount of experience will probably do. Just make sure you find someone who knows what they are doing, is responsible and reliable. 

Hire a Freelance WordPress Developer

WordPress Logo

If you have a WordPress project, you will need a person who specializes in WordPress. While WordPress is easy to use and expand, it comes with a large ecosystem. Besides needing to know the basics and advanced PHP development, the WordPress developer needs to understand how to create plugins, how to write and modify theme code, and build or modify theme function files. A WordPress developer needs both advanced skills and WordPress specific skills. 

Hire a Freelance Laravel Developer

laravel logo

Laravel is an advanced PHP framework that is very popular. A Laravel developer needs advanced PHP developer skills and needs at least some Laravel development experience. Laravel requires the following skills:

  • Linux hosting command line
  • PHP Composer
  • Mod_rewrite
  • .htaccess
  • Potentially Apache and / or Nginx
  • Model View Controller MVC architecture

Just to mention a few.

Hire a Freelance CodeIgniter Developer

CodeIgniter is very mature given it was first released on February 28, 2006. It is very easy to install, run, and to build web applications with. CodeIgniter is my favorite PHP framework given its small footprint, lightning-fast speed, and it’s simplicity.

CodeIgniter can be used to develop web applications on shared hosting since it does not require a lot of resources nor is there any need to have access to the server command line.  

It is well documented. It follows the Model, View, Controller (MVC) architecture. Codeigniter is suitable for almost any type of project.

A Codeigniter developer needs moderate experience and skills. 

Hire a Freelance WooCommerce Developer

WooCommerce is a WordPress plugin. It extends WordPress. A WooCommerce developer will need to be a WordPress developer and will need WooCommerce skills as well. This developer will need advanced PHP skills first and foremost. Add to that you will want someone with eCommerce experience and a good understanding of the Domain Name System (DNS). It would also be a good idea to hire a developer with some understanding of how a newsletter system works and how SPF records work.

Add to these requirements an eCommerce expert needs to have knowledge and experience with the Payment Card Industry (PCI) standards. This includes penetration testing and working knowledge of how Internet taxing works.

Hire a Freelance Drupal Developer

Drupal is very mature and is for the enterprise. Drupal has a large ecosystem and is a very hardy web application infrastructure that lends itself to creating Content Management Systems (CMS) and all sorts of web applications. Drupal comes with a long and difficult learning curve. Out of the box, Drupal is not very SEO friendly. 

If you are looking to hire a Drupal developer look for someone with a lot of experience with Drupal that is an advance PHP Developer. This person will need to have Linux command-line skills and understand Composure. There is a lot to know to become a freelance Drupal developer. 

Hire a Freelance Magento Developer

Magento is Open Source and also has a licensed version. Magento comes with an extreme learning curve that includes understanding Dependency Injection, Name Spaces, Composure, Payment Gateways, and the Linux command line, Apache and/or Nginx.

Magento is a resource hog and you will probably want to use Magento specialized hosting. 

A Magento developer will need to understand all the design patterns used in Magento to include the database model Entity–Attribute–Value model (EAV).

I think Magento is such a complicated application that I would steer away from a one-man-band freelance developer. I would look for an agency with a proven track record. 

Hire a Freelance PHP Browser-Based Applications Developer

To develop PHP browser-based web applications, your developer will need to have more than a basic understanding of JavaScript / AJAX, and at least one JavaScript library such as jQuery. This developer will need to be an advanced PHP developer and will need to be skilled in making applications that run in a web browser that can rival desktop applications with features like pop up forms and interactive forms. This developer will need to understand security and networking.

What You Can Expect it Will Cost to Hire a Freelance PHP Developer

What does it cost to hire a freelance PHP Developer? It depends on a number of factors, such as what type of application or website you would like to build, the skill set of the developer and where they are in the world. An entry-level American developer might charge $40 an hour and an experienced developer might want upwards of $200 an hour depending on the project and the required skills. An offshore developer might charge as little as $12 per hour and will come with lots of challenges.

In Conclusion

If you have made it this far, you know there is a lot to take into consideration when hiring a freelance PHP developer. Understanding your project and what specialty you need is important. Can you live with a high school kid, or do you want a pro? Understand the prospective developer’s skill and experience level is always good. 

I would recommend you read and reread this article before you decide to begin your search.

I wish you much success in your search for a developer.

Be Careful When Hiring a Developer

Image : Be Careful When Hiring a Developer

I’ve been a PHP programming consultant for over a decade.  I have learned first hand what is out there.  There are a lot of very good PHP programmers, however most do not know how to manage a project.  They are good at programming tasks just not the business end.  And of course there are the ones that should not be programmers at all.

I have talked to a lot of people who have had projects go South.  For the most part I chalk it up to programmers who do not know how to manage a project.  One of the biggest issues I find with my peers is the lack of communication skills.  Oh, they are great company when going out to have a burger, however they do not do a good job of communicating when it comes to managing a project.

It is a vicious cycle

They get the specs from the customer and off they go to build out what they heard from the customer.  Then they return 2 weeks later and the customer is surprised.  The customer asks for multiple corrections and the developer runs off to work on the project some more.  Then they show the project to the customer.  The customer then asks for multiple corrections.  This becomes a vicious cycle.  At some point the programmer stops working on the project and does not return phone calls or emails.  Then I get a call and hear this story.

This is a communication problem

Projects are hard.  It takes lots of communication to flesh out what the customer wants.  I take a two pronged approach.  I listen to the customer and write up what they have told me.  Once we both agree I understand I start the project.  I do not wait long to get the customer involved.  I keep the customer involved in the process.  At first I may need to take some time to get the project rolling.  Once I get the project to a point where I can get the customer involved I do so.  I bring the customer in for project review as often as possible.

Keeping the customer involved serves two purposes

One, they know I am working on their project.  Two, they get to give feed back at a much more granular level which means I will do less rework and the customer will get as close to what they want as is possible.  This approach is win-win.

There are other potential problems as well

More than likely you may not know the consultant you are about to work with and they are going to ask for some amount of money up front.  How do you know they are not some kid that does projects after class or some guy that is in between jobs?

What are some of the other things you can look for that will guide you to a viable consultant?

I’ve hired 2 programmers to work for me and 2 for another company.   I have also worked with other independents on projects. It has been quite the learning experience.

From my experience I would look for several things

1. Are they really in business or is this a hobby, a side job, or something to fill the void until the next W2 job comes through.  Some things to look at as proof they are really in business:

  • Do they have a business license?
  • Have they formed an LLC or a corporation?
  • Do they have a web site?
  • Do they have a business phone?
  • How long have they been in business?

2. I look at experience and their skill set.  Most corporations require a bachelor’s degree, usually in computer science or a related field.  I look for proof of skills.  What kind of history do they have?  How did they learn to program in PHP?  Even though PHP is widely used on the Internet, for the most part, PHP is not taught at the university. Something like 70% of the websites on the internet were written in PHP. Because PHP is not taught at the university, most PHP programmers are self taught.  That does not mean they have not attended college or do not have a degree.  It means if they learned how to program in college, they were taught programming using languages other than PHP.  To me education is important.  It gives me an idea of what they studied and what I might expect from them.  That does not mean a PHP programmer who does not have a degree is any less skilled.  Education is just a way to predict one’s skills.

One of the things I like to ask about is database normalization.  This is a skill that is a must for an independent consultant.  Having working skills in database normalization aid in designing an application.  This is a very important skill to have as a PHP developer.  I was working with a guy who was really smart and  had tons of programming skills and was a really good Linux system administrator,  who had no database normalization skills.  This was a handicap because he was unable to define a project in terms of the database layout and how to modularize a project.  He did great when given the specifications, he just could not create the specifications.

It is a jungle out there

You must be prepared or your project might not come together the way you would like it to.

I completed an AAS degree in programming, and a BS degree in Management Information Systems and Operations Management.  I formed an LLC in 2007.  I’ve been in business since September of 2006 and I work out of my home office that contains a land line dedicated to my business.  I have lots of experience with PHP / MySql programming and managing projects.

Why Use VPS Hosting?

Featured Image for Why Use Virtual Private Server Hosting

In this article I am going to focus on Virtual Private Servers (VSP), Business Class Hosting, and Plesk.  I share with you what I experienced out in the wild while working at 2 of the largest domain registrars and hosting providers.   Add to this what I learned and saw while being a PHP Programmer since 2006.

Types of Servers

Shared Hosting – This is a hardware server that hosts multiple websites.  I’ve seen upwards of 500 websites on one physical server.  I would not recommend this.  Some shared hosting providers have automated systems that move websites around so the servers will be balanced and not become overloaded.  Mostly this is the big hosting providers.

Virtual Private Server (VPS) – This is my favorite.  If you own a business class website, this is the best solution as far as I am concerned.  VPS can be configured with a few server resources such as CPU power and memory.  You can have a “small”, “medium”, “large”, or an “extra large” VPS.  You only need to have the size that meats your needs.  Add Plesk, which I cover below) and you have a rockin’ setup.

Hardware Servers – These are in much less demand now that everyone is using Solid State Device (SSD) drives in place of spinning drives.  SSD makes a ton of difference and removed the bottle neck on the server.  These is some need for hardware servers though.  If a website has a lot of servers are is running a resource intensive application a hardware server might be needed.  In the old days even the smaller businesses were utilizing hardware servers.  Not so much now since SSD drives are so more more affordable and hardware is getting so much more powerful.

Different Sever Operating Systems

Linux – Linux is open source and is widely used.  There is a whole community out there that supports Linux and keeps it free.  You can download a copy of Linux for free.  Install that Linux on an old laptop or desktop, do a small amount of configuration, connect it to the Internet, and you have a web server.

Unix – Not so widely used for hosting since most Unix operating systems are licensed.

Windows – You will find Windows servers out there in the wild.  These are mostly used for web applications written in Dot Net – A Microsoft programming language.

Hosting Support

This is the support you will receive from those big companies that offer cheap hosting and you probalby experience the same level of support if you have one of their VPS servers or a dedicated server.

Level 1 Support –  When you call the big hosting companies you talk with a level 1 support tech.  This person has limited authority to make many changes, is limited in access to they hosting system, and is probably not a server administrator.

Level 2 Support – This is the person the level 1 tech expedites problems to that the level 1 lacks the skills or access to resolve.  The level 2 tech is probably not a server administrator.  He or she probably has more experience that the Level 1 and has more access to the system, and is limited in what he or she can do.  You will probably never talk with a level 2 at one of these cheap hosting companies.

Server Administrator – These are the folks that have the skills to work on hosting and email servers and have access to do so.  If the problem is such that the level 2 cannot resolve the server admin will be given the task.  In a perfect world you would want to talk directly with this person.  If you are hosting with one of these large / cheap hosting companies you will never talk with a server admin.

Email Support – More than likely you will have access to a support form where you enter your hosting account information, the issue you are experiencing or your question.  When submitted a ticket will be created and it will be added to a queue.  Your ticket may remain in this queue for 24 to 72 hours before it is read by a level 1 support technician.

The Queue – No mater how you enter the system, via phone or by completing a form, you will enter a queue if the level 1 cannot immediately address your problem, and escalating your ticket will take even more time.

Specialized Hosting Companies

I’ve worked with 2 specialty web hosting houses. One was for Drupal and they other was for Magento 2.  These types of hosting vendors are unique in that they specialize in the application or applications they specialize.  The Drupal host was much better than the Magento host.  I had two ways to interact with the Drupal host, by phone or by opening a ticket.  Above I covered te type of support you will probably find out there.  In the case of the hosting company that specialized in Drupal, I could call and talk with a server administrator and he or she could answer my question or solve my problem in real time.  No queue. If I opened a ticket, I would hear back in about 15 minutes, and the issue would be resolved by a system administrator. No level 1, and no queue.  This type of hosting is very expensive.  They provide two types of servers.  1) a VPS hosting server that was rather healthy with something like 8 cores and 12G of RAM that would run about $450 a month.  2) they provided a hardware server with 16 cores and 32G of RAM for $750 a month.  Giving an application a lot of resources solves a lot of issues.  What your paying for here is the concierge service and access to a server admin not the hardware.

Business Class Hosting

This is the missing hosting class.  You may pay more for business class hosting, however it is well worth it.  These hosting providers will cost more than those big guys with there level 1’s, however they provide a inexpensive alternative to the specialty hosting providers.  With a business class hosting provider you will get access to a system administrator via phone or email and not have to get stuck in a queue.  You will get better guidance as well.

For more information read :   Business Class Hosting

Plesk

I’ve supported servers that do not have a control panel and I have a VPS with Plesk installed. Plesk is feature rich and gives the webserver

Plesk is a web server control panel that makes it possible for a website owner or a developer to manage their own server.

you’ll ever need to build, secure and run websites and applications in the Cloud! Get Plesk Hosting Platform!

Pricing Plans

Shared Hosting – The big guys might start at $10 a month while the business class folks might want $15 or $20 a month.

Reseller Hosting – These guys are all over the board.  You might be able to find a reseller account for $5 however the savings is not worth it.  If you are going to spend $25 for a reseller account why not spend $50 a month for a VPS running Plesk?

VPS Hosting – If you have read this far you know that a VPS plus Plesk is my favorite. For good reason.  If you are a business person, why take a chance on cheap hosting or worse yet allow yourself to get caught up in a queue while trying to do business on the web.  With a VPS and Plesk you have your own server and a world class control panel.  Plesk will make your life easier.  The bug guys with the support queues might run $80 a month for a VPS and the business class hosing providers might charge as little as $50 a month for a very nice VPS hosting account that has Plesk installed.

Hardware Servers – Do your research before you go with a hardware server.  You probably do not need a hardware server.  If you do, I would not go with the big guys.  They will charge more and they are the ones with the level 1 support queues.  Go with a business class host and save a few bucks while having access to a real system administrator without the queue.

Managed Hosting Accounts –  This is really an add on service. Your host will watch your server closer and will handle all updates to the operating system as well.  We worth it if you can afford it.

Business Class Hosting – I’ve talked about this already.  This is the only way to go.  The big guys charge more and give less.  As you have read the business class hosting providers cost less while giving you direct access to they system administrator.  No queue and better advice.

VPS Server Resources

Virtual Private Servers are measured by tow basic resources.

  1. CPU cores which they refer to as vCPU.  More cores more CPU power.
  2. Random Access Memory or RAM.  More RAM more power.

Most of us can do well with 2 cores and 4G of RAM.  It is relatively easy to change your server’s configuration so talk with your vendor and start where they say to start.  Then you can make an adjustment after you set up and running, if need be.

Conclusion

We have covered shared hosting, VPS hosting, hardware servers, the big guys and their support with queues, and  business class hosting.  By now you probably have figured out I like VPS hosting with Plesk from business class hosting.  If you are running a business I would recommend becoming familiar with what I write about here. I recommend finding a business class hosting provider and talk with them about your needs.

best vps hosting

linux vps hosting
managed vps hosting
vps web hosting
vps hosting provider
cheap vps hosting
vps hosting plans
vps hosting services
vps website hosting

What is WordPress and How Does it Work?

Image : What is WordPress and How Does it Work?

You may be wondering what WordPress is, how it works, and what it is used for. In this article, I answer all those questions.

WordPress was created for bloggers. It has since grown into a Content Management System. WordPress was created using the PHP programming language and utilizes a database. Its behavior can be modified and extended by creating a plugin. It is user friendly and easy to use.

This article covers the open-source, downloadable, self-hosting, version of WordPress, not WordPres.com. I do not recommend using WordPress.com for any serious venture.

WordPress is simple but complicated. It is easy to learn and use by the end-user. WordPress’s behavior can be modified and/or extended by a PHP programmer that knows the WordPress ecosystem. Let’s dig deeper. 

What is WordPress?

WordPress was created in 2003 by Matt Mullenweg using the PHP programming language, and the data engine MySql.

Part of the ideology of WordPress is open source. Open source means the code is available to anyone and can be used for any purpose. Part of the requirements of adding a plugin into the WordPress repository is it much be open source.

WordPress was created for blogging. It has since evolved into a Content Management System (CMS).

What is a content management system? In the case of WordPress, it is the storing, retrieving, editing of content. WordPress comes with two types of content – pages, and articles.

WordPress can be extended to manage other types of content. To do so one needs to utilize or create a WordPress plugin. I talk more about plugins below.

WordPress is utilized by about 30% of the websites on the Internet.

WordPress Consists of 3 Major Parts

  • The Core – Most of the functionality is provided by the core source code. One of the principles is to never modify the core because it is always being changed and updated by the WordPress community.
  • Template system – This is where some of the functionality comes from. The template provides for the look and feel and some of the functionality that brings together the website. Note there are a lot of free themes and a lot of themes you must pay for. 
  • Plugin architecture – Changing the behavior or extending it is done in the plugin. These same changes can be done in the theme, however, it is not recommended. The reason is the theme can easily be changed, taking with it the change that is built into the theme. If it is desired that the changes survive a theme change, they should be completed within a plugin. 

What is WordPress Used For?

As mentioned before WordPress is an extendable CMS that is used to build websites. If you want to create a blog or a website that is rich in written content then WordPress will probably be up for the task. 

WordPress can be extended to manage other types of content such as a business listing. If this is done, WordPress becomes a hybrid CMS and web application.

How to Use WordPress

WordPress is mature and feature-rich, however, it is not overly feature-rich. You do not need to know a lot of technical details to manage a WordPress website. 

To begin managing your website you will want to login. If this is your first time logging in, use the username and password you created when installing WordPress.

The URL to the login page is www.YourDomain.tld//wp-login.php. TLD stands for top-level domain. A top-level domain is .com, .net, .org, etc. 

Once you go to that URL you will see the login form.

Image of the WordPress Login Form

Now that you are logged in you will see the Dashboard.

By reviewing the below list, you can see there are several options on the control panel menu. We will not cover every detail, however, I will give you a brief overview. 

  • Dashboard – The dashboard consists of several messages about your website and some links you can use to manage your website. Under the Dashboard, there are two options. 1) home which is the dashboard, and 2) updates where you can check for updates and complete the update process. For more information refer to the Dashboard Screen.
  • Posts – This is where you can list all of your posts, add a new post, or delete posts. You will also be able to create, modify, and remove categories and tags. You will probably spend most of your time here after your website is fully configured. 
  • Media – You will manage your media here. Media meaning images.
  • Pages – You will need to create, modify, and remove pages as your website grows. The average small business will need about 10 pages.
  • Comments – If you allow comments on your website, this is where you will manage them.
  • Appearance – A lot is going on here. The appearance option is the gateway to managing themes, customizing themes, working with built-in widgets, managing menus, managing plugins, and the theme editor. Unless you know what you are doing I would not edit the theme.
  • Widgets – As listed above, WordPress widgets give the website manager the ability to add functionality to the theme without needing to do any coding.
  • Plugins – These are used to extend WordPress or to modify its behavior. Creating and managing plugins is the work of a WordPress PHP programmer.
  • Users – When you first installed WordPress, you created a username and password that WordPress used to create the main administrator. There is a complete user system that allows you to add, edit, and remove users. This includes the login system. Add to this access control.
  • Tools – By using the export tool, you can download posts, pages, field groups, and media. The main area I’d like to point you to is the ability to export personal data. This has become important because of the push for privacy on the Internet. For more information see the Tools Export Personal Data Screen on the WordPress site.
  • Settings – Is where you manage the configuration of your WordPress website. Settings are made up of 7 sections:
    • General – This is where you will manage things like the site title, taglines, the URL of your website, Admin email address, select if anyone can register to become a user, the new user’s default role, and the date and time format. For more information refer to the Settings General Screen.
    • Writing – Set the default post category, default post format, post via email, mail server, login name, password, default mail category, and update services. For more information refer to the Settings Writing Screen.
    • Reading – Where you set your home page display, max number of blog posts to display on each page, max number of syndicated feeds to show, how much text to show for each post feeds and setting your website to be visible to the search engines. For more information refer to the Settings Reading Screen.
    • Discussion – This is where you manage the default post settings, other comment settings, email whenever, before a comment appears, comment moderation, comment blocklist, and avatars. For more information refer to the Settings Discussion Screen.
    • Media – This is where you manage your images. For more information refer to the Settings Media Screen.
    • Permalinks – This is where you manage your permalinks. What you set here may have an impact on how your pages, articles, and other content ranks on the search engines. Most blog owners choose the “post name” setting. Before you configure this, make sure you understand how you configure your permalinks might affect your website ranking. For more information refer to the Settings Permalinks Screen.
    • Privacy – As a website owner you will be required to follow all applicable privacy laws world wide otherwise your website may be blocked in some regions and may lead to complicated legal issues. WordPress provides a starter page. You will need to be aware of the General Data Protection Regulation and I recommend reading the Settings Privacy Screen documentation.

WordPress Can Become an eCommerce Solution

The most popular eCommerce solution is WooCommerce. WooCommerce is a WordPress plugin. This is a great combination. 

WooCommerce is both free and open source. This brings eCommerce into the grasp of most individuals and small businesses. 

By being a WordPress plugin it leverages what WordPress already brings to the table. 

WooComerce is not a resource hog. Shared hosting might provide enough resources depending on your needs. Having said that I would opt for a Virtual Private Server (VPS) as an entry-level hosting option.

Conclusion

WordPress is simple but complicated – there is a lot to know. If you are building a website using WordPress it is well worth the effort to learn how to make WordPress purr like a kitten. 

Now that you know what WordPress is and have some basic familiarity with it, it is time to put that knowledge into practice and start managing your website.

I had a professor that used to say inch by inch anything’s a cinch. In the case of WordPress that applies. All it takes is spending a little time here and there and in no time you will be an expert WordPress manager. 

Should I Code My Website From Scratch?

Should you build your website from scratch or should you use an alternative? I share my thoughts as a PHP developer.

In the old days coding a website from scratch was the norm. Today there are alternatives such as WordPress and frameworks such as CodeIgniter. If you are a student this could be a good learning opportunity. If this is a business website, I would recommend considering your alternatives.

I have been a PHP developer since 2006 and I built my first website in 2000. In those early days, I created websites from scratch. Today there are a lot of alternatives such as, WordPress, Drupal, Joomla, Wocommerce, Drupal Commerce, Magento, and some that have less market share. 

If you are considering coding a website from scratch there is a lot to consider. Let me explain.

Skills 

To code a website from scratch requires a minimum of knowledge and skill. 

You must know: 

  • HTML – Is the foundation of web building.
  • Cascading Style Sheets (CSS) – A working knowledge of CSS is a must when building a website from scratch. The developer will need to know how to make the website look and feel good and any modern website must be mobile responsive. Mobile responsive means the website must be able to be viewed on all sorts of devices from desktop computers to laptops to mobile phones.  
  • JavaScript/AJAX – JavaScript and AJAX make your website interactive. For the entry-level website, these skills may not be necessary. Some JavaScript may be needed for form valuation.
  • A server-side scripting language – This is a necessity. The developer that builds from scratch will need to be armed with a server-side scripting language. The PHP programming language is by far the most widely used language for creating websites and web applications.
  • A data engine/Structured Query Language – If this site is more than just an HTML/CSS/JavaScript website, a data engine will be necessary. MySql is by far the most widely used web data engine. The Structured Query Language (SQL) is how the programmer utilizes the data engine. SQL skills are a must if a data engine is used. 
  • Code editor – A code editor can make a website developer’s life much easier and can speed up the programming process. Code editors can utilize auto-complete and give the ability to do a global search to find other code. These editors usually provide the ability to edit remote code.
  • Local development environment – Unless the website to be built is your basic HTML/CSS/JavaScript website, a development environment is probably necessary. Note that HTML, CSS, and JavaScript run in your web browser so websites that are limited to these technologies can be run locally without having to configure a development environment. If this project is purely for learning, the project can be completed on a publicly facing server. If this is a production website you may want to have 3 servers, one for each of the following, development, testing, and production. 
  • Hosting – Hosting is always necessary when creating a website. Shared hosting is the basic starting point. If you are building a PHP website, you will need a Linux hosting package. At one point or another, I have hosted with GoDaddy and HostGator. They should meet your entry-level needs. I hear Bluehost is a good choice as well for cheap entry-level hosting.
  • File Transfer Protocol (FTP) – If you are creating your website local you will need to transfer it to your server. That is where having FTP skills come into play. For a simple FTP client, I recommend Filezilla.
  • Project management skills – Building a modern-day website requires project management skills. As you can already see there are a lot of moving parts that will require a plan and the ability to execute that plan.

The above skills transcend three and possibly 4 distinct skill sets. In modern web development, 4 skill sets are needed to build, upgrade, and manage a website.

  • Designer – This is the person that uses HTML and CSS to create the look and feel of the website.
  • JavaScript / AJAX developer – In some cases, a Javascript developer might be required if the website or web application is using a lot of complicated JavaScript/AJAX to make the website interactive. If you are using JavaScript for simple stuff like form validation, the scripting developer is probably able to take care of the JavaScript programming.
  • Server-side programmer – This is the person who writes the server-side scripts or the web application code. In my case, I use the PHP programming language. One thing to ensure when choosing a programming language is that the language is readily available by most hosting providers. PHP is very popular and is widely available. The developer may need Object Oriented Programming skills if the code is to be reusable.
  • Hosting server administrator – The hosting server administrator ensures the web server hardware, software, and connections to the local network and ultimately to the Internet are all kept in good working order.

Questions You Should Ask Before Starting Your Project

  • What type of website are you building – Before you get started you need to ask yourself what you want to achieve. Are you building a web application or a content management system (CMS)? What you ultimately wish to achieve, will affect the skills necessary to complete the project.
  • Who is the website for – Is this a project used for learning? Will it be a business website? Is this a do-it-yourself web project? 
  • Time constraints – It will take longer to create a CMS than to use an application that is already available such as WordPress. If you are building a web application it will take however long it takes. Using a framework can speed development. You need to know the deadline for 2 reasons. One, you need to evaluate if it is reasonable, and two, to better understand what path you need to take and to discover how much you can accomplish within your given time frame. 
  • Would an alternative be better – I think I have somewhat covered this already. Let’s dive a little deeper. Say you want a simple CMS. Something like WordPress, Drupal, or Joomla may be a better solution than building from scratch. Let me explain why. If the developer starts from scratch it will take a lot of time and effort to duplicate the features and functionality these alternative applications already provide. They already have user management, content management, etc. These applications can be extended without editing the core source code of the application. And do not forget these applications are very mature and it may have taken the community hundreds of man-hours or even thousands of man-hours to get where they are today. It is not realistic that these features can be duplicated in just a few hours of programming. 
  • Is this an exercise so you can learn web development – If you want to learn web development skills, building a website from scratch can be a great way to learn and show off your skills. As you see there is a lot to learn. For the do it yourselfer, some of this can be streamlined. For example, you will not need to have Object Oriented Programming skills to build your website. Eventually, I would recommend you learn everything I have outlined if you want to build websites for others.

Advantages 

You will learn a lot if you build a website from scratch. The website may require less hosting resources and may run faster. And you will be fully familiar with your code.

If you are building a browser-based web application, building from scratch is a viable alternative to using a framework. Frameworks come with a learning curve that can add time to the project

Another advantage may be creating reusable code for a niche that a developer may be targeting. Once the code has been created it can be used for other projects.

Disadvantages

If this website is a business website, building from scratch may be a disadvantage unless that is what is required. It takes a ton of time and effort to duplicate what is already available. Time to market could be much sooner if you use an alternative such as WordPress or a framework. Time to market translates into cost.

Not using a framework can add time to the project when you take into account, frameworks contain a lot of functionality that can be tapped into and add structure and features you might have to create on your own if you are building from scratch.

Resource Utilization

In the past, my peers and I have discussed server resource utilization by applications such as WordPress. Some of my friends say building from scratch always trumps using a canned application because the source code will take up a smaller footprint and will require fewer server resources.

No doubt creating anything from scratch will make for a more efficient code base that requires less web server resources. However, you have to ask yourself is that a good business decision?  

I am looking at this from a business perspective. It is cheaper to throw a few more server resources at the application than to pay a developer to duplicate what is already out there. 

There are times when building from scratch is the solution, however, for the most part, most websites do not need to be created from scratch.

If there is a viable alternative that will shorten the build time, it should be considered. Manpower is expensive. Hosting servers in comparison are much less expensive and are getting much more robust almost daily.

This did not use to be the case. Until recently, as hardware became more powerful software would jump ahead and would require more power. That problem does not exist today. Modern web servers are very powerful and are less costly than what a developer costs.

I’m a minimalist too, however, we must consider business costs when creating a website or web application.

There are exceptions. In some cases, an application is given limited resources by design. This could be because the application is embedded on a small computer that has limited resources. This is not usually the case when it comes to websites and web applications.

Build a Website From a Template

Utilizing a professionally made website template can reduce the time and effort it takes to build a website. There is a lot of free templates. You can also buy a template. I’ve seen high-quality templates that were between $50 and $100. 

The advantage of using a template that was created by a designer is the HTML and CSS will be much better than most of us nondesigners can create. Add to this the template will be mobile responsive which requires advanced skills.

WordPress vs Build From Scratch

To build a website from scratch means creating the entire code base and the template as well. This could be a lot of work. Since most websites require a CMS, let’s cover that.

First, let’s look at what WordPress beings to the table. WordPress comes with the following:

  • User management – This includes login/logout, password management, and the application’s access control list (ACL). The ACL allows the WordPress administrator to limit access to certain functionality by the class of the user. 
  • Content management – WordPress manages articles and pages. It comes with an advanced content editor, aids the writer by creating the URL of the article/page, and provides for categorizing this content.
  • Widget management – The core functionality allows the WordPress theme developer to add places for widgets. WordPress comes with widget management. 
  • Theme management – The theme is separate from the core WordPress code so it can be changed with a click of your mouse. The theme developer can take advantage of the core functionality and build the theme to be responsive to the user’s needs.
  • Plugin management – One of the principles of WordPress is that no one is to be able to edit the core source code. To extend or modify WordPress, a developer can create a plugin that will interact with the WordPress core system. It is done this way to prevent community updates from overwriting any changes, the user may have made, to the core source code.
  • URL management – When you look at a WordPress website you will see the base domain followed by the article name. WordPress uses the article name to fetch the content you would like to see. This is done by a software router.
  • Add data types – This means a developer can add a data type for whatever is needed. Let me give you an example. Let’s say you have a website that is a mix of articles and business listings. WordPress does not come with a way to manage business listings, however, that functionality can come in the form of a plugin that adds that functionality and creates a data type of business. In essence, by extending WordPress, it has taken on another role that makes it more like a browser-based application.
  • Control panel – All the functionality and features can be accessed via the WordPress control panel.
  • Community – WordPress is made up of a community that manages the source code and the on-site documentation as well as the off-site documentation.

Let me give you 3 examples of the WordPress documentation:

  • WordPress Codex – This is the table of contents that covers : 
    • What You Most Need to Know About WordPress.
    • Learn How to Use WordPress.
    • Working With Themes.
    • Write a Plugin.
    • Give Back.

 You can find the WordPress Codex here.

  • WordPress Theme Handbook – Covers everything you need to become a WordPress theme creator. You can find the WordPress Theme here.
  • WordPress Plugin Handbook – If you are interested in learning how to modify or extent WordPress functionality, they have written a handbook that can get you where you want to go. The WordPress Plugin Handbook can be found here.

As you can see building from scratch must be analyzed so one does not create a project that unnecessarily duplicates what might already be available. 

There are times when building from scratch is the only real solution. Recently I had the pleasure to review a web application that was created to run a multi-million dollar manufacturing business. I’m guessing they spent hundreds of thousands of dollars building this application. I think it was a wise move.

Reusable Code

If the idea of creating a website from scratch is to create a codebase that can be reused, this code must be well thought out and be very modular. Creating truly reusable code is an advanced skill. 

I would recommend following the Object-Oriented Programming (OOP) design pattern. Doing so will allow the developer to create modular code that can easily be reused. 

I would also recommend implementing the design pattern Model View Controller (MVC). MVC is a great way to structure one’s code/project. It makes the code base more understandable and easier to maintain. Another benefit to MVC is it makes it easier for more than one programmer to work on the project at the same time. 

In Conclusion

There is a lot to consider when one sets out to create a website. Should you use what is already available or build from scratch? 

When considering building a website or web application from scratch, I would recommend researching the alternatives before you make a decision.