Ubuntu 20.04 LTS – Now is the time

Reading Time: 3 minutes

Linux and Ubuntu, in particular, have been on the up and up these past few years. Today marks the release of Ubuntu 20.04 LTS, a major milestone in the releases for this massively favoured Linux distribution.

LTS?

LTS stands for Long Term Support in the release cycle world of software development. It marks a version that is usually safe to use and will be supported for a long time to come. You could almost equate it to a big release in the Windows (Service Packs/Red stone releases) or MacOS world (High Sierra/Mojave/Catalina etc.)

LTS releases come around every 2 years or so with the intention of a long supported development cycle that will ensure your software gets updates for the next 5 years (at least). You can read more about Ubuntu’s release history here.

Ubuntu 20.04 desktop

What’s New?

While there is a lot to go through, some of the highlights I found interesting include:

  • Desktop
  • Developer-centric improvements
    • Python3 is now the default (RIP Python 2)
    • PHP 7.4 support out the door
    • Ruby 2.7
    • Ruby on Rails 5.2.3
    • Apache, TLSv1.3, client cert auth
    • OpenSSH improvements
    • PostgreSQL 12
  • Network configuration / management improvements
  • Snap store
    • The Snap Store (snap-store) replaces ubuntu-software as the default tool for finding and installing packages and snaps.
  • Linux kernel 5.4
    • Boot speed improvements.
    • Significant power-saving improvements.
    • Numerous USB 3.2 and Type-C improvements.
    • Support for raspberry pi (Pi 2B, Pi 3B, Pi 3A+, Pi 3B+, CM3, CM3+, Pi 4B)
    • Includes support for new hardware including Intel Comet Lake CPUs and initial Tiger Lake platforms, Qualcomm Snapdragon 835 & 855 SoCs, AMD Navi 12 and 14 GPUs, Arcturus and Renoir APUs along with Navi 12 + Arcturus power features.
    • Support for AMD Rome CPUs, Radeon RX Vega M and Navi GPUs, Qualcomm Snapdragon 845 and other ARM SoCs and Intel Cannon Lake platforms.
    • Support has been added for the exFAT filesystem
    • Built-in support for the Wireguard VPN.
  • ZFS 0.8.3 file system
    • Big improvements to the already snappy ZFS file system such as hardware-accelerated Native Encryption and performance improvements.

I personally found the previous Ubuntu LTS release (18.04) to be quite solid and but this release looks to take things to the next level in exciting new ways.

Why Ubuntu? Why now?

Ubuntu is a well established, well recognized name in the Linux community. It’s well used, well documented and is extremely stable and easy to use without compromising on more advanced features one may require.

Ubuntu is perfect for the following groups of people; open-source developers and web developers, people looking to use a free, solid operating system alternative to Windows, elderly who pretty much just want to use the internet to browse, schools looking to teach students about real-world development challenges/computers, open-source enthusiasts, people who are donating older hardware and want a non-complicated operating system, business people and over the past few years, even gamers (Steam now has over 6000+ Linux games).

The beauty of Ubuntu is that it runs well on high-end hardware, but runs extremely well on older hardware, to the point where it can breathe new life into old machines. There is a reason developers love and enjoy Ubuntu, it’s fast, stable, to the point and extremely customizable to please even the most hardcore of developers.

Uses for Ubuntu

  • Use is as a Kodi/Plex media streaming server.
  • Give back by running a [email protected] server.
  • Use it as a web development server to build/test/run web applications or if you are looking to learn web development, Python development or server management.
  • As it’s super user-friendly, install it on your parents/grandparents machines and say goodbye to viruses/malware for the most part.
    • Software compatibility includes; Chrome, VLC, Skype, Spotify, GIMP, Inkscape, Dropbox, Steam, Visual Studio Code as well as a host of other software.
  • Hassle-free – perfect for education campuses, schools, learning centres or donated hardware looking for a free operating system.

Ubuntu installable image files can be downloaded from here.

YouTube Channels For Learning Web Development

Reading Time: 2 minutes

YouTube

Thinking about teaching yourself web development? Perhaps out of interest, a potential career change or just our of curiosity? Well, the good news is that learning web development does not have to cost you a cent.

There are two key ingredients you will need and those are patience and practice. That’s it!

Where to start learning web dev?!

YouTube is a massive resource for free learning opportunities. There are many people out there, who are committed to sharing knowledge by creating good course content.

Even if you’re already a well-versed web developer, YouTube is a great resource to pick up a new skill set.

There are of course other ways to pick up learning web development for free, but for the purpose of this article, I want to focus on using YouTube as a free and accessible resource for new comers.

What do I need to start learning web dev?

Besides the two key ingredients I mentioned above; patience and practice, you will also need the following things to make your life a lot easier:

  • A Mac or computer with Windows / Linux (Ubuntu)
  • Access to the internet.
  • A good web browser like Chrome(Free) or Firefox (Free)
  • A good code editor like Visual Studio Code (Free) or Sublime (Free)

That’s it! Let’s move on to the free courses…

Learning To Code

The free courses at your fingertips


Codecourse | https://codecourse.com/

YouTube Channel:
https://www.youtube.com/channel/UCpOIUW62tnJTtpWFABxWZ8g

Some free courses on offer by Codecourse:


Coding Addict

YouTube Channel:
https://www.youtube.com/channel/UCMZFwxv5l-XtKi693qMJptA

Some free course on offer by Coding Addict:


Corey Schafer | http://coreyms.com/

YouTube Channel:
https://www.youtube.com/channel/UCCezIgC97PvUuR4_gbFUs5g

Some free course on offer by Cory Schafer:


CS Dojo | https://www.csdojo.io/

YouTube Channel:
https://www.youtube.com/channel/UCxX9wt5FWQUAAz4UrysqK9A

Some free courses on offer by CS Dojo:


freeCodeCamp.org | https://www.freecodecamp.org/

YouTube Channel:
https://www.youtube.com/channel/UC8butISFwT-Wl7EV0hUK0BQ

Some free courses on offer by freeCodeCamp.org:


LearnCode.academy

YouTube Channel:
https://www.youtube.com/channel/UCVTlvUkGslCV_h-nSAId8Sw

Some free courses on offer by LearnCode.academy:


LevelUpTuts | https://www.leveluptutorials.com/

YouTube Channel:
https://www.youtube.com/channel/UCyU5wkjgQYGRB0hIHMwm2Sg

Some free courses on offer by LevelUpTuts:


Traversy Media | https://www.traversymedia.com/

YouTube Channel:
https://www.youtube.com/channel/UC29ju8bIPH5as8OGnQzwJyA

Some free courses on offer by Traversy Media:


sentdex

YouTube Channel:
https://www.youtube.com/channel/UCfzlCWGWYyIQ0aLC5w48gBQ

Some free courses on offer by sentdex:


And that concludes my list of free YouTube resources on getting started with web development!

If you feel that I’ve missed some channels offering free web dev courses, please let me know in the comments below.

Switching to Cloud Hosting

Reading Time: 3 minutes

Background

Over the course of a long weekend, I attempted to move my standard shared hosting websites over to a cloud hosting solution.

Having multiple websites on shared servers, can get quite costly on a monthly basis and I wanted a solution that not only saved me some cash, but gave me some technical flexibility.

The Solution

I started investigating DigitalOcean which I’ve heard good things about before. They offer a cloud hosted VM solution called “Droplets“.

“More than just virtual machines. Droplets are a scalable compute platform with add-on storage, security, and monitoring capabilities to easily run production applications.”

– From DigitalOcean’s website

This sounded like a winning solution to me and off I went, signing up and spinning up a Droplet that runs the latest Ubuntu LTS release with a LAMP setup.

This was great because it allowed me to install the latest version of Apache, PHP and MySQL without being at the mercy of a service provider dictating versions to me (often found them to be behind the curve). I could run wild on my server install what I liked.

Weighing It Up

Pros of this approach:

  • Ability to run latest versions of LAMP packages.
  • Flexibility and freedom of managing your own server.
  • Better overview of what’s going on “under the hood”.
  • Cost effective with all your websites in one space, billed at a single cost per month.
  • All websites share the same server resources (this could a negative depending on how you look at it).
  • Potential to be way more secure.
  • Potentially snappier access for international users.

Cons of this approach:

  • Initially took a while to set up.
  • Security is all up to you and there is no one to blame if the system gets compromised.
  • Up to you to keep your server and packages up to date and not let the server decay over time.
  • Renewing SSL certs is up to you (but this can be automated).
  • Backups are all up to you (but there are DigitalOcean solutions to this).
  • Not locally hosted. Potentially slower access for local users, but this can be debated.

The Test

To test my new shiny server out, I had to start small. I tested my fiance’s website out first, a basic HTML5 website. After playing around with some DNS settings, I was able to get the domain pointing and working as intended.

The next task was to move my other, more complex sites over to the droplet. This included a Drupal 8 and WordPress website. The WordPress site worked like a charm, with no issues, but the Drupal site complained a bit about using a newer version of MySQL (MySQL 8) it wasn’t quite happy with. After a few tweaks here and there, I finally got it playing nicely with MySQL 8.

Amongst other new features and improvements, one big advantage MySQL 8 offers is improve performance; InnoDB is significantly better at Read/Write workloads, IO bound workloads, and high contention “hot spot” workloads. Read more about MySQL 8 here:
https://dev.mysql.com/doc/refman/8.0/en/mysql-nutshell.html

I updated both domains to point to my new server and after a bit of tweaking here and there to get HTTPS working correctly, I was finally up and running with both PHP sites working perfectly.

Next step was security hardening on both an Apache and server level. After following a few guides online and a bit of trial and error, I was successfully able to harden the server and get the firewall operating optimally. Final step was performance optimization, particularly on Apache and MySQL’s side to reduce memory usage and not be so frivolous with precious server resources.

Conclusion

Overall I was impressed with how well everything went. Not only was this my first real web server setup from scratch using this particular flavour of Linux, but it was my first attempt at cloud based VM management.

So far, I’m super impressed with DigitalOcean. It’s dashboard is superb and it’s one-click solutions of certain things is so snappy and efficient. It has great monitoring and alert tools to ensure my VM stays up 24/7 and the feeling of having all my websites in one place makes me feel warm and fuzzy inside.

If you’re interested in challenging yourself in learning something new, while potentially saving in hosting costs (if you host more than 3+ websites), definitely take the time to explore and investigate a DigitalOcean droplet.

Dealing with MySQL ERROR 1214 (HY000): The used table type doesn’t support FULLTEXT indexes

Reading Time: 2 minutes

If you’re ever unfortunate to run into the same MySQL error that I’ve just run into, don’t stress. There is an easy solution to resolve this annoying error message.

Ther error I was getting:

In my case, I was trying to import a .sql dump and the error I got looked  like this:

ERROR 1214 (HY000) at line 5913: The used table type doesn't support FULLTEXT indexes

The reason you’re getting this error:

In a nutshell: InnoDB doesn’t support FULLTEXT indexes prior to MySQL version 5.6. You have to use the MyISAM database engine for FULLTEXT indexes for older versions of MySQL/MariaDB.

What was going on for me:

In my case, the .sql dump was coming from AWS, that uses a newer version of MySQL/MariaDB and I was trying to import the .sql file into my MariaDB database that was running an older version. I was on a machine that was using MariaDB 5.5 (MySQL 5.5 equivalent). I needed a way to update the InnoDB engine entry to MyISAM as you have to use the MyISAM database engine for FULLTEXT indexes.

How to fix it:

Linux method: If you’re fortunate enough to be using Linux, then this command will work for you; (make a copy of the file first, just in case anything goes wrong)

sed -i 's/) ENGINE=InnoDB/) ENGINE=MyISAM/g' your_db_dump_180731.sql

On Linux systems, sed is a Unix utility that parses and transforms text.

Windows method: If you’re using Windows, you’ll have to resort to a find and replace method.  This is relatively easy to do; open your .sql file up in something like Notepad++ or Sublime and search for ENGINE=InnoDB and replace it with ENGINE=MyISAM (remember to save).

That’s it!

Hopefully, the above solution will work for you as it did for me. Importing your .sql dump should be a simple straightforward process and you should not run into any more import errors.