<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Tim Nolte</title>
    <description>The latest articles on Forem by Tim Nolte (@tnolte).</description>
    <link>https://forem.com/tnolte</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F51912%2Fa50ec7bf-031c-4100-8085-45e525c3f1e2.jpg</url>
      <title>Forem: Tim Nolte</title>
      <link>https://forem.com/tnolte</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/tnolte"/>
    <language>en</language>
    <item>
      <title>Starting Off The Year With #100DaysOfGatsby</title>
      <dc:creator>Tim Nolte</dc:creator>
      <pubDate>Wed, 01 Jan 2020 21:21:13 +0000</pubDate>
      <link>https://forem.com/tnolte/starting-off-the-year-with-100daysofgatsby-4ip0</link>
      <guid>https://forem.com/tnolte/starting-off-the-year-with-100daysofgatsby-4ip0</guid>
      <description>&lt;p&gt;Starting the &lt;a href="https://dev.to/t/100DaysOfGatsby"&gt;#100DaysOfGatsby&lt;/a&gt; challenge with a focus on &lt;a href="https://dev.to/t/WordPress"&gt;#WordPress&lt;/a&gt; and going through a Udemy course(&lt;a href="https://udemy.com/share/101Au6A0Uac15QQns=/"&gt;https://udemy.com/share/101Au6A0Uac15QQns=/&lt;/a&gt;) to start off. Looking forward to learning &lt;br&gt;
@GatsbyJS this year.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--566lAguM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/timnolte"&gt;
        timnolte
      &lt;/a&gt; / &lt;a href="https://github.com/timnolte/gatsbyjs-blog"&gt;
        gatsbyjs-blog
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      #100DaysOfGatsby Blog
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;
  &lt;a href="https://www.gatsbyjs.org" rel="nofollow"&gt;
    &lt;img alt="Gatsby" src="https://camo.githubusercontent.com/43475e8d70daad6d2e3b7ba517d78b7ca2d2bcea92bade2a4f0a0a6fb030917d/68747470733a2f2f7777772e6761747362796a732e6f72672f6d6f6e6f6772616d2e737667" width="60"&gt;
  &lt;/a&gt;
&lt;/p&gt;

&lt;h1&gt;
  Gatsby's default starter
&lt;/h1&gt;

&lt;p&gt;Kick off your project with this default boilerplate. This starter ships with the main Gatsby configuration files you might need to get up and running blazing fast with the blazing fast app generator for React.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Have another more specific idea? You may want to check out our vibrant collection of &lt;a href="https://www.gatsbyjs.org/docs/gatsby-starters/" rel="nofollow"&gt;official and community-created starters&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
🚀 Quick start&lt;/h2&gt;


&lt;ol&gt;
&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Create a Gatsby site.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Use the Gatsby CLI to create a new site, specifying the default starter.&lt;/p&gt;

&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; create a new Gatsby site using the default starter&lt;/span&gt;
gatsby new my-default-starter https://github.com/gatsbyjs/gatsby-starter-default&lt;/pre&gt;

&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Start developing.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Navigate into your new site’s directory and start it up.&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-c1"&gt;cd&lt;/span&gt; my-default-starter/
gatsby develop&lt;/pre&gt;

&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Open the source code and start editing!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Your site is now running at &lt;code&gt;http://localhost:8000&lt;/code&gt;!&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note: You'll also see a second link: &lt;em&gt;&lt;code&gt;http://localhost:8000/___graphql&lt;/code&gt;&lt;/em&gt;. This is a tool you can use to experiment with querying your data. Learn more about using this&lt;/em&gt;…&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/timnolte/gatsbyjs-blog"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;



&lt;p&gt;The post &lt;a href="https://twitter.com/tnolte/status/1212481299857981440"&gt;Starting Off The Year With #100DaysOfGatsby&lt;/a&gt; appeared first on &lt;a href="https://twitter.com/tnolte"&gt;Twitter&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>development</category>
      <category>gatsby</category>
      <category>wordpress</category>
      <category>100daysofgatsby</category>
    </item>
    <item>
      <title>Contributing to WordPress: Moving From User to Contributor – WordCamp Grand Rapids 2019 Lightening</title>
      <dc:creator>Tim Nolte</dc:creator>
      <pubDate>Thu, 18 Jul 2019 18:32:32 +0000</pubDate>
      <link>https://forem.com/tnolte/contributing-to-wordpress-moving-from-user-to-contributor-wordcamp-grand-rapids-2019-lightening-4g15</link>
      <guid>https://forem.com/tnolte/contributing-to-wordpress-moving-from-user-to-contributor-wordcamp-grand-rapids-2019-lightening-4g15</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dfOSOWEw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i2.wp.com/www.ndigitals.com/wp-content/uploads/2019/07/remi-walle-UOwvwZ9Dy6w-unsplash.jpg%3Fresize%3D150%252C150%26ssl%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dfOSOWEw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i2.wp.com/www.ndigitals.com/wp-content/uploads/2019/07/remi-walle-UOwvwZ9Dy6w-unsplash.jpg%3Fresize%3D150%252C150%26ssl%3D1" alt="" width="150" height="150"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.timnolte.com/slideshow/contributing-to-wordpress-moving-from-user-to-contributor-wordcamp-grand-rapids-2019/"&gt;https://www.timnolte.com/slideshow/contributing-to-wordpress-moving-from-user-to-contributor-wordcamp-grand-rapids-2019/&lt;/a&gt;&lt;/p&gt;
Slide Deck



&lt;h2&gt;
  
  
  1. Introduction
&lt;/h2&gt;

&lt;h3&gt;
  
  
  WordPress History
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;2005 – First Blog&lt;/li&gt;
&lt;li&gt;2006 – First Podcast&lt;/li&gt;
&lt;li&gt;2008 – First Custom Theme/Plugin&lt;/li&gt;
&lt;li&gt;2013 – First WordCamp&lt;/li&gt;
&lt;li&gt;2014 – First Time WordCamp Volunteer&lt;/li&gt;
&lt;li&gt;2018 – First WooCommerce Site&lt;/li&gt;
&lt;li&gt;2018 – First Time WordCamp Speaker&lt;/li&gt;
&lt;li&gt;2018 – Full Co-Maintainer to WordPress.org Plugin&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  2. What Does It Mean To Be A Contributor
&lt;/h2&gt;

&lt;h3&gt;
  
  
  All you need is a desire to help.
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Give Your Time&lt;/li&gt;
&lt;li&gt;Share Your Knowledge &amp;amp; Experience&lt;/li&gt;
&lt;li&gt;Use Your Talents&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  3. Give Your Time
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Help Organize A &lt;a href="https://www.meetup.com/topics/wordpress/"&gt;Local Meetup&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Volunteer at a &lt;a href="https://central.wordcamp.org/"&gt;WordCamp&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  4. Share Your Knowledge &amp;amp; Experience
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Share your favorite Themes &amp;amp; Plugins on your blog, social media, at a local meetup&lt;/li&gt;
&lt;li&gt;Help others in the &lt;a href="https://wordpress.org/support/forums/"&gt;WordPress.org Support Forums&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  5. Use Your Talents
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Non-Developers
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Help maintain the website content for a local non-profit, school, or community service organization.

&lt;ul&gt;
&lt;li&gt;Type and/or write copy.&lt;/li&gt;
&lt;li&gt;Take photos and prepare them for their website.&lt;/li&gt;
&lt;li&gt;Organize a website marketing/content calendar.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Help to translate WordPress and/or your favorite plugins – &lt;a href="https://make.wordpress.org/polyglots/handbook/"&gt;Translator’s Handbook&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Help update the WordPress documentation – &lt;a href="https://make.wordpress.org/docs/handbook/"&gt;Documentation Contributor Handbook&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Developers
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Assist with WordPress.org plugin fixes and enhancements.

&lt;ul&gt;
&lt;li&gt;Look at the WordPress.org Support forums and submit a patch/fix or new feature.&lt;/li&gt;
&lt;li&gt;Look at the plugin’s own Issues Tracker(GitHub?) and submit a patch/fix or new feature.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Contribute to WordPress Core – &lt;a href="https://make.wordpress.org/meta/handbook/projects/developer-hub/"&gt;Developer Hub&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The post &lt;a href="https://www.ndigitals.com/articles/contributing-to-wordpress-moving-from-user-to-contributor-wordcamp-grand-rapids-2019-lightening/"&gt;Contributing to WordPress: Moving From User to Contributor – WordCamp Grand Rapids 2019 Lightening&lt;/a&gt; appeared first on &lt;a href="https://www.ndigitals.com"&gt;Nolte Digital Solutions&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>wordcamp</category>
    </item>
    <item>
      <title>Highlights of WordCamp Grand Rapids 2018</title>
      <dc:creator>Tim Nolte</dc:creator>
      <pubDate>Sun, 01 Jul 2018 16:30:32 +0000</pubDate>
      <link>https://forem.com/tnolte/highlights-of-wordcamp-grand-rapids-2018-4bka</link>
      <guid>https://forem.com/tnolte/highlights-of-wordcamp-grand-rapids-2018-4bka</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;TL;DR – This year #WCGR was all about people and conversations for me. Oh, and trying my hand at speaking, which I didn’t totally bomb.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://i0.wp.com/www.timnolte.com/wp-content/uploads/sites/4/2018/06/IMG_20180630_163442281.jpg?ssl=1"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KjdZ_ceP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i1.wp.com/www.timnolte.com/wp-content/uploads/sites/4/2018/06/IMG_20180630_163442281-1024x576.jpg%3Fresize%3D720%252C405%26ssl%3D1" alt=""&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;
Today marked the 4th &lt;a href="https://2018.grandrapids.wordcamp.org/"&gt;WordCamp Grand Rapids&lt;/a&gt; that I’ve attended. Last year I was just an attendee but this year I stepped things up in a pretty bug way. I was not only a volunteer at the Happiness Bar, but I helped with organize the event, and was even one of the speakers.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://2018.grandrapids.wordcamp.org/organizers/"&gt;Organizers&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&amp;amp;lt;!--//--&amp;amp;gt;&amp;amp;lt;![CDATA[//&amp;amp;gt;&amp;amp;lt;!-- !function(a,b){&amp;amp;quot;use strict&amp;amp;quot;;function c(){if(!e){e=!0;var a,c,d,f,g=-1!==navigator.appVersion.indexOf(&amp;amp;quot;MSIE 10&amp;amp;quot;),h=!!navigator.userAgent.match(/Trident.*rv:11./),i=b.querySelectorAll(&amp;amp;quot;iframe.wp-embedded-content&amp;amp;quot;);for(c=0;c&amp;lt;i.length;c++){if(d=i[c],!d.getAttribute("data-secret"))f=Math.random().toString(36).substr(2,10),d.src+="#?secret="+f,d.setAttribute("data-secret",f);if(g||h)a=d.cloneNode(!0),a.removeAttribute("security"),d.parentNode.replaceChild(a,d)}}}var d=!1,e=!1;if(b.querySelector)if(a.addEventListener)d=!0;if(a.wp=a.wp||{},!a.wp.receiveEmbedMessage)if(a.wp.receiveEmbedMessage=function(c){var d=c.data;if(d.secret||d.message||d.value)if(!/[^a-zA-Z0-9]/.test(d.secret)){var e,f,g,h,i,j=b.querySelectorAll("iframe[data-secret=""+d.secret+""]"),k=b.querySelectorAll("blockquote[data-secret=""+d.secret+""]");for(e=0;e&amp;lt;k.length;e++)k[e].style.display="none";for(e=0;e&amp;lt;j.length;e++)if(f=j[e],c.source===f.contentWindow){if(f.removeAttribute("style"),"height"===d.message){if(g=parseInt(d.value,10),g&amp;gt;1e3)g=1e3;else if(~~g&amp;lt;200)g=200;f.height=g}if("link"===d.message)if(h=b.createElement("a"),i=b.createElement("a"),h.href=f.getAttribute("src"),i.href=d.value,i.host===h.host)if(b.activeElement===f)a.top.location.href=d.value}else;}},d)a.addEventListener("message",a.wp.receiveEmbedMessage,!1),b.addEventListener("DOMContentLoaded",c,!1),a.addEventListener("load",c,!1)}(window,document);//--&amp;gt;&amp;amp;lt;!]]&amp;amp;gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://2018.grandrapids.wordcamp.org/speaker/tim-nolte/"&gt;Tim Nolte&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&amp;amp;lt;!--//--&amp;amp;gt;&amp;amp;lt;![CDATA[//&amp;amp;gt;&amp;amp;lt;!-- !function(a,b){&amp;amp;quot;use strict&amp;amp;quot;;function c(){if(!e){e=!0;var a,c,d,f,g=-1!==navigator.appVersion.indexOf(&amp;amp;quot;MSIE 10&amp;amp;quot;),h=!!navigator.userAgent.match(/Trident.*rv:11./),i=b.querySelectorAll(&amp;amp;quot;iframe.wp-embedded-content&amp;amp;quot;);for(c=0;c&amp;lt;i.length;c++){if(d=i[c],!d.getAttribute("data-secret"))f=Math.random().toString(36).substr(2,10),d.src+="#?secret="+f,d.setAttribute("data-secret",f);if(g||h)a=d.cloneNode(!0),a.removeAttribute("security"),d.parentNode.replaceChild(a,d)}}}var d=!1,e=!1;if(b.querySelector)if(a.addEventListener)d=!0;if(a.wp=a.wp||{},!a.wp.receiveEmbedMessage)if(a.wp.receiveEmbedMessage=function(c){var d=c.data;if(d.secret||d.message||d.value)if(!/[^a-zA-Z0-9]/.test(d.secret)){var e,f,g,h,i,j=b.querySelectorAll("iframe[data-secret=""+d.secret+""]"),k=b.querySelectorAll("blockquote[data-secret=""+d.secret+""]");for(e=0;e&amp;lt;k.length;e++)k[e].style.display="none";for(e=0;e&amp;lt;j.length;e++)if(f=j[e],c.source===f.contentWindow){if(f.removeAttribute("style"),"height"===d.message){if(g=parseInt(d.value,10),g&amp;gt;1e3)g=1e3;else if(~~g&amp;lt;200)g=200;f.height=g}if("link"===d.message)if(h=b.createElement("a"),i=b.createElement("a"),h.href=f.getAttribute("src"),i.href=d.value,i.host===h.host)if(b.activeElement===f)a.top.location.href=d.value}else;}},d)a.addEventListener("message",a.wp.receiveEmbedMessage,!1),b.addEventListener("DOMContentLoaded",c,!1),a.addEventListener("load",c,!1)}(window,document);//--&amp;gt;&amp;amp;lt;!]]&amp;amp;gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i1.wp.com/www.timnolte.com/wp-content/uploads/sites/4/2018/06/IMG_20180630_221859.jpg?ssl=1"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_eERPCVL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i0.wp.com/www.timnolte.com/wp-content/uploads/sites/4/2018/06/IMG_20180630_221859-1024x767.jpg%3Fresize%3D720%252C539%26ssl%3D1" alt="Me Speaking on DevOps and WordPress"&gt;&lt;/a&gt;One of the things I love about #WordCamp Grand Rapids, and the #WordPress community is the people. Yet again I felt welcomed as a member of the community, valued for my experiences as a developer and user of WordPress, and encouraged when I had doubts of being a speaker among the likes of &lt;a href="http://twitter.com/chrislema"&gt;@chrislema&lt;/a&gt; , &lt;a href="http://twitter.com/stevegrunwell"&gt;@stevegrunwell&lt;/a&gt; , &lt;a href="http://twitter.com/aaroncampbell"&gt;@aaroncampbell&lt;/a&gt; , &lt;a href="http://twitter.com/JJJ"&gt;@JJJ&lt;/a&gt; , &lt;a href="http://twitter.com/norcross"&gt;@norcross&lt;/a&gt; , &lt;a href="http://twitter.com/rzen"&gt;@rzen&lt;/a&gt; , &lt;a href="http://twitter.com/realjefflarge"&gt;@realjefflarge&lt;/a&gt; , &lt;a href="http://twitter.com/MrKyleMaurer"&gt;@MrKyleMaurer&lt;/a&gt; , &lt;a href="http://twitter.com/marktimemedia"&gt;@marktimemedia&lt;/a&gt; , and &lt;a href="http://twitter.com/Sara11D"&gt;@Sara11D&lt;/a&gt; , just to name a few of some of the incredible line up of speakers. Even with the focus of this years camp being on plugins &amp;amp; tools I can’t see how anyone in attendance would have left feeling they didn’t gain some new knowledge, insight, perspective. I was blown away by the number of stories I heard of people hearing about the WordCamp even just the day before and joining us. I can’t wait for all the talks to be uploaded to &lt;a href="https://twitter.com/WordPressTV"&gt;@WordPressTV&lt;/a&gt; so I can watch all the sessions I missed. I enjoyed getting to know &lt;a href="http://twitter.com/jboonstra"&gt;@jboonstra&lt;/a&gt; and &lt;a href="http://twitter.com/fosterthemorgan"&gt;@fosterthemorgan&lt;/a&gt; from &lt;a href="https://twitter.com/agathongroup"&gt;@agathongroup&lt;/a&gt; during my time at their booth, at the Happiness Bar, and the after party.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i1.wp.com/www.timnolte.com/wp-content/uploads/sites/4/2018/06/IMG_20180630_164056809.jpg?ssl=1"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Es7C79TW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i2.wp.com/www.timnolte.com/wp-content/uploads/sites/4/2018/06/IMG_20180630_164056809-1024x576.jpg%3Fresize%3D720%252C405%26ssl%3D1" alt="JJJ on the Future of the WordPress Comunity"&gt;&lt;/a&gt;The closing keynote by &lt;a href="http://twitter.com/JJJ"&gt;@JJJ&lt;/a&gt; on the future of WordPress, the community, and the online landscape was inspiring with clear calls to action and encouraged our community to continue on the quest of making WordPress what we want it to be.&lt;/p&gt;

&lt;p&gt;For me, the day flew by, but at the same time I felt every minute was filled with opportunities to engage and learn. I was honored to work along side &lt;a href="http://twitter.com/mysweetcate"&gt;@mysweetcate&lt;/a&gt; , &lt;a href="http://twitter.com/KJRichards"&gt;@KJRichards&lt;/a&gt; , &lt;a href="https://twitter.com/bonnevillessei1"&gt;@bonnevillessei1&lt;/a&gt; , &lt;a href="http://twitter.com/thetweeterninja"&gt;@thetweeterninja&lt;/a&gt; , &lt;a href="http://twitter.com/NaviKnowsWP"&gt;@NaviKnowsWP&lt;/a&gt; , &lt;a href="http://twitter.com/BGNicolePaschen"&gt;@BGNicolePaschen&lt;/a&gt; , &lt;a href="http://twitter.com/rzen"&gt;@rzen&lt;/a&gt; , &lt;a href="http://twitter.com/realjefflarge"&gt;@realjefflarge&lt;/a&gt; , &lt;a href="http://twitter.com/topher1kenobe"&gt;@topher1kenobe&lt;/a&gt; to make WordCamp happen. What an awesome team! I’m already looking forward to future camps no matter what my involvement might be!&lt;/p&gt;

&lt;p&gt;I really enjoyed hanging out with &lt;a href="http://twitter.com/natereist"&gt;@natereist&lt;/a&gt; , &lt;a href="http://twitter.com/khchristensen"&gt;@khchristensen&lt;/a&gt; , &lt;a href="http://twitter.com/rudymalmquist"&gt;@rudymalmquist&lt;/a&gt; , and &lt;a href="http://twitter.com/fosterthemorgan"&gt;@fosterthemorgan&lt;/a&gt; at the after party and talking about running. The food at &lt;a href="https://twitter.com/atwaterbeergr"&gt;@atwaterbeergr&lt;/a&gt; was excellent, and plentiful!&lt;/p&gt;

&lt;p&gt;The post &lt;a href="https://www.ndigitals.com/articles/highlights-of-wordcamp-grand-rapids-2018/"&gt;Highlights of WordCamp Grand Rapids 2018&lt;/a&gt; appeared first on &lt;a href="https://www.ndigitals.com"&gt;Nolte Digital Solutions&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>featured</category>
      <category>geek</category>
      <category>wordcamp</category>
      <category>wordpress</category>
    </item>
    <item>
      <title>Outstanding Morning Developer Track at WordCamp Grand Rapids 2018</title>
      <dc:creator>Tim Nolte</dc:creator>
      <pubDate>Sat, 30 Jun 2018 16:30:42 +0000</pubDate>
      <link>https://forem.com/tnolte/outstanding-morning-developer-track-at-wordcamp-grand-rapids-2018-4jfo</link>
      <guid>https://forem.com/tnolte/outstanding-morning-developer-track-at-wordcamp-grand-rapids-2018-4jfo</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---xDG20-V--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i0.wp.com/www.timnolte.com/wp-content/uploads/sites/4/2018/06/IMG_20180630_090734813.jpg%3Fresize%3D720%252C405%26ssl%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---xDG20-V--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i0.wp.com/www.timnolte.com/wp-content/uploads/sites/4/2018/06/IMG_20180630_090734813.jpg%3Fresize%3D720%252C405%26ssl%3D1" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What an outstanding group of talks on the Developer track at #WordCamp Grand Rapids this morning. Been/RJ/Michelle did an outstanding job. #WCGR #WordPress&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--X-V1QsqL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i2.wp.com/www.timnolte.com/wp-content/uploads/sites/4/2018/06/IMG_20180630_102214412.jpg%3Fresize%3D720%252C405%26ssl%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--X-V1QsqL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i2.wp.com/www.timnolte.com/wp-content/uploads/sites/4/2018/06/IMG_20180630_102214412.jpg%3Fresize%3D720%252C405%26ssl%3D1" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The post &lt;a href="https://www.ndigitals.com/articles/outstanding-morning-developer-track-at-wordcamp-grand-rapids/"&gt;Outstanding Morning Developer Track at WordCamp Grand Rapids 2018&lt;/a&gt; appeared first on &lt;a href="https://www.ndigitals.com"&gt;Nolte Digital Solutions&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>featured</category>
      <category>geek</category>
      <category>developers</category>
      <category>speakers</category>
    </item>
    <item>
      <title>WordPress DevOps – WordCamp Grand Rapids 2018</title>
      <dc:creator>Tim Nolte</dc:creator>
      <pubDate>Sat, 30 Jun 2018 15:00:03 +0000</pubDate>
      <link>https://forem.com/tnolte/wordpress-devops-wordcamp-grand-rapids-2018-5c28</link>
      <guid>https://forem.com/tnolte/wordpress-devops-wordcamp-grand-rapids-2018-5c28</guid>
      <description>&lt;h2&gt;
  
  
  1. Introductions
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Development History

&lt;ul&gt;
&lt;li&gt;High School&lt;/li&gt;
&lt;li&gt;1996 – Personal School Website – image maps with cgi-bin processing written in C&lt;/li&gt;
&lt;li&gt;1996 – Davisco Foods International (First Freelance Job) – static HTML site&lt;/li&gt;
&lt;li&gt;College&lt;/li&gt;
&lt;li&gt;2000 – Inspiration Point Christian Camp &amp;amp; Retreat Center – perl for form processing, PHP template-based site&lt;/li&gt;
&lt;li&gt;Post-College&lt;/li&gt;
&lt;li&gt;2002 – Cross Roads Range Christian Camp – &lt;a href="http://www.phpwcms.org/"&gt;PHP CMS&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;2004-2006 – Church of the Lutheran Brethren of America &amp;amp; related ministries – &lt;a href="http://www.phpwcms.org/"&gt;PHP CMS&lt;/a&gt;, PHP Authorize.NET Donation Processing, &lt;a href="https://www.oscommerce.com/"&gt;osCommerce&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;2006 – iPCS Wireless, Inc. (telecommunications) – PHP &amp;amp; Perl&lt;/li&gt;
&lt;li&gt;2011 – Ericsson/Sprint (telecommunications) – PHP/.NET/C#/Java&lt;/li&gt;
&lt;li&gt;2012 – Allen Extruders/SPI (manufacturing) – PHP/Ruby/C#/.NET&lt;/li&gt;
&lt;li&gt;2016 – Sprint (telecommunications) – Java/C#/.NET&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;WordPress History

&lt;ul&gt;
&lt;li&gt;Personal&lt;/li&gt;
&lt;li&gt;2006 – &lt;a href="https://tim.noltefamily.org/"&gt;Personal Blog&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;2006 – &lt;a href="https://www.faithshaping.org/"&gt;Faith Shaping Podcast&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;2008 – &lt;a href="https://www.thestampbox.com/"&gt;The Stamp Box&lt;/a&gt;, wife stamping/craft site&lt;/li&gt;
&lt;li&gt;2009 – &lt;a href="https://adoption.noltefamily.org/"&gt;Adoption Blog&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Freelance&lt;/li&gt;
&lt;li&gt;2007-2017 – Daybreak Church (website, blog, podcast)&lt;/li&gt;
&lt;li&gt;2010 – Starfish Project Haiti&lt;/li&gt;
&lt;li&gt;2012 – &lt;a href="https://www.itsdelivers.com/"&gt;ITS Partners&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;2018 – &lt;a href="https://warmovenbakehouse.com/"&gt;Warm Oven Bakehouse&lt;/a&gt; (WooCommerce)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  2. Intro to DevOps
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;What is DevOps?

&lt;ul&gt;
&lt;li&gt;DevOps is a software engineering culture and practice that aims at unifying software development (Dev) and software operation (Ops).&lt;/li&gt;
&lt;li&gt;DevOps is about a way of doing things not about the tools themselves.

&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://radar.oreilly.com/2014/06/revisiting-what-is-devops.html"&gt;Revisiting “What is DevOps”&lt;/a&gt; – by &lt;a href="http://twitter.com/mikeloukides"&gt;Mike Loukides&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;It’s always easy to think of DevOps (or of any software industry paradigm) in terms of the tools you use; in particular, it’s very easy to think that if you use Chef or Puppet for automated configuration, Jenkins for continuous integration, and some cloud provider for on-demand server power, that you’re doing DevOps. But DevOps isn’t about tools; it’s about culture, and it extends far beyond the cubicles of developers and operators.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;DevOps aims at shorter development cycles, increased deployment frequency, and more dependable releases, in close alignment with business objectives.

&lt;ul&gt;
&lt;li&gt;The point of implementing DevOps practices is about saving time, money, resources.&lt;/li&gt;
&lt;li&gt;intimate understanding between the development and operations teams&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Many DevOps initiatives focus all on automating everything. If someone has done it more than 1 time then automate it so it never has to be manually done again.

&lt;ul&gt;
&lt;li&gt;If we are spending all our time focusing on automating and implementing DevOps practices then the real product doesn’t launch or the real work doesn’t get done.&lt;/li&gt;
&lt;li&gt;What does DevOps offer to WordPress development?&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Increased Productivity – Developers, designers, and testers can work on solving new problems and not repeating the work needed to solve previous problems.

&lt;ul&gt;
&lt;li&gt;Environment – How do we establish environment standards that developers can work within and operations can easily support?&lt;/li&gt;
&lt;li&gt;Repetitive Tasks – What work are developers or operations teams doing repetitively that make send to automate in some way that can be counted on and reliable?&lt;/li&gt;
&lt;li&gt;Business Workflows – How can business processes and workflows be standardized?&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Increased Quality – A team can rely on testable, reproducible, and quantitative results that can give a clear picture of the current product state.

&lt;ul&gt;
&lt;li&gt;Unit Tests – Requiring code that can be tested to fulfill requirements.&lt;/li&gt;
&lt;li&gt;Standards – Code can be checked automatically against well define business or industry standards. (WordPress Coding Standards)&lt;/li&gt;
&lt;li&gt;Business Requirements – Test and standards compliance reports can be automated to confirm business requirements are being met.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Reduced Time to Delivery of Releases – When standards and best practices are followed there are less mistakes and less changes required to prepare for a release.

&lt;ul&gt;
&lt;li&gt;Automated Tests – Tests can be run on changes or on regular business defined schedules.&lt;/li&gt;
&lt;li&gt;On-Demand User Testing – Tests can be run by developers or quality control on-demand without spending time on setup.&lt;/li&gt;
&lt;li&gt;More Releases – Small regularly scheduled, or planned, releases can be made on an as-needed basis.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  3. What Are The First Steps
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Understand the Concepts

&lt;ul&gt;
&lt;li&gt;You need to take small steps to start understanding what can be done, what should be done, and how it fits your business or organization.&lt;/li&gt;
&lt;li&gt; Resources&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://carlalexander.ca/"&gt;Carl Alexander&lt;/a&gt; – &lt;a href="https://carlalexander.ca/introduction-automated-wordpress-deployments/"&gt;Introduction to Automated WordPress Deployments&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://wppusher.com/wordpress-git-course"&gt;WP Pusher&lt;/a&gt; – Git for WordPress Developers&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://tommcfarlin.com/"&gt;Tom McFarlin&lt;/a&gt; – &lt;a href="https://tommcfarlin.com/ship-it-or-die/"&gt;Ship It or Die&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Identify Your Pain Points

&lt;ul&gt;
&lt;li&gt;What are you repeating?&lt;/li&gt;
&lt;li&gt;What is taking you the most time?&lt;/li&gt;
&lt;li&gt;What is requiring the most support from your users?&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Leverage What Others Have Already Done

&lt;ul&gt;
&lt;li&gt;Services&lt;/li&gt;
&lt;li&gt;Source Control

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com"&gt;GitHub&lt;/a&gt; – Git&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://bitbucket.org"&gt;Bitbucket&lt;/a&gt; – Git &amp;amp; Mercurial&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.assembla.com/"&gt;Assembla&lt;/a&gt; – Subversion &amp;amp; Git&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Continuous Integration Platforms

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://travis-ci.org"&gt;TravisCI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://circleci.com"&gt;CircleCI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.cloudbees.com"&gt;CloudBees&lt;/a&gt; – Cloud-based Jenkins&lt;/li&gt;
&lt;li&gt;&lt;a href="http://codeship.com/"&gt;Codeship&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.deployhq.com/"&gt;DeployHQ&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Reporting

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://codecov.io"&gt;Codecov&lt;/a&gt; – Code Coverage Reporting Service&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Guides

&lt;ul&gt;
&lt;li&gt;OSTraining – &lt;a href="https://www.ostraining.com/blog/wordpress/deploy-git-wordpress/"&gt;WordPress Deployment with Deploy, Git and Bitbucket&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Plugins&lt;/li&gt;
&lt;li&gt;Radish Concepts – &lt;a href="https://github.com/radishconcepts/WordPress-GitHub-Plugin-Updater"&gt;WordPress GitHub Plugin Updater&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Scripts&lt;/li&gt;
&lt;li&gt;Dean Clatworthy – &lt;a href="https://github.com/deanc/wordpress-plugin-git-svn"&gt;GIT to WordPress.org’s SVN Repository&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Gary Jones – &lt;a href="https://github.com/GaryJones/wordpress-plugin-svn-deploy"&gt;WordPress Plugin Directory Deployment Script&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Mike Jolley – &lt;a href="https://github.com/mikejolley/github-to-wordpress-deploy-script"&gt;Github to WordPress.org Deployment Script&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Ahmad Awais – &lt;a href="https://github.com/ahmadawais/WPGitDeploy-CLI"&gt;WPGitDeploy CLI&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Build Tools&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://getcomposer.org/"&gt;Composer&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://packagist.org/packages/squizlabs/php_codesniffer"&gt;PHP Codesniffer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://packagist.org/packages/wp-coding-standards/wpcs"&gt;WordPress Coding Standards&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.npmjs.com/"&gt;NPM&lt;/a&gt; – &lt;a href="https://gruntjs.com/"&gt;Grunt&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;Cedaro – &lt;a href="https://github.com/cedaro/grunt-wp-i18n"&gt;grunt-wp-i18n&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Stephen Harris&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/stephenharris/wp-readme-to-markdown"&gt;grunt-wp-readme-to-markdown&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/stephenharris/grunt-wp-deploy"&gt;grunt-wp-deploy&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  4. What Does The End State Look Like? A Plugin Example.
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/timnolte/scheduled-featured-images/tree/1.0.0-dev"&gt;Scheduled Featured Images Plugin&lt;/a&gt; – &lt;a href="https://travis-ci.org/ndigitals/scheduled-featured-images/branches"&gt;https://travis-ci.org/ndigitals/scheduled-featured-images/branches&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://bitbucket.org/daybreakchurch/daybreakv5/branch/dev-5.0.10.1"&gt;Daybreak.tv Custom Theme&lt;/a&gt; – &lt;a href="https://app.codeship.com/projects/48683/deployment%5C_branches/54216"&gt;https://app.codeship.com/projects/48683/deployment\_branches/54216&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tools

&lt;ul&gt;
&lt;li&gt;NPM &amp;amp; Composer – Reproducible Environment&lt;/li&gt;
&lt;li&gt;Grunt – Running Tasks&lt;/li&gt;
&lt;li&gt;Codecov – Code Coverage Reporting&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Configuration

&lt;ul&gt;
&lt;li&gt;PHP Code Sniffer – WordPress Coding Standards&lt;/li&gt;
&lt;li&gt;phpcs/phpcbf&lt;/li&gt;
&lt;li&gt;PHPUnit – Unit Testing&lt;/li&gt;
&lt;li&gt;phpunit&lt;/li&gt;
&lt;li&gt;WordPress i18n – Internationalization&lt;/li&gt;
&lt;li&gt;grunt i18n (addtextdomain, makepot)&lt;/li&gt;
&lt;li&gt;WordPress Readme to Markdown – GitHub &amp;amp; WordPress.org Readme maintenance alignment&lt;/li&gt;
&lt;li&gt;wp_readme_to_markdown&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Practises

&lt;ul&gt;
&lt;li&gt;Run Local Local Checks&lt;/li&gt;
&lt;li&gt;phpunit&lt;/li&gt;
&lt;li&gt;phpcs&lt;/li&gt;
&lt;li&gt;phpcbf&lt;/li&gt;
&lt;li&gt;Test Automation Against Development Branches&lt;/li&gt;
&lt;li&gt;TravisCI – branches&lt;/li&gt;
&lt;li&gt;Test Automation Against Final Release&lt;/li&gt;
&lt;li&gt;TravisCI – master&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Deployments

&lt;ul&gt;
&lt;li&gt;Deploying Plugin &amp;amp; Theme Updates Directly to Servers&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://codeship.com/"&gt;CodeShip&lt;/a&gt; – rsync&lt;/li&gt;
&lt;li&gt;Deploying Plugin &amp;amp; Theme Updates Via A Plugin&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/radishconcepts/WordPress-GitHub-Plugin-Updater"&gt;WordPress GitHub Plugin Updater&lt;/a&gt; – can select which branch to use as source for plugin updates, can install directly from GitHub&lt;/li&gt;
&lt;li&gt;Deploying Plugin &amp;amp; Theme Updates to WordPress.org&lt;/li&gt;
&lt;li&gt;Use a WordPress.org SVN pre/commit script&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  5. Q &amp;amp; A
&lt;/h2&gt;

&lt;p&gt;This space will be reserved to capture questions asked at the end of the talk with the answer. Additional questions can be asked in the post comments.&lt;/p&gt;

&lt;p&gt;The post &lt;a href="https://www.ndigitals.com/articles/wordpress-devops-wordcamp-grand-rapids-2018/"&gt;WordPress DevOps – WordCamp Grand Rapids 2018&lt;/a&gt; appeared first on &lt;a href="https://www.ndigitals.com"&gt;Nolte Digital Solutions&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>featured</category>
      <category>programming</category>
      <category>devops</category>
      <category>grandrapids</category>
    </item>
    <item>
      <title>WordPress Development On A Chromebook, Termux, &amp; Neovim</title>
      <dc:creator>Tim Nolte</dc:creator>
      <pubDate>Wed, 13 Jun 2018 04:36:39 +0000</pubDate>
      <link>https://forem.com/tnolte/wordpress-development-on-a-chromebook-termux-neovim-1a3p</link>
      <guid>https://forem.com/tnolte/wordpress-development-on-a-chromebook-termux-neovim-1a3p</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8d4zr1u8ko196kmezawe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8d4zr1u8ko196kmezawe.png" alt="Neovim - Editing WordPress Plugin File" width="720" height="366"&gt;&lt;/a&gt;Neovim – Editing WordPress Plugin File&lt;/p&gt;

&lt;p&gt;So about 6 months ago I decided to make some changes to my personal development environment. I’ve been using a &lt;a href="https://www.google.com/chromebook/" rel="noopener noreferrer"&gt;Chromebook&lt;/a&gt; as my primary machine since about 2013. I first purchased an Acer C710 for my wife to use but compared to our Macbook Pro it was a frustrating and subpar experience for her, not to mention she was a heavy Adobe Suite user. Since sharing the Macbook Pro was challenging I set out to use the Chromebook as me development machine. Originally I went with the &lt;a href="https://github.com/dnschneid/crouton" rel="noopener noreferrer"&gt;crouton&lt;/a&gt; option. It was pretty sweet to have a full Linux environment alongside Chrome OS. I was then running a full &lt;a href="https://en.wikipedia.org/wiki/LAMP_(software_bundle)" rel="noopener noreferrer"&gt;LAMP&lt;/a&gt; environment with &lt;a href="https://www.jetbrains.com/phpstorm/" rel="noopener noreferrer"&gt;PhpStorm&lt;/a&gt; as my IDE. This worked OK, I had performance and stability issues at times. In an effort to resolve some of the performance issues, and screen realestate, I picked up a &lt;a href="https://www.google.com/intl/en_us/chromebook/find/toshiba-chromebook-2/" rel="noopener noreferrer"&gt;Toshiba Chromebook 2&lt;/a&gt; and again started with a crouton environment. After having to rebuild my crouton environment a few times, and still experiencing random broken crouton stuff, I decided to move to a web-based IDE.  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftkjmdt7co6imdbpbzw4q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftkjmdt7co6imdbpbzw4q.png" alt="CodeAnywhere - Web-based IDE" width="720" height="368"&gt;&lt;/a&gt;CodeAnywhere – Web-based IDE&lt;/p&gt;

&lt;p&gt;I tried a gamut of web-based IDEs, including &lt;a href="http://c9.io" rel="noopener noreferrer"&gt;Cloud9&lt;/a&gt;&amp;amp; &lt;a href="https://codeanywhere.com/" rel="noopener noreferrer"&gt;CodeAnywhere&lt;/a&gt;, and ended up settling on CodeAnywhere for a good chunk of time. During that time I actually picked up an &lt;a href="https://store.hp.com/us/en/pdp/hp-chromebook-13-g1-(energy-star)-p-w0t00ut-aba--1" rel="noopener noreferrer"&gt;HP Chromebook G1&lt;/a&gt;, which is what I use to remote to my work Virtual Desktop at &lt;a href="https://www.sprint.com/" rel="noopener noreferrer"&gt;Sprint,&lt;/a&gt; which has been a pretty solid machine. As for CodeAnywhere, I actually paid for a multi-year plan, but after seeing little progress on features, and severely lackluster customer service when things weren’t working, I started looking for alternatives. I was considering going back to crouton but was not liking the idea of putting my Chromebook back into &lt;a href="https://sites.google.com/site/chromeoswikisite/home/what-s-new-in-dev-and-beta/developer-mode" rel="noopener noreferrer"&gt;Developer Mode&lt;/a&gt;. I did checkout &lt;a href="https://codenvy.com/" rel="noopener noreferrer"&gt;Codenvy&lt;/a&gt;, which is a hosted version of &lt;a href="https://www.eclipse.org/che/" rel="noopener noreferrer"&gt;Eclipse Che&lt;/a&gt; a sort of web-based version of Eclipse. About that time Android applications had become officially supported on my Chromebook.  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4sene7ffx9s4jy4k53dl.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4sene7ffx9s4jy4k53dl.jpg" alt="Development Setup" width="720" height="405"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As I was checking out the landscape again on doing full development on my Chromebook, I came across &lt;a href="https://blog.lessonslearned.org/building-a-more-secure-development-chromebook/" rel="noopener noreferrer"&gt;an interesting article&lt;/a&gt;. The concept was to use the Android environment on Chrome OS and the application &lt;a href="https://termux.com/" rel="noopener noreferrer"&gt;Termux&lt;/a&gt; as a development environment. And that led me even further into the idea of going a little retro and using &lt;a href="https://www.vim.org/" rel="noopener noreferrer"&gt;vim&lt;/a&gt;, and more specifically &lt;a href="https://neovim.io/" rel="noopener noreferrer"&gt;Neovim&lt;/a&gt;, as my IDE.  &lt;/p&gt;

&lt;p&gt;Since I’ve just recently restored my Neovim setup and time will tell if this is going to be my long term solution. I just recently completed some WordPress plugin changes for a WooCommerce plugin that I needed to make for a client site. Once the translation file is updated I’m hoping that my pull request is accepted and my changes are actually included in the official plugin. On a side note I resorted to using the &lt;a href="https://github.com/afragen/github-updater" rel="noopener noreferrer"&gt;GitHub Update&lt;/a&gt; plugin for install my version, and my branch of changes, to the client site until my changes are official. I’ll go into more of that during &lt;a href="https://2018.grandrapids.wordcamp.org/session/wordpress-devops/" rel="noopener noreferrer"&gt;my upcoming talk&lt;/a&gt; at &lt;a href="https://2018.grandrapids.wordcamp.org/" rel="noopener noreferrer"&gt;WordCamp Grand Rapids&lt;/a&gt; later this June.  &lt;/p&gt;

&lt;p&gt;The post &lt;a href="https://www.ndigitals.com/articles/wordpress-development-on-a-chromebook-termux-neovim/" rel="noopener noreferrer"&gt;WordPress Development On A Chromebook, Termux, &amp;amp; Neovim&lt;/a&gt; appeared first on &lt;a href="https://www.ndigitals.com" rel="noopener noreferrer"&gt;Nolte Digital Solutions&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>geek</category>
      <category>programming</category>
      <category>chromebook</category>
      <category>development</category>
    </item>
    <item>
      <title>[WordPress] Plugins Are Dead? Long Live Plugins!</title>
      <dc:creator>Tim Nolte</dc:creator>
      <pubDate>Sun, 03 Dec 2017 18:58:36 +0000</pubDate>
      <link>https://forem.com/tnolte/wordpress-plugins-are-dead-long-live-plugins-4e6o</link>
      <guid>https://forem.com/tnolte/wordpress-plugins-are-dead-long-live-plugins-4e6o</guid>
      <description>&lt;p&gt;Recently, as I was curious what my local municipality was using to drive their website, I did the common “View source” and did some Googling. I came across the &lt;a href="https://www.evogov.com/technology"&gt;EvoGov CMS&lt;/a&gt; built on Python by Evo Studios. I came across their &lt;a href="https://www.evo.cloud/"&gt;cloud hosted platform&lt;/a&gt; and read something that caught my eye.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“PLUGINS ARE DEAD | After seeing WordPress (and many other PHP) plugins get hacked constantly, we decided to make something better. To end plugin madness, we built the most common applications directly into the system. This makes our platform perform better, and more safely.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Of course, as both a WordPress supporter, and in-the-works plugin developer. This was the sort of this I just shake my head at. The competitors are going to market their stuff in whatever way they can, and sometimes that means bashing the competition. We see this all the time, like with wireless carriers(AT&amp;amp;T, T-Mobile, Verizon, Sprint). And, though I wasn’t there in person, I heard about a lot of talk on this subject at WordCamp US. I recently read a very &lt;a href="https://dzone.com/articles/why-developers-fear-low-code"&gt;good article on DZone&lt;/a&gt; that spoke to the fears that developers have of “low-code” platforms. I loved the perspective and reassurance the article presented, as I’ve seen that sort of fear even in my day job at Sprint with the introduction of tools that reduce the need for large development efforts.&lt;/p&gt;

&lt;p&gt;Back to the point. It is important for us developers to understand that we need to adapt, grow, and change as technologies and tools change and advance. While yes there are going to be new tools that threaten the “low hanging fruit” of the needs of users, we shouldn’t be building our livelihood and businesses on the low hanging fruit alone. There are always going to be things, niche markets, that the low-code platforms will not be able to accommodate. And that is a huge selling point of WordPress. And I think part of what is driving Matt Mullenweg, and efforts like Gutenberg, is a platform that out-of-the-box can be something that meets the needs of the masses(low hanging fruit) but under the hood can be extended for those niche markets.&lt;/p&gt;

&lt;p&gt;Are plugins dead? That is a resounding NO. What plugins are needed, or can be created, will change as the platform(i.e. WordPress) evolves, but there will always be niche markets that will need something beyond what Core doesn’t, or cannot, provide. And the same goes for “competing” platforms that try to spin the greatest asset of WordPress (i.e. plugins &amp;amp; themes) as a reason their platform is better. I for one would rather take on a client that needs my skills to help them with their niche if they are already using WordPress rather than spending all the effort to move them off of some closed/locked-in platform.&lt;/p&gt;

&lt;p&gt;The post &lt;a href="https://www.ndigitals.com/articles/wordpress-plugins-dead-long-live-plugins/"&gt;[WordPress] Plugins Are Dead? Long Live Plugins!&lt;/a&gt; appeared first on &lt;a href="https://www.ndigitals.com"&gt;Nolte Digital Solutions&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>development</category>
      <category>editorial</category>
      <category>wordpress</category>
      <category>cms</category>
    </item>
    <item>
      <title>Scheduled Featured Images First Unit Tests Committed</title>
      <dc:creator>Tim Nolte</dc:creator>
      <pubDate>Mon, 13 Nov 2017 17:37:44 +0000</pubDate>
      <link>https://forem.com/tnolte/scheduled-featured-images-first-unit-tests-committed-43c4</link>
      <guid>https://forem.com/tnolte/scheduled-featured-images-first-unit-tests-committed-43c4</guid>
      <description>&lt;p&gt;I’m happy to report that some of the first unit tests for the Scheduled Featured Images plugin have been committed to the &lt;a href="https://github.com/timnolte/scheduled-featured-images/tree/1.0.0-dev"&gt;current development working fork&lt;/a&gt;. There is still much work to be done, and a lot of time is being spent on plugin code organization and making sure it is developed in the most modern way, including the use of &lt;a href="https://getcomposer.org/"&gt;Composer&lt;/a&gt; for namespace autoloading, as well as making sure a goal of 100% unit test &lt;a href="https://codecov.io/gh/ndigitals/scheduled-featured-images"&gt;code coverage&lt;/a&gt; can be obtained.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/timnolte/scheduled-featured-images/tree/1.0.0-dev"&gt;https://github.com/timnolte/scheduled-featured-images/tree/1.0.0-dev&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Most of the development was put on hold during the month of October to devote time to contributing to #&lt;a href="https://hacktoberfest.digitalocean.com/"&gt;Hacktoberfest&lt;/a&gt; . I contributed to both the &lt;a href="https://github.com/Yoast/wordpress-seo/"&gt;Yoast WordPress SEO&lt;/a&gt; &amp;amp; &lt;a href="https://github.com/TheCraigHewitt/Seriously-Simple-Podcasting"&gt;Seriously Simple Podcasting&lt;/a&gt; plugins. It was a blast to spend a bunch of time using my past experience with writing my own podcasting plugin to contribute to one of the popular WordPress plugins out there for the general public. I also enjoy taking part in helping in a small way with the WordPress SEO plugin since it is one I pretty much use on any WordPress site I setup or manage. Depending on how well received the Scheduled Featured Images plugin is, and what features are asked for or bugs found, I will probably throw some items out there for Hacktoberfest as well.&lt;/p&gt;

&lt;p&gt;The hope right now is that a beta of the Scheduled Featured Images plugin will be ready for testing by the end of November with the hopes that the plugin will be ready for submission to the WordPress Plugin Team by the end of December. Would be an awesome Christmas gift to see my plugin hit the WordPress plugin repo over the holidays. We’ll see what the schedule allows for.&lt;/p&gt;

&lt;p&gt;I will try to post weekly updates on progress here on out for anyone interested in following the project status. Till next update! Cheers!&lt;/p&gt;

&lt;p&gt;The post &lt;a href="https://www.ndigitals.com/articles/scheduled-featured-images-first-unit-tests-committed/"&gt;Scheduled Featured Images First Unit Tests Committed&lt;/a&gt; appeared first on &lt;a href="https://www.ndigitals.com"&gt;Nolte Digital Solutions&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>development</category>
      <category>plugins</category>
      <category>wordpress</category>
      <category>codecoverage</category>
    </item>
    <item>
      <title>WordPress With A Future Focused On Security</title>
      <dc:creator>Tim Nolte</dc:creator>
      <pubDate>Tue, 03 Oct 2017 13:03:43 +0000</pubDate>
      <link>https://forem.com/tnolte/wordpress-with-a-future-focused-on-security-1eel</link>
      <guid>https://forem.com/tnolte/wordpress-with-a-future-focused-on-security-1eel</guid>
      <description>&lt;p&gt;As a member of the WordPress community for the past 10+ years I’ve seen the growth of WordPress and seen a steady backlash of concern for the security of the platform. As a technologist I’ve seen the world of security go from an afterthought to being the first question that is asked. However given the recent uncovering, by the &lt;a href="https://www.wordfence.com/"&gt;Wordfence&lt;/a&gt; security plugin team, of the dubious activities by a WordPress plugin maintainer over the course of 4.5 years it’s very obvious that more focus on security is required by both the WordPress Core team and the community.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://www.wordfence.com/blog/2017/09/coordinated-plugin-spam/"&gt;9 WordPress Plugins Targeted in Coordinated 4.5-Year Spam Campaign&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Given that I’m currently working on a new plugin, and I just listened to a recent &lt;a href="https://www.wp-tonic.com/"&gt;WP-Tonic&lt;/a&gt; podcast discuss the subject, I couldn’t help but start to think about the future of WordPress security.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://www.wp-tonic.com/podcast/233-wp-tonic-round-table-show-wordpress-hooks-actions-filters/"&gt;233 WP-Tonic Round Table Show “WordPress Hooks, Actions and Filters”&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;My thoughts quickly went to the world of DevOps and Continuous Integration &amp;amp; Deployment. One of the major pieces of DevOps is automated testing. I could easily see a future where all plugins and themes wouldn’t be accepted to the repo without a testing suite to accompany it. Running the automated tests, and looking at the code coverage for those tests, could begin to shine a light security issues. I’d like to think that reading through the test suite would help a review team understand the intent of the developer(s). Also, it would seem that malicious attempts might be more easily be caught as well. Using something like code coverage could even help to classify plugins and themes by their “quality”. Sure this may seem to be a larger technical hurdle, writing a test suite, but in today’s development environments I see automated testing as no longer something that is optional.&lt;/p&gt;

&lt;p&gt;I also saw &lt;a href="https://wptavern.com"&gt;WP Tavern&lt;/a&gt;‘s article that WP-CLI is looking to expand their checksum security measures to plugins and themes.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://wptavern.com/new-wp-cli-project-aims-to-extend-checksum-verification-to-plugins-and-themes"&gt;New WP-CLI Project Aims to Extend Checksum Verification to Plugins and Themes&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;While this is something that is wildly used in the Open Source Software world there are many, like &lt;a href="https://www.grc.com/securitynow.htm"&gt;Security Now&lt;/a&gt;‘s Steve Gibson, that see this practice as a &lt;a href="https://www.grc.com/sn/sn-630.htm"&gt;false sense of security&lt;/a&gt; and one that can easily be falsified.&lt;/p&gt;

&lt;p&gt;The post &lt;a href="https://www.ndigitals.com/articles/wordpress-future-focused-security/"&gt;WordPress With A Future Focused On Security&lt;/a&gt; appeared first on &lt;a href="https://www.ndigitals.com"&gt;Nolte Digital Solutions&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>development</category>
      <category>security</category>
      <category>wordpress</category>
      <category>checksums</category>
    </item>
  </channel>
</rss>
