Warning: Illegal string offset 'encoded' in /home/better/public_html/merger/full.php on line 212

Warning: Illegal string offset 'encoded' in /home/better/public_html/merger/full.php on line 212

Warning: Illegal string offset 'encoded' in /home/better/public_html/merger/full.php on line 212

Warning: Illegal string offset 'encoded' in /home/better/public_html/merger/full.php on line 212
Error: Cannot fetch feed url - http://tommcfarlin.com/feedError: Cannot fetch feed url - http://krogsgard.com/feedError: Cannot fetch feed url - http://feeds.feedblitz.com/BobWP-WordPressError: Cannot fetch feed url - http://wphunt.co/feed.xml
Warning: Cannot modify header information - headers already sent by (output started at /home/better/public_html/merger/full.php:212) in /home/better/public_html/merger/feedcreator.class.php on line 645

Warning: Cannot modify header information - headers already sent by (output started at /home/better/public_html/merger/full.php:212) in /home/better/public_html/merger/feedcreator.class.php on line 646
A Better Planet - WordPress News News and updates from the world of WordPress http://abetterplanetwp.com 2017-01-18T15:55:53+01:00 text/html 2017-01-19T06:59:37+01:00 http://abetterplanetwp.com A Better Planet WPWeekly Episode 260 – SiteGround, Affiliate Summit Recap, and New Security Czar https://wptavern.com/wpweekly-episode-260-siteground-affiliate-summit-recap-and-new-security-czar <p>In this episode of WordPress Weekly, <a href="http://www.marcuscouch.com/">Marcus Couch</a> recaps his trip to Affiliate Summit 2017 held in Las Vegas, Nevada last weekend. Based on the vendors that were on the expo floor, mobile is the e-commerce platform of the future. We discuss the news of the week and share how you can get involved in the <a href="http://make.wordpress.org/marketing">WordPress Marketing Group</a>. We end the show with Marcus&#8217; plugin picks of the week.</p> <h2>Stories Discussed:</h2> <p><a href="https://wptavern.com/aaron-d-campbell-replaces-nikolay-bachiyski-as-wordpress-security-czar">Aaron D. Campbell Replaces Nikolay Bachiyski as WordPress’ Security Czar</a><br /> <a href="https://wptavern.com/postmatic-basic-rebrands-as-replyable-moves-two-way-email-commenting-to-saas-product">Postmatic Basic Rebrands as Replyable, Moves Two-Way Email Commenting to SaaS Product</a><br /> <a href="https://wptavern.com/siteground-auto-issues-lets-encrypt-certificates-for-new-domains">SiteGround Auto-Issues Let’s Encrypt Certificates for New Domains</a></p> <h2>Plugins Picked By Marcus:</h2> <p><a href="https://wordpress.org/plugins/background-image-cropper/">Background Image Cropper</a> adds cropping to background images for parity with header images. This feature is starting out as a plugin to gauge user interest and to determine if it improves the user experience of background images.</p> <p><a href="https://wordpress.org/plugins/woo-product-remover/">Woo Product Remover</a> allows you to remove all WooCommerce products from your site. It removes products, their metadata, relationships, as well as product variations and their related meta data from the database.</p> <p><a href="https://wordpress.org/plugins/wp-tasks-after-install/">WP Tasks After Install</a> completes a series of tasks most commonly performed after WordPress is installed. These tasks include, removing the default Hello World post, setting permalinks to %postname%, activating Akismet, and more. The plugin will automatically deactivate itself when the tasks are completed.</p> <h2>WPWeekly Meta:</h2> <p><strong>Next Episode:</strong> Wednesday, January 25th 3:00 P.M. Eastern</p> <p><strong>Subscribe To WPWeekly Via Itunes: </strong><a href="https://itunes.apple.com/us/podcast/wordpress-weekly/id694849738" target="_blank">Click here to subscribe</a></p> <p><strong>Subscribe To WPWeekly Via RSS: </strong><a href="https://wptavern.com/feed/podcast" target="_blank">Click here to subscribe</a></p> <p><strong>Subscribe To WPWeekly Via Stitcher Radio: </strong><a href="http://www.stitcher.com/podcast/wordpress-weekly-podcast?refid=stpr" target="_blank">Click here to subscribe</a></p> <p><strong>Listen To Episode #260:</strong><br /> </p> <div id="epoch-width-sniffer"></div> text/html 2017-01-19T05:07:40+01:00 http://abetterplanetwp.com A Better Planet Local by Flywheel Review: Build Local WordPress Environments Instantly http://www.wpexplorer.com/local-flywheel-review/ text/html 2017-01-19T04:03:00+01:00 http://abetterplanetwp.com A Better Planet wpMail.me issue#290 http://wpmail.me/newsletter/wpmail-me-issue290/ text/html 2017-01-19T03:54:44+01:00 http://abetterplanetwp.com A Better Planet Browser-Relative Heights with CSS3 Viewport Percentage http://feedproxy.google.com/~r/Nometech/~3/Z8ofLiUk0DQ/ <a href="http://stackoverflow.com/questions/1575141/make-div-100-height-of-browser-window"><h2>Browser-Relative Heights with CSS3 Viewport Percentage&nbsp;&rarr;</h2></a><p>In the first of a few &#8220;Whaaaat I had no idea CSS3 did that&#8221; posts from me: You can set elements to be a percentage of the height of your browser window!</p> <p>I found this out the usual way: As a fingers-crossed Google search just before giving up and breaking into my Big Bag of Ugly and Fragile jQuery Hacks. I&#8217;m building a website for a painter friend, and we wanted his pieces to fill out the browser vertically. Here&#8217;s the rule that ended up working:</p> <pre class="language-css"><code>.painting { max-height: 90vh; width: auto; }</code></pre> <p>It&#8217;s <em>so simple</em> and <em>so useful</em> and browser support is <em>pretty good</em>. It&#8217;s not the only other wonderful CSS3 discovery I made that day, either, so stay tuned. And as a general thought: always Google your CSS dreams before assuming they can&#8217;t come true. There&#8217;s a lot of amazing stuff in CSS3, quite a bit more than I realized.</p> <div class="feedflare"> <a href="http://feeds.feedburner.com/~ff/Nometech?a=Z8ofLiUk0DQ:jeN2WqzEJuA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Nometech?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Nometech?a=Z8ofLiUk0DQ:jeN2WqzEJuA:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Nometech?i=Z8ofLiUk0DQ:jeN2WqzEJuA:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Nometech?a=Z8ofLiUk0DQ:jeN2WqzEJuA:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Nometech?i=Z8ofLiUk0DQ:jeN2WqzEJuA:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Nometech?a=Z8ofLiUk0DQ:jeN2WqzEJuA:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Nometech?i=Z8ofLiUk0DQ:jeN2WqzEJuA:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Nometech?a=Z8ofLiUk0DQ:jeN2WqzEJuA:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/Nometech?d=I9og5sOYxJI" border="0"></img></a> </div><img src="http://feeds.feedburner.com/~r/Nometech/~4/Z8ofLiUk0DQ" height="1" width="1" alt=""/> text/html 2017-01-19T01:51:04+01:00 http://abetterplanetwp.com A Better Planet 12 Essential Resources for Becoming a Stronger Blogger http://feedproxy.google.com/~r/Wplift/~3/XMtPTA390_o/resources-for-bloggers text/html 2017-01-19T01:00:08+01:00 http://abetterplanetwp.com A Better Planet All You Need To Know About PHP 7 For WordPress http://torquemag.io/2017/01/php-7-wordpress/ <p>We all know 2016 was the year of learning JavaScript deeply, but in his annual State of the Word, Matt Mullenweg presented developers with a new challenge, PHP. Specifically PHP 7. WordPress is moving toward updating everything to 7, and you don&#8217;t want to be left behind.</p> <p>We&#8217;ve created a guide to get you on the right step with PHP 7 and the new year. Whether you&#8217;ve already adopted the update or have just started looking into it, these posts will help you stay current.</p> <h2><a href="https://torquemag.io/2016/05/introduction-php-7-wordpress-users/">An Introduction to PHP 7 in WordPress</a></h2> <p><a href="https://torquemag.io/2016/05/introduction-php-7-wordpress-users/"><img class="alignnone size-large" src="https://s3-torquehhvm-wpengine.netdna-ssl.com/uploads/2016/05/php-7-featured.jpg" width="1100" height="400" /></a></p> <p>Still don&#8217;t understand the PHP 7 hype? This post is for you. Before getting into the details of the update, it&#8217;s important to know a bit about the PHP story and where it&#8217;s going in the future.</p> <p>Dig into why PHP 7 is twice as fast and uses fewer resources to use than 5.6, and look at why some developers haven&#8217;t been as quick to adopt the update. The article shares successful use cases from companies utilizing PHP 7. If you are still undecided, you&#8217;ll have everything you need to make a decision.</p> <h2><a href="https://torquemag.io/2017/01/developers-checklist-php-7/">Developer&#8217;s Checklist for PHP 7</a></h2> <p><a href="https://torquemag.io/2017/01/developers-checklist-php-7/"><img class="alignnone size-large" src="https://s3-torquehhvm-wpengine.netdna-ssl.com/uploads/2016/12/php_featured.png" width="1100" height="400" /></a></p> <p>Once you&#8217;ve decided to make the switch to PHP 7, you can use this comprehensive checklist to make sure you&#8217;re doing everything you need to. Go through how to upgrade to PHP 7 and take a look at the new features.</p> <p>When you&#8217;re a little more familiar with the update, this post will take you through exactly what you can expect including inconsistency fixes, a performance boost, backwards incompatibility changes, and more. Everything you&#8217;ll need to get started in one place.</p> <h2><a href="https://torquemag.io/2016/09/introduction-return-type-declarations-php7/">An Introduction to Return Type Declarations in PHP 7</a></h2> <p><a href="https://s3-torquehhvm-wpengine.netdna-ssl.com/uploads/2016/09/shutterstock_360291224.jpg"><img class="alignnone size-large" src="https://s3-torquehhvm-wpengine.netdna-ssl.com/uploads/2016/09/shutterstock_360291224.jpg" width="1100" height="400" /></a></p> <p>Now that you&#8217;ve downloaded the upgrade and are using PHP 7, take a look at our list of tutorials from Josh Pollock. This one takes a look at return type declarations.</p> <p>Though this is a fairly technical article, it will give you insight into a feature that differs from PHP 5. Go through exactly why developers are excited about return type declarations and how to use them.</p> <p>These three articles are a great introduction to PHP 7. Learn why you should make the update and what to do once you have.</p> <p><em>Did we miss any Torque PHP 7 stories? Let us know in the comments below. </em></p> <div id="author-bio-box" style="background: #f8f8f8; border-top: 2px solid #cccccc; border-bottom: 2px solid #cccccc; color: #333333"><h3><a style="color: #555555;" href="http://torquemag.io/author/eschiola/" title="All posts by Emily Schiola" rel="author">Emily Schiola</a></h3><div class="bio-gravatar"><img alt='Emily Schiola' src='http://s3-torquehhvm.wpengine.netdna-cdn.com/uploads/2015/10/Emily-Schiola_avatar_1444674499-70x70.jpg' class='avatar avatar-70 photo' height='70' width='70' /></div><a target="_blank" href="https://twitter.com/ESchiola" class="bio-icon bio-icon-twitter"></a><p class="bio-description">Emily Schiola is a Staff Writer at Torque. She loves good beer, bad movies, and cats.</p></div> <div class='ctx-subscribe-container ctx-personalization-container ctx_default_placement ctx-clearfix'></div><div class='ctx-social-container ctx_default_placement ctx-clearfix'></div><div class='ctx-module-container ctx_default_placement ctx-clearfix'></div><span class="ctx-article-root"></span><div id="epoch-width-sniffer"></div><p>The post <a rel="nofollow" href="http://torquemag.io/2017/01/php-7-wordpress/">All You Need To Know About PHP 7 For WordPress</a> appeared first on <a rel="nofollow" href="http://torquemag.io">Torque</a>.</p> text/html 2017-01-18T21:10:44+01:00 http://abetterplanetwp.com A Better Planet How to add Awesome Typography in WordPress with Typekit http://www.wpbeginner.com/plugins/how-to-add-awesome-typography-in-wordpress-with-typekit/ <p>Have you ever wondered how designers are able to use beautiful custom web fonts on their sites? Often they&#8217;re adding custom fonts to WordPress using Typekit, an Adobe service that gives you access to high quality fonts. In this article, we&#8217;ll show you how to add Typekit fonts in WordPress to improve your typography.</p> <p><img title="Typekit Fonts in WordPress" src="http://cdn.wpbeginner.com/wp-content/uploads/2010/09/typekitfonts.png" alt="Typekit Fonts in WordPress" width="550" height="300" class="alignnone size-full wp-image-40486" /></p> <h4>Why Use Typekit Fonts?</h4> <p>Typekit is a popular subscription-based font service that can save you a lot of money. Instead of paying for individual font licenses, which can get quite expensive, you can access their whole library of hundreds of fonts for free or for a flat yearly rate.</p> <p>The Typekit library is a massive collection of over 1,000 fonts. Some of the most beautiful fonts that you can find on the web are available through Typekit, an Adobe service.</p> <p>Their basic free plan comes with access to 230+ fonts, and you can use 2 font families on one website for free. Other plans start from $49.99 to $99.99 per year.</p> <p>These awesome Typekit fonts can be easily added to any website without slowing down your page load speeds. The fonts are served from Adobe&#8217;s CDN and load at much faster speeds than if you were to host them on your own site.</p> <h4>Typekit for WordPress Video Tutorial</h4> <p><span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='520' height='323' src='http://www.youtube.com/embed/htGdt2KAfdA?version=3&#038;rel=0&#038;fs=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;wmode=transparent' frameborder='0'></iframe></span></p> <p>If you don’t like the video or need more instructions, then you can continue reading below.</p> <h4>Why Use Custom Web Fonts on WordPress?</h4> <p>Typography plays a crucial role in the design of your site.</p> <p>Choosing the right fonts will clearly communicate your personality and message to your readers. No matter what kind of image you want to portray &#8212; professional, friendly, casual, experienced &#8212; the fonts on your website can help project the right image.</p> <p>By using the right set of fonts, you can leave a lasting impression. Instead of looking like every other site on the web, your text looks noticeably different. Selecting the proper font for your WordPress site can make your website go from a simple design to an aesthetically pleasing and stunning work of art.</p> <p>The right custom web fonts can:</p> <ul> <li>increase conversion rates</li> <li>lower your site&#8217;s bounce rate</li> <li>increase time spent on your website</li> <li>create a memorable experience for users</li> </ul> <p>Ready to get started with Typekit fonts? Here&#8217;s how to use Typekit to customize your WordPress design.</p> <h4>How to Get Started With Typekit</h4> <p>First you&#8217;ll need to create a Typekit account. To do this, just visit <a href="https://typekit.com/plans" target="_blank" rel="nofollow">Typekit.com</a> to compare the available plans.</p> <p>You&#8217;ll need to choose which plan you want to sign up for. The free plan limits you to one website and includes access to limited fonts. You may want to get started with the free plan to try it out, and then upgrade later on. The upgrade gives you a larger library of fonts, and you can use them on more websites.</p> <p><img class="alignnone size-full wp-image-26804" title="Typekit Subscription Plans" src="http://cdn3.wpbeginner.com/wp-content/uploads/2010/09/typekit-subscriptions.jpg" alt="Typekit Subscription Plans" width="520" height="333" /></p> <p>The next step is creating a kit. The kit lets you put together a specific library of fonts and settings for your website, so Typekit loads only the files and code needed. To create your kit, add your site name and domain name and then click on <strong>Continue</strong>.</p> <p><img class="alignnone size-full wp-image-26805" title="Creating a kit for your site" src="http://cdn4.wpbeginner.com/wp-content/uploads/2010/09/creating-kit.png" alt="Creating a kit for your site" width="520" height="287" /></p> <p>After you&#8217;re done filling out your information for your kit, Typekit will give you a bit of JavaScript code to add to your site. You can copy and paste this code in a text editor like Notepad to save it for now. We&#8217;ll add it to your site in the next step of this tutorial.</p> <p>For now, you can get started choosing your fonts. You can browse the font library and filter by options like classification, weight, width, x-height, and more.</p> <p><img class="alignnone size-full wp-image-26806" title="Choosing a font from Typekit library" src="http://cdn4.wpbeginner.com/wp-content/uploads/2010/09/choosing-typekit-font.png" alt="Choosing a font from Typekit library" width="520" height="345" /></p> <p>When you see a font you like, you can click on it for more details and examples. If you&#8217;d like to add it to your web kit, click the <strong>Web Use: Add to Kit</strong> button on the right side.</p> <p><img class="size-full wp-image-40457 alignnone" title="add a typekit font to your web kit" src="http://cdn4.wpbeginner.com/wp-content/uploads/2017/01/typekit-add-to-kit.jpg" alt="add a typekit font to your web kit" width="550" height="286" /></p> <p>This will bring up a pop-up where you need to add the font you selected to the kit you just created.</p> <p><img class="size-full wp-image-40458 alignnone" title="adding your custom web font to a kit" src="http://cdn.wpbeginner.com/wp-content/uploads/2017/01/add-typekit-font-to-kit.jpg" alt="adding your custom web font to a kit" width="550" height="346" /></p> <p>Now you can click the <strong>Publish</strong> button to save the changes to your kit.</p> <p><img class="size-full wp-image-40459 alignnone" title="publish your kit to save your changes" src="http://cdn4.wpbeginner.com/wp-content/uploads/2017/01/typekit-publish-kit.jpg" alt="publish your kit to save your changes" width="550" height="380" /></p> <p>That&#8217;s all! Your font kit is now ready to use.</p> <h4>Adding Your Typekit Fonts in WordPress</h4> <p>The easiest way to add your new custom web fonts to your <a href="http://www.wpbeginner.com/start-a-wordpress-blog/" title="Ultimate Guide: How to Start a WordPress Blog (Step by Step)">WordPress blog</a> is by using a WordPress Typekit plugin.</p> <p>We recommend the <a title="Typekit Fonts for WordPress" href="https://wordpress.org/plugins/typekit-fonts-for-wordpress/" target="_blank" rel="nofollow">Typekit Fonts for WordPress</a> plugin. After installing and activating the plugin, you can visit <strong>Settings » Typekit Fonts</strong> to configure the plugin.</p> <p><img class="size-full wp-image-40460 alignnone" title="using a wordpress typekit plugin to customize fonts" src="http://cdn2.wpbeginner.com/wp-content/uploads/2017/01/add-typekit-to-wordpress-1.png" alt="using a wordpress typekit plugin to customize fonts" width="550" height="582" /></p> <p>First you&#8217;ll need to paste the JavaScript code you saved earlier in the Typekit embed code field. After that, you can add <a title="What is CSS? How to Use CSS in WordPress?" href="http://www.wpbeginner.com/glossary/css/">CSS selectors</a> to specify where you want to use the font on your site.</p> <p>In the screenshot above we added the font to the <code>h1.site-title</code> CSS selector.</p> <p>Your WordPress theme may use different classes for different elements. You&#8217;ll need to use the Inspect Element tool in your web browser to find out those CSS classes. You may also want to checkout our <a title="Default WordPress Generated CSS Cheat Sheet for Beginners" href="http://www.wpbeginner.com/wp-themes/default-wordpress-generated-css-cheat-sheet-for-beginners/">WordPress generated CSS cheat sheet</a> for beginners to help you get started.</p> <p><img class="alignnone size-full wp-image-26809" title="Using Inspect Element tool in Google Chrome to find CSS classes" src="http://cdn3.wpbeginner.com/wp-content/uploads/2010/09/chrome-inspect-element.png" alt="Using Inspect Element tool in Google Chrome to find CSS classes" width="520" height="335" /></p> <p>That&#8217;s all! We hope this article helped you learn how to add awesome typography in WordPress with Typekit. You may also want to take a look at our guide on how to <a title="How to Add Google Web Fonts in WordPress Themes" href="http://www.wpbeginner.com/wp-themes/how-add-google-web-fonts-wordpress-themes/">add Google web fonts in your WordPress themes</a>.</p> <p>If you liked this article, then please subscribe to our <a title="WPBeginner on YouTube" href="http://youtube.com/wpbeginner" target="_blank" rel="nofollow">YouTube Channel</a> for WordPress video tutorials. You can also find us on <a title="WPBeginner on Twitter" href="http://twitter.com/wpbeginner" target="_blank" rel="nofollow">Twitter</a> and <a title="WPBginner on Facebook" href="https://www.facebook.com/wpbeginner" target="_blank" rel="nofollow">Facebook</a>.</p> <p>The post <a rel="nofollow" href="http://www.wpbeginner.com/plugins/how-to-add-awesome-typography-in-wordpress-with-typekit/">How to add Awesome Typography in WordPress with Typekit</a> appeared first on <a rel="nofollow" href="http://www.wpbeginner.com">WPBeginner</a>.</p> text/html 2017-01-18T21:00:49+01:00 http://abetterplanetwp.com A Better Planet The Ultimate WordPress Development Environment https://premium.wpmudev.org/blog/ultimate-wordpress-development-environment/ text/html 2017-01-18T19:00:10+01:00 http://abetterplanetwp.com A Better Planet How to Automatically Publish Your Posts to Social Media http://feedproxy.google.com/~r/WPMayor/~3/2WRCDDccow0/ text/html 2017-01-18T11:53:53+01:00 http://abetterplanetwp.com A Better Planet Dev Chat Agenda for January 18th (4.7.2 week 1) https://make.wordpress.org/core/2017/01/18/dev-chat-agenda-for-january-18th-4-7-2-week-1/ <p>This is the agenda for the weekly dev meeting on <a href="http://www.timeanddate.com/worldclock/fixedtime.html?iso=20170118T2100"><abbr class="date" title="2017-01-18T21:00:00+00:00">January 18, 2017 at 15:00 CST</abbr></a>:</p> <ul> <li>Schedule reminder: 4.7.1 launched on January 11th (<a href="https://wordpress.org/news/2017/01/wordpress-4-7-1-security-and-maintenance-release/">News blog post</a>); 4.7.2 lead &amp; timing to be discussed</li> <li>REST API team update</li> <li>Customizer team update (also, <a href="https://make.wordpress.org/core/2017/01/17/customization-meeting-notes-january-16-2017/">prior meeting notes</a>)</li> <li>Read: <a href="https://make.wordpress.org/core/2017/01/17/editor-technical-overview/">Editor Technical Overview</a></li> <li>General announcements</li> </ul> <p>If you have anything to propose to add to the agenda or specific items related to the above, please leave a comment below. See you there!</p> text/html 2017-01-17T19:34:01+01:00 http://abetterplanetwp.com A Better Planet Ninja Forms Free vs Ninja Forms Premium – Is It Worth Paying Extra? https://winningwp.com/ninja-forms-free-vs-ninja-forms-premium/ text/html 2017-01-16T20:00:59+01:00 http://abetterplanetwp.com A Better Planet Gravity Forms Review: Is It Worth the Hype? https://www.wpkube.com/gravity-forms-review/ text/html 2017-01-13T07:20:47+01:00 http://abetterplanetwp.com A Better Planet What is second mover advantage? Entering a market late. http://chrislema.com/second-mover-advantage/ <h3>The stress of not being a market pioneer</h3> <p>It&#8217;s a regular question that I hear when talking with people about new products. Especially in the WordPress ecosystem, people regularly ask the question.</p> <p><em>Are all the good product ideas already taken?</em></p> <p>The underlying assumption is that once a single product exists, or once a great product exists, that there is no room for anyone else. But it&#8217;s not true, is it?</p> <p>Market pioneers &#8211; the first mover in a market that creates a new and compelling offer &#8211; are awesome and they get a lot of benefit from being early. Think Coca-Cola.</p> <p>But we all like variety and choice, right? We want more than one kind of car, more than one kind of hotel, more than one kind of coffee. The stress of not being a market pioneer is real, but something we shouldn&#8217;t stress about. Especially if it&#8217;s something that can&#8217;t be helped.</p> <p>My answer, in case you wondered, is always this:</p> <p><strong>No, the good product ideas aren&#8217;t all taken.<br /> There&#8217;s tons of room to innovate.</strong></p> <p>In the WordPress space, this is when I mention <a href="http://chrislema.com/ninjaforms" target="_blank">Ninja Forms</a> &#8211; a company that appeared in the WordPress ecosystem years after there was a flagship product (<a href="http://chrislema.com/getgravityforms" target="_blank">Gravity Forms</a>).</p> <p>In 2011 I was telling people that the only plugin to buy &#8211; of all the plugins out there, not just form plugins &#8211; was Gravity Forms. People told the Ninja Forms folks that there was no room to step into the space. And that was a few years ago.</p> <p>But if you look at their growth in the last 18 months &#8211; just the last 18 months &#8211; you&#8217;ll see they&#8217;ve gone from 200k installs to over 700k active installations. For the people who don&#8217;t do math in their heads, that&#8217;s 350% growth. In 18 months! Years after people had heard of and were using a competitor&#8217;s product.</p> <p><em>There&#8217;s always room for a new and differentiated product.</em></p> <h3>The definition of second mover advantage</h3> <p>When I talk about a second mover advantage, I&#8217;m really talking about entering the market after someone else has defined the playing field. You might enter right after someone else (a fast follower), or you might enter after several players have arrived (late market entry).</p> <p>Here&#8217;s the good news: when you don&#8217;t enter a market as a pioneer  &#8211; whether you&#8217;re a fast follower or a late market entry &#8211; you can enjoy several advantages that aren&#8217;t available to the first movers.</p> <p>The second mover advantage eliminates the high costs and risks of finding product market fit.</p> <ul> <li>You spend less on R&amp;D</li> <li>You spend less on market education</li> <li>You deal with less risk of product acceptance</li> <li>You potentially spend less on customer acquisition</li> </ul> <p><strong>The truth is that you don&#8217;t have to be first to find success.</strong></p> <p>As Vala Afshar reminds us, Google wasn&#8217;t the first search engine.</p> <blockquote class="twitter-tweet" data-lang="en"> <p dir="ltr" lang="en">.<a href="https://twitter.com/Google">@google</a> was the 21st search engine to enter market in 1998.</p> <p>Know your competition, but don&#8217;t copy them. <a href="https://twitter.com/hashtag/CES2017?src=hash">#CES2017</a> <a href="https://t.co/kSYEaaBDKI">pic.twitter.com/kSYEaaBDKI</a></p> <p>— Vala Afshar (@ValaAfshar) <a href="https://twitter.com/ValaAfshar/status/817847162151301120">January 7, 2017</a></p></blockquote> <p><script src="//platform.twitter.com/widgets.js" async="" charset="utf-8"></script></p> <p>Google isn&#8217;t the only <a href="https://www.quora.com/What-are-examples-of-markets-where-the-second-(or-other-later-entrant)-won" target="_blank">example of a late market entry that ended up having tons of success.</a></p> <h3>The advantages of a late market entry strategy</h3> <p>There are a lot of reasons why entering a market later can be beneficial. Here are three.</p> <p><strong>Customers can be serviced better.</strong> Whenever everyone is mad at the leader in the space, but isn&#8217;t switching because the switching costs are too high, or the risks are more than anyone wants to take on, a late market entry has a shot. I heard the founder of <a href="http://stripe.com/" target="_blank">Stripe</a> (which I love) talking about what made them initially successful. He talked about tone, emails and documentation. I agreed with all of it. But I would have started with, &#8220;We weren&#8217;t PayPal.&#8221;</p> <p><strong>Product gaps can be seen more easily.</strong> If there are a couple of players in the space that offer similar products, there are likely some things that everyone has taken for granted. Customers have come to learn that this is just the way things are. Until someone innovates. But that innovation often requires seeing the gap &#8211; and that&#8217;s easier when you&#8217;re not the first mover who created the category. <a href="http://airbnb.com" target="_blank">AirBnB</a>&#8216;s refund policy is a no-brainer now, but VRBO didn&#8217;t have anything like it for years.</p> <p><strong>Acquiring customers can be cheaper.</strong> Imagine being the first person to sell a telephone. How does that pitch go? When you&#8217;re trying to sell a new product that requires you to educate a market in order to do so, you&#8217;ll have a high cost of sale. When you arrive to the market after someone has already done it, it&#8217;s a lot cheaper. One of my startups was a pioneer that simply ran out of money educating a market, and it allowed others to step in, thank us, and take the market we&#8217;d trained. That was a painful and costly lesson!</p> <h3>A Blue Ocean Strategy Framework</h3> <p>There&#8217;s a book I enjoyed &#8211; mostly because of the stories in there &#8211; called <a href="http://amzn.to/2ipK36x" target="_blank">Blue Ocean Strategy</a>. It covers a lot of material on stepping into an uncontested space rather than jumping into the fray where all the competition exists.</p> <p><a href="https://chrislema.com/wp-content/uploads/2017/01/blue-ocean-framework.png"><img class="aligncenter size-medium wp-image-44694" src="https://chrislema.com/wp-content/uploads/2017/01/blue-ocean-framework-650x425.png" alt="blue-ocean-framework" width="650" height="425" /></a></p> <p>One of the things I love in the book is a framework of four questions that I use often:</p> <p><strong>What will you eliminate?</strong> Are there factors that have become commonplace in your space that you can eliminate completely? Just because everyone else is offering it, must you? What if you take it away from your product complete? It could lower your costs &#8211; which could increase your margin.</p> <p><strong>What will you introduce?</strong> Are there completely new features that you could introduce that no one is doing right now &#8211; for whatever reason? Sometimes you&#8217;ll discover that entering the market late allows you to create something that others haven&#8217;t been able to because of their existing infrastructure or approach.</p> <p><strong>What will you reduce?</strong> Are there factors that you can reduce &#8211; whether they&#8217;re friction points or costly attributes of your product &#8211; that you can adjust? A lot of folks punt to pricing but I don&#8217;t recommend that. Becoming a low-priced leader is hard work.</p> <p><strong>What will you improve?</strong> Are there factors that are frustrating people that you can improve? What factors demand an improvement? As you step into a market late, your approach may allow you to improve things far cheaper or faster than existing players who are living with existing constraints.</p> <h3>This is the journey I&#8217;m on right now!</h3> <p>In case you didn&#8217;t know, I&#8217;m about 5 weeks into a new role as the VP of Products at <a href="https://www.liquidweb.com/" target="_blank">Liquid Web</a> &#8211; a $100 million dollar hosting company that is stepping into the Managed WordPress space after ten or more companies have already created and educated a market. We&#8217;re not a fast follower. We&#8217;re a late market entrant.</p> <p>I write this post as much for myself as I do for you. To remind myself of what I know is true and what I&#8217;ve shared with all the folks I&#8217;ve coached over the years. The framework above, and the questions it asks are the ones I ask myself regularly, in my new role.</p> <p>So trust me when I tell you, if you&#8217;re reading this thinking about your situation, I&#8217;m in the same boat with you.</p> <p><em>And if you want to check out our solution (and watch our progression as we answer these questions), you can get a discount by using my coupon code: LEMAFRIENDS when you <a href="https://www.liquidweb.com/configure/mwp-platform?WordPressSites=10" target="_blank">purchase our Managed WordPress solution</a> &#8211; it&#8217;s 33% off, for 6 months.</em></p> <p>The post <a rel="nofollow" href="http://chrislema.com/second-mover-advantage/">What is second mover advantage? Entering a market late.</a> appeared first on <a rel="nofollow" href="http://chrislema.com">ChrisLema.com</a>.</p> text/html 2017-01-13T05:26:05+01:00 http://abetterplanetwp.com A Better Planet New Year’s resolutions for WordPress developers https://poststatus.com/new-years-resolutions-wordpress-developers/ <p><em><strong>Editor&#8217;s Note:</strong></em> This is a guest post by <a href="https://poststatus.com/profiles/jack-lenox/">Jack Lenox</a>. Jack is a developer at Automattic and hails from the United Kingdom.</p> <p>For just over a year now, I have been working on the <a href="https://vip.wordpress.com/">WordPress.com VIP</a> team at Automattic. I had been working at Automattic for the two years prior to this – and had been developing sites with PHP and WordPress for almost ten years prior to that. So you might imagine that I had a pretty good handle on developing stuff with WordPress.</p> <p>And you would be wrong. Getting started with the VIP team was an eye-opening and occasionally terrifying learning experience, occasionally resulting in me thinking: &#8220;please excuse me for a moment while I go and fix some horrible vulnerability in all of my WordPress sites.&#8221;</p> <p>Recently, I have cautiously found myself feeling slightly more comfortable with my position on the team. For some time, I have been wanting to document the most interesting and impactful things that I have learned in the past year.</p> <p>As some readers may know, a significant part of a developer&#8217;s job on the VIP team is reviewing code. Thus, with us being at the start a new year, I have hereby compiled some of the most interesting best practices I have discovered as a list of New Year&#8217;s Resolutions:</p> <h3>1. Use strict comparison operators</h3> <p>One of the many quirks of PHP is that it enjoys juggling. In particular, it enjoys <a href="http://php.net/manual/en/language.types.type-juggling.php">juggling types</a>. This means that without explicit instruction, PHP doesn&#8217;t see a difference between a string of &#8220;string&#8221;, an integer of 0, and a boolean value of <code>true</code>.</p> <p>So for example this:</p> <pre><code>$var = 0; if ( $var == 'safe_string' ) { return true; } </code></pre> <p>Will return true. I know, what?! The easy solution here is to simply use strict comparison operators.</p> <p>So that&#8217;s <code>===</code> instead of <code>==</code>, and <code>!==</code> instead of <code>!=</code>. This pops up in a few other places too. By default the <a href="http://php.net/manual/en/function.in-array.php"><code>in_array()</code></a> function has its strict parameter set to false.</p> <p>So:</p> <pre><code>in_array( 0, ['safe_value', 'another string'] ); </code></pre> <p>Will return true. To fix this, simply pass a third parameter of <code>true</code>.</p> <p>While we&#8217;re here, there&#8217;s one other form of comparison we should be aware of, and that&#8217;s <a href="http://php.net/manual/en/function.hash-equals.php"><code>hash_equals()</code></a>. This provides a string comparison that prevents timing attacks.</p> <p>While a relatively uncommon form of attack on the web, it&#8217;s worth being aware of a timing attack. What is it? Well, when PHP compares two strings, it compares them one character at a time.</p> <p>So in the case of something like this:</p> <pre><code>$submitted_password = $_POST['password']; // For argument's sake, let's say it's "pa45word" $password = "pa55word"; if ( $submitted password === $password ) { go_forth(); } </code></pre> <p>PHP&#8217;s thought process in human terms is: Is the first character of each string p? Yes it is. Is the second character of each string a? Yes it is. And so on.</p> <p>It will do this until it realizes that the third characters differ and at that point it will bail. Thus, with sophisticated timing software, a password can gradually be worked out by calculating how long the process is taking. If the process takes slightly longer with one character than it does with every other character, an attacker will know that they have worked out the first character.</p> <p>Automated processes can keep doing this until the entire password is worked out. <code>hash_equals()</code> will compare two values, but will not bail early if it detects a difference.</p> <p>In conclusion, if you&#8217;re comparing sensitive values, use <code>hash_equals()</code>!</p> <h3>2. Use Yoda condition checks, you must</h3> <p>The <a href="https://make.wordpress.org/core/handbook/best-practices/coding-standards/php/#yoda-conditions">WordPress PHP Coding Standards</a> suggest that you should: &#8220;always put the variable on the right side and put constants, literals or function calls on the left side.&#8221; Initially, this might just sound like a bit of pedantry, but it actually has a very practical application.</p> <p>Consider how catastrophic the following typo could be:</p> <pre><code>if ( $session_authorized = true ) { unleash_the_secrets(); } </code></pre> <p>Oh dear, instead of checking that <code>$session_authorized</code> is true, I am instead assigning the value of true to that variable.</p> <p>Now the secrets are being unleashed to whoever wants them. This could easily be missed when checking the code for bugs, even by a reviewer.</p> <p>Now imagine if the first line was expressed as:</p> <pre><code>if ( true = $session_authorized ) { </code></pre> <p>Well, it doesn&#8217;t. We can&#8217;t assign a variable to the static boolean value of <code>true</code>.</p> <p>Hopefully it won&#8217;t take us too long to work out why our code is still broken, but the secrets remain safe. So we&#8217;re good! <img src="https://s.w.org/images/core/emoji/2.2.1/72x72/1f600.png" alt="😀" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p> <h3>3. ABE. A Always, B Be, E Escaping. Always Be Escaping. ALWAYS Be Escaping.</h3> <p>Not having a firm grasp of the concepts of validation, sanitization and escaping can make you a very dangerous developer indeed.</p> <p>To the extent that libraries like React escape all output by default and to bypass this functionality, you have to use the attribute: <code>dangerouslySetInnerHTML</code></p> <p>Validation is checking that what your code is being passed is even vaguely what it&#8217;s expecting. So for instance, if we&#8217;re expecting an integer, we can use something like: <code>$zipcode = intval( $_POST['my-zipcode'] )</code></p> <p>The <code>intval()</code> function returns its input as an integer and defaults to zero if the input was a non-numeric value. So while this won&#8217;t prevent our code from being passed zipcodes that aren&#8217;t valid, it does protect our code from being passed anything that isn&#8217;t a number.</p> <p>Naturally, we could go a step further to see if the zipcode actually appears to be valid. For example, 1111111111111 is not a valid zip code, but <code>intval()</code> doesn&#8217;t know that.</p> <p>Fortunately, beyond integers, WordPress has <a href="https://codex.wordpress.org/Data_Validation#Input_Validation">a bunch of handy helper functions for almost every data type</a> including my favourite: <code>is_email().</code></p> <p>Sanitization is cleaning input to make sure that it&#8217;s safe in the context where we want to use it. This prevents one of the most common forms of security vulnerability, an <a href="https://www.owasp.org/index.php/SQL_injection">SQL injection attack</a>.</p> <p>We also sanitize to fix practical things, like checking for invalid UTF-8 characters. WordPress has a class of <a href="https://codex.wordpress.org/Data_Validation#Input_Validation"><code>sanitize_*()</code> helper functions</a>; here&#8217;s an example of how one looks in the wild:</p> <pre><code>$title = sanitize_text_field( $_POST['title'] ); update_post_meta( $post-&gt;ID, 'title', $title ); </code></pre> <p>Therefore no matter what garbage we might have been passed in <code>$_POST['title']</code>, it won&#8217;t cause any real problems.</p> <p>Escaping is similar to sanitization, but instead it is cleaning what we&#8217;re sending out, rather than what we&#8217;re taking in. A major reason for doing this is to prevent another of the most common forms of security vulnerability, a <a href="https://www.owasp.org/index.php/XSS">Cross-site Scripting (or XSS) attack</a>.</p> <p>We want to clean our output to ensure we aren&#8217;t accidentally echoing out something very dangerous that we didn&#8217;t realize we were inadvertently storing in our database (or perhaps fetched from an API).</p> <p>WordPress has <a href="https://codex.wordpress.org/Data_Validation#Output_Sanitization">a bunch of very useful helper functions here</a>. Some common examples of these in the wild are:</p> <pre><code>&lt;h4&gt;&lt;?php echo esc_html( $title ); ?&gt;&lt;/h4&gt; </code></pre> <pre><code>&lt;img alt="" src="&lt;?php echo esc_url( $great_user_picture_url ); ?&gt;" /&gt; </code></pre> <pre><code>&lt;ul class="&lt;?php echo esc_attr( $stored_class ); ?&gt;"&gt; </code></pre> <p>There is also <a href="https://developer.wordpress.org/reference/functions/wp_kses/"><code>wp_kses()</code></a> which can be used on everything that is expected to contain HTML, and will filter out elements that are not explicitly allowed.</p> <p>As a general rule, the <code>the_*()</code> and <code>get_the_*()</code> theme functions are already escaped. However, the <code>get_bloginfo()</code> function, for example, is not escaped.</p> <p>For further information here, I highly recommend checking out the VIP team&#8217;s documentation on <a href="https://vip.wordpress.com/documentation/vip/best-practices/security/validating-sanitizing-escaping/">Validating, Sanitizing, and Escaping</a>.</p> <h3>4. Stop trusting everything</h3> <p>Don&#8217;t trust user input. Don&#8217;t trust what&#8217;s in your database. Don&#8217;t trust any variables.</p> <p>Treat every variable with contempt.</p> <p>This way, even if, for example, someone sneaks some dodgy XSS code into your database, it&#8217;ll still get escaped on output and your site will be better protected.</p> <h3>5. Avoid inserting HTML directly into the document (when using JavaScript)</h3> <p>Doing something like this is dangerous because the data that we&#8217;re using could include many more DOM elements that dramatically alter the anticipated behavior of this code, and make it vulnerable to XSS attacks:</p> <pre><code>jQuery.ajax({ url: 'http://any-site.com/endpoint.json' }).done( function( data ) { var link = '&lt;a href="' + data.url + '"&gt;' + data.title + '&lt;/a&gt;'; jQuery( '#my-div' ).html( link ); }); </code></pre> <p>Instead, we should programmatically create DOM nodes and append them to the DOM. So the above instead becomes this:</p> <pre><code>jQuery.ajax({ url: 'http://any-site.com/endpoint.json' }).done( function( data ) { var a = jQuery( '&lt;a /&gt;' ); a.attr( 'href', data.url ); a.text( data.title ); jQuery( '#my-div' ).append( a ); }); </code></pre> <p>This is how a library like React does things behind the scenes. You can read more about this in <a href="https://vip.wordpress.com/2015/03/25/preventing-xss-in-javascript/">a wonderful post about preventing XSS attacks in JavaScript</a> by my colleague, Nick Daugherty.</p> <h3>6. Review code</h3> <p>Have you ever reviewed a plugin before using it? I know, who&#8217;s got time for that right? I&#8217;ll tell you who: you.</p> <p>I have come to realize that reviewing code is possibly one of the best exercises for improving as a developer. Even if you&#8217;re quite new to programming or development, and you still feel pretty green, you really should give it a go.</p> <p>A great way to start is to review the next plugin you decide to use on your website. Before activating it, pop it open in your text editor of choice, and just spend some time scanning through it to understand what it does.</p> <p>A method I like to use here is to interpret each line of the code in simple English. You can even say it loud if you like – assuming you&#8217;re not sitting in a café or co-working space where people might become worried about you.</p> <p>You might be surprised at how often you find bugs and quirks in the code, or that the code isn&#8217;t conforming to the best practices outlined above. And if you discover issues, why not create a patch? Or if the plugin is on GitHub, create a pull request.</p> <p>You can also review your own code. A great method for doing this is to never deploy code straight into production. Instead, leave it on the day you finish it, and review it line by line in the morning. This method is easiest to adopt if you&#8217;re using something like GitHub where you can create a pull request with the changes, then review the pull request yourself the next day before merging it.</p> <p>In this vein, I highly recommend watching my colleague, Ryan Markel&#8217;s, <a href="http://wordpress.tv/2016/12/10/ryan-markel-code-review-keeping-things-secure-clean-and-performant/">fantastic talk on this topic from WordCamp US 2016</a>.</p> <h3>7. Upgrade your tools (or at least use PHP_CodeSniffer)</h3> <p>There are lots of tools that help make web development easier, but if you&#8217;re doing a lot of WordPress development, the most valuable is probably <a href="https://github.com/squizlabs/PHP_CodeSniffer">PHP<em>CodeSniffer</em></a>. It reads your code and automatically reviews it for bugs and coding standards inconsistencies while you type.</p> <p>It&#8217;s kind of like a spell checker, but for code. No matter how good your English is, you still use spell check right? So why wouldn&#8217;t you spell check your code?</p> <p>Here&#8217;s a bonus for you: the WordPress VIP Coding Standards are available by default with the <a href="https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards">WordPress Coding Standards for PHPCodeSniffer</a>. So with that, it&#8217;ll check if you&#8217;re following most of the above resolutions.</p> <p>As you might imagine, using PHP_CodeSniffer also really helps highlight potential problems when you&#8217;re reviewing plugins and other people&#8217;s code.</p> <h3>8. Be curious</h3> <p>Far too often, I&#8217;m guilty of searching to try to find out what a particular WordPress function does, or scanning Stack Overflow to see if someone&#8217;s having the same problem as me.</p> <p>I have historically had a bad habit of seeing much of what WordPress does as magic, and avoiding getting too deep in the inner workings. But actually, it can be very beneficial to find out answers for yourself, instead of trying to find others who have already done the work.</p> <p>In essence, WordPress is quite simple. The code largely consists of functions taking arguments, and doing things with those arguments, and passing the results onto other functions taking arguments, and so on.</p> <p>It doesn&#8217;t take much to start unpicking something, and working out exactly what&#8217;s happening behind the scenes. So next time you&#8217;re struggling with a function, try going straight to looking at what the function actually does.</p> <p>Personally I find the <a href="https://github.com/wordpress/wordpress">WordPress GitHub repo</a> that mirrors the core SVN repo to be a very useful way of doing this.</p> <p>The WordPress strapline is that &#8220;code is poetry&#8221;, and for its flaws I find that on the most part, the WordPress codebase is very readable, if nothing else! <img src="https://s.w.org/images/core/emoji/2.2.1/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p> <p>I&#8217;ll conclude by taking this opportunity to wish you a very happy and prosperous new year!</p> <p><strong><em>Note</em>:</strong> Some of the above has been gleefully plagiarized from <a href="https://vip.wordpress.com/documentation/vip/code-review-what-we-look-for/">WordPress.com VIP&#8217;s Code Review documentation</a>. It&#8217;s an Aladdin&#8217;s cave of useful advice, and I highly recommend working your way through it as and when you can.</p> text/html 2017-01-13T05:12:52+01:00 http://abetterplanetwp.com A Better Planet Moving your business up channel with Josh Strebel of Pagely https://mattreport.com/moving-business-channel-josh-strebel-pagely/ text/html 2017-01-12T15:59:25+01:00 http://abetterplanetwp.com A Better Planet Thirty-Three https://ma.tt/2017/01/thirty-three/ <p>I&#8217;m taking it easy this week, nothing too crazy &#8212; just sharing good meals and wine with friends. Which is probably a good example of my goals for the year: putting family and loved ones first, slowing down (<a href="https://ma.tt/2014/10/run-better/">to go further</a>), and deliciousness. (<a href="https://www.singlethreadfarms.com/">Single Thread Farms</a> blew me away.)</p> <p>2016 was a year of incredible contrasts: it was the saddest and most challenged I&#8217;ve ever been with the <a href="https://ma.tt/2016/04/in-memoriam-chuck-mullenweg/">passing of my father</a>, and while that overshadowed everything there were also bright moments of coming closer to family, deepening friendships, and growing professionally with incredible progress from both WordPress and Automattic. That momentum on the professional side is carrying through and right now I&#8217;m the most optimistic I can recall, and thrilled to wake up and get to work every day with the people I do.</p> <p>I talked about trying to spend longer stretches of time in fewer places, and that definitely happened. I flew 162k fewer miles than <a href="https://ma.tt/2016/01/thirty-two/">the year before</a>, and visited 35 fewer cities. My blogging decreased a lot too &#8212; from 252 posts in 2015 to 76 posts in 2016, but the posts I did write were at least 50% longer. I made it to 9 more of the Top 50 restaurants and stand currently at 50% of <a href="http://www.theworlds50best.com/list/1-50-winners">the list</a>. I finished <a href="https://www.pinterest.com/saxmatt/books-in-2016/">22 books</a>, including a lot more fiction including my first few graphic novels like Ex Machina, Y: The Last Man, and Watchmen. I watched 35 movies, 9 of which were from the Marvel universe on a single flight from Cape Town to Dubai.</p> <p><a href="https://ma.tt/2016/01/thirty-two/">Last year</a> I said, &#8220;it’s exciting to make the most of the opportunity that the volatility, love, loss, glory, failure, inspirations, and setbacks that 2016 will bring.&#8221; I didn&#8217;t know how right I would be, and wish I hadn&#8217;t been.</p> <p>This year doesn&#8217;t start with new plans, but rather three intentions continued from a few months ago. I <a href="https://ma.tt/2017/01/rebirth-and-yellow-arrows/">revealed one yesterday</a>, and promised I would expand today on the others, so here they are:</p> <ol> <li><strong>Symmetry</strong> &#8212; Balance in all things, including my body which is stronger on my right side and much tighter on my left side. We also need symmetry in WordPress between the .org and .com products which differ too much.</li> <li><strong>Stillness</strong> &#8212; In echoes <a href="https://www.amazon.com/Art-Stillness-Adventures-Going-Nowhere-ebook/dp/B00JSRQSJS">of Pico Iyer</a>, so much of my life in my 20s was about movement, and &#8220;going places to be moved.&#8221; In my 30s I&#8217;m looking inward. As Saint Augustine said in Book X, chapter 8 of <em>Confessions</em>: &#8220;Men go forth to wonder at the heights of mountains, the huge waves of the sea, the broad flow of the rivers, the vast compass of the ocean, the courses of the stars, and they pass by themselves without wondering.&#8221;</li> <li><strong>Yellow Arrows</strong> &#8212; The idea that there are clear indications of where to go next at every fork in the road, and if not you should paint them. I wrote more <a href="https://ma.tt/2017/01/rebirth-and-yellow-arrows/">on this  yesterday</a>.</li> </ol> <p>Previously: <a href="https://ma.tt/2003/01/bday/">19</a>, <a href="https://ma.tt/2004/01/so-im-20/">20</a>, <a href="https://ma.tt/2005/01/hot-barely-legal-matt/">21</a>, <a href="https://ma.tt/2006/01/matt-22/">22</a>, <a href="https://ma.tt/2007/01/twenty-three/">23</a>, <a href="https://ma.tt/2008/01/twenty-four/">24</a>, <a href="https://ma.tt/2009/01/twenty-five/">25</a>, <a href="https://ma.tt/2010/01/twenty-six/">26</a>, <a href="https://ma.tt/2011/01/twenty-seven/">27</a>, <a href="https://ma.tt/2012/01/twenty-eight/">28</a>, <a href="https://ma.tt/2013/01/twenty-nine/">29</a>, <a href="https://ma.tt/2014/01/matt-3-0/">30</a>, <a href="https://ma.tt/2015/01/thirty-one/">31</a>, and <a href="https://ma.tt/2016/01/thirty-two/">32</a>.</p> text/html 2017-01-11T11:53:57+01:00 http://abetterplanetwp.com A Better Planet WordPress 4.7.1 Security and Maintenance Release https://wordpress.org/news/2017/01/wordpress-4-7-1-security-and-maintenance-release/ <p>WordPress 4.7 has been <a href="https://wordpress.org/download/counter/">downloaded over 10 million times</a> since its release on December 6, 2016 and we are pleased to announce the immediate availability of WordPress 4.7.1. This is a <strong>security release</strong> for all previous versions and we strongly encourage you to update your sites immediately.</p> <p>WordPress versions 4.7 and earlier are affected by eight security issues:</p> <ol> <li>Remote code execution (RCE) in PHPMailer &#8211; <em>No specific issue appears to affect WordPress</em> or any of the major plugins we investigated but, out of an abundance of caution, we updated PHPMailer in this release. This issue was fixed in PHPMailer thanks to <a href="https://legalhackers.com/">Dawid Golunski</a> and <a href="https://twitter.com/Zenexer">Paul Buonopane</a>.</li> <li>The REST API exposed user data for all users who had authored a post of a public post type. WordPress 4.7.1 limits this to only post types which have specified that they should be shown within the REST API. Reported by <a href="https://poststatus.com/">Krogsgard</a> and <a href="https://ithemes.com/">Chris Jean</a>.</li> <li>Cross-site scripting (XSS) via the plugin name or version header on <code>update-core.php</code>. Reported by <a href="https://dominikschilling.de/">Dominik Schilling</a> of the WordPress Security Team.</li> <li>Cross-site request forgery (CSRF) bypass via uploading a Flash file. Reported by <a href="https://twitter.com/Abdulahhusam">Abdullah Hussam</a>.</li> <li>Cross-site scripting (XSS) via theme name fallback. Reported by <a href="https://pentest.blog/">Mehmet Ince</a>.</li> <li>Post via email checks <code>mail.example.com</code> if default settings aren&#8217;t changed. Reported by John Blackbourn of the WordPress Security Team.</li> <li>A cross-site request forgery (CSRF) was discovered in the accessibility mode of widget editing. Reported by <a href="https://dk.linkedin.com/in/ronni-skansing-36143b65">Ronnie Skansing</a>.</li> <li>Weak cryptographic security for multisite activation key. Reported by <a href="https://itsjack.cc/">Jack</a>.</li> </ol> <p>Thank you to the reporters for practicing <a href="https://make.wordpress.org/core/handbook/testing/reporting-security-vulnerabilities/">responsible disclosure</a>.</p> <p>In addition to the security issues above, WordPress 4.7.1 fixes 62 bugs from 4.7. For more information, see the <a href="https://codex.wordpress.org/Version_4.7.1">release notes</a> or consult the <a href="https://core.trac.wordpress.org/query?milestone=4.7.1">list of changes</a>.</p> <p><a href="https://wordpress.org/download/">Download WordPress 4.7.1</a> or venture over to Dashboard → Updates and simply click “Update Now.” Sites that support automatic background updates are already beginning to update to WordPress 4.7.1.</p> <p>Thanks to everyone who contributed to 4.7.1: <a href="https://profiles.wordpress.org/aaroncampbell/">Aaron D. Campbell</a>, <a href="https://profiles.wordpress.org/jorbin/">Aaron Jorbin</a>, <a href="https://profiles.wordpress.org/adamsilverstein/">Adam Silverstein</a>, <a href="https://profiles.wordpress.org/afercia/">Andrea Fercia</a>, <a href="https://profiles.wordpress.org/azaozz/">Andrew Ozz</a>, <a href="https://profiles.wordpress.org/gitlost/">bonger</a>, <a href="https://profiles.wordpress.org/boonebgorges/">Boone Gorges</a>, <a href="https://profiles.wordpress.org/chandrapatel/">Chandra Patel</a>, <a href="https://profiles.wordpress.org/christian1012/">Christian Chung</a>, <a href="https://profiles.wordpress.org/dlh/">David Herrera</a>, <a href="https://profiles.wordpress.org/dshanske/">David Shanske</a>, <a href="https://profiles.wordpress.org/dd32/">Dion Hulse</a>, <a href="https://profiles.wordpress.org/ocean90/">Dominik Schilling (ocean90)</a>, <a href="https://profiles.wordpress.org/dreamon11/">DreamOn11</a>, <a href="https://profiles.wordpress.org/chopinbach/">Edwin Cromley</a>, <a href="https://profiles.wordpress.org/iseulde/">Ella van Dorpe</a>, <a href="https://profiles.wordpress.org/pento/">Gary Pendergast</a>, <a href="https://profiles.wordpress.org/hristo-sg/">Hristo Pandjarov</a>, <a href="https://profiles.wordpress.org/jnylen0/">James Nylen</a>, <a href="https://profiles.wordpress.org/jblz/">Jeff Bowen</a>, <a href="https://profiles.wordpress.org/jeremyfelt/">Jeremy Felt</a>, <a href="https://profiles.wordpress.org/jpry/">Jeremy Pry</a>, <a href="https://profiles.wordpress.org/joehoyle/">Joe Hoyle</a>, <a href="https://profiles.wordpress.org/joemcgill/">Joe McGill</a>, <a href="https://profiles.wordpress.org/johnbillion/">John Blackbourn</a>, <a href="https://profiles.wordpress.org/kkoppenhaver/">Keanan Koppenhaver</a>, <a href="https://profiles.wordpress.org/obenland/">Konstantin Obenland</a>, <a href="https://profiles.wordpress.org/laurelfulford/">laurelfulford</a>, <a href="https://profiles.wordpress.org/tyxla/">Marin Atanasov</a>, <a href="https://profiles.wordpress.org/mattyrob/">mattyrob</a>, <a href="https://profiles.wordpress.org/monikarao/">monikarao</a>, <a href="https://profiles.wordpress.org/natereist/">Nate Reist</a>, <a href="https://profiles.wordpress.org/celloexpressions/">Nick Halsey</a>, <a href="https://profiles.wordpress.org/nikschavan/">Nikhil Chavan</a>, <a href="https://profiles.wordpress.org/nullvariable/">nullvariable</a>, <a href="https://profiles.wordpress.org/sirbrillig/">Payton Swick</a>, <a href="https://profiles.wordpress.org/peterwilsoncc/">Peter Wilson</a>, <a href="https://profiles.wordpress.org/presskopp/">Presskopp</a>, <a href="https://profiles.wordpress.org/rachelbaker/">Rachel Baker</a>, <a href="https://profiles.wordpress.org/rmccue/">Ryan McCue</a>, <a href="https://profiles.wordpress.org/sanketparmar/">Sanket Parmar</a>, <a href="https://profiles.wordpress.org/sebastianpisula/">Sebastian Pisula</a>, <a href="https://profiles.wordpress.org/sfpt/">sfpt</a>, <a href="https://profiles.wordpress.org/shazahm1hotmailcom/">shazahm1</a>, <a href="https://profiles.wordpress.org/sstoqnov/">Stanimir Stoyanov</a>, <a href="https://profiles.wordpress.org/stevenkword/">Steven Word</a>, <a href="https://profiles.wordpress.org/szaqal21/">szaqal21</a>, <a href="https://profiles.wordpress.org/timph/">timph</a>, <a href="https://profiles.wordpress.org/voldemortensen/">voldemortensen</a>, <a href="https://profiles.wordpress.org/vortfu/">vortfu</a>, and <a href="https://profiles.wordpress.org/westonruter/">Weston Ruter</a>.</p> text/html 2017-01-10T02:54:49+01:00 http://abetterplanetwp.com A Better Planet 2016 in review https://pippinsplugins.com/2016-in-review/ <p>It is that time of year again! As in years past, I like to look back on the previous twelve months and see how we did. In this year&#8217;s review, I will share revenue numbers, challenges, achievements, insights, and more about my business building and selling WordPress plugins.<span id="more-94765"></span></p> <p>Previous year in review posts:</p> <ul> <li><a href="https://pippinsplugins.com/2012-a-year-in-review/">2012</a></li> <li><a href="https://pippinsplugins.com/2013-review/" target="_blank">2013</a></li> <li><a href="https://pippinsplugins.com/2014-review/">2014</a></li> <li><a href="https://pippinsplugins.com/2015-year-review/">2015</a></li> </ul> <p>There are a <em>lot </em>of great things that happened in 2016, but it was also easily one of the most difficult years I can remember in my adult life. 2016 put before me challenges and decisions I did not expect. For the most part, each of the challenges was overcome, though some of them are still being battled with, and I believe I&#8217;m a better person and a better business owner for having faced them. I&#8217;ll talk more on the challenges below.</p> <h3>Team</h3> <p>When I started this plugins business 5-6 years ago, I never envisioned I&#8217;d have a team working with me, much less a team of 15!</p> <p>I started bringing on people to help me with customer support in 2013 and doing that was easily one of the best things I&#8217;ve ever done. One became two, two became three, and now we have 16 members (counting myself) of the Sandhills Development team. These 15 are comprised of full time and part time team members and represent a mix of support agents, developers, marketers, writers, designers, and do-it-all&#8217;ers.</p> <p>We are distributed across five countries and eight timezones. While we have not managed to achieve anywhere near a gold medal in diversity, we&#8217;ve done reasonably well and it has been an intentional focus for me this year and the time to come. I&#8217;m proud to say that of the six team members we brought on in 2016, four of them were women from three different countries. Sadly of the men on our team, only three are non-white males. I hope to improve that ratio in the future.</p> <p>We have a long ways to go before we&#8217;ve achieved proper diversity, but we&#8217;re moving in the right direction.</p> <p>Our team grew in 2016, though we also said goodbye to several team members. One team member joined us briefly for a few months, allowing them to get back on their feet, but then moved on after being offered a full time position at an <em>excellent </em>company. Another team member departed on mutual terms after we found the relationship simply wasn&#8217;t the right fit for both parties.</p> <p>Running a 16 person company is easily one of the most challenging jobs I&#8217;ve ever worked, and hands down the most rewarding at the same time. It&#8217;s strange to me most days because it&#8217;s something I never expected. I have <em>always </em>been a do-it-myself person but at some point that began to change. Perhaps it was a greater appreciation for the skills others have that surpass my own or perhaps it came about with the desire to work less than 18 hours per day.</p> <p>My team work incredibly hard and deserve so much more than I can give them. I may have started this business but the success we enjoy today is from the work they have done and continually do every day.</p> <p>To each of you, sincerely, &#8220;Thank You!&#8221;.</p> <h3>Personal</h3> <p>I have spent a <em>lot </em>of time just thinking in 2016. For the past few years I have worked, worked, and <em>worked</em> and rarely took the time to really <em>think </em>about what I truly want to achieve and do in the next 5-10 years.</p> <p>The first half of 2016 had a lot of personal struggles for me. I went through several phases where I felt I was on the brink of depression and really struggled to find joy in the days. I spoke briefly on this at <a href="https://pressnomics.com" target="_blank">Pressnomics 4 in Phoenix</a>.</p> <p>After a while I was able to work through some of the challenges I was having but it was an important reminder to myself the importance of caring for myself. As much as I&#8217;d like to, I simply cannot forget to take care of <em>me. </em>After realizing this, I began to spend a lot more time figuring out what I really wanted out of the next few years.</p> <p>One change I was determined to make was to work less. I <em>love </em>my work, but I equally and more greatly love many other things in my life. This wasn&#8217;t necessarily the driver that led me to hire more team members but it has certainly affected how long it takes before I decide it&#8217;s time to hire a new person when our team is facing scaling or expertise challenges. I often forced myself to work longer and longer hours, and give up on other things I love, in order to get everything done, but I&#8217;m no longer interested in being a slave driver to myself so I&#8217;m more quick to recognize when it&#8217;s time to bring someone else on.</p> <p>In 2017 I also plan to continue pursuing some additional business ventures that excite me a lot, primarily the brewery project that I&#8217;m working on with my brother. Perhaps in the 2017 year in review I&#8217;ll be able to share more details on that project.</p> <p>Of all things I did in 2016, one of the ones I&#8217;m most proud of is the acquisition of <a href="http://pippin.com" target="_blank">pippin.com</a>, a domain I have been trying to purchase for quite a few years. That domain is now being used for personal blogging, though only minimally. Perhaps I&#8217;ll manage to write more for it in 2017. It felt <em>really </em>good to finally get the domain for my name.</p> <p>Though the discussion started in 2015, much of 2016 was spent considering the possibility of selling off a significant portion of one of my companies (technically I run four companies) to an interested party. I know for certain that I will not run this business for the rest of my life and I probably won&#8217;t run it to the end of its days either. At some point, I will either leave the company to my replacement or sell it off to an adequate buyer. This is simply the nature of most successful businesses, especially online businesses.</p> <p>The interested party offered me a fair price and a <em>strong </em>track record of success. I <em>knew </em>that selling a stake of the company would have led me to much greater success than I currently enjoy today. There was no doubt in my mind that the sell would lead to substantial growth,  but I simply could not get the feeling out of my mind that it wasn&#8217;t the right time. In the end I turned down the offer. Will I discover that was a mistake in the future? Perhaps but at this time I&#8217;m confident it was the right choice for me and the right choice for my team.</p> <p>Starting and building a company has been one of my most challenging adventures so far. Considering the possibility of selling it was perhaps the second most challenging decision I&#8217;ve encountered so far along the way. The process, however, was a <em>great </em>exercise in figuring out what&#8217;s important and what I want to achieve over the next few years.</p> <h3>Company focus</h3> <p>At Pressnomics 4 I spoke on the subject of <em>being a little selfish</em>. Really the talk focused on the importance of taking care of ourselves.</p> <p>Of everything my team and I have learned in 2016, I feel that recognizing the importance of <em>focus </em>is paramount. I don&#8217;t just mean focus as in staying on task; I mean focus as in staying on <em>track</em>. Every company has core focuses and places they put their efforts, but perhaps one of the determiners for how well a company thrives is the degree to which the company stays on track and avoids veering off the path and sinking time, effort, and money into projects that do not fit within the focus of the company.</p> <p>In early 2016 it became painfully clear that we were spending too much time and effort working on areas of the company that did not align with our core focus. This lack of focus got pretty close to seriously harming certain aspects of the <a href="https://easydigitaldownloads.com" target="_blank">Easy Digital Downloads</a> project.</p> <p>Much of this last year involved working to realign our focuses and cleaning up the messes left behind by allowing our team to waiver.</p> <p>At this point, we have just about finished realigning our focuses and I am <em>really </em>excited for what that will allow us to achieve in 2017.</p> <h3>Automatically renewing subscriptions</h3> <p>Perhaps one of the most important changes we made for the sustainability of the company in the last 12 months is turning on subscriptions for <em>all </em>license purchases for <a href="https://affiliatewp.com" target="_blank">AffiliateWP</a>, <a href="https://restrictcontentpro.com" target="_blank">Restrict Content Pro</a>, and <a href="https://easydigitaldownloads.com" target="_blank">Easy Digital Downloads.</a></p> <p>We created our first automatically renewing subscriptions for AffiliateWP on January 21, 2016. RCP and EDD came a few months later on March 29 and March 30.</p> <p>Since enabling subscriptions, we have not seen any drop in sales volumes, at least not for AffiliateWP and Restrict Content Pro. Easy Digital Downloads has suffered some declines this year but, as far as we&#8217;re able to tell, they&#8217;re entirely unrelated to enabling subscriptions. The fear I repeatedly hear from business owners is that turning on subscriptions will cause sales to take a dive off a cliff. This is simply not something we have seen, nor something I&#8217;ve heard from a single business owner that has followed suit in transition to subscription models.</p> <p>At this time, we have over 13,000 active subscriptions between our three primary product lines. This accounts for more than $684,000.00 in recurring revenue that we&#8217;re projected to bring in over the next 365 days.</p> <p>Note: EDD and RCP had zero subscriptions created for the first four months of 2016 since we did not enable subscriptions until the end of March.</p> <p>While obviously the estimated revenue from those subscriptions will change as customers cancel and/or have their cards expires, it&#8217;s still very significant when realizing that the recurring revenue from these subscriptions (which does <em>not </em>include revenue from new customers) is nearly 50% of our annual revenue for 2016, and that&#8217;s from just 8 months for two of the projects and 11 months for the other. If we had started subscriptions on January 1, 2016, we&#8217;d likely have 80% or more of our annual revenue already accounted for.</p> <p>What does this mean? Well, in short it means that 2017 is going to probably look really, really good by the end of it.</p> <p>The very first subscriptions are up for renewal starting January 21, 2017. I&#8217;m looking forward to it, to say the least.</p> <h3>Price increase</h3> <p>Several of our products received price increases during 2016. These increases were made to better align the prices with the value the plugins provide and to help us reduce support while either sustaining equal revenue or growing the revenue.</p> <p>Restrict Content Pro received a major price change when we updated the business model. It went from $42 for a single site license to $49 and from $120 for an unlimited sites license to $199. We also introduced new $99 and $449 license options.</p> <p>Recurring Payments for Easy Digital Downloads saw a price increase from $82 to $145 when we <a href="https://easydigitaldownloads.com/blog/the-new-recurring-payments-extension/">relaunched</a> the plugin. We also adjusted the price of many other extensions throughout the year but those were mostly minor.</p> <p>At the end of 2016, we decided to implement a price increase across the board for <em>all </em>Easy Digital Downloads extensions, including an additional increase for Recurring Payments. So far this increase has been pretty well received. The number of sales per day / week has dropped slightly, but our average revenue has not. In fact the average revenue appears to show an increase, though it&#8217;s too early to say for sure. We&#8217;ll know for certain how the increase has affected sales, revenue, and support tickets in a month or two.</p> <h3>Revenue</h3> <p>Alright, let&#8217;s look at some more revenue numbers.</p> <p><a href="https://pippinsplugins.com/2015-year-review/" target="_blank">In 2015</a>, the company revenue was $1,139,500. For 2016, I&#8217;m happy to say we&#8217;ve grown this by 29.9% with a total revenue of $1,480,375.86.</p> <p>The revenue brought in comes from four primary sources:</p> <ul> <li><a href="https://easydigitaldownloads.com">Easy Digital Downloads</a></li> <li><a href="https://affiliatewp.com">AffiliateWP</a></li> <li><a href="https://restrictcontentpro.com">Restrict Content Pro</a></li> <li><a href="https://pippinsplugins.com">Pippin&#8217;s Plugins</a></li> </ul> <p>Let&#8217;s look at each separately.</p> <p><strong>Easy Digital Downloads</strong></p> <p>In 2016, Easy Digital Downloads brought in $693,527.98. This is an 23.4% increase over 2015. This is a good number but, frankly, one I wasn&#8217;t thrilled with. Let me show you why:</p> <p><img data-attachment-id="95019" data-permalink="https://pippinsplugins.com/2016-in-review/screen-shot-2017-01-03-at-11-03-13-pm/" data-orig-file="https://pippinspluginscom.c.presscdn.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-03-at-11.03.13-PM.png" data-orig-size="995,309" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="screen-shot-2017-01-03-at-11-03-13-pm" data-image-description="" data-medium-file="https://pippinspluginscom.c.presscdn.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-03-at-11.03.13-PM-300x93.png" data-large-file="https://pippinspluginscom.c.presscdn.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-03-at-11.03.13-PM.png" class="alignnone size-full wp-image-95019" src="https://pippinspluginscom.c.presscdn.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-03-at-11.03.13-PM.png" alt="screen-shot-2017-01-03-at-11-03-13-pm" width="995" height="309" srcset="https://pippinspluginscom.c.presscdn.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-03-at-11.03.13-PM.png 995w, https://pippinspluginscom.c.presscdn.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-03-at-11.03.13-PM-480x149.png 480w, https://pippinspluginscom.c.presscdn.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-03-at-11.03.13-PM-300x93.png 300w, https://pippinspluginscom.c.presscdn.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-03-at-11.03.13-PM-768x239.png 768w" sizes="(max-width: 995px) 100vw, 995px" /></p> <p>Do you see the downward trend shown by many of the last 12 months? Let&#8217;s look at a similar graph but this time 2015 and 2016 together.</p> <p><img data-attachment-id="95024" data-permalink="https://pippinsplugins.com/2016-in-review/screen-shot-2017-01-03-at-11-05-05-pm/" data-orig-file="https://pippinspluginscom.c.presscdn.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-03-at-11.05.05-PM.png" data-orig-size="1065,309" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="screen-shot-2017-01-03-at-11-05-05-pm" data-image-description="" data-medium-file="https://pippinspluginscom.c.presscdn.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-03-at-11.05.05-PM-300x87.png" data-large-file="https://pippinspluginscom.c.presscdn.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-03-at-11.05.05-PM-1024x297.png" class="alignnone size-full wp-image-95024" src="https://pippinspluginscom.c.presscdn.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-03-at-11.05.05-PM.png" alt="screen-shot-2017-01-03-at-11-05-05-pm" width="1065" height="309" srcset="https://pippinspluginscom.c.presscdn.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-03-at-11.05.05-PM.png 1065w, https://pippinspluginscom.c.presscdn.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-03-at-11.05.05-PM-480x139.png 480w, https://pippinspluginscom.c.presscdn.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-03-at-11.05.05-PM-300x87.png 300w, https://pippinspluginscom.c.presscdn.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-03-at-11.05.05-PM-768x223.png 768w, https://pippinspluginscom.c.presscdn.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-03-at-11.05.05-PM-1024x297.png 1024w" sizes="(max-width: 1065px) 100vw, 1065px" /></p> <p>We see a similar trend. Average monthly revenue has more or less plateaued. While we did see a couple of good months, and one <em>really </em>good month, most months of 2016 were at or just barely above the 2015 months.</p> <p>In the last four years, EDD has experienced constant upwards growth and this slowdown, which I first noticed in Spring of 2016, really bothered me. It caused me far more stress and anxiety than I&#8217;d like to admit. I racked my brain for days every week trying to figure out what was wrong. Why were we not seeing the same growth?</p> <p>Really it comes down to a pretty simple answer: we&#8217;ve moved out of our rocket growth period and now we have to work harder for the same kind of growth.</p> <p>That&#8217;s normal, or so I&#8217;ve heard from many different voices.</p> <p>Our 2016 revenue did increase, and rather substantially, so that was great. It was the average monthly revenue that bothered me, primarily because our monthly expenditures began to outpace our revenue. The bulk of our revenue increase came from just a few of the 12 months.</p> <p>In 2016, Easy Digital Downloads did not make a profit. The project took a loss of -$34,881.52.</p> <p>There are a few reasons our expenditures for EDD grew in 2016.</p> <p>First, we brought on new team members to help with support and development. We also brought some older team members back into more active roles. Both of these were investments into the project that will (and already are) pay off.</p> <p>Second, we intentionally invested a lot of time and money into improving several of our primary projects within Easy Digital Downloads. These consumed large amounts of capital without equal immediate returns. We&#8217;ll see returns overtime.</p> <p>Third, we intentionally removed numerous revenue streams because they did not align with our long term goals and focus. While losing these revenue streams hurt, we&#8217;re better without them as it allows us to better focus in the areas that will greatly surpass them in future revenue.</p> <p>Fourth, we invested a lot of capital into purchasing exclusive rights to many of the extensions sold through <a href="https://easydigitaldownloads.com">easydigitaldownloads.com</a> that were originally built by 3rd party developers. Bringing a lot of plugins in-house dramatically increased our expenses but also reduce the amount that we pay out in commissions each month. Over time these acquisitions will pay off.</p> <p>Summaries for Easy Digital Downloads in 2016:</p> <ul> <li>Total revenue: $693,527.98</li> <li>Revenue from plugin sales: $628,843.81</li> <li>Average customer value for 2016: $111.12</li> <li>Average customer value over all time: $128.69</li> <li>Average number of purchases per customer: 2.43</li> <li>Total paying customers over all time: 15,013</li> <li>New paying customers added in 2016: 3,718</li> <li>Revenue from license renewals: $139,850.03</li> <li>Revenue from license upgrades (single site to multisite licenses): $7,440.85</li> <li>Commissions paid to affiliates: $12,850.4</li> <li>3rd-party extension vendor commissions paid: $197,092.29</li> <li>Revenue earned from Priority Support purchases: $10,884.19</li> <li>Recurring subscriptions created: 9,578</li> <li>Recurring subscriptions cancelled: 1,395 (many of these due to upgrades)</li> </ul> <p>There are a few numbers I&#8217;d like to highlight and discuss.</p> <p>First, only $7,440.85 was brought in from license upgrades. These upgrades are when customers move from one level of license (such as Single Site) to a higher level (such as 2 &#8211; 5 sites) and pay only the difference between the two license levels. Considering our total revenue from plugin sales was over $600,000, the revenue generated from upgrades is <em>tiny</em>. In a little bit, I&#8217;ll show you the revenue generated from license upgrades for AffiliateWP and Restrict Content Pro. They are drastically higher than this, which tells me we have an issue: customers do not have adequate incentive to upgrade their license keys. We&#8217;ll need to try and change that in 2016.</p> <p>Second, notice that the total revenue from license renewals was only $139,850.03 out of our total plugin sales of $628,843.81. That means only 22% of our sales revenue came from renewals. With just the recurring subscriptions we have created between March 30 and December 31st, 2016, we already have an estimated $330,000.00 in renewal revenue. That is an increase of more than 136%, and that&#8217;s only the renewal revenue we expect to bring in and does not include any revenue from new purchases. That amount is also greater than 50% of the entire annual revenue for 2016.</p> <p>Third, we only paid out $197,092.29 in commissions to 3rd-party plugin authors. In 2015, we paid out $213,000. Why the decrease? Two main reasons:</p> <ol> <li>We have worked to acquire a large number of plugins from 3rd-party authors and bring them in house.</li> <li>We have actively worked to limit the number of 3rd-party plugins we sell through our site. I&#8217;ve mentioned this in various places before, but basically we realized (and learned the hard way) that we do not want to run a marketplace. We want to build and sell <em>our </em>plugins, not the plugins of other developers.</li> </ol> <p>Not everyone is thrilled about the move away from the 3rd-party vendor marketplace for Easy Digital Downloads, but it&#8217;s a move we have consciously made and firmly believe was the right one for the health of our team and company.</p> <p><strong>AffiliateWP</strong></p> <p>In 2016, AffiliateWP had $542,656.34 in total revenue, an increase of 42.8% over the $380,000 in 2015.</p> <p>Unlike Easy Digital Downloads&#8217; slightly more difficult year, AffiliateWP had a <em>great </em>year. Surpassing $500,000 in annual revenue less than three years after our very first sale for $49 feels pretty good. In December, 2016, we also surpassed $1,000,000 in all time revenue, giving us an average of $33,330 in monthly revenue since the beginning. Not too shabby.</p> <p>I mentioned this in the 2015 review as well, but it still surprises me that AffiliateWP does as well as it does. I know that we have built a very good, reliable piece of software, but early on I did not expect it to grow to this size, especially not as quickly as it did. A large part of our success, I believe, is building on top of and leveraging other successful plugins. Being able to take advantage of the marketshare of WooCommerce and  popular membership plugins like Paid Memberships Pro and MemberPress really gave us a good boost. Our own cross promotions with Easy Digital Downloads and Restrict Content Pro also benefit us greatly.</p> <p>Early on in 2016 I started to suspect that AffiliateWP would surpass EDD in monthly revenue. It didn&#8217;t happen consistently but there was one month, October, where AffiliateWP earned more than EDD. At this time point I&#8217;m unsure if this will begin to happen more consistently in 2017. On one hand, we&#8217;re working hard to significantly raise EDD&#8217;s monthly revenue in the next twelve months, so it&#8217;s likely EDD will stay ahead. On the other hand, AffiliateWP has grown faster, and continues to grow faster, than EDD so it&#8217;s quite likely it will.</p> <p>Summaries for AffiliateWP in 2016:</p> <ul> <li>Total revenue: $542,656.34</li> <li>Revenue from plugin sales: $511,438.65</li> <li>Average customer value for 2016: $121.87</li> <li>Average customer value over all time: $123.18</li> <li>Total paying customers over all time: 8,261</li> <li>New paying customers added: 3,657</li> <li>Revenue from license renewals: $62,947.20</li> <li>Revenue from license upgrades (single site to multisite licenses): $42,618.75</li> <li>Commissions paid to affiliates: $14,936.66</li> <li>Recurring subscriptions created: 4,467</li> <li>Recurring subscriptions cancelled:  750 (many of these due to upgrades)</li> </ul> <p>Similarly to EDD, AffiliateWP already has a large portion of revenue for 2017 predicted and accounted for thanks to the recurring subscriptions we enabled in January, 2016. In fact, we have an estimated $280,599.65 in automatic renewals over the next 365 days. That&#8217;s more than 50% of our 2016 annual revenue. In 2016, only 12.3% of our revenue came from renewals, so seeing the renewal revenue increase so drastically in 2017 is going to be a great aide to us.</p> <p>I have little doubt we&#8217;ll approach $800,000 in revenue in 2017 for AffiliateWP.</p> <p>Something else that is particularly interesting is the difference in revenue that came from upgrades for AffiliateWP and the upgrade revenue from Easy Digital Downloads. AffiliateWP had more than 5x the revenue from license upgrades than Easy Digital Downloads did. The reason is simple: AffiliateWP offers much more incentive for customers to upgrade than Easy Digital Downloads does by granting access (free of additional charge) to &#8220;Professional&#8221; add-ons. Easy Digital Download&#8217;s upgrades are for nothing more than higher activation limits.</p> <p><strong>Restrict Content Pro</strong></p> <p>As one of my oldest products, it makes me incredibly happy to see Restrict Content Pro <a href="https://pippinsplugins.com/rebuilding-dying-product/" target="_blank">come back to life</a>. In late 2014 we made a commitment to breathing new life into RCP. November, 2014, saw the launch of a <a href="https://pippinsplugins.com/restrict-content-pros-new-website-and-v2-4/" target="_blank">new website</a> for the plugin and April, 2016, saw the first fruits of our efforts.</p> <p><img data-attachment-id="95222" data-permalink="https://pippinsplugins.com/2016-in-review/screen-shot-2017-01-05-at-8-09-34-pm/" data-orig-file="https://pippinspluginscom.c.presscdn.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-05-at-8.09.34-PM.png" data-orig-size="1067,287" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="screen-shot-2017-01-05-at-8-09-34-pm" data-image-description="" data-medium-file="https://pippinspluginscom.c.presscdn.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-05-at-8.09.34-PM-300x81.png" data-large-file="https://pippinspluginscom.c.presscdn.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-05-at-8.09.34-PM-1024x275.png" class="alignnone size-full wp-image-95222" src="https://pippinspluginscom.c.presscdn.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-05-at-8.09.34-PM.png" alt="screen-shot-2017-01-05-at-8-09-34-pm" width="1067" height="287" srcset="https://pippinspluginscom.c.presscdn.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-05-at-8.09.34-PM.png 1067w, https://pippinspluginscom.c.presscdn.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-05-at-8.09.34-PM-480x129.png 480w, https://pippinspluginscom.c.presscdn.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-05-at-8.09.34-PM-300x81.png 300w, https://pippinspluginscom.c.presscdn.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-05-at-8.09.34-PM-768x207.png 768w, https://pippinspluginscom.c.presscdn.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-05-at-8.09.34-PM-1024x275.png 1024w" sizes="(max-width: 1067px) 100vw, 1067px" /></p> <p>For a year or more, RCP&#8217;s revenue had held pretty steady at ~$7,000 per month. In April, immediately after updating the pricing model and releasing several &#8220;Professional&#8221; add-ons, we bumped the revenue from $7,000 to $11,700. By the end of 2016, our average monthly revenue had risen to $15,900.00. One month saw $22,000 and another (November with Black Friday / Cyber Monday) saw nearly $33,000.</p> <p>In 2016, RCP had a total revenue of $165,824.79. Thanks to the significant increase in our average monthly revenue, I have little doubt we&#8217;ll surpass $200,000 for RCP in 2017. Of our three major product lines, I believe Restrict Content Pro has the highest potential ceiling, we just need to keep pushing ourselves to reach it.</p> <p>Summaries for Restrict Content Pro in 2016:</p> <ul> <li>Revenue from plugin sales: $165,824.79</li> <li>Average customer value for 2016: $91.06</li> <li>Average customer value over all time: $72.59</li> <li>Total paying customers over all time: 4,994</li> <li>New paying customers added in 2016: 1,465</li> <li>Revenue from license renewals: $21,706.60</li> <li>Revenue from license upgrades (single site to multisite licenses): $15,928.50</li> <li>Commissions paid to affiliates: $3,203.50</li> <li>Recurring subscriptions created: 1,573</li> <li>Recurring subscriptions cancelled: 290  (many of these due to upgrades)</li> </ul> <p>There are a few numbers I&#8217;d like to highlight and discuss here.</p> <p>First, our average customer value for 2016 was $91.06. This is a near $20 increase over the historical customer value. This increase came from two made changes we made:</p> <ul> <li>Introduction of <a href="https://restrictcontentpro.com/add-ons/pro/">Professional add-ons</a> that encouraged high-level license purchases and upgrades</li> <li>Price increase on all license levels</li> </ul> <p>An increase of $20 on the average customer value makes a <em>big </em>difference over time. For simple math, assume we gain 2,000 new customers in 2016. That $20 increase could mean $40,000 in additional revenue.</p> <p>Second, RCP generated nearly $16,000 in revenue from license upgrades in 2016. This is <em>more than 2x </em>the amount Easy Digital Downloads generated through license upgrades, strongly reaffirming that EDD&#8217;s upgrade incentives need to be revisited.</p> <p>Third, in the next 365 days RCP has an estimated $72,581.80 in renewal revenue that will be processed. Similarly to EDD and AffiliateWP, this is ~50% of our total annual revenue. Earlier I said I don&#8217;t have any doubts that we&#8217;ll reach $200,000 in annual revenue for RCP in 2017. This estimated renewal revenue affirms that prediction.</p> <p><strong>Pippin&#8217;s Plugins</strong></p> <p>Since moving Restrict Content Pro to its own website, the revenue being brought in from pippinsplugins.com has dwindled severely, but that was to be expected as RCP was the primary revenue source for the site. Now the revenue coming in comes primarily from <a href="https://pippinsplugins.com/products/sugar-event-calendar/">Sugar Event Calendar</a> and site memberships.</p> <ul> <li>Revenue from plugin sales: $5,493.61</li> <li>Revenue from site memberships: $23,424.77</li> <li>Commissions paid to affiliates: $179.60</li> </ul> <p>In 2017 I hope to breath some new life into the Sugar Event Calendar plugin, which is now a partner project between myself and Daniel Espinoza.</p> <p><strong>Combined revenues</strong></p> <p>Our total gross revenue for 2016 was $1,480,375.86. In 2015 we finished the year at $1,139,500, giving us an increase of about 29.9%. This isn&#8217;t as much of an increase as 2014 to 2015 was, but it&#8217;s still a good bit of growth.</p> <p>While 2016 had a significant loss for Easy Digital Downloads, our companies all combined did have a net profit for 2016. Restrict Content Pro and AffiliateWP both had a significant amount of profit, and enough to cover all losses for EDD and still leave us with additional cash in the bank. One of my goals for 2016 was to increase the amount of cash we have on hand, which we successfully did as nearly all company profit stayed in the bank accounts.</p> <h3>Support tickets</h3> <p>I still firmly believe that quality customer support is one of the most defining aspects of great companies. It is also one of the hardest areas within a company to excel. No matter how much you love helping people and seeing them succeed with your products, customer support is <em>incredibly draining</em>. As we have continued to grow our products, one of our company goals has been to be simultaneously shrink the burdens put on us through customer support, not by reducing the quality of the support we offer but by finding ways to naturally reduce support by making it less necessary for customers to need to contact us for help. Did we succeed? Let&#8217;s take a look.</p> <p>Across our four support inboxes, we had a total of <strong>20,829 </strong>tickets opened in our Help Scout account. Of these, 1/3 were for pre-sales and the remainder for technical support and account-related questions.</p> <p><strong>Easy Digital Downloads:</strong></p> <ul> <li>Tickets opened: 10,971</li> <li>Total tickets worked on (includes tickets left over from 2015): 13,864</li> <li>Average tickets per day: 38</li> <li>Most tickets related to a single EDD extension: 2,354 for <a href="https://easydigitaldownloads.com/downloads/frontend-submissions">Frontend Submissions</a></li> <li>Most tickets opened by a single customer: 42 (two customers tied for this accolade)</li> <li>Revenue per ticket: $63.21</li> </ul> <p><strong>AffiliateWP:</strong></p> <ul> <li>Tickets opened: 5,635</li> <li>Total tickets worked on (includes tickets left over from 2015): 11,056</li> <li>Average tickets per day: 30</li> <li>Most tickets opened by a single customer: 35</li> <li>Revenue per ticket: $96.30</li> </ul> <p><strong>Restrict Content Pro:</strong></p> <ul> <li>Tickets opened: 3,560</li> <li>Total tickets worked on (includes tickets left over from 2015): 3,565</li> <li>Average tickets per day: 9</li> <li>Most tickets opened by a single customer: 27</li> <li>Revenue per ticket: $46.58</li> </ul> <p>There were also tickets opened for various plugins on Pippin&#8217;s Plugins but those were minimal enough that I have not included them here. I also have not included any tickets that were submitted to Easy Digital Downloads on WordPress.org. There were approximately 270 support threads posted for EDD on WordPress.org in 2016.</p> <p>In 2015 I reported that we answered <strong>21,027 </strong>tickets across our products. In 2016 we answered <strong>20,829</strong>&#8230;.success! We brought in 29.9% more revenue <em>and </em>dropped the total number of support tickets. Support is still a <em>huge </em>burden every single day, but these numbers do not lie: we made a significant improvement in 2016. This means that we changed our average revenue per ticket from ~$54.19 in 2015 to ~$71.08 in 2016.</p> <p>New goal: further reduce the number of tickets in 2017 and increase the revenue per ticket.</p> <h3>2016 goals from 2015 review</h3> <p>At the end of my 2015 review, I included the following goals:</p> <ol> <li>Visit New Zealand. My wife and kids actually depart on January 13th and will spend two weeks there. As one of the places I’ve always wanted to visit, I’m really excited for this trip. &#8211;<strong> Done. It was awesome.</strong></li> <li>Dramatically reduce the number of support tickets we receive on all three properties. This is already in motion and is happening through several different avenues simultaneously. <strong>Reduced by 1% but with a 29.9% increase in revenue.</strong></li> <li>Bring on two or more new team members, or transition current contractors to full-time. <strong>Brought on 6.</strong></li> <li>Double the revenue of Restrict Content Pro. <strong>Took average from ~$7,000 per month to $15,940.</strong></li> <li>Announce to the world one of the projects we’ve been working on behind the scenes. <strong>Hints have been dropped but not too much to show yet. Visit <a href="http://sellbird.com" target="_blank">sellbird.com</a></strong></li> <li>Ride, run, or walk 2+ miles almost every day. <strong>Could have done better</strong>.</li> <li>Spend more time with my family and remember to play often and work less. <strong>This was a major focus for me but I have a long ways to go.</strong></li> </ol> <h3>Goals for 2017</h3> <p>For 2017, there are a few specific goals I will continuously work towards.</p> <p><strong>A renewed focus on physical and mental health</strong>.</p> <p>I spent a lot more time in 2016 than recent years prior paying attention to my physical and mental health and it really did make an amazing difference. Seeing first hand how much some focus on it affected me has reaffirmed that I need to work even harder on making my health, and the health of my team, a priority.</p> <p><strong>Surpass $2,000,000 in company revenue</strong>.</p> <p>I am really pleased with how far we&#8217;ve come in 2016 and previous years but now I really want to push us even further. In 2017 I&#8217;d like to see us surpass $2,000,000 in annual revenue while simultaneously <em>not </em>equally increasing our monthly expenses. We were profitable in 2016 and 2015 but I want to be <em>wildly </em>profitable in 2017. With everything we&#8217;ve learned and implemented in the last 24 months, I think we have a good chance of making it.</p> <p><strong>Travel to a new international destination.</strong></p> <p>My family and I have travelled to at least one new country each year for the last two years. I would like to continue that streak and visit <em>at least </em>one new international destination. We have not decided where yet (proposals welcomed!) but will probably begin making plans soon.</p> <p><strong>Increase revenue per ticket.</strong></p> <p>From 2015 to 2016, we increased our revenue per ticket from ~$54.19 to ~$71.08. I&#8217;d like to see us increase that further to $80 or $90 per ticket.</p> <p><strong>Brew my first batch of commercial beer.</strong></p> <p>My brother and I have been working on our brewery project in evenings and weekends for a while now. We&#8217;re not yet able to give any kind of timeframe on it but I do hope that we&#8217;ll be able to brew our first commercial batch of beer sometime in 2017. It&#8217;s unlikely that beer will be released or available in any form during 2017, but at least it will be produced and then allowed to age and develop overtime in oak barrels. Our brewery will be focused almost entirely on <a href="https://en.wikipedia.org/wiki/American_wild_ale">American Wild Ales</a> and other long-term barrel aged varieties.</p> <p><strong>Write more.</strong></p> <p>Writing has always been an important aspect of my work and life. As my daily work as changed over time so has the amount of effort I put into writing. Going forward, I&#8217;d like to find a way to write more, giving myself more time for reflection and thought.</p> <p>Thank you for reading. Let&#8217;s all go have an awesome 2017!</p> text/html 2017-01-09T22:54:15+01:00 http://abetterplanetwp.com A Better Planet Rebalance, Karuna, and Sidespied https://themeshaper.com/2017/01/09/rebalance-karuna-sidespied/ A text/html 2016-12-23T10:25:06+01:00 http://abetterplanetwp.com A Better Planet BuddyPress 2.7.4 – Security Release https://buddypress.org/2016/12/buddypress-2-7-4-security-release/ <p>BuddyPress 2.7.4 is now available, and is a security release &amp; recommended upgrade for all BuddyPress installations. We&#8217;ve also ported the code changes in 2.7.4 to all branches back 2.0, and are pushing updates out for all installations where we are able to do so.</p> <p>These releases include a fix to the BuddyPress core attachments API that could allow arbitrary file deletion on certain installation configurations.</p> <p>This bug was responsibly disclosed to the WordPress security team (and the BuddyPress team) through the WordPress HackerOne Bounty Program by Sam Pizzey (mopman).</p> <p>Both Boone &amp; Paul worked together to fix this for all versions of BuddyPress that are currently in active use, and Stephen &amp; Dion helped package and push these releases out.</p> <p>Please update to these latest versions of BuddyPress today in your WordPress Dashboard, or by <a href="https://wordpress.org/plugins/buddypress/">downloading from the wordpress.org plugin repository</a>.</p> <p>Questions or comments? Check out the <a href="https://codex.buddypress.org/releases/version-2-7-4/">2.7.4 changelog</a>, or stop by our <a href="https://buddypress.org/support/">support forums</a> or  Trac.</p> text/html 2016-12-09T16:02:16+01:00 http://abetterplanetwp.com A Better Planet bbPress 2.5.12 – Requires WordPress 4.7 https://bbpress.org/blog/2016/12/bbpress-2-5-12-requires-wordpress-4-7/ <p>Oh, bother! Out now is bbPress 2.5.12, which fixes a bug for WordPress 4.7 users who did the right thing and updated to bbPress 2.5.11. Some of you may have noticed your bbPress menu items disappear &#8211; this release fixes that stinger. <img src="https://s.w.org/images/core/emoji/2.2.1/72x72/1f41d.png" alt="🐝" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p> <p>2.5.12 officially bumps the minimum WordPress version requirement to 4.7 for all releases going forward. If you are stuck on a previous version of WordPress, please continue to use 2.5.11.</p> <p>This cut-off is in place because the improvements to user-roles in WordPress 4.7 are really that important, and all future bug-fix releases to 2.5 and major releases going forward will be taking advantage of them.</p> <p>If you&#8217;ve updated to 4.7 and are one of the unlucky few to get stung by the missing-menu bug, please accept my sincere apologies along with an update to 2.5.12 to relieve the itching.</p> text/html 2016-11-16T17:16:09+01:00 http://abetterplanetwp.com A Better Planet How to apply the GPL to your themes and plugins (and avoid getting in the shi*) http://wpandlegalstuff.com/how-to-apply-the-gpl-to-your-themes-and-plugins-and-avoid-getting-in-the-shi/ text/html 2016-11-02T03:27:00+01:00 http://abetterplanetwp.com A Better Planet The 4 best WordPress hosts of 2016 https://markjaquith.wordpress.com/2016/11/01/best-wordpress-hosts-in-2016/ A text/html 2016-10-20T02:16:05+01:00 http://abetterplanetwp.com A Better Planet What I Wish Hillary Clinton Would Say Tonight https://lorelle.wordpress.com/2016/10/19/what-i-wish-hillary-clinton-would-say-tonight/ text/html 2016-09-01T17:14:22+01:00 http://abetterplanetwp.com A Better Planet Responsive Images In WordPress With Art Direction https://www.smashingmagazine.com/2016/09/responsive-images-in-wordpress-with-art-direction/ text/html 2016-08-23T21:40:45+01:00 http://abetterplanetwp.com A Better Planet .blog https://konstantin.blog/2016/dot-blog/ <p>As you may have heard, Automattic <a href="https://en.blog.wordpress.com/2016/05/12/coming-soon-new-blog-domains-for-websites/" target="_blank">recently</a> secured the rights to operate the sale and registration of .blog &#8212; a new top-level domain, which is currently in the Sunrise period, where trademark owners can apply.</p> <p><img src="https://konstantin.blog/wp-content/uploads/sites/5/2016/08/get-dot-blog.png" alt="get.blog" width="2080" height="772" class="alignnone size-full wp-image-8259" srcset="https://konstantin.blog/wp-content/uploads/sites/5/2016/08/get-dot-blog.png 2080w, https://konstantin.blog/wp-content/uploads/sites/5/2016/08/get-dot-blog-300x111.png 300w, https://konstantin.blog/wp-content/uploads/sites/5/2016/08/get-dot-blog-768x285.png 768w, https://konstantin.blog/wp-content/uploads/sites/5/2016/08/get-dot-blog-680x252.png 680w" sizes="(max-width: 2080px) 100vw, 2080px" /></p> <p>The Landrush period, where anyone can apply for their desired .blog domains, is scheduled for November 2nd, and public launch is expected on November 21st. However, a few select bloggers were granted the possibility to get .blog domains sooner as part of the Founders Program, and I was very lucky to be one of them.</p> <p>Welcome to <strong>konstantin.blog</strong> &#8212; a new home for my archive of <a href="https://konstantin.blog/?order=asc" target="_blank">almost eight years</a> worth of writing on many topics, including SEO (yeah&#8230;), AWS, Twitter, robotics, Linux, PHP, WordCamps and WordPress.</p> <p>I admit I have neglected this place for a while, haven&#8217;t posted as much as I should have, and I can probably come up with plenty of excuses. But this new domain comes with a little string attached &#8212; I have to write more frequently, which I intend to do, so watch out for fresh thoughts, ideas, tips and hacks, and a lot of WordPress of course.</p> <p>If you&#8217;re looking for your own .blog domain, head over to <a href="https://get.blog/" target="_blank">get.blog</a> for more information and updates.</p> <h3>More from Konstantin Kovshenin</h3> <ul> <li><a href="https://konstantin.blog/2016/wordcamp-moscow-2016-recap/?utm_source=feed&#038;utm_medium=latest_posts&#038;utm_campaign=feed">WordCamp Moscow 2016 Recap</a></a></li> <li><a href="https://konstantin.blog/2016/what-the-queries/?utm_source=feed&#038;utm_medium=latest_posts&#038;utm_campaign=feed">What the Queries</a></a></li> <li><a href="https://konstantin.blog/2015/wordcamp-russia-2015-recap/?utm_source=feed&#038;utm_medium=latest_posts&#038;utm_campaign=feed">WordCamp Russia 2015 Recap</a></a></li> <li><a href="https://konstantin.blog/2015/ctf-ota-2015/?utm_source=feed&#038;utm_medium=latest_posts&#038;utm_campaign=feed">Capture the Flag / OTA 2015</a></a></li> <li><a href="https://konstantin.blog/2014/color-options-vs-decisions/?utm_source=feed&#038;utm_medium=latest_posts&#038;utm_campaign=feed">Color Options vs. Decisions in WordPress Themes</a></a></li> </ul> text/html 2015-12-30T03:16:41+01:00 http://abetterplanetwp.com A Better Planet Downsize your WordPress database by removing transients http://www.wprecipes.com/downsize-your-database-by-removing-transients/ <p>First of it all, login to your phpmyadmin and choose your WordPress database. Once done, click on the sql button to open the sql command window.<br /> Then, simply paste the following sql command and execute it.</p> <pre> DELETE FROM `wp_options` WHERE `option_name` LIKE ('%\_transient\_%'); </pre> <p>Credit: <a href="http://stackoverflow.com/questions/10422574/can-i-remove-transients-in-the-wp-options-table-of-my-wordpress-install/11995022#11995022" target="blank">Stack Overflow</a></p> <p>Want more super useful SQL queries? <a href="http://www.catswhocode.com/blog/using-sql-to-manage-wordpress-the-definitive-guide" target="blank">Check out this article on Cats Who Code</a>.</p> <p>The post <a rel="nofollow" href="http://www.wprecipes.com/downsize-your-database-by-removing-transients/">Downsize your WordPress database by removing transients</a> appeared first on <a rel="nofollow" href="http://www.wprecipes.com">WPRecipes</a>.</p> text/html 2015-01-07T22:23:01+01:00 http://abetterplanetwp.com A Better Planet Universal Typography with Tim Brown https://build.codepoet.com/2015/01/07/universal-typography-tim-brown/ A text/html http://abetterplanetwp.com A Better Planet Using Namespaces and Autoloading in WordPress Plugins, Part 4 https://code.tutsplus.com/tutorials/using-namespaces-and-autoloading-in-wordpress-plugins-4--cms-27342 text/html http://abetterplanetwp.com A Better Planet Theme Developer Handbook Released! https://managewp.org/articles/14233/theme-developer-handbook-released