WordPress Multisite with Wildcard DNS and/or SSL on Dreamhost

Although Dreamhost supports Wildcard DNS, they don’t support Wildcard SSL (except on DreamCompute), so WordPress Multisite with wildcard subdomains may not be the best choice.

TL;DR

  1. Dreamhost & Wildcard DNS
  2. Setting up WordPress Multisite
  3. I suggest not using Wildcard DNS with Multisite subdomains – and show how to get SSL on Multisite by registering each subdomain first

Years ago, I had Dreamhost set up Wildcard DNS for me, but it frustrated me that I could never get secure HTTPS connections for the subdomains.

Turns out many people have also had issues with this. And although I still don’t have a Wildcard SSL certificate solution that works, I have found a work-around that will suit my present situation. 

Note

This work-around basically nullifies my Wildcard DNS because I have to register each subdomain individually from the Dreamhost Panel.

In any case, this is the setup I currently have and Dreamhost’s position on each:

  1. Wildcard DNS on Dreamhost
  2. WordPress Multisite (read this Before creating a Network)
  3. SSL on those Multisite subdomains
    • Not supported by Dreamhost unless using DreamCompute (requires additional configuration)

#1 Setup Wildcard DNS

Two simple steps:

  1. Upgrade your hosting plan to VPS or a Dedicated server
  2. Contact Dreamhost Support to set up Wildcard DNS for you

#2 Setup WordPress Multisite

First, ask yourself if you REALLY need a Multisite installation, and if so, how many subdomains you expect to need. In fact, it’s actually an easier option to opt for subfolders rather than subdomains for your extra sites as this would make your SSL and Wildcard DNS problems virtually disappear.

With subfolders

  • SSL would load from the root domain
  • You wouldn’t need to create additional subdomains at all

Second, ask yourself if you REALLY need Wildcard DNS. As noted above and below, Dreamhost doesn’t support Wildcard SSL certificates.

If you really need Wildcard DNS and Wildcard SSL 

  1. Consider moving to DreamCompute – which does support this (with additional configuration on your part)
  2. Plan to get your hands dirty doing this all on your own
  3. Consider moving to a hosting provider that supports this configuration
  4. Reconsider Wildcard SSL altogether and just accept that you’ll be registering subdomains through the Panel and getting Let’s Encrypt certificates for each one (as outlined below)

Articles to Read for Setting up Multisite

#3 Get SSL on your subdomains

Non-Wildcard SSL

The simplest way to get SSL on a subdomain is not to use wildcard subdomains in the first place. 

One of the most compelling reasons to use Multisite with Wildcard DNS is if you want to allow the creation of multiple subdomains without registering them through your Panel first. This would enable you to, for example, allow users on your website to create their own subdomain blogs within your larger site when they register or subscribe to your site’s membership plan. (This is the reason I’d originally wanted Wildcard DNS.)

But, the problem with hosting such a site on Dreamhost is that they don’t support Wildcard SSL certificates, so every site created through WordPress Multisite will say it’s “insecure” even if you load it over HTTPS (and Google Chrome will also put up a blocker alerting you of the fact).

Main idea

Don’t employ Multisite to (initially) create subdomains.

I tried the following methods to get SSL on my subdomains and each failed:

  1. Create a new subdomain (v2012.site.com) via Multisite
    • The subdomain does not use the main site’s SSL
  2. Register that same Multisite-created subdomain through the Dreamhost panel and “mirror” the site to the root site. Then get an SSL certificate for the “mirrored” domain (v2012.site.com)
    • “Mirroring” basically says “set up the exact same site at both locations and use the same SSL” – so again, only the main site’s SSL will work
  3. Change the “mirrored” site to “redirect”
    • This bypasses the subdomain altogether and maps all traffic from the subdomain directly to the main site (site.com)

Finally, after much trial-and-error, I stumbled upon Ian Dunn’s article that provides the solution.

Solution

Setup your subdomains as “Fully hosted”, but set the web root (Web Directory) to the same directory as the root domain. (And re-save SSL settings if applicable.)

Be sure to also now get yourself a FREE Let’s Encrypt SSL certificate before you save these Settings (click HTTPS under the Web Options section).

(Re)create the Site through WP Multisite

The problem with doing things this way is that now you’re no longer really taking advantage of your Wildcard DNS. And actually, just creating a subdomain through the Dreamhost Panel won’t set up WordPress Multisite to run on the subdomain.

So, the next step is to go back into your Multisite installation at the root of your domain and create (or delete and recreate) your subdomain Site.

Re-saving SSL settings

Now, if the (new) site still isn’t loading HTTPS securely, there are two possibilities for this:

  1. You didn’t wait long enough for the Let’s Encrypt certificate to take effect (in that case, refresh the page in 5-10 minutes and check again)
  2. You may need to re-save your SSL settings (as Ian Dunn outlines)

To re-save your SSL settings, click the https On link in the center of your Domain Registration listing table under the Manage Domains menu item.

On the next screen, check the box marked Copy non-secure settings and Save it.

Force HTTPS

There’s one more thing to be sure of – that HTTPS is always loaded regardless or whether or not an HTTP or HTTPS URL is accessed. You can do this with the following code inserted into the top of your .htaccess file in the root of your Multisite installation directory:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>

Create a WordPress Staging Site on Dreamhost Shared Hosting

These are some of my notes from setting up a WordPress staging site through Dreamhost using the Duplicator plugin.

I recently tried to access a website I’d created for a South Korean start-up over 2 years ago only to find that the entire contents of the web directory had been deleted. Within a day or two of this realization, the CEO contacted me and asked me to “fix” it.

Luckily for me, Dreamhost had updated the site in the last year and had created a complete archive of the site at /sitename.com.old. But, I didn’t want to run into this situation again in the future without a backup, so I decided to create a staging site for it. This was to accomplish 3 things:

  1. To maintain a FULL copy of the functioning website (as it is now)
  2. To teach me how to create a staging site so I can repeat the process with my personal sites
  3. To allow me to make changes to my websites that are not “live” – to test and debug them before implementing the changes on my “live” sites

Thankfully, Dreamhost and the Duplicator plugin make this process pretty painless. Here are the steps I took:

#1 Dreamhost

1. Create a .dreamhosters.com subdomain

Dreamhost provides FREE subdomains on the .dreamhosters.com domain to its customers. This is a recommended location to create a staging site. The following article outlines this process:

Creating a Staging WordPress site – Dreamhost Help

When you create the .dreamhosters.com subdomain, be sure to assign the same user to it as you are using for the original site. This will make the next step much easier.


Assign the same user to the subdomain as you are using for the original site.

2. Copy ALL files to the new subdomain

Personally, I’ve found it much much faster and easier to ssh into my site and copy all the files using the command line (rather than via FTP). For this to work, you’ll need to keep a few things in mind:

  1. Your FTP user needs Shell access (Enabling Dreamhost Shell Access).
  2. The same user needs access to BOTH the original site and the new subdomain so that when you ssh in, you can run the Linux copy command from the root folder.
  3. Now, in a Terminal window, ssh into the site, and run the following command to copy all site contents to the new subdomain.
[server]$ cp -a originalsite.com/. staging.dreamhosters.com

We’re copying the files over NOW because Dreamhost Shared hosting won’t allow us to create and download large archives with the Duplicator plugin. So it’s better to do the Two-Part Install instead of relying on Duplicator for the entire process.

#2 Duplicator

1. Install & run Duplicator on the original site

Dreamhost has a helpful article that lays out this process.

Migrating WordPress to DreamHost using the Duplicator plugin

But, rather than downloading the FULL SITE archive, we need to run the Two-Part Install – downloading only the database archive and installer file.

2. Create a new Database on Dreamhost

Complete step #8 from the previous article to create a new MySQL database on Dreamhost:

Creating a MySQL database – Dreamhost Help

3. Upload & run installer.php on the staging site

Continue the Migration tutorial from step #9. Upload BOTH the archive.zip and the installer.php files from Duplicator to your staging site via FTP. Then, navigate to the installer on your staging site:

http://stagingsite.dreamhosters.com/installer.php

When it asks for your database details, be sure to “Test Database” to make sure you can connect. Then run through the rest of the steps in the installer.

Also remember to “Remove installer files” after logging into your new /wp-admin area (there will be a link).

Review & Resources

Overall, the process of setting up a WordPress Staging Site with Dreamhost and Duplicator was much easier than I’d originally anticipated. Here is a condensed list of the steps and resources covered in the tutorial above.

Tools

  1. Dreamhost hosting
  2. Duplicator plugin

Steps

  1. Create a .dreamhosters.com subdomain (with the same user)
  2. Copy over ALL original site files (via ssh and the command line)
  3. Install Duplicator and run it to archive “Database Only”
  4. Upload the archive.zip and installer.php to your subdomain
  5. Create a new MySQL database in Dreamhost (same user)
  6. Navigate to subdomain.dreamhosters.com/installer.php
  7. Run through the remainder of the steps in the tutorial

Tutorials

  1. Dreamhost’s Migration tutorial
  2. Duplicator’s Two-step Install tutorial
  3. See also: Staging a DreamPress overview for tips on best practices:
    1. Password protecting your staging site
    2. Add an SSL certificate (with Let’s Encrypt)
    3. Transferring changes to your live site

Bonus: Get $50 off Dreamhost’s Unlimited shared hosting plan by clicking this link, or any of the other Dreamhost links above!

Disclaimer: (I will make a small commission if you decide to sign up for a Dreamhost plan using one of these links)

Increase your Professional Performance

Over the years, I’ve collected numerous tips for better teaching, better presentations, making course materials, and presenting your best professional face to the world – both in person and online. This talk will include a collection of at least 10 such tips.

Abstract

Over the years, I’ve collected numerous tips for better teaching, better presentations, making course materials, and presenting your best professional face to the world – both in person and online. This talk will include a collection of at least 10 tips including Google Drive, Classroom, & Search tips, creating listening tests, increasing your professional productivity, setting and achieving goals, using LinkedIn and online resumes, and so on. I may structure it as a bit of a “Choose Your Own Adventure” presentation and allow the audience to choose the tips most relevant to their interests. And as usual, I’ll try to allow for plenty of question time at the end.

The best Teachers are Life-long Learners

With this presentation, I hope to convey to you that becoming life-long learners is the #1 best way to become a better teacher. Over the past 10 years, I’ve accomplished the following and grown immeasurably:

  • 170 Lynda.com (LinkedIn Learning) courses
  • 100+ books (Audible.com)
  • Online Master’s degree (Full Sail University)
  • Online Nanodegree (Udacity)

If you want to stay “ahead of the curve” in any industry (or even keep up, let alone catch up) you need to become a life-long learner and make a habit of keeping up to date with the goings-on in that industry.

Contents

  1. Google
    1. Google Classroom
    2. Google Tips
    3. Google Drive
  2. Korean
    1. Korean Grammar
    2. Korean Vocabulary
    3. Korean Games
  3. Apps
    1. Lightshot
    2. Audacity
    3. LinkedIn
  4. Bonus
    1. Bullet Journal

1.1 Google Classroom

Google Classroom is a great way to stay organized as a teacher and distribute assignments to students in a whole class or individually. Check out the following links for some of my other presentations on Classroom:

1.2 Google Tips

Google Service is the most ubiquitous, powerful, and yet also the most under-utilized Google service. Follow the link below to get some tips for making the most of it. There are 10 other Google Services listed as well:

1.3 Google Drive

Drive acts like a hard drive in the cloud, but has some pretty unique features that you may not know about.

  • Sharing & simultaneous collaborative editing
  • Preview files you don’t have programs for (.AI, .PSD)
  • Review Drive activity ( Info)
  • Review File Revision history
  • Add-Ons (DriveTunes)

Plus, Drive is a great way to keep your USBs safe (by simply not using them). But if you insist on hanging onto your USBs, you should really install Panda USB Vaccine to disable Autorun that often gets you viruses when you plug it into an infected computer.

2.1 Korean Grammar

As you learn more Korean grammar, you’ll be better able to teach English grammar. You’ll be better able to pick out common mistakes and explain English grammar patterns in a way that is easily understandable. 

But first, you might want to learn Hangul touch typing. This will save you loads of time in the future, if you type in Korean much. It can also be quite beneficial in class to type 명사, 동사, and 형용사 (noun, verb, adjective) and other things to help you explain the grammar patterns better.

2.2 Korean Vocabulary

Did you know it’s possible to learn 3600 new vocabulary words in 4 months by only practicing for around 30 minutes per day? Have you ever tried it? I’m living proof that the method outlined in the link above works.

And here’s a video with 10 more suggestions to learn new words. Use it yourself or share it with your class:

2.3 Korean Games

Learning a little Korean pop culture also provides you with a great opportunity to connect with your students on a new level and make classes more interesting and engaging for them. Here are three games that they’ll all be familiar with that you can learn in class to teach new vocabulary:

3 Korean word games to test or improve your Korean vocabulary

3.1 Lightshot

Lightshot is hands down the BEST screenshot app I’ve ever come across (yet). It’s so good, I install it on every computer I have access to. I’ve also installed it on every computer in the lab at the high school I work at. 

  • Simply press the PrtSc button to darken the screen and get a crosshairs mouse pointer
  • Draw a shape around the area you want to copy, print, or save
  • The editing tools in the app also give you the ability to DRAW or type anything within the space you’ve outlined
  • Key point: Basically, you’ll be able to create an instant on-screen whiteboard in any class to draw on scans of the book or highlight grammar points in a document you’re showing on the projector

3.2 Audacity

Audacity is the best FREE audio editing app, and it’s great for making listening tests. It’s so versatile that I’ve used it for the following:

  • Recording podcasts
  • Editing sound for movie production
  • Creating pop song remixes and mashups

3.3 LinkedIn

Find me on LinkedIn here. I’ve optimized my profile to showcase my professional skills and abilities. These days, your “resume” isn’t just something you hand in on paper. Every employer can (and will) Google Search you, so it’s important to have something online that is complete, professional, and highlights your accomplishments.

There are plenty of great books online to help you optimize yours. 

Bonus: “Real” online resumes with WordPress

If you couldn’t tell by the rest of this site, I’m a big fan of WordPress (this site is built on it as well). WordPress is the BEST way to get started cultivating your professional online presence. You have two to choose from:

  1. WordPress.com is a managed host – you just pay the bill
  2. WordPress.org is self-hosted – meaning you need:
    1. URL name registration (around $12.95 for a .com)
    2. Hosting (affiliate) (starting at $2.59/mo)

Bonus: Bullet Journal

If you really want to stay organized (a very good idea in today’s busy world), going analog (paper) is so much better than taking everything digital (too many distractions). The Bullet Journal is one of the best methods I’ve found for staying organized. Check out the following for more details:

Conclusion

Let me leave you with three quotes from some of my favorite authors and public speakers regarding your “Professional Performance.”

Either run the day, or the day runs you… Time is more valuable than money. You can get more money, but you cannot get more time… Time management is the best kept secret of the rich.

Jim Rohn

The whole purpose of time management and getting more done in less time is to enable you to have more time to spend with the people you love, doing the things you enjoy.

Brian Tracy

‘Time management’ is really a misnomer – the challenge is not to manage time but ourselves. The key is not to prioritize what’s on your schedule, but to schedule your priorities.

Stephen Covey

Bio

Aaron Snowberger is a Google Certified Educator, Trainer, and G Suite Administrator. He teaches Computer Science & Graphic Design at Global Prodigy Academy and English at Jeonju University. He also does freelance graphic design and website programming work, specializing in WordPress and React. He has designed multiple publications, websites, and KOTESOL posters, and has previously presented at the KOTESOL National and International Conferences, as well as the Seoul WordPress Grand Meetup. Apart from work, Aaron also enjoys cycling and playing musical instruments (like bass guitar).

Coding an Advent Calendar: Day 7 (REST API + ReactJS)

This year, I decided to create an Advent Calendar website in HTML5, CSS3, and JavaScript. My hopes for the site are to showcase some of my frontend development abilities as well as make something fun, functional, and reusable.

Day 7

WordPress 4.7 “Vaughan”

WP REST API!!
Today is the big day! WordPress 4.7 launched this morning (in Korea) with the WordPress REST API content endpoints included in core (and a pretty great updated REST API Developer Reference as well). So… you know what that means. Today is the day I get the Advent Calendar to pull my blog posts with the (core) WP REST API! There are X steps:

  1. Revisit Day 2 where I set up the basic infrastructure for ReactJS & REST
  2. Update to WordPress 4.7 – where REST endpoints will work immediately (cool)
  3. Install Postman for Chrome* to test calls to the REST API
  4. Configure the REST URL (I have mine pull from THIS Category)
  5. Add it to the Codepen
  6. Watch the magic happen!! (…almost)

*Side note: Be sure to get Postman’s output as JSON for an easier view.

React Component
Actually, I hadn’t already created my React function to render the retrieved Component. I’d only filled in a blank <div> as a placeholder. So, the next step was to create an HTML structure in the React class that would receive the array of Posts from my REST API query and render them to the page.

Then, I added some basic CSS styling to make them look a little better on the page after loading.

BabelJS  
Finally, after setting everything up and Saving the Codepen, I noticed a small error in my JavaScript console in Chrome: "Unexpected token <". That’s weird, I thought. But then I noticed that the color highlighting in the Codepen was incorrect after a certain point – and the posts from React weren’t displaying quite properly. I checked back at the other Codepens I’d referenced that were using React to load JSON data and noticed that many were using the Babel JavaScript preprocessor. I thought, what the heck, added it to my project and *BAM!* the magic truly DID begin! Smooth loading of posts on the Codepen directly from this blog!

But… that’s Codepen. If I wanted to continue local development, it wasn’t going to be nearly so easy as that. I’d never heard of BabelJS before this, so I started investigating it and found out that it is often used with React and other scripts to create modern JS like ES2016. I realized I’d need to install the Node Modules for React, Babel, and Grunt to run all of these together, so my research and work began. There were X steps to complete this process:

  1. Run npm install --save-dev babel-cli babel-preset-latest babel-preset-react grunt-babel to install all the necessary development dependencies
  2. Run npm install --save react react-dom to save the necessary project dependencies
  3. Update package.json to recognize babel (rather than creating a .babelrc file)
  4. Update Gruntfile.js to “watch” for changes to my React app’s JS file and run the compile task
  5. Separate out my React Component code from the functions.js file to better manage the two separately
  6. Also, include React and React-DOM in the React app’s JS file

So far, I’ve been able to get Grunt to successfully “watch” for changes to my Sass files and my ReactJS files and run their compilation tasks. But, now I’m getting an Uncaught ReferenceError: require is not defined(...) error. Well, looks like fixing this is on the schedule for tomorrow!~

References

The following are some React and BabelJS references I was perusing today as I tried to get things to work. I haven’t finished reading through all of them yet:

  1. Official React site: A JavaScript Library for Building User Interfaces
  2. Writing React components as CommonJS modules
  3. NPM: A RequireJS plugin for loading jsx in require.js and r.js
  4. The React.js Way: Getting Started Tutorial
  5. 9 things every React.js beginner should know
  6. ES6 with Babel.JS
  7. Get To Know Babel The JavaScript Compiler Tutorial
  8. Setting up an ES6 Project Using Babel and Browserify
  9. Babel + Grunt === ES6 Now!
  10. ES6 with Babel & Grunt

Additionally, I just stumbled across a Lynda.com video that addresses using BabelJS to compile React. In this video, Eve Porcello shows how you can do in-browser Babel compilation by importing the script via a CDN, then using <script type="text/babel"> tags around any code you want compiled by Babel.

She does note that in-browser compilation is slow – and shouldn’t be used in a production environment. So, it’s good that I’ve started getting Babel set up as a module to precompile my JS before using it in the webpage.


Work Completed (to date)

  • December 7, 2016
    • Pull post data with the WP REST API in WordPress core!!
    • Write structural code for the React Component to be rendered
    • Install and setup BabelJS to compile the React code
  • December 6, 2016
    • Add README.md
    • Add a GitHub Issue to hold usable images
    • Add LICENSE
  • December 5, 2016
    • Create a GitHub repository and full site files for easier management
    • Setup Grunt.js to compile my Sass into CSS
    • Begin blogging about the process
  • December 4, 2016
    • Countdown clock (JS Date class & jQuery Easing) with SVGs
    • Dynamic text output for Year based on the current date
    • CSS only slider (off by 5px each slide)
  • December 3, 2016
    • CSS bow & ribbon
    • Footer with FontAwesome presents
    • Hover, active, and “Christmas Day” styles for footer presents
  • December 2, 2016
    • React.js + Axios.js initial code structure
    • Color palette
    • CSS → Sass
  • December 1, 2016
    • Let it snow
    • Typography choices
    • CSS presents (first design)
    • Design notes menu

Seoul Meetup 2015: Open Source, WordPress, and the Community

WordPress currently powers over 25% of the Internet’s top sites. What is it and what makes it so popular and powerful? This talk introduces the audience to the “democratization of publishing” that is WordPress.

한국어로 읽어요~

Hello, my name is Aaron Snowberger. I’m a hobbyist WordPress theme and plugin developer, graphic designer, and English teacher at Jeonju University. I run a WordPress Meetup and workshop in Jeonju and was invited here today to give an overview presentation about WordPress. So, this talk is a modified version of the first one I gave in our Jeonju Meetup in January.

I usually present in English, but was encouraged to try this presentation entirely in Korean, so please give me some grace – it won’t be perfect, and I’ll try not to bore you – at least my PPT is pretty, right?

In this talk, I will address 4 main points that span the topic “Open Source, WordPress, and the Community.” They are:

  1. What is WordPress?
  2. How big is WordPress?
  3. Why should you care?
  4. What can you do with it?

What is it?

WordPress is an open-source Content Management System licensed under the GNU General Public License (GPL) version 2.

Open Source

What is open-source software?

  • “Open” means “visible, free, or available”
  • “Source” is the computer code that creates a program

So, “open-source” is computer code that is freely available to the general public – for anyone to use, change, or share with anyone else. It’s a de-centralized model of software production that provides extensive code documentation to the public for free and encourages community contribution to rapidly build upon and improve the original program.

Contrast this with “closed-source” code and technologies that are often developed in-house to be sold. In some cases, there may be criminal penalties for copying, modifying, disassembling, or even studying the internal source code.

Examples:

  1. Microsoft: closed vs. Linux: open
  2. iOS: closed vs. Android: open
  3. Wix: closed vs. WordPress: open
Advantages of Open vs. Closed-source Software

Open-Source:

  1. More developer support (anyone, anywhere can work use it)
  2. More customizable
  3. More secure (thousands of people can view and fix the code)
  4. Extended Community Support

Closed-source:

  1. Less choices and customer confusion (there’s only ONE version of the software)
  2. More unified experience (Apple always looks like Apple)
  3. More profitable (charge developers to use it, lock out competitors)

Content Management System

What is a CMS?

Years ago, most websites were built page by page, coded by hand, and filled with static content. (I built some of those websites.) These days, websites are filled with a much greater quantity of dynamic content that is often updated on a daily basis.

In order to make the administration of large, fast-changing websites more manageable, Content Management Systems (CMSs) were created in the late 1990s to reduce the need for hand-coding every page and to create a web-publishing interface that more closely resembles a word processing program like Microsoft Word. This enables anyone with an Internet connection and basic word processing skills the ability to quickly create and publish dynamic content to their webpages.

Additionally, website components like the header, the footer, the sidebar, and the various content pieces are broken up into individual files that can be managed separately and loaded dynamically when a website is opened.

It is much nicer to be able to manage each website piece individually (only one code file) than needing to open (up to dozens of) separately coded webpages to modify something as minor as a changed logo in the footer. (I also used to do that.)

GPL Version 2

What is the GPL2?

GPL stands for GNU General Public License (GPL) version 2 and is the legal license that covers WordPress and its source code. The GPL2 is copylefted (a play on the word “copyright”), which means that any software under its license that is used, modified, or distributed must retain the same license terms in order to be legally distributed.

This means that software companies or other developers cannot legally change the license of WordPress code or derivatives of it to closed-source. WordPress and its derivatives are therefore “forever free” under the GPL license for everybody.

In a recent interview, WordPress co-creator Matt Mullenweg described open-source code as:

The most important idea I’ve been exposed to in my life-time … it’s like a Bill of Rights for software … it basically says, “Here are four freedoms that are inalienable rights that you have when you use open-source software.”

The software is completely FREE to:

  1. Use commercially
  2. Modify or build upon
  3. Distribute
  4. Place under warranty

So long as you:

  1. Track dates/changes in the source files
  2. Keep all modifications under the same GPLv2 license
  3. Disclose the source code

(See the simplified GPLv2 summary)

A brief history of WordPress

WordPress was started as a joint software project by Matt Mullenweg and Mike Little in 2003. It was a fork of another open-source blogging platform called b2 (cafelog) that Mullenweg had built a blog on.

In his own words:

[WordPress] started as a fork (or a derivative) of another open-source project.  There was this thing out there called b2 which I was using and blogging with myself and the creator disappeared, so the development stopped. Myself and this guy in England, Mike Little, picked it up and kept working on it.

The two eventually met personally in London in 2005, the same year that Matt formed the company Automattic (notice the “Matt” in there) and WordPress.com went live.

Automattic is the driving force behind WordPress.com and some of WordPress’s most popular plugins like Akismet for blocking spam comments and Jetpack for powering up your WordPress installation.

The Difference Between WordPress.com and WordPress.org

This is a topic I found necessary to clarify in the Jeonju Meetup because many of our first visitors were confused about the difference between the two.

The major difference between WordPress.com and WordPress.org is that the .com is a SERVICE and the .org provides the SOFTWARE.

The major difference between a blogging SERVICE and blogging SOFTWARE is that a SERVICE (like Wix.com or Squaresoft.com) lets you use a standard installation of the software on their own servers (but are limited in your ability to customize the code yourself). But by downloading open-source SOFTWARE on your own, you have the freedom to fully customize any aspect of the code yourself. You are only required to find your own website host.

Think of it as the difference between renting a house and buying one.

  • WordPress.com is the renter you don’t really “own” (http://yourname.wordpress.com) – you can’t change all the wallpaper to exactly how you might like, and you have to call the landlord if something breaks
  • WordPress.org provides the home you “own” at your chosen address (http://www.yourname.net) – it comes with the complete freedom for you to redecorate and redesign as you please

So, in this way, WordPress.com is the best place for people starting out with the software to learn how it functions and how to best use it. Then, once you’re comfortable with it, you can move over to WordPress.org  to download your own version of the software.

In summary:

WordPress.com
  1. Is a hosting SERVICE
  2. Is like a house you rent
  3. Is limited in freedoms, but provides paid upgrades
WordPress.org
  1. Hosts the (downloadable) SOFTWARE and all documentation
  2. Gives you access to a house you can “own”
  3. Is virtually unlimited in customization options

How big is WordPress?

WordPress currently powers over 60,000,000 websites around the world – that’s 23% of all the world’s websites – and Automattic is valued at over $1 billion.

http://w3techs.com/technologies/history_overview/content_management/all/y/
http://w3techs.com/technologies/history_overview/content_management/all/y/

WordPress powers plenty of famous and popular websites like:

  1. The New York Times blogs
  2. CNN blogs
  3. Forbes blogs
  4. Reuters blogs
  5. Jay-Z
  6. Katy Perry
  7. TechCrunch
  8. The GOP (US Republicans)
  9. Mashable

For a more robust list, see WordPress.com’s Notable Users page. And for a FULL list, see WordPress.org’s Showcase.

And in Korea, I’ve found WordPress powers:

  1. Seoul City’s homepage
  2. Bloter.net
  3. Samsung Electronics
  4. LG Electronics
  5. Yonhap News TV
  6. Insight of GS Caltex
  7. KB Rockstar
  8. Hyundai Corporation
  9. WebActually

There are some nice collections of sites at isquery.com and hwangc.com, or you can see a random selection of 4 WordPress sites in the Showcase on ko.wordpress.org.

Why should you care?

#1: It’s Free

Because of its open-source nature and the GPL2 license, you never have to pay any kind of licensing fees to use or modify the software.

#2: It’s Powerful

There are:

Whatever your mind can conceive and believe, you can achieve. – Napoleon Hill

#3: It’s Scalable

WordPress.com is the world’s largest SINGLE INSTALLATION of WordPress. There are over 500 million users with their own unique database tables that are running on a SINGLE code base. Now that’s pretty impressive!

In the same way, WordPress can scale to meet any of your website needs – whether you are a blogger writing a daily diary, or a Fortune 500 company that needs individual store sites for each of its +1,000 stores (Best Buy).

#4: It’s Growing

In 2014, there were 81 WordCamps (large-scale WordPress conferences) held in over a dozen countries. And 2014 was also the first year that non-English downloads of WordPress surpassed English downloads. This shows the company is growing internationally as well as in the US market.

Additionally, the number of monthly unique visitors to WordPress.com is comparable to the number of monthly unique visitors to Facebook – though the company is much smaller.

http://automattic.com/about/
http://automattic.com/about/

#5: It’s Comparatively Easy

I’ve worked with, customized, and programmed:

  1. Static HTML sites
  2. Moodle
  3. Joomla!

And I can say from experience that WordPress has the LEAST complicated administrator backend.

Years ago, Joomla! may have been more powerful than WordPress, but with the 5 major releases of WordPress in 2014 and continual development from a fine community of programmers, it is no longer.

In fact, after transferring one site (TheJeonjuHub.com) from static HTML to Joomla! in 2011, I ended up transferring it over to WordPress within 2 years to better enable the content creators of the site to work. Joomla! menus and the backend just ended up being more complex than they needed to be.

Generally, a full WordPress site can be:

  1. Setup in 5 minutes
  2. Built in 4-5 weeks

If you can Word, then you can WordPress. The Editor interface is virtually the same.

#6: It’s great for Platform Building

If you want to sell anything, you need a platform. WordPress is an amazing platform building tool that makes it easy for anyone to take a simple blog with 30 views per month to over 30,000 views per month (I speak from experience).

KeyToKorean.com site stats
KeyToKorean.com site stats

Main idea:

If you have a story worth telling, then you have a platform worth building.

#7: Korea is a Growing Market

According to a graph of Google Search trends I recently looked up, South Korea has a Search Volume Index of only 15 with regards to searches for WordPress and WordPress related topics. Compare this with neighboring countries and you can see there is a lot of potential for growth in Korea:

  1. South Korea: 15
  2. Japan: 26
  3. Russia: 25
  4. China: 20
  5. Mongolia: 34
  6. Philippines: 57
  7. Malaysia: 40
  8. Indonesia: 76
  9. United States: 46

Additionally, there is great support for WordPress in Korean provided by the WordPress community here.

#8: The WordPress Community

The WordPress community is quite large and very supportive, helpful, and friendly. WordPress Meetups are held all over the world to teach and help others build WordPress websites.

I’ve begun a WordPress Meetup in Jeonju because I wanted to a place to get together regularly with other WordPress users help them build their websites. I actively encouraged the Liberal Arts department at Jeonju University to start using WordPress for “flipped classrooms” and teacher websites and a majority of the 33 foreign teachers took my advice and created their teaching sites on WordPress.com. I’ve run a number of workshops and helped individual teachers improve their sites on numerous occasions, so I decided it was about time to do something more regularly.

I’d initially begun the Meetup with the idea to only target foreign expat users who might want to run a teaching site or blog, but thanks to my invitation here and the encouragement to present in Korean (something I’m still quite shy about), I’ve decided to extend the Jeonju Meetup for an extra hour or two and invite Korean speakers to come in and share about WordPress there as well. (Hopefully I’ll also be able to “level up” my Korean speaking skills there.)

WordPress Support Staff call themselves “Happiness Engineers” and make it their job to “deliver happiness” on the user forums:

  1. WordPress.com Forums (WordPress.com hosted sites)
  2. WordPress.org Forums (self-hosted sites)

In fact, a “recommended read” for their Happiness Engineers is Delivering Happiness by Tony Hsieh, CEO of Zappos.com.

Deliveringhappiness

What can you do with it?

#1: Build Websites

In my own experience, I’ve built:

  1. Classroom sites
  2. Academy sites
  3. School & organizational sites
  4. Educational sites
  5. Church websites + podcasting
  6. Portfolio websites
  7. And personal blog sites (like this one)
#2: Contribute to the Community

There are numerous ways to get involved with the WordPress Community – and you’re already participating in one by attending this WordCamp. The others are suggestions from make.wordpress.org:

  1. Contribute to Core development
  2. Build plugins
  3. Design themes
  4. Create Web apps
  5. Help out in the Support Forums
  6. Help write documentation or training materials – even tutorials on your blogs
  7. Help translate the core, themes, or plugins
  8. Join (or form) a WordPress Meetup

Again:

Whatever your mind can conceive and believe, you can achieve. – Napoleon Hill

So the real question isn’t “What can you do with it?” but rather:

What will you do with it?


Liked my PPT and talk (article)? Leave me a comment below.

Or for our Meetup members, feel free to ask any questions you might have about WordPress or give me suggestions for the next Meetup subject and talk!~

Quick Tip: Learn the basics of SEO and non-coding WordPress Customization

WordPress currently powers over 23% of ALL the world’s websites. It powers sites such as CNN, Jay-Z, and Mashable.

So, you want a highly customizable site without coding?

Divi WordPress Drag and Drop Theme
Divi WordPress Drag and Drop Theme

Find a drag-and-drop Theme like Divi or Enfold for something easier to build (no code – EXTREMELY customizable). You’ll need to go self-hosted (no more WordPress.com).

You want easy SEO?

WordPress plugin SEO by Yoast
WordPress plugin SEO by Yoast

For SEO, sign up for Google Analytics to start tracking your site and learning which keywords attract visitors. Also, get a good couple of good WP plugins like SEO by Yoast (which is the highest ranked and most downloaded SEO plugin for WP in history). Also get Google Analytics by Yoast for better tracking.

Here’s the Definitive Guide to WordPress SEO by Yoast.

You want to learn the basics of SEO tactics?

Jon Duckett's HTML & CSS book
Jon Duckett’s HTML & CSS book

I recently read through HTML & CSS by Jon Duckett and it has a simple (though comprehensive) 2-page walkthrough on SEO. The basic things you should know are:

  1. On-site SEO tactics and
  2. Off-site SEO tactics

On-site SEO tactics include:

Having your targeting keywords appear in every:

  1. Page <title>
  2. URL
  3. Headings <h1>
  4. Body text 2-3 times each
  5. Hyperlinks  (make them descriptive, not just “click here”)
  6. Image <alt> attributes
  7. Page <meta> description

(The Yoast SEO plugin takes care of ALL of this for you on a page-by-page basis).

Off-site SEO tactics include:

Getting links IN to your site from other (relevant) sites. You can do this through:

  1. Social Media sharing (and enabling social sharing buttons with other plugins)
  2. Commenting (and ADDING VALUE) on other blogs in your industry with a link back to your site (no spam and no “Nice post” stuff either)
  3. Guest posting on other blogs with a link back to your site.

Hope this helps you build a better website!~