From Photography to Plugins
In this episode, I am chatting with Robin Cornett about her journey into plugin development. Robin started as a photographer who built her own website. Since those early days, she has created some very useful plugins, and is a contributor to the Genesis Framework.
Robin’s journey into code started when a friend called her with a problem. Her company website was built with a custom CMS (content management system), and it was very difficult and costly for them to make any changes. She asked if Robin would be willing to help her figure out how to build a WordPress website. The rest is history.
Today, Robin builds websites for nonprofits, bloggers, and small businesses. She is also a plugin developer and has written some very useful plugins both free and premium.
Listen to Episode 18
Where to find Robin:
Tools and Resources discussed:
Also of note, yes I can confirm, namespacing in PHP was introduced in 5.3.
Full Transcript of this Podcast Episode
Jackie Hey everybody, it's Jackie D'Elia with episode 18 of Rethink.fm, and I have my special guest, Robin Cornett. Robin is a Genesis contributor. She is a WordPress and Genesis developer. She is a plugin developer, and most folks will know her from being very active in the Genesis community. Hey, Robin.
Robin Hey, Jackie.
Jackie Thanks for joining me.
Robin Thank you so much for having me.
Jackie Okay, what part of the country do you live in?
Robin We are currently outside of Chattanooga, Tennessee right now, the most beautiful place in the world.
Jackie I'm in Charlotte, so I'm not too far from you, actually. It's probably just a few hours, or maybe three or four hours away. It's not too far. It is a beautiful part of the country, I must say.
Robin Mm-hmm (affirmative).
Jackie Well, my first question for you is, how did you get started with WordPress, and then how did you get introduced to Genesis?
Robin I got started in WordPress because I had started my own business from home, once my kids were all out of diapers and a little more independent, and built the world's worst website in Dreamweaver, and realized after a few months that I would really benefit from having a blog. The group, that forum that I was part of at that time, everybody was dipping their toes in the same water, and so we all started using WordPress together, and started blogging, and had been doing that for a while. The theme that I was using, which was geared for photographers specifically, the theme developer was looking for beta testers after a while for his next version.
I thought, "Well, I can break things, so I will happily beta test." And so it just snowballed from there. I was introduced to Genesis a few years later, I think it was about 2010 when a friend with a nonprofit website needed to build a new site, and they were frustrated because they were using a proprietary CMS, and couldn't add pages, and couldn't add their Twitter account, and were really limited. I said, "You really ought to build it on WordPress," and she said, "Okay, how do I do that?" I didn't really know what I was doing, other than having done my own site.
She didn't either, and I think she was the one who actually found Genesis, so we dug into it, and put together their first WordPress website, and I said, "This is pretty fun." So, I've been using Genesis ever since.
Jackie On that note, had you done any programming in PHP, or had been exposed to anything as far as building websites outside of WordPress?
Robin No, I have no programming background. I come from a family of mathematicians, and scientists, and computer people, and I have always been the lone holdout of not doing anything smart like that, so they all think it is pretty funny that I have started doing this. I started learning CSS with Firebug back in 2010, and then just gradually, as I needed to add things, or change things on a website, I started figuring out PHP, and have just learned an awful lot as I've gone along.
Jackie You have a photography background as well?
Robin That was what I started doing in 2007. I wanted to do something that would let me have some income, and still be home with my kids, and so I started a little photography business, taking pictures of families and kids. I did that primarily for the first few years, and then started adding website services as I started figuring that out. We moved from Florida to Chattanooga in 2012. At that point I said, "Well, when the kids get settled and we have everything straightened out here in Chattanooga, I will pick up the photography side again."
But the website side was a lot more portable. I don't know if we've just never gotten everything straightened out, or settled in, but I just have never gone back to the photography. I'm better at websites.
Jackie Okay. I do notice, though, that you have had some plugins that you've written in the past that are related to showcasing photography, featured image and things like that.
Jackie It seems like that does pique your interest, or at least you're looking to create solutions for things you're interested in, or wanting to showcase.
Robin I do still feel very strongly about wanting to have great images, and showing them well, but it is still very much part of my mindset.
Jackie Okay, so how did you get started writing plugins? Because doing an implementation on a website, and then starting to build your own themes is one direction. What was your initial reason to write a plugin?
Robin I think my initial reason for writing a plugin at all was I needed some custom code added to a site for a client, where they needed custom content types, and custom implementation for that. That was, my first few plugins were very much just one-off, custom plugins for clients. Then, I think I started writing plugins more for general release because I found that maybe something that I had done for a client was something that could be reused for other projects, and maybe shared with other people, and other people might find them useful.
Jackie Okay. You start developing plugins, you start releasing them into the wild for people to use, and eventually you get to a point where you want to make a premium plugin, which I can say I've used your SuperSide Me plugin a lot on client sites. I find it really helpful.
Robin Thank you.
Jackie What was your, how did you reach that point where you were saying, was there a free version of that originally, and you're decided to make it into a premium, or was this something that you just decided that you were going to sell from the beginning?
Robin There was never a free version of that. It did start out is something that I was putting into a specific client site, and it was actually part of their theme because they had a fairly complex navigation set up with both a primary and a secondary navigation, and then I used the Genesis simple menus plugin to modify which secondary navigation showed up on different pages. Both menus were fairly extensive, so a standard menu was not going to work for them. That was when I found Sider, which is the side menu, and started figuring out how I could put that into their theme.
After I'd been working with it for a while, I thought it would be great if this was a plugin I could use with any theme, and so I started making it into a plugin. It was all along my intention to make it a premium offering, primarily because of just the significant amount of work that it was. Although I love offering plugins freely on the WordPress repository, I've got four or five on there now, I think, it is very helpful to be able to continue development because I have the resources to do it, because I'm selling it. Let's put it that way.
Jackie Absolutely. I think having plugins like that, that perform a really unique functionality that is valuable for everybody, to be able to support that and fund the development, I know it makes me comfortable knowing that I am paying for the plugin, and that's helping to fund the next version of it. When you decided to do this, how did you decide what platform you were going to build on your website to sell your licenses? How do you sell? Because I noticed you get a license number, and you can put that into the plugin when you install it. How did you sort out what you wanted to use, and how did you wire all of that up?
Robin Honestly, really the only solution I ever considered using was Easy Digital Downloads by Pippin Williamson, because I had used it for another project that was not selling software, but I just really appreciated how easy it was to get set up, and how easy it was for me to modify and tweak the way I wanted it. With a pedigree like that, I just knew that it was going to be a really solid system to use for distributing my own plugins.
Jackie I noticed you have an affiliate on there, too, to sign up for an affiliate program. Is that part of the Easy Digital Downloads family?
Robin It is. It's Affiliate WP.
Jackie Okay, very good. Did anything unexpected happen when you set all of this up, as far as how you sell the licenses, and manage that whole process?
Robin I think, I don't know if anything unexpected happened necessarily, but it did take some tweaking and configuring. I think the thing that I ran into, that I really did not expect, was if somebody is using the plugin, and activates the license on a development site, or staging site, and then copies their database over to their live site, the way Easy Digital Downloads handles the communications for checking the license. The default way it's set up, it doesn't automatically keep those in sync.
So, what my site as the storefront has is, I have a list of URLs that are approved to use with that license, and I don't have any way to know that the URL has changed. Initially, that caused some confusion where people would set up on a live site, and then click update because I'd released a plugin update, and then they would be told that their update had failed. What it was, was because they were not authorized, because the URL of the site that was phoning in had changed. I didn't know how to get around that, but I contacted EDD support, and they're really awesome.
Apparently, there's a way that I could set up a chron job where, just every so often each site phones home and says, "Hey, I'm here, are you still here? This is the URL associated with this license, is that all good?" Now what happens is, when that runs, if we're in that situation where we've moved from a staging site to a live site and those are no longer in sync, the license key automatically deactivates and just a little notice pops up saying you just need to reactivate, click the activate license again. The key isn't lost or anything, you just need to tell your site to phone my site and everybody is happy. I've had a couple different users report that they've been really thankful that that's handled seamlessly.
Jackie That's great. If you have just a one site license, you could have a developer, a local install that you could have that on as well as your live install?
Robin Easy Digital Downloads does allow you to do that, and it's something that I have the option to allow my users to do, and I have done that. Yeah, you can absolutely run it locally, and I totally would recommend that, just because it's so helpful for testing all of the different options and configurations, and how they work together.
Jackie Yeah, because you certainly don't want to be testing that while you're building out on a live site or making adjustments to it, for sure.
Robin Yeah, that can get a little awkward.
Jackie I know. What's support like for you on a premium plugin, and how do you approach troubleshooting issues that come up?
Robin A lot of times, the questions I get tend to be similar. Honestly, I'm really thankful that either I have great users, or I've broken the code so many times myself that I have managed to fix most of the issues before I send the code out the door, but I honestly don't have a lot of support tickets that I have to deal with on a daily basis. Part of it is because it is, SuperSide Me, for example, is a very targeted plugin. Usually, what people are asking for is, if I wanted to make it do this, how could I do that? And so it's a question of saying, well, check this in Chrome dev tools, or here are filters that you'd want to look at.
Jackie Yeah, I like the way that you did include a lot of really nice filters in there, so it does make it easy to customize it a bit more, if you want to, than just what comes with the normal settings. Very good on that, I have to say.
Robin Thank you.
Jackie I think when I first got it, you helped me with a couple of the filters when I was setting it up. Yes, I love when that happens, and you have the flexibility inside of the plugin to do that.
Robin I would say that the biggest challenge is when somebody asks for support, and they don't give me the URL of where they're having the issue. That seems to be one of the biggest hurdles, is I want it to do this, and it's not doing it. If I can't see it, it's very challenging to try to figure out how to help.
Jackie Yeah, to try to figure out how to help, and to figure out what environment they're using, what version of all their plugins they've got, what version of WordPress they're on. That SuperSide Me plugin doesn't require Genesis, correct?
Robin It does not. You can use it.
Jackie You can use it with any well-coded theme.
Robin Yes. There are some that it does not play quite as well with, and that tends to be a theme issue more than a plugin issue.
Jackie I know you're interested in making sure things are accessible, and I've seen lots of comments and discussions that you've had on forums, and chats we've all had. How did you, especially with the menu plugin, did you have any challenges that you had to overcome with trying to make sure that it was accessible, and keeping up with all of that?
Robin Yeah, there are always challenges with that, and for me, as somebody who, I came in to accessibility and started being interested in it around the time that it was being added into Genesis, which was version 2.2, and it happened that I had a client that I was starting a project on, and he was blind. It was really important to him that his site was accessible for himself, not only his users. That was a totally new challenge for me, and I had to do a lot of learning right away. I got to work with Rian Rietveld. She was adding all of that into Genesis Core, and she's just phenomenal.
And so, got to learn a lot along the way, and since then, as I've added, been working on things like my own themes, or on SuperSide Me, it's been a lot of trial and error. Once I had SuperSide Me put together, I actually hired Amanda Rush to do a full audit on it for accessibility, as well, just because that was really important to me, that it would be an accessible plugin. It's something that I know enough about to be dangerous, and I'm totally an advocate of getting people who are smarter than me to help me on it.
Jackie Absolutely. I had Rian on the show on episode seven, and we covered a lot of basic, simple things that you can do to make your site more accessible, but it's always so amazing to talk to folks that are really just focused on that, because it's a continuous learning process. Things continue to change, and evolve over time. It's something that you need to be mindful of. Both of us have a real interest in images, and using photography in website work, and I know I wrote a post a while back about just how to use images correctly, and making sure that you're using the alt attribute.
Robin I have shared that post. That was a good one, Jackie.
Jackie Oh, thank you, but it was a learning experience. Once you realize, "Okay, I'm not doing something properly," you get on a quest to find out, "Okay, what do I need to learn here? How do I make this better?" Reaching out, and talking to some other people was very helpful in putting that post together, and just with my own journey about making things more accessible. I know for me, since Genesis 2.2 came out, and Carrie Dils also started with Utility Pro, and that was all accessible. That really opened up the whole discussion for everybody about accessibility, and it became more mainstream in our community.
That has really encouraged a lot of people to take a look at what they were doing, and to see, are there some things that I can easily do to make this better? I know for my work it has really influenced things that I've done. So, hats off. It's a journey, but I'm really happy to hear that you took the time to put the effort in to do that for that menu.
Robin Well, thank you.
Jackie So, what other plugins? We talked about SuperSide Me, but I took a view of your website and saw that there's quite a few plugins on there. Are there any others that you want to touch on, just to cover why you wrote those?
Robin I mean really, they all pretty much go back to, they were addressing a need that I had for a specific, my own use case, or a client. It just made sense to make it into a plugin. One of the earlier ones was Send Images to RSS, which is a super creative title, but that was one that I had used in an extremely simple form back when I had a photography website, because it addresses the issue where we might have really large images on our site, but if somebody is subscribing by email, they can't handle large images in their email clients because most email clients are significantly behind the rest of the Internet in terms of how they render things like images.
And so, I just gradually started implementing that as a plugin, and I think Gary Jones is listed as a contributor on that, because I sent it to him, and he tore it apart and helped make it so much better, as Gary does.
Jackie Gary does, absolutely.
Me, being dumb and temporarily having a couple of hours to say, "Well, surely that can't be that hard," said, "Well, let me try to put together something," and built a very rudimentary version of it as a plugin, and just had put it up on GitHub because I thought nobody other than me would ever want to use this, and a couple people said, "Please put it on the repository, because we would also like to use it." Surprisingly, there are people out there who also want to use it, so that's been a fun one that has taken on a life of its own that I did not quite expect.
Jackie Yeah, I'm using social warfare plugin on my site.
Robin That's a great one.
Jackie That seems to be working well. It does keep track of the numbers accurately, and stays updated. So far so good with that one, but I do like it. It's a premium plugin, but it's reasonably priced for what I'm getting, and it's clean, and easy to style. It's very easy to drop it in, so I do like that one a lot. I wanted to ask you a little bit about your workflow, what tools do you use, and what code editor are you currently, your flavor that you're happy with right now? It seems like we all change over time.
Robin We do.
Jackie Well, what's your development workflow like?
Robin I am currently using PHP Storm, and tentatively dipping my toes into Visual Code, which is an open-source program from Microsoft, because I've been having a few issues with PHP Storm, but it's been a hard change to try to make, because there are so many things that PHP Storm does so well, immediately out of the box, that I haven't figured out how to make happen in Visual Code yet. I am still mostly in PHP Storm, and I do a lot of work locally. I've been using Laragon for my localhost setup, which is a Windows only product, and that's been really good, and fast, and lets me switch between versions of PHP, which has been super helpful. Then for a task runner, I'm using Gulp. Am I missing things that you wanted to know about?
Jackie No, that covers it, actually. You're using Windows, right?
Robin Yes ma'am.
Jackie Because you're using a Windows only, Laragon, I've heard that mentioned by somebody else that has Windows as well, as a good alternative to some things that don't offer you the PHP version flexibility that we're looking for right now. I'm using, right now I'm trying out Local by Flywheel. I'm on a Mac, so for me, that seems to be working really well. I can change my PHP version on there, and test different environments out, so that seems to be working. I like Gulp as well. I originally started with Grunt, but the way my brain works, Gulp just looks easier to understand for me, when I look at the code.
Robin For me, too.
Jackie Yes, it does. I find Grunt to be very difficult for my brain to comprehend. I lose track of what's going on when I'm looking at it. It's just harder for me. When I got to look at both of them I was like, "Oh, I really like the Gulp one." I'm sure I took a course, probably on Treehouse or something, about starting with Gulp and got hooked on it, and then eventually just switched everything over to using that. I use that, and use Sass for compiling my CSS, but it's all run through my Gulp task runner.
Robin Me too.
Jackie Yeah, that sounds like that's really good. It sounds like you have a really good, solid workflow. I haven't used PHP Storm as much. I have it, I've installed it, I've set it up, I've used it. Right now, I'm using Atom, and I really like Atom. It's very light and easy. For the type of work that I'm doing, it works out really well, and it's got linters in there, and other things that Gary says that we should be using, and I am, because he was on a recent episode, and we were talking about just learning how to sniff your code.
When I first heard all of that I was like, "What are they talking about?" Now it's just common. I mean, it's running all the time, I'm doing it all the time, and it really helps you write better code. It does.
Jackie Having the WordPress standards in there so that you're constantly being reminded and told, "Okay, this is not formatted correctly," or, "You need to have spaces around your parentheses." Just normal stuff to clean up your code, and keep it looking nice is very helpful to use those linters. Whatever code editor you're using, definitely look into one that offers the ability to do that, for sure.
Robin Yes, I agree.
Jackie So, my final question. Actually, I have two, sorry. One would be, this one is, if you could go back and pass yourself a note a few years ago, in regards to developing, what would you be saying? What would it say?
Robin Oh, goodness. Probably, this is going to sound dumb, but probably think really hard about how you're naming your functions that you want other people to be able to use. That might have been one for last year, actually, not a few years ago.
Jackie Are you using namespacing now? Have you switched to using it?
Robin I am not using namespacing.
Jackie It doesn't seem like very many people that make WordPress plugins do use it. I mean, I always look at all of the code, and I very rarely see it around. I understand namespacing makes a lot more sense, because it definitely protects everything. You don't have to worry about collisions at all, and you certainly don't have to come up with very complex prefixes for your functions, right? You're not like, "Oh, I've got to make sure this is so unique, it will never be used by anybody else." Namespacing solves that problem, but it is a different mind shift to get used to writing with it.
Robin Well, and I'm able to avoid a lot of the collisions, because I do use classes for nearly everything that I write. For anything that I'm only intending people to be able to access via a filter, classes are great because I can keep everything protected in the class, and then add the filters as I need. It's just, sometimes when I'm doing that, the issue is, how do I allow somebody to use a function that I've written, and make it easy for anybody to figure out how to use it outside of the class instance itself? That's been a bit of a challenge, but I think namespacing is, I don't know offhand what version of PHP it's really supported in, initially.
Jackie I could be wrong, but I thought it was around 5.3, maybe? I would have to look and see.
Robin Oh, okay, then it's older than I thought.
Jackie I'm pretty sure. Don't quote me on that one, I may have to edit this out, because who knows? I probably have no idea.
Robin Okay, because one concern I've had about it is, for repository plugins, I still need to be able to support all the way back to PHP 5.2.
Jackie Okay, so then that would make sense to check that, and make sure that you could use that back to 5.2.
Robin Mm-hmm (affirmative).
Jackie Okay, so my final question is, are you rethinking anything lately that you have been doing, or things that, maybe a different approach that you want to take going forward for some things that you're building? Anything along those lines?
Robin I think I'm always rethinking, because I'm always elbow-deep in the code, and trying to make sure that it's better, and that I am not having to do the same tasks myself, over and over again. I couldn't tell you offhand, I have plans to do X differently from now on until the foreseeable future, but I'm always tweaking things. I mean, the whole Gulp setup was something that I went through this spring, and because I found that I was basically having to rewrite my Gulp file for each project, and try to figure that out. And so, I made myself sit down one day, and refactor it completely so that I could use basically one Gulp, master Gulp file setup for any project, and just drop it in and be done with it.
I mean, things like that, that just make my life easier and mean that I'm spending less time duplicating my work, I'm always on the lookout to try to figure out how to do that, but I'm really thankful to be able to do what I do, and to have the freedom to do it the way that I want to do it, and keep improving myself, and still be mom for my kids, and take them the places they need to go, and do the things that they need to do. I guess I'm just always on the lookout of how I can be better at my business, so that it frees me up more to do my primary job of being with them.
Jackie That's awesome. That's a great way to end this, focusing on your family, too, and making sure that you have some balance in your life. I think that's great. Well, Robin, it has been awesome chatting with you, and I've learned a lot of things that I didn't know about you, and things that you had worked on, so very helpful. If folks want to get a hold of you and connect, how can they best find you?
Robin My website is just robincornett.com. I'm also on Twitter, @RobinCornett. Those are probably the two easiest ways. Anybody who's in the Genesis Slack group, I'm pretty much always there, or close by. I love being part of a community where we can help each other, and I've received a ton of help from different people. It's awesome to be able to turn around and offer help in return, too.
Jackie That is great, and the Genesis Slack channel is a great place to hang out if you want to connect with like-minded folks. It's awesome. All right, that'll wrap it up for this episode. Everybody have a great week, and I'll see you next time. Thanks again, Robin.
Robin All right. Thank you, Jackie.