How much can you save by hiring a Freelancer vs an employee?

How much can you save by hiring a Freelancer vs an employee?

Finding good employees is difficult in general.

There are lots of overheads for full-time employees. If you are a small agency and not confident of continuous work. Adding full-time employees can increase your risks.

Could you be saving money by hiring a freelancer?”

Then you have a project come in, which has a fixed length. Hiring a freelancer may look expensive in the short term whilst your paying them.

Once the project is complete, you can “fire” them as easily as you hired them.

Freelancers cost us more, but are lower risk.

Hiring the right freelancer. Allows you to hit the ground running, executing a project faster.

Depending on the region / country you operate in. Here are some of the overheads for employees to consider:

  • Training
  • Paid sick days
  • Paid vacation
  • Dental / Health plans
  • Office rent
  • Equipment (Computer, Desk, etc.)
  • Cost of hiring employees
  • Insurance
  • Payroll / accounting / taxes costs for an employee

A freelancer may have a higher hourly rate in the short term. However over the longer term, using freelancers should save your company money.

Certain regions and countries may also limit the length of time a freelancer or contractor can be employed. Before they are considered a full-time employee.

Did you like this post about Freelancers and saving money? Stay tuned for more, with my weekly email by subscribing below:

Do you really need a custom e-commerce website developed for your small business?

The perfect custom e-commerce website for your business may be best left as a dream for now.

Most small businesses don’t need a custom e-commerce website. When an off the shelf product will work.

If your small business is tight on funds as most small businesses are. You don’t want to tie up your cash flow with a custom e-commerce dream site.

Think of it another way. Say you need to buy a car. Will you buy a car that’s already made and ready to go? Or would you order a custom made car, to your exact specifications? Are you prepared to pay for the extra cost and wait for it to be made for you?

And that’s after the time it will take to find a developer or company to make the site for you.

Almost everyone will choose a ready made car. So choose a ready made, easy to configure e-commerce solution.

There are many options:

  1. Don’t overlook the worlds largest e-commerce platform Amazon
  2. Ebay used to be about auctions, but now many buyers and sellers are just selling at a fixed price Ebay
  3. Etsy if you are selling craft / homemade style things Etsy
  4. Shopify has a great platform and even a POS solution for your small business Shopify
  5. Volusion is a competitor to Shopify Volusion and also has a 14 day free trial.

Don’t forget WordPress, Wix, Weebly and Squarespace also offer e-commerce integrations / plugins, but maybe at the end of the day all you need is a PayPal or Stripe button to accept payments?

So if you are looking to get going with e-commerce for your small business. Consider the options above, to get you transacting online

If you have any questions about the above and need any more help / advice, please contact me.

Do you have enough time for a custom e-commerce website to be developed?

Time, money and patience is required for custom software development.

Custom software development can really hurt, so do your research before committing to it.

Developing a customer e-commerce website can be very time consuming. Do you really need to try and “re-invent the wheel”?

The development process can also be annoying and irritating. More so if you don’t understand the technical aspect. Even seemingly small visual changes can seem to take way more time than you think they should.

You might start thinking…

“Am I being ripped off by my website developer?”

If you haven’t yet embarked down this process, pause and consider your options:

  1. Pay to develop custom software to exactly meet your needs. Which could be a long frustrating expensive journey or
  2. Use an existing e-commerce service like Shopify. Where in a few hours you could have a professional looking site live and ready to take orders.

I’m a software developer. Through years of experience of being paid to develop custom software. I recommend you avoid all the potential pains associated with option 1. Take option 2, start accepting orders today!

Save yourself the pain, take the easy way of using software. That you can then customize (within certain boundaries) for yourself!

If you liked this post about developing a custom e-commerce website, be sure to subscribe below for my next post

Acronym cheatsheet for Digital Nomads

If you are thinking about being a DN. You might be wondering what SEA stands for.

For someone unfamiliar or just starting out as a Digital Nomad. There are many acronyms, I’ve put together a list of some you might run across below.

Acronyn Meaning
AMA Ask Me Anything
DN Digital Nomad
DM Digital Marketer
EU European Union
LLC Limited Liability Company
PM Product / Project Manager
NYC New York City
RV Recreational Vehicle, an option to live and travel around in.
SAAS Software As A Service, one way to earn location independent income
SEA South East Asia, also refereed to as SE Asia. A popular part of the world for Digital Nomads, due to low cost of living + good connectivity.
US / USA United States of America

How to get started with PHP as a complete newbie

How do you get started with PHP as a complete newbie?

A common question that I get asked is

How do I get started with PHP?

The following is a simple recipe to get you started with PHP.

You’ll need the following basic ingredients for success:

  • A reasonably modern computer running Windows
  • A text editor, notepad for example
  • A web browser, like Chrome or Firefox

Then follow these instructions to cook up your first “hello world” PHP page:

  1. Setup a local webserver on your computer, by installing WAMPSERVER – download from here
  2. Once installed, right click on the WAMPSERVER icon in your Sys Tray and click on “www directory”.
  3. Create a new folder called “Project1”
  4. Enter the folder
  5. Create a new file, called index.php
  6. Edit the file with your text editor, notepad will do
  7. Enter the following code into the file, or copy and paste from here:
  8. <?php echo "Hello World!";
  9. Save the file
  10. Open your web browser and navigate to this URL: http://localhost/Project1
  11. You should see a page with the text “Hello World!” displayed in it
  12. Congratulations you’ve successfully made your first PHP page!

Reasons to switch from MySQL to MariaDB

Thinking of moving from regular MySQL to MariaDB?

MariaDB has a considerable performance gain over MySQL 5.6

Need any more reasons than performance to switch?

  1. Switching from MySQL to MariaDB is easy, it’s still considered a drop in replacement.
  2. MariaDB definitely has more of an open source attitude.
  3. Galera implementation is better.
  4. Maria comes by default with some distros, like the Red Hat series.

I recently found MariaDB 10 was available on my hosting environment. I saw that MariaDB was compatible with MySQL having not heard of it before then. I tried setting it up and switching was dead easy, just like MySQL and I didn’t have to make any code changes.

If you found the reasons above to consider switching to MariaDB helpful. Please comment and subscribe below so you don’t miss out on my next tips…

How to join the same table three times in a single SQL query statement?

Having more than one join to the same table can be confusing.

More than one join can quickly create a messy SQL statement. If you don’t use aliases they can quickly become difficult to read.

If your database tables need to have three or more columns with the same relationship to another table. You can easily join them with the help of aliases, as explained below.

For example say you have the following two tables: Users and Products. When a Product is created, the Users id that created it is stored. Then when it’s modified the Users id that modified the record is stored. Finally a Users id is recorded to approve the changes.

Products table fields: Comments
id Primary Key
created_by_user_id Foreign Key to Users table
modified_by_user_id Foreign Key to Users table
approved_by_user_id Foreign Key to Users table
Users table fields: Comments
id Primary Key

If you want to find out who created the product, you can do that with a simple SQL query like this:

, u.firstname AS 'creator_firstname'
, u.lastname AS 'creator_lastname'
FROM products p
INNER JOIN users u
ON p.created_by_user_id =

If you want to find out who modified the product you can do that with a similar query:

, u.firstname AS 'modifier_firstname'
, u.lastname AS 'modifier_lastname'
FROM products p
INNER JOIN users u
ON p.modified_by_user_id =

If you want to find out who approved the product you can do that with a similar query:

, u.firstname AS 'approver_firstname'
, u.lastname AS 'approver_lastname'
FROM products p
INNER JOIN users u
ON p.approved_by_user_id =

But how can you combine all three queries to know the usera that created, modified and approved the products in one query?

Just join the Users table three times, but you need to use a different alias each time you JOIN the same table:

, u1.firstname AS 'creator_firstname'
, u1.lastname AS 'creator_lastname'
, u2.firstname AS 'modifier_firstname'
, u2.lastname AS 'modifier_lastname'
, u3.firstname AS 'approver_firstname'
, u3.lastname AS 'approver_lastname'
FROM products p
INNER JOIN users u1
ON p.created_by_user_id =
INNER JOIN users u2
ON p.modified_by_user_id =
INNER JOIN users u3
ON p.approved_by_user_id =

But what if a product has only been created and modified but hasn’t yet been approved? In which case the approved_by_user_id should be null in your products table.  Then the above query won’t be able to join twice to the users table. Unless it has a user record with a null id, which it shouldn’t.  In this case you need to use a LEFT JOIN like this:

, u1.firstname AS 'creator_firstname'
, u1.lastname AS 'creator_lastname'
, u2.firstname AS 'modifier_firstname'
, u2.lastname AS 'modifier_lastname'
, u3.firstname AS 'approver_firstname'
, u3.lastname AS 'approver_lastname'
FROM products p
INNER JOIN users u1
ON p.created_by_user_id =
INNER JOIN users u2
ON p.modified_by_user_id =
LEFT JOIN users u3
ON p.approved_by_user_id =

So now you can join the same table three times with aliases in single efficient query.

Here are all the SQL statements from above and the CREATE table statements:

For more about MySQL please check out the MySQL terminology guide

Interested in more SQL tips? Please pop your email in the box below and you’ll be sure to receive them!

Pros and cons for switching to MariaDB from MySQL?

What are the advantages of switching to MariaDB from MySQL?

And are there any disadvantages?

If you like me, you may have only just heard about MariaDB. I came across it as a new option when adding a database to RackSpace Cloud hosting environment. After a quick read up about MariaDB and seeing that it was MySQL compatible. I thought why not give it a shot for the website I was working on. The website was a demo site, so there weren’t any concerns about production stability. Rackspace Cloud Hosting provided PHPMyAdmin for accessing the MariaDB. Just like you would have with MySQL. Everything appeared to look the same and work the same setting up the database. Once set-up I immediately saw that MariaDB is definitely faster than MySQL.

So what are the pros and cons for switching to MariaDB from MySQL?

Pros of MariaDB vs MySQL

  1. MariaDB has better query performance.
  2. MariaDB has more of an open source attitude.
  3. Switching to MariaDB is easy.
  4. Galera implementation is better in MariaDB.
  5. MariaDB is available as an option with some hosting environments, like RackSpace Cloud.
  6. MariaDB comes by default with some distros, like the Red Hat series.

I took a big site from MySQL to MariaDB with zero issues.

Cons of MariaDB vs MySQL

  1. Switching back from MariaDB to MySQL may not be so easy.
  2. If you are using AWS, Amazon Aurora may be even faster than MariaDB and MySQL.
  3. Your Operating System may not support MariaDB yet.
  4. Your hosting environment may not support MariaDB yet.
  5. Percona may be an even better option than MariaDB.

As with all software there are new versions in development. Each release bringing better performance with it.

So if you are looking to switch from MySQL, make sure the benefits outweigh the risks.

Wikipedia made the switch in 2013 as outlined in this blog post

Rackspace is updating all it’s Cloud Sites from MySQL to MariaDB in 2016.

Useful knowledge base articles from Maria:

If you liked this post, be sure to subscribe below and be the first to get my next post…

When do you need to use back ticks with MySQL?

Back ticks are often misunderstood.

I am trying to learn the best way to write queries.

You might not be sure how to use those funny little `ticks

`back ticks`, `backticks`

I have used single quotes, double quotes and back ticks without any real thought.

What is the standard for this?

Back ticks should be used for table and column identifiers, but are only needed when the identifier is MySQL reserved keyword.
Also if the identifier contains white space or other special characters.

When possible it’s recommended not to use keywords and special characters as table and column identifiers to avoid having to use back ticks.

If you use PHPMyAdmin to generate some queries you will see that all the column and table identifiers are escaped with back ticks by default.

For example a SELECT query would look like this:

SELECT `id`, `created_by_user_id`, `modified_by_user_id` FROM `products` WHERE 1

As none of these column and table identifiers contain any special characters and don’t match any of the MySQL reserved keywords, the same query will run just fine without the back ticks:

SELECT id, created_by_user_id, modified_by_user_id FROM products WHERE 1

Replace the back ticks with single quotes (or double quotes) and you will get an error as now each identifier wrapped in single quotes is treated as a string:

SELECT 'id', 'created_by_user_id', 'modified_by_user_id' FROM 'products' WHERE 1
--#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''products'

If you liked this tip, be sure to subscribe below and be the first to get my next tip…

How to use CodeIgniter to prevent malicious SQL injections

Should you escape input when using CodeIgniters active record class?

Do you need to worry about MySQL injection vulnerabilities when using CodeIgniter?

Yes, yes you do.

It is of course good security practice. To escape your data before submitting it into your database.

CodeIgniter provides three helpful methods. Which are part of it’s database library to stop SQL code injection.


CodeIgniter also provides a method to to use Bindings. Whereby the question marks are replaced by the data parameters. That you pass to the query function.

For example:

$sql = "SELECT * FROM some_table WHERE id = ? AND status = ? AND author = ?";
$this->db->query($sql, array(3, 'live', 'Rick'));

This way they are escaped so you don’t have to escape them. Resulting in safer queries for you. Stopping attackers from injecting malicious SQL.

Refer to the last two sections of this page of the CodeIgniter manual.

If you liked this tip, be sure to subscribe below and be the first to get my next tip…