A WordPress entrepreneur’s conundrum

Lately I’ve been struggling internally to come to terms with not doing something that I’ve wanted to do for a very long time. That something being a WordPress entrepreneur, or more specifically building WordPress software products.

You see, I’ve got the entrepreneurial spirit/bug in me. Ever since I was in high school I’ve pursued many different business opportunities, some with more success than others.

But, I’ve never “made it” as an entrepreneur.

The closest I’ve come to “making it” was running my own consultancy for a couple of years, but I landed up taking a full time job after it got too hectic.

The WordPress Entrepreneur’s opportunity

Right now, there is so much opportunity in the WordPress space to build and sell products. My body is itching to get involved by building plugins/extensions and starting a business around them.

You’ve probably seen the many WordPress developers that have become WordPress entrepreneurs over the past few years by building up plugin businesses. They’ve all been doing really well. Guys like Pippin, WP NinjasElliot Condon, more recently Calum Allison, and so many more. Deep down inside, I’ve been quite envious of them.

So the question is, why don’t I start a business like that? I mean, I can write the code required and I have a TON of ideas and free plugins that I could easily start to monetise with extensions tomorrow.

We’ll it’s complicated and comes down to a few different factors. Later in the post, I’ll get to what I’m doing instead of plugins and extensions.

Problems with starting a WordPress software business

I hope these don’t come off as a big bunch of excuses, they don’t feel like that in my head, but more reasoning why I’ve decided to take a different path.

So the first factor is time. Even with running a free open source plugin, I barely get any time to work on or support it. It’s a catch 22 situation here because the reason I don’t have time is because I’m working on other things to make money i.e. a job and my platform. Whereas if I were putting out products, I should be making enough money to replace what I’m currently doing. It is of course, not as simple as that. There are trade offs to be made in either case.

Supporting products is a bit of a headache. I don’t really want to be in the support game. I love building software, but supporting it is another ball game. I’ve seen support break software developers and make them bitter. Yes, you can hire a support team but ultimately, the buck stops with the business owner/developer. And also, hiring staff comes with it’s own set of challenges. I see myself as more of an indie entrepreneur/developer. Someone who, when they build a business, wants to go it alone. Maybe this will change over time, I’m not sure. Don’t get me wrong though, I love working on teams and will continue to do so for a long time, but for a business model I like the idea of going indie.

I’m not sure it fits my ideals. This is something I am working on to define. Who and what is it that defines me? What do I stand for? I love the idea of open software and personally, I’m not sure how that fits with charging people for it. I’m not saying it’s wrong to charge people for software at all, this ground has definitely been tested to it’s limits in the WordPress space and it’s a lot clearer now what flies and what doesn’t.

I feel that I need to focus more on writing core WordPress code. As developers we can’t do it all. I’m pushing myself to the limits with everything that I’m doing. It’s challenging. I take very little time off. With that in mind, and this bridges very closely to the timing issue, I can’t do both WordPress core code and my own plugin code at the same time. It’s just not possible.

The alternative path to products

And so, because of everything mentioned above, I made a decision at the end of last year when deciding what to focus on in 2016, to only write open source and free software.

I also decided to not create any new plugins and I am still mulling over potentially retiring my existing plugins.

It’s been hard. Watching the success of others and knowing you could be doing the same is difficult.

And so, to satisfy my entrepreneurial spirit I decided to go all in on my blog. The ultimate goal here is to make a bit of money from it.

I don’t ever see this blog as being a full time thing. It’s more just an extension of who I am as a developer. Because of that, it ties in very well to my current situation i.e. a full time WordPress developer at an agency who contributes to the WordPress project.

The reason this blog extends me as a developer is because everything I work on, in my day to day development, either relates to or directly influences what I put out on this blog.

My work gives me ideas for posts, my open source code gives me video content, my tools that I use to develop give me course content etc.

It helps with the timing issue because everything I am doing on a day to day basis is focused towards the same path. I don’t ever have to switch gears. My work is my blog and my blog is my work.

Now, I know full well that the earning potential of this tiny little blog on the internet is nowhere close to what I could achieve with selling software.

If I look at people in the WordPress space doing a similar concept to what I am starting, like Post Status or Tom Mcfarlin, I’m sure they’re doing well with their membership sites, but I don’t think it’s anywhere near this.

Last I heard Post Status had around 500 members which is a huge amount, but if you translate that to revenue/profit by doing the math, again I don’t think it’s close to some of the numbers of the big plugin developers.

Giving people what they want is the key to sales, for software and information products

I’ve determined that people are more willing to pay for something that fills an immediate desire or problem than something that will give them long term benefit.

For example, someone is very likely to buy a plugin extension which allows them to accept payments on an ecommerce site they’re launching. It is fundamental to having that ecommerce site function and is a real world problem for them.

Whereas, someone browsing my site and coming across, let’s say a membership program for great content around WordPress development, has less of a desire to buy now as it doesn’t solve an immediate real world problem of theirs.

And there lies the challenge for me as a WordPress entrepreneur. I need to produce content on this blog that solves someones immediate problem so that they will buy. It’s not as easy as writing software but it is doable.

Off the top of my head, an example would be writing an ebook on “How to build a kickass ecommerce site with WordPress, that converts like crazy”. That person who is building an ecommerce site is likely to buy that book.

My greatest hope is that I can turn this blog into something more than just a showcase. That I can deliver valuable content that people are willing to pay for and make a nice side income from it to supplement my full time income as a WordPress developer.

And so to summarise this post, I’ve decided to take the road less travelled as a WordPress entrepreneur. A road where I get to work on open source code, work at an agency and teach the stuff that I’ve learned. Only time will tell if I made the right decision, but I’m making sure that I give it my best shot.

Supporting open source WordPress plugins

Quite a while ago now, I built an open source WordPress plugin called MobilePress while I was contracting for company. Eventually we spun it off and used it to create a startup, but that story is for another day.

I recall quite vividly, the day that the plugin went live. There was quite some buzz around it as it was one of the first plugins that could render a mobile version of your blog. This was before responsive themes were the in thing and smart phones were main stream.

The plugin continued to grow daily and before long we had thousands of downloads and people were loving it.

But that’s when it started. Having put a plugin out there that got some serious attention, people started finding bugs. They also wanted it customised to their needs and if something wasn’t available that they thought should be, oh did you hear about it – mostly on social media.

Supporting an open source plugin is definitely not for the weak. It takes a lot of determination and commitment. It’s easy to put something out there but much harder to commit to it for the long term.

I’m as guilty as many open source developers at not doing a good enough job supporting my open source software.

What makes it especially difficult is the negative feedback. I’ve been seeing a lot of discussion threads recently on social media where open source developers are sharing their WordPress plugin reviews from ungrateful users. Users who expect the plugins to be perfect and almost seem to think that we get paid to do this full time. It’s quite disheartening.

But ignoring that for now, writing open source WordPress plugins can be very rewarding in so many different ways…

  • You get to put out a “product” that is an expression of who you are and where you’re at as a WordPress developer.
  • You get to see hundreds, and if you’re lucky, thousands of people use your software.
  • It’s really good for your career growth. Employers in the WordPress space love it when you’re contributing back.
  • You get to play around with some of the latest tools, frameworks etc on your own projects which you may not be working on during the day.

So how can you support your open source plugin without feeling drained, frustrated and demotivated. It’s tricky, but possible. Here are a few tips from my experiences that you can apply.

Tips for supporting open source WordPress plugins

  • Appreciate all feedback, negative and positive, and thank the person for providing it. Don’t get worked up by negative feedback. I struggled with this for a long time, I felt offended. But I learnt over time to appreciate it and take it for what it’s worth. Negative feedback is usually driven by circumstances outside of our control. Someone is having a bad day or perhaps they’re just a troll. You never know and it’s best to not dwell on it. Accept it and if it’s relevant feedback, apply it, otherwise move on from it.
  • Always be friendly. You can very quickly change negative feedback in to positive feedback by sending someone a smiley and thanking them for their feedback. When users realise that you are actually a human being just like them, they quickly backtrack and explain their frustration better and then more often than not, change their attitude.
  • Acknowledge that by releasing something as open source software, you’re making a commitment to your users that your software will be stable (unless otherwise stated). You need to figure out if open source software is really for you, or maybe you need to refocus the areas that your writing your software. I’ll give you an example that applies directly to me. Lately, I’ve been considering finding new owners for my plugins and focusing entirely on WordPress core development. By doing that, I get my open source fix that I love but have to do less support on my own and through my own channels. Maybe this is something you would want to consider too. While it’s not for everyone as we need a thriving plugin ecosystem, it may be something that suits you.
  • Use Github to manage the project and you will very quickly have other developers helping you out by submitting pull requests for new features or bug fixes. Use the issue tracker as well and let people know in your plugin readme that Github is where you track and develop your project.
  • Follow best practices at all times when writing your plugin. By doing this, it not only makes it easier for others to contribute back to your software, but I’ve found that it generally ends up eliminating many bugs in the software. Use tools like VVV, PHPStorm and PHPCS for this – it’ll make your life so much simpler.
  • Allocate specific time each week to supporting your plugin and only spend that time doing support. We’ve all got really busy days that seem to get busier as time goes on. If you don’t allocate specific time each week to work on your open source software and support it, then it will never happen. Again this is something I am trying to apply and as difficult as it has been, when I have been able to do it, it’s been great.
  • Charge for custom work that is requested on your plugin. By releasing your WordPress plugin you will get lots of feature requests via email and other channels. What I would suggest that you do is figure out your hourly rate. Then when someone asks you for a feature, say something along the lines of this… “Thank you very much for that feature request. I think it’s a great idea and have put it in my backlog of things to do. If you want it done sooner, I can develop the feature for you. My hourly rate is $x and it will take about 5 hours to complete. You’ll get the feature completed by next week and I’ll give you a mention in the changelog as the sponsor of this feature. How does that sound? Would love to get started on it immediately”. You will be surprised at how many people are willing to sponsor a feature. You will even get people asking to pay for features in your plugin without you having to say a word. I’ve got one in my inbox right now.

Doing the above will alleviate some of the pain of open source plugin support and hopefully make you a happier developer. Let me know if you have some suggestions of your own, I would love to hear them.

2015 year in review

One thing I absolutely LOVE about this time of the year, is reading everyone’s update posts on how the year went for them.

It’s very inspiring and makes me even more motivated for the year to come.

I’ve only ever done one year in review post and that was for 2012 but I’m going to start doing them every year. I’ve been thinking about doing monthly updates too as I follow quite a few blogs that do this and also find it very inspiring.

In any case let’s get on with the review.

What went wrong in 2015

If I look back over the past year I feel more went wrong than went right. It’s really disappointing to me, but at the end of 2015 I turned it around in to something positive. So there is a light at the end of this tunnel.

Here is why I felt disappointed with the year…

  • I will forever remember 2015 as a year where I had serious health issues. The worst that I have ever had. It started in June when I got an infection in my lungs. It took a good month and a half to get over it. Just when I thought it was over, I started having episodes where I would completely faint, the worst happened when I was driving. After countless brain, heart and blood tests it turns out it was all due to…
  • Burnout! In November this year, I was completely burnt out. It was a combination of many different things that led to it including stress, lack of sleep, bad health and a few other things. It was extremely scary and there were days that I literally thought I was going to die. I’m very close to getting over it completely now with the help of some medication and in 2016, there will be a big focus on health for me!
  • At the start of 2015, I had zero plans, goals or motivations for the year. I really just wanted to take the year as it came. That stunk! I will never do that again. Having plans and goals for the year, gets me excited about it and makes me push hard to get things done. There is so much I want to achieve next  year.
  • I realised in November that I was in the wrong job. There was nothing wrong with the company I was working at in fact I really enjoyed my time there. But I was not doing the work that got me excited for the day. I was living pay check to pay check and had no motivation. I turned this around as you will read below.

All the above effected me in 2015 and looking back it feels like a bit of a waste of a year. However, since December, I’ve found renewed energy and motivation and I’m more excited about life right now, than I have been in a long time. Let’s look at what went right.

What went right in 2015

  • On the 6th of February 2015, my son Hayden was born! As challenging as it has been raising two children (sleep anyone?), he is a huge blessing. My kids give me joy daily and are a big reason for doing everything that I do. My wife Megg has been amazing with all she does to raise our kids and work more than she should in her business, I couldn’t do this without her.
  • The biggest moment of the decade for me happened this year. In October, I finally, after 7 years of back and forth, decided to give up my studies for good. I’ve always wanted to but fear kicked in. You see, studying for my degree got in the way of me executing on the things that I really wanted to do in life. A full time job, 2 kids, side projects and trying to study was just too much for me. So I had to quit one. I know, this wouldn’t be for everyone and one day I will write a post on the exact reasons for me dropping out, but since doing it, it’s been worth it 100 times over.
  • I changed career directions. As mentioned above I was working at a job that I wasn’t motivated by. I wanted to be in open source and build a platform that my job supported (see below). I wanted to work on the cutting edge of the web development industry and do conferences and travel. Most of all I want to become a leader in the space. So I left my old job and took a position at XWP as a WordPress Engineer. It’s been GREAT so far. I’m loving it and I’m enjoying working in a remote position. Also, we’re hiring 🙂 Ping me.
  • On December 8th I did something that I have always wanted to but never did. I started getting serious about my platform. That is this site of course. My archives here go back to 2005 (That’s 10 years of blogging!) but there is only one time that I can remember where I was consistent with my writing. Since December 8th, I’ve blogged at least once daily, sometimes more. I’ve started doing videos and am offering a free course. I also now have a weekly newsletter. This is just scratching the surface of what is to come in 2016. – so watch this space. I am so amped about it all!

So as I am sure you can tell, the end of 2015 has been really motivating and I’m ready for a big 2016. It’s been great and I’m challenging myself to new heights. The momentum that I have going now is pushing me to things I never thought were possible.

2015 year in review, the numbers

One thing I love about year in review posts is the numbers. So I’ve come up with a bunch of metrics that I can track over the year and compare year on year. I’m including revenue figures here to which would be revenue made from this blog. The idea is to eventually make some pocket money from this site through advertising and a membership program called MattGeri.com PLUS. More on this later in 2016.

Last years figures are in brackets.

  • Blog Traffic
    Total visitors in 2015: 16740 (24376)
    Best month: December – 1960  (March – 2808)
    Most popular post: Installing a color scheme for VIM on Mac OS/X
  • Blog stats
    Posts written in 2015: 60 (2)
    Comments received in 2015: 32 (13)
  • Videos stats
    Videos released: 9 (0)
    Youtube views: 615 (0)
  • Subscribers
    Email subscribers: 46 (0)
    Youtube subscribers: 24 (0)
    Twitter followers: 702 (622)
    Facebook likes: 44 (0)
  • Money
    Revenue: $0
    Expenses: $70.43
    Profit / Loss: -$70.43

As you can see from the above, my overall traffic numbers are down due to lack of doing anything until December. I also earlier in the year switched my from from WordPress to Jekyll which had a huge effect on the drop in traffic numbers. But since the 8th of December, the blog is back on WordPress and things are definitely picking up again!

As mentioned, I’ve been blogging daily since December 8th and that made for a nice healthy post count this year.

I’m really happy with the growth in my video stats and subscribers! I’m going to be doing some cool things next year for my email subscribers so make sure you get on the list.

I haven’t monetised the blog just yet, so the expenses are a small bit of Facebook ads and DigitalOcean costs (aff. link).

Next year should be great!

Recap and looking forward

So there it is, my year in review! As much as the year was a bit of a disappointment I’ve got a lot to look forward to and can be thankful for so much good that did happen. Today I will be chilling with some friends to welcome the new year and from tomorrow the hustle begins!

Things I’ve learned being a remote developer

Up until 2012 I had never had a “job” which was not a remote position. Job being defined as a position as a consultant, working for a startup, being a traditional employee etc.

In 2012, I took a position in a payments company that was full time in an office.

Taking that position in an industry that I knew very little about at the time was a big step for me. It also meant, I had to adjust to working at an office and all the formalities that come with that.

I’ll tell you quite an embarrassing story, although it eventually became somewhat of a running joke which made me feel better. Back in 2012, on my first official day as an office worker, I didn’t know that offices had dress codes.

I’m sure you can see where this is going. I pitched up on my first day of work wearing shorts and a shirt which was against the “rules”. Luckily the company I worked for was very nice about things like that. But still, I was rather flustered.

In any case, it’s now been 2 weeks since I’ve returned to a remote working position and I feel so much happier than when I was working the office job.

I now believe, more than ever, that remote working is that way of the future, especially for digital workers. I’m not going to go in to the whys, they’ve been covered by countless articles and books.

What I would like to go through though is some of my initial tips for making remote work a pleasant experience and something that works for you.

Remote developer tip 1: Plan your day before it begins

This is something that I never used to do at my office job. I didn’t feel it was ever needed. The day kind of just flowed. Working remotely however, is a completely different experience.

If you don’t plan your day properly and write down what you want to accomplish, then there are hundreds of things that have the potential to get in the way of your priorities.

I simply use TextEdit and each morning write down my ToDo for the day. I also keep a backlog of items I want to get done in the future. It’s that simple!

Remote developer tip 2: Utilise the communication tools available to you

It’s easy, especially as someone new to a company and someone who tends to be a little introverted, to not get involved in discussions. For me, this is even more the case when chatting digitally because I tend to put too much thought in to what I am going to say.

For example, I think to myself “What will they all think about what I am about to say” and then just say nothing.

Don’t do that. I kicked that habit very quickly. It’s vital that you get involved and connect with others in the company. Use whatever the company provides i.e. Slack, Skype, HipChat etc.

Don’t be shy, in my experience people tend to be very friendly towards the new guy/girl.

Remember, if you shy away from this kind of communication, it’s going to be a very lonely space for you as a remote worker.

Remote developer tip 3: Take breaks

In an office environment, it’s easy to take a quick coffee break or snack break. When I worked in an office, I would often socialise with colleagues on the office balcony and just get my mind refreshed.

Obviously, when working remotely, it’s easier to get caught up in the work and work for a couple hours without a break. This is one I’m working on myself. I don’t want to work longer than 1 hour without taking a break. I’m currently working up to 2.5 hours without a break. Need to get that down.

Remote developer tip 4: Appreciate the freedom and time saving

Tomorrow morning, your neighbours, friends, family will be waking up at 5:30am so that they can skip the traffic on the way to work. You? You’ll either still be getting well earned rest, or taking advantage of the 30 minute time saving by maybe working on a personal project.

There hasn’t been a day gone by yet that I haven’t been thankful of the fact that I don’t have to sit in traffic tomorrow morning. For me, this has been the biggest blessing of remote work!

Remote developer tip 5: Get out there

If you’re feeling a little holed in or lonely, go and work from a coffee shop. Enjoy the vibe and good food.

I’ve done this a couple times already and being in that environment gives me good energy.

I’ve also really enjoyed having my family join me for lunch at these coffee shops where I’ve been working. It’s gives us extra time in the day to bond which we never had before.

And that’s it for now. It’s been a good learning experience getting back in to it and there is still a lot I need to learn going forward, but I’m seriously loving it and hopefully looking forward to working like this for the rest of my life.

Secure your Nginx WordPress blog with SSL using Let’s Encrypt

I’ve just enabled SSL on this WordPress blog. It was surprisingly a painless experience and I did it using the brand new, free service called Let’s Encrypt.

Why enabled SSL on your WordPress blog?

What SSL does, is encrypt the information that passes between the different points before it reaches the destination server. The obvious problem with unencrypted data is that as it passes through each of these points, it is in plain text which means anyone could potentially read it.

SSL has traditionally been used on larger websites and e-commerce stores where people care more about their information being kept safely and away from potential threats.

For a long time, SSL was out of reach for the little guy or hobby blogger as the cost involved with acquiring a SSL certificate was quite high.

Now that the Let’s Encrypt service has been launched and is completely free, it’s highly recommended that webmasters start enabling SSL on their websites, big or small.

Once HTTP/2 becomes more mainstream, you will be required to have SSL enabled on your site if you want to adopt it. While it’s not a strict requirement, Browsers like Firefox have already stated they will not support unencrypted HTTP/2 connections.

WordPress SSL on an Nginx server

While setting up SSL on this website, I documented the whole process step by step so that you can do the same on your blog.

As I mentioned in the video, Let’s Encrypt is still very new and, specifically on Nginx, not 100% supported just yet, even though it’s quite easy to get working.

Here is the video. See below for the commands that I run and configs I used, for copying and pasting in your own terminal window.

 WordPress SSL Nginx Commands and Configs

Use this command to clone the project to your server

git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt

Now to generate the certificate

./letsencrypt-auto certonly -a standalone -d mattgeri.com -d www.mattgeri.com

Lastly, the Nginx server domain config

listen 443 ssl spdy;
listen [::]:443 ssl spdy;
ssl_certificate /etc/letsencrypt/live/mattgeri.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mattgeri.com/privkey.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:10m;

ssl_protocols TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK';
ssl_prefer_server_ciphers on;

add_header Strict-Transport-Security max-age=15768000;

ssl_stapling on;
ssl_stapling_verify on;

## verify chain of trust of OCSP response using Root CA and Intermediate certs
ssl_trusted_certificate /etc/letsencrypt/live/mattgeri.com/chain.pem;
resolver 8.8.8.8 8.8.4.4 valid=86400;
resolver_timeout 10;

Renew your Let’s Encrypt Nginx Certificate

To renew your SSL certificate, simply stop your server, run the command below and then start it again.

# Stop your server (Ubuntu specific)
sudo service nginx stop

# Renew certificate
./letsencrypt-auto renew

# Start service
sudo service nginx start