<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-7215669801447322432</atom:id><lastBuildDate>Thu, 24 Jun 2021 13:27:37 +0000</lastBuildDate><category>guide</category><category>productivity</category><category>project management</category><category>security</category><category>stress</category><category>tasks</category><category>time management</category><category>wordpress</category><category>workload</category><category>PHP</category><category>WP-CLI</category><category>adversity</category><category>agencies</category><category>business networking</category><category>capacity</category><category>development</category><category>drupal</category><category>drupal 8</category><category>email</category><category>extend</category><category>firewall</category><category>focus</category><category>gigs</category><category>howto</category><category>interview</category><category>marketing</category><category>messenger</category><category>release</category><category>software</category><category>virus</category><title>tekAura | We squash Bugz</title><description>Wordpress &amp;amp; Drupal, Integrations &amp;amp; Migrations, Admin &amp;amp; Software Dev</description><link>http://www.tekaura.com/</link><managingEditor>noreply@blogger.com (Shannon &quot;tekNorah&quot; Medlin)</managingEditor><generator>Blogger</generator><openSearch:totalResults>8</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7215669801447322432.post-2426813717847943849</guid><pubDate>Tue, 13 Aug 2019 00:43:00 +0000</pubDate><atom:updated>2020-12-02T07:20:52.166-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">development</category><category domain="http://www.blogger.com/atom/ns#">drupal</category><category domain="http://www.blogger.com/atom/ns#">drupal 8</category><category domain="http://www.blogger.com/atom/ns#">extend</category><category domain="http://www.blogger.com/atom/ns#">howto</category><category domain="http://www.blogger.com/atom/ns#">PHP</category><category domain="http://www.blogger.com/atom/ns#">software</category><title>How to extend an existing Drupal 8 Form</title><description>&lt;style&gt;  .has-anchor-hash .anchor-hash-link {    left: 0.5em;    opacity: 0;    transition: opacity 0.3s;    display: inline-block;    height: 100%   }      .has-anchor-hash .anchor-hash-link__icon {    display: inline-block;    fill: #999   }      .has-anchor-hash .anchor-hash-link:hover .anchor-hash-link__icon {    fill: #44414E   }      .has-anchor-hash:hover .anchor-hash-link {    opacity: 1   }      .has-anchor-hash .anchor-hash-link {    color: #999 !important;    background-image: none !important   }   a.anchor {    display: block;    position: relative;    top: -80px;    visibility: hidden;   } &lt;/style&gt;  &lt;br /&gt;  &lt;div 1em=&quot;&quot; class=&quot;separator&quot; margin-left:=&quot;&quot; margin-right:=&quot;&quot; style=&quot;clear: both; text-align: center;&quot;&gt;   &lt;noscript class=&quot;optimizedimg&quot; data-alt=&quot;How to extend an existing Drupal 8 Form&quot; data-jpg-mobile=&quot;//i.imgur.com/R5xq56gm.jpg&quot; data-jpg=&quot;//i.imgur.com/R5xq56g.jpg&quot; data-webp=&quot;//i.imgur.com/R5xq56g.jpg&quot;&gt;    &lt;img src=&quot;//i.imgur.com/R5xq56g.jpg&quot; alt=&quot;How to extend an existing Drupal 8 Form&quot; /&gt;   &lt;/noscript&gt;  &lt;/div&gt;  &lt;br /&gt;  &lt;div&gt;  The   &lt;a href=&quot;https://www.drupal.org/about&quot; target=&quot;blank&quot;&gt;Drupal&lt;/a&gt; FOSS CMS (Free and Open Source Software Content Management System) is considered to be the one of the most developer friendly CMS available. However, for those new to Drupal, something as &amp;quot;simple&amp;quot; as changing the text displayed after submitting a form can be daunting. Originally released in 2011, with Drupal 7, the Drupal Entity API defines different types of information stored and displayed in Drupal. When Drupal 8 was released, the concept was further refined into what&#39;s referred to as &amp;quot;specifically typed objects&amp;quot;, meaning that each Entity is   &lt;a href=&quot;https://www.drupal.org/docs/8/api/entity-api/introduction-to-entity-api-in-drupal-8&quot; target=&quot;blank&quot;&gt;defined&lt;/a&gt; as having a specific set of information and operations that can be performed on it. As you might imagine, Drupal 8 Forms are used to perform operations on Entities, such as add, edit, and delete. When creating a form, a form   &lt;a href=&quot;https://www.drupal.org/docs/8/api/entity-api/handlers&quot; target=&quot;blank&quot;&gt;handler&lt;/a&gt; is used to define which class should be used. So, when you want to modify the implementation of a form, you will need to extend the original form&#39;s class and tell the system to use your custom class. Simple, right? Let&#39;s step through the process...   &lt;br /&gt;   &lt;ul&gt;    &lt;li&gt; &lt;a href=&quot;#use-case&quot;&gt;The Use Case&lt;/a&gt; &lt;/li&gt;    &lt;li&gt; &lt;a href=&quot;#setup-dev-env&quot;&gt;Setup Your Dev Environment&lt;/a&gt; &lt;/li&gt;    &lt;li&gt; &lt;a href=&quot;#generate-module&quot;&gt;Generate Your Custom Module&lt;/a&gt; &lt;/li&gt;    &lt;li&gt; &lt;a href=&quot;#locate-existing&quot;&gt;Locate the Existing Form Code&lt;/a&gt; &lt;/li&gt;    &lt;li&gt; &lt;a href=&quot;#copy-rename&quot;&gt;Copy and Rename the Form File&lt;/a&gt; &lt;/li&gt;    &lt;li&gt; &lt;a href=&quot;#customize&quot;&gt;Customize the Form Code&lt;/a&gt; &lt;/li&gt;    &lt;li&gt; &lt;a href=&quot;#set-form-handler&quot;&gt;Set the Form Handler Class&lt;/a&gt; &lt;/li&gt;    &lt;li&gt; &lt;a href=&quot;#enable-custom-module&quot;&gt;Enable Your Custom Module&lt;/a&gt; &lt;/li&gt;   &lt;/ul&gt;  &lt;/div&gt;  &lt;br /&gt;  &lt;div&gt;   &lt;a class=&quot;anchor&quot; id=&quot;use-case&quot;&gt;&lt;/a&gt;   &lt;br /&gt;   &lt;h2 class=&quot;has-anchor-hash&quot;&gt; The Use Case &lt;a class=&quot;anchor-hash-link&quot; href=&quot;#use-case&quot;&gt;   &lt;svg class=&quot;anchor-hash-link__icon&quot; height=&quot;18&quot; viewbox=&quot;0 0 18 18&quot; width=&quot;18&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt; &lt;path d=&quot;M16.746 7.177l-4.101 4.101c-1.773 1.773-4.45 1.473-5.697.226-.378-.378-.275-1.093.229-1.596.433-.433.904-.588 1.594-.228.69.361 1.511.315 2.051-.224l4.101-4.101a1.61 1.61 0 0 0-2.278-2.278l-2.199 2.198a5.148 5.148 0 0 0-2.311-.545 5.18 5.18 0 0 0-.865.077l3.553-3.552a4.187 4.187 0 1 1 5.923 5.922zm-7.108 6.319a5.154 5.154 0 0 1-2.312-.544l-1.971 1.972a1.613 1.613 0 0 1-2.278 0 1.613 1.613 0 0 1 0-2.278l3.874-3.874c.54-.54 1.36-.586 2.05-.224.69.36 1.162.205 1.595-.228.504-.506.607-1.22.229-1.597-1.247-1.248-3.924-1.548-5.697.225l-3.874 3.874a4.187 4.187 0 1 0 5.923 5.923l3.326-3.327a5.068 5.068 0 0 1-.865.078z&quot;&gt;&lt;/path&gt;   &lt;/svg&gt;&lt;/a&gt; &lt;/h2&gt;     In order to best illustrate the process of extending and existing Drupal 8 Form, we will modify the submit messages for the   &lt;a href=&quot;https://www.drupal.org/project/simplenews&quot; target=&quot;blank&quot;&gt;Simplenews&lt;/a&gt; subscribe form.  &lt;/div&gt; &lt;!-- #use-case --&gt;&lt;br /&gt;  &lt;div&gt;   &lt;a class=&quot;anchor&quot; id=&quot;setup-dev-env&quot;&gt;&lt;/a&gt;   &lt;br /&gt;   &lt;h2 class=&quot;has-anchor-hash&quot;&gt; Setup Your Dev Environment &lt;a class=&quot;anchor-hash-link&quot; href=&quot;#setup-dev-env&quot;&gt;   &lt;svg class=&quot;anchor-hash-link__icon&quot; height=&quot;18&quot; viewbox=&quot;0 0 18 18&quot; width=&quot;18&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt; &lt;path d=&quot;M16.746 7.177l-4.101 4.101c-1.773 1.773-4.45 1.473-5.697.226-.378-.378-.275-1.093.229-1.596.433-.433.904-.588 1.594-.228.69.361 1.511.315 2.051-.224l4.101-4.101a1.61 1.61 0 0 0-2.278-2.278l-2.199 2.198a5.148 5.148 0 0 0-2.311-.545 5.18 5.18 0 0 0-.865.077l3.553-3.552a4.187 4.187 0 1 1 5.923 5.922zm-7.108 6.319a5.154 5.154 0 0 1-2.312-.544l-1.971 1.972a1.613 1.613 0 0 1-2.278 0 1.613 1.613 0 0 1 0-2.278l3.874-3.874c.54-.54 1.36-.586 2.05-.224.69.36 1.162.205 1.595-.228.504-.506.607-1.22.229-1.597-1.247-1.248-3.924-1.548-5.697.225l-3.874 3.874a4.187 4.187 0 1 0 5.923 5.923l3.326-3.327a5.068 5.068 0 0 1-.865.078z&quot;&gt;&lt;/path&gt;   &lt;/svg&gt;&lt;/a&gt; &lt;/h2&gt; When creating new functionality for your Drupal website, it is always best to use a local development environment. We recommend using Docksal with Docker to accomplish this task because it is simple to setup and includes essential tools for developing with Drupal. We are also going to make sure the contrib module we are modifying is installed and enabled.  &lt;br /&gt;   &lt;ol&gt;    &lt;li&gt; Goto &lt;a href=&quot;https://docksal.io/&quot; target=&quot;blank&quot;&gt;Docksal.io&lt;/a&gt; and follow install instructions for your Operating System on the &lt;i&gt;OS Support&lt;/i&gt; tab to install Docksal with Docker &lt;/li&gt;    &lt;li&gt; Open Terminal/Console &lt;/li&gt;    &lt;li&gt; Create projects directory: &lt;code&gt;mkdir ~/Sites&lt;/code&gt; &lt;/li&gt;    &lt;li&gt; Create project with Docksal: &lt;code&gt;fin project create&lt;/code&gt; &lt;/li&gt;    &lt;li&gt; Name your project &amp;amp; Choose Drupal 8 when prompted (Composer Version is recommended)     &lt;div 1em=&quot;&quot; class=&quot;separator&quot; margin-left:=&quot;&quot; margin-right:=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;   &lt;noscript class=&quot;optimizedimg&quot; data-alt=&quot;extendform&quot; data-jpg-mobile=&quot;//i.imgur.com/lYQFExym.jpg&quot; data-jpg=&quot;//i.imgur.com/lYQFExy.jpg&quot; data-webp=&quot;//b.webpurr.com/AKAp.webp&quot;&gt;    &lt;img src=&quot;//i.imgur.com/lYQFExy.jpg&quot; alt=&quot;extendform&quot; /&gt;   &lt;/noscript&gt;     &lt;/div&gt; &lt;/li&gt;    &lt;li&gt; Enter &lt;code&gt;y&lt;/code&gt; to proceed with setup     &lt;div 1em=&quot;&quot; class=&quot;separator&quot; margin-left:=&quot;&quot; margin-right:=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;   &lt;noscript class=&quot;optimizedimg&quot; data-alt=&quot;y&quot; data-jpg-mobile=&quot;//i.imgur.com/BN8BAG3m.jpg&quot; data-jpg=&quot;//i.imgur.com/BN8BAG3.jpg&quot; data-webp=&quot;//b.webpurr.com/lRkE.webp&quot;&gt;    &lt;img src=&quot;//i.imgur.com/BN8BAG3.jpg&quot; alt=&quot;y&quot; /&gt;   &lt;/noscript&gt;     &lt;/div&gt; &lt;/li&gt;    &lt;li&gt; Verify you able to access the website using the URL and credentials provided when the install is complete     &lt;div 1em=&quot;&quot; class=&quot;separator&quot; margin-left:=&quot;&quot; margin-right:=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;   &lt;noscript class=&quot;optimizedimg&quot; data-alt=&quot;Verify able to access&quot; data-jpg-mobile=&quot;//i.imgur.com/Lx6aFXBm.jpg&quot; data-jpg=&quot;//i.imgur.com/Lx6aFXB.jpg&quot; data-webp=&quot;//b.webpurr.com/j2jZ.webp&quot;&gt;    &lt;img src=&quot;//i.imgur.com/Lx6aFXB.jpg&quot; alt=&quot;Verify able to access&quot; /&gt;   &lt;/noscript&gt;     &lt;/div&gt; &lt;/li&gt;    &lt;li&gt; Change to your project&#39;s directory: &lt;code&gt;cd ~/Sites/{project_name}&lt;/code&gt;     &lt;div 1em=&quot;&quot; class=&quot;separator&quot; margin-left:=&quot;&quot; margin-right:=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;   &lt;noscript class=&quot;optimizedimg&quot; data-alt=&quot;cd ~/Sites/extendform&quot; data-jpg-mobile=&quot;//i.imgur.com/mEmITlnm.jpg&quot; data-jpg=&quot;//i.imgur.com/mEmITln.jpg&quot; data-webp=&quot;//b.webpurr.com/kvlL.webp&quot;&gt;    &lt;img src=&quot;//i.imgur.com/mEmITln.jpg&quot; alt=&quot;cd ~/Sites/extendform&quot; /&gt;   &lt;/noscript&gt;     &lt;/div&gt; &lt;/li&gt;    &lt;li&gt; If the original form is provided by a contributed module, install it: &lt;code&gt;fin composer require &#39;drupal/{contrib_project}:^{version}&#39;&lt;/code&gt;     &lt;div 1em=&quot;&quot; class=&quot;separator&quot; margin-left:=&quot;&quot; margin-right:=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;   &lt;noscript class=&quot;optimizedimg&quot; data-alt=&quot;fin composer require &#39;drupal/simplenews:^1.0&#39;&quot; data-jpg-mobile=&quot;//i.imgur.com/nPXgsvPm.jpg&quot; data-jpg=&quot;//i.imgur.com/nPXgsvP.jpg&quot; data-webp=&quot;//b.webpurr.com/VA52.webp&quot;&gt;    &lt;img src=&quot;//i.imgur.com/nPXgsvP.jpg&quot; alt=&quot;fin composer require &#39;drupal/simplenews:^1.0&#39;&quot; /&gt;   &lt;/noscript&gt;     &lt;/div&gt; &lt;br /&gt; and enable it: &lt;code&gt;fin drush en {contrib_project}&lt;/code&gt;     &lt;div 1em=&quot;&quot; class=&quot;separator&quot; margin-left:=&quot;&quot; margin-right:=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;   &lt;noscript class=&quot;optimizedimg&quot; data-alt=&quot;fin drush en simplenews&quot; data-jpg-mobile=&quot;//i.imgur.com/bbnEinHm.jpg&quot; data-jpg=&quot;//i.imgur.com/bbnEinH.jpg&quot; data-webp=&quot;//b.webpurr.com/18G9.webp&quot;&gt;    &lt;img src=&quot;//i.imgur.com/bbnEinH.jpg&quot; alt=&quot;fin drush en simplenews&quot; /&gt;   &lt;/noscript&gt;     &lt;/div&gt; &lt;/li&gt;   &lt;/ol&gt;  &lt;/div&gt;  &lt;!-- #setup-dev-env --&gt;&lt;br /&gt;  &lt;div&gt;   &lt;a class=&quot;anchor&quot; id=&quot;generate-module&quot;&gt;&lt;/a&gt;   &lt;br /&gt;   &lt;h2 class=&quot;has-anchor-hash&quot;&gt; Generate Your Custom Module &lt;a class=&quot;anchor-hash-link&quot; href=&quot;#generate-module&quot;&gt;   &lt;svg class=&quot;anchor-hash-link__icon&quot; height=&quot;18&quot; viewbox=&quot;0 0 18 18&quot; width=&quot;18&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt; &lt;path d=&quot;M16.746 7.177l-4.101 4.101c-1.773 1.773-4.45 1.473-5.697.226-.378-.378-.275-1.093.229-1.596.433-.433.904-.588 1.594-.228.69.361 1.511.315 2.051-.224l4.101-4.101a1.61 1.61 0 0 0-2.278-2.278l-2.199 2.198a5.148 5.148 0 0 0-2.311-.545 5.18 5.18 0 0 0-.865.077l3.553-3.552a4.187 4.187 0 1 1 5.923 5.922zm-7.108 6.319a5.154 5.154 0 0 1-2.312-.544l-1.971 1.972a1.613 1.613 0 0 1-2.278 0 1.613 1.613 0 0 1 0-2.278l3.874-3.874c.54-.54 1.36-.586 2.05-.224.69.36 1.162.205 1.595-.228.504-.506.607-1.22.229-1.597-1.247-1.248-3.924-1.548-5.697.225l-3.874 3.874a4.187 4.187 0 1 0 5.923 5.923l3.326-3.327a5.068 5.068 0 0 1-.865.078z&quot;&gt;&lt;/path&gt;   &lt;/svg&gt;&lt;/a&gt; &lt;/h2&gt; Now that your local environment is setup, you will need to generate your custom module that will provide the code that will extend the existing form you are modifying. We recommend using   &lt;a href=&quot;https://drupalconsole.com/&quot; target=&quot;blank&quot;&gt;Drupal Console&lt;/a&gt; to accomplish this task. No need to install Drupal Console because it comes pre-installed with Docksal!   &lt;br /&gt;   &lt;ol&gt;    &lt;li&gt; Generate Module: &lt;code&gt;fin drupal generate:module&lt;/code&gt;&lt;br /&gt; NOTE: Do not generate a composer.json file now because it will produce an error     &lt;div 1em=&quot;&quot; class=&quot;separator&quot; margin-left:=&quot;&quot; margin-right:=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;   &lt;noscript class=&quot;optimizedimg&quot; data-alt=&quot;fin drupal generate:module&quot; data-jpg-mobile=&quot;//i.imgur.com/SlePwTSm.jpg&quot; data-jpg=&quot;//i.imgur.com/SlePwTS.jpg&quot; data-webp=&quot;//b.webpurr.com/NqoJ.webp&quot;&gt;    &lt;img src=&quot;//i.imgur.com/SlePwTS.jpg&quot; alt=&quot;fin drupal generate:module&quot; /&gt;   &lt;/noscript&gt;     &lt;/div&gt; &lt;br /&gt; and Enter/&lt;code&gt;yes&lt;/code&gt; when prompted     &lt;div 1em=&quot;&quot; class=&quot;separator&quot; margin-left:=&quot;&quot; margin-right:=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;   &lt;noscript class=&quot;optimizedimg&quot; data-alt=&quot;yes&quot; data-jpg-mobile=&quot;//i.imgur.com/hF7n6EPm.jpg&quot; data-jpg=&quot;//i.imgur.com/hF7n6EP.jpg&quot; data-webp=&quot;//a.webpurr.com/rjNB.webp&quot;&gt;    &lt;img src=&quot;//i.imgur.com/hF7n6EP.jpg&quot; alt=&quot;yes&quot; /&gt;   &lt;/noscript&gt;     &lt;/div&gt; &lt;/li&gt;    &lt;li&gt; Generate Composer File: &lt;code&gt;fin drupal generate:composer&lt;/code&gt;&lt;br /&gt;     &lt;div 1em=&quot;&quot; class=&quot;separator&quot; margin-left:=&quot;&quot; margin-right:=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;   &lt;noscript class=&quot;optimizedimg&quot; data-alt=&quot;fin drupal generate:composer&quot; data-jpg-mobile=&quot;//i.imgur.com/WeQXauRm.jpg&quot; data-jpg=&quot;//i.imgur.com/WeQXauR.jpg&quot; data-webp=&quot;//a.webpurr.com/274j.webp&quot;&gt;    &lt;img src=&quot;//i.imgur.com/WeQXauR.jpg&quot; alt=&quot;fin drupal generate:composer&quot; /&gt;   &lt;/noscript&gt;     &lt;/div&gt; &lt;br /&gt; and Enter/&lt;code&gt;yes&lt;/code&gt; when prompted     &lt;div 1em=&quot;&quot; class=&quot;separator&quot; margin-left:=&quot;&quot; margin-right:=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;   &lt;noscript class=&quot;optimizedimg&quot; data-alt=&quot;yes&quot; data-jpg-mobile=&quot;//i.imgur.com/XNs0HAHm.jpg&quot; data-jpg=&quot;//i.imgur.com/XNs0HAH.jpg&quot; data-webp=&quot;//a.webpurr.com/y9ml.webp&quot;&gt;    &lt;img src=&quot;//i.imgur.com/XNs0HAH.jpg&quot; alt=&quot;yes&quot; /&gt;   &lt;/noscript&gt;     &lt;/div&gt; &lt;/li&gt;   &lt;/ol&gt;  &lt;/div&gt; &lt;!-- #generate-module --&gt;&lt;br /&gt;&lt;div&gt;   &lt;a class=&quot;anchor&quot; id=&quot;locate-existing&quot;&gt;&lt;/a&gt;   &lt;br /&gt;   &lt;h2 class=&quot;has-anchor-hash&quot;&gt; Locate the Existing Form Code &lt;a class=&quot;anchor-hash-link&quot; href=&quot;#locate-existing&quot;&gt;   &lt;svg class=&quot;anchor-hash-link__icon&quot; height=&quot;18&quot; viewbox=&quot;0 0 18 18&quot; width=&quot;18&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt; &lt;path d=&quot;M16.746 7.177l-4.101 4.101c-1.773 1.773-4.45 1.473-5.697.226-.378-.378-.275-1.093.229-1.596.433-.433.904-.588 1.594-.228.69.361 1.511.315 2.051-.224l4.101-4.101a1.61 1.61 0 0 0-2.278-2.278l-2.199 2.198a5.148 5.148 0 0 0-2.311-.545 5.18 5.18 0 0 0-.865.077l3.553-3.552a4.187 4.187 0 1 1 5.923 5.922zm-7.108 6.319a5.154 5.154 0 0 1-2.312-.544l-1.971 1.972a1.613 1.613 0 0 1-2.278 0 1.613 1.613 0 0 1 0-2.278l3.874-3.874c.54-.54 1.36-.586 2.05-.224.69.36 1.162.205 1.595-.228.504-.506.607-1.22.229-1.597-1.247-1.248-3.924-1.548-5.697.225l-3.874 3.874a4.187 4.187 0 1 0 5.923 5.923l3.326-3.327a5.068 5.068 0 0 1-.865.078z&quot;&gt;&lt;/path&gt;   &lt;/svg&gt;&lt;/a&gt; &lt;/h2&gt;     In this scenario, we are wanting to change the message that displays after subscribing to a newsletter provided by the     &lt;a href=&quot;https://www.drupal.org/project/simplenews&quot; target=&quot;blank&quot;&gt;Simplenews&lt;/a&gt; module. Let&#39;s look for the original code that generates that message.  &lt;br /&gt;   &lt;ol&gt;    &lt;li&gt; Search Files for message: &lt;code&gt;grep -rl &quot;{message}&quot; .&lt;/code&gt;     &lt;div 1em=&quot;&quot; class=&quot;separator&quot; margin-left:=&quot;&quot; margin-right:=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;   &lt;noscript class=&quot;optimizedimg&quot; data-alt=&#39;grep -rl &quot;You will receive a confirmation e-mail shortly containing further instructions&quot; .&#39; data-jpg-mobile=&quot;//i.imgur.com/CRnrAuZm.jpg&quot; data-jpg=&quot;//i.imgur.com/CRnrAuZ.jpg&quot; data-webp=&quot;//b.webpurr.com/kvxL.webp&quot;&gt;    &lt;img src=&quot;//i.imgur.com/CRnrAuZ.jpg&quot; alt=&#39;grep -rl &quot;You will receive a confirmation e-mail shortly containing further instructions&quot; .&#39; /&gt;   &lt;/noscript&gt;     &lt;/div&gt; &lt;/li&gt;    &lt;li&gt; Open Project in your favorite file editor. Ex: &lt;code&gt;bbedit .&lt;/code&gt; &lt;/li&gt;    &lt;li&gt; Navigate to file from search in Step 1    &lt;div 1em=&quot;&quot; class=&quot;separator&quot; margin-left:=&quot;&quot; margin-right:=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;   &lt;noscript class=&quot;optimizedimg&quot; data-alt=&quot;bbedit .&quot; data-jpg-mobile=&quot;//i.imgur.com/OfAaaWKm.jpg&quot; data-jpg=&quot;//i.imgur.com/OfAaaWK.jpg&quot; data-webp=&quot;//b.webpurr.com/18p9.webp&quot;&gt;    &lt;img src=&quot;//i.imgur.com/OfAaaWK.jpg&quot; alt=&quot;bbedit .&quot; /&gt;   &lt;/noscript&gt;     &lt;/div&gt; &lt;/li&gt;    &lt;li&gt; Locate message in file to verify function that needs to be customized. &lt;code&gt;CTRL(Win)/Command(Mac)+F&lt;/code&gt;   &lt;div 1em=&quot;&quot; class=&quot;separator&quot; margin-left:=&quot;&quot; margin-right:=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;   &lt;noscript class=&quot;optimizedimg&quot; data-alt=&quot;CMD+F&quot; data-jpg-mobile=&quot;//i.imgur.com/2DN2F8Im.jpg&quot; data-jpg=&quot;//i.imgur.com/2DN2F8I.jpg&quot; data-webp=&quot;//b.webpurr.com/VA62.webp&quot;&gt;    &lt;img src=&quot;//i.imgur.com/2DN2F8I.jpg&quot; alt=&quot;CMD+F&quot; /&gt;   &lt;/noscript&gt;     &lt;/div&gt; &lt;/li&gt;   &lt;/ol&gt;  &lt;/div&gt; &lt;!-- #locate-existing --&gt;&lt;br /&gt;&lt;div&gt;   &lt;a class=&quot;anchor&quot; id=&quot;copy-rename&quot;&gt;&lt;/a&gt;   &lt;br /&gt;   &lt;h2 class=&quot;has-anchor-hash&quot;&gt; Copy and Rename the Form File &lt;a class=&quot;anchor-hash-link&quot; href=&quot;#copy-rename&quot;&gt;   &lt;svg class=&quot;anchor-hash-link__icon&quot; height=&quot;18&quot; viewbox=&quot;0 0 18 18&quot; width=&quot;18&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt; &lt;path d=&quot;M16.746 7.177l-4.101 4.101c-1.773 1.773-4.45 1.473-5.697.226-.378-.378-.275-1.093.229-1.596.433-.433.904-.588 1.594-.228.69.361 1.511.315 2.051-.224l4.101-4.101a1.61 1.61 0 0 0-2.278-2.278l-2.199 2.198a5.148 5.148 0 0 0-2.311-.545 5.18 5.18 0 0 0-.865.077l3.553-3.552a4.187 4.187 0 1 1 5.923 5.922zm-7.108 6.319a5.154 5.154 0 0 1-2.312-.544l-1.971 1.972a1.613 1.613 0 0 1-2.278 0 1.613 1.613 0 0 1 0-2.278l3.874-3.874c.54-.54 1.36-.586 2.05-.224.69.36 1.162.205 1.595-.228.504-.506.607-1.22.229-1.597-1.247-1.248-3.924-1.548-5.697.225l-3.874 3.874a4.187 4.187 0 1 0 5.923 5.923l3.326-3.327a5.068 5.068 0 0 1-.865.078z&quot;&gt;&lt;/path&gt;   &lt;/svg&gt;&lt;/a&gt; &lt;/h2&gt;     The easiest way to limit the number of mistakes is to copy the existing files from the original location into your custom module.  &lt;br /&gt;   &lt;ol&gt;    &lt;li&gt; Prepare Destination Folder: &lt;code&gt;mkdir -p web/modules/custom/{custom_module}/src/Form&lt;/code&gt;     &lt;div 1em=&quot;&quot; class=&quot;separator&quot; margin-left:=&quot;&quot; margin-right:=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;   &lt;noscript class=&quot;optimizedimg&quot; data-alt=&quot;mkdir -p web/modules/custom/customize_simplenews_sub_form/src/Form&quot; data-jpg-mobile=&quot;//i.imgur.com/S4R1cXGm.jpg&quot; data-jpg=&quot;//i.imgur.com/S4R1cXG.jpg&quot; data-webp=&quot;//b.webpurr.com/y9ol.webp&quot;&gt;    &lt;img src=&quot;//i.imgur.com/S4R1cXG.jpg&quot; alt=&quot;mkdir -p web/modules/custom/customize_simplenews_sub_form/src/Form&quot; /&gt;   &lt;/noscript&gt;     &lt;/div&gt; &lt;/li&gt;    &lt;li&gt; Copy Files: &lt;code&gt;cp web/modules/contrib/simplenews/src/Form/SubscriptionsBlockForm.php web/modules/custom/{custom_module}/src/Form/&lt;/code&gt;     &lt;div 1em=&quot;&quot; class=&quot;separator&quot; margin-left:=&quot;&quot; margin-right:=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;   &lt;noscript class=&quot;optimizedimg&quot; data-alt=&quot;cp web/modules/contrib/simplenews/src/Form/SubscriptionsBlockForm.php web/modules/custom/customize_simplenews_sub_form/src/Form/&quot; data-jpg-mobile=&quot;//i.imgur.com/NHlu2Gdm.jpg&quot; data-jpg=&quot;//i.imgur.com/NHlu2Gd.jpg&quot; data-webp=&quot;//b.webpurr.com/eDa5.webp&quot;&gt;    &lt;img src=&quot;//i.imgur.com/NHlu2Gd.jpg&quot; alt=&quot;cp web/modules/contrib/simplenews/src/Form/SubscriptionsBlockForm.php web/modules/custom/customize_simplenews_sub_form/src/Form/&quot; /&gt;   &lt;/noscript&gt;     &lt;/div&gt; &lt;/li&gt;    &lt;li&gt; Rename Files (so unique): &lt;code&gt;mv web/modules/custom/customize_simplenews_sub_form/src/Form/SubscriptionsBlockForm.php web/modules/custom/{custom_module}/src/Form/SubscriptionsCustomBlockForm.php&lt;/code&gt;     &lt;div 1em=&quot;&quot; class=&quot;separator&quot; margin-left:=&quot;&quot; margin-right:=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;   &lt;noscript class=&quot;optimizedimg&quot; data-alt=&quot;mv web/modules/custom/customize_simplenews_sub_form/src/Form/SubscriptionsBlockForm.php web/modules/custom/customize_simplenews_sub_form/src/Form/SubscriptionsCustomBlockForm.php&quot; data-jpg-mobile=&quot;//i.imgur.com/mfdpZ8tm.jpg&quot; data-jpg=&quot;//i.imgur.com/mfdpZ8t.jpg&quot; data-webp=&quot;//b.webpurr.com/0Jgx.webp&quot;&gt;    &lt;img src=&quot;//i.imgur.com/mfdpZ8t.jpg&quot; alt=&quot;mv web/modules/custom/customize_simplenews_sub_form/src/Form/SubscriptionsBlockForm.php web/modules/custom/customize_simplenews_sub_form/src/Form/SubscriptionsCustomBlockForm.php&quot; /&gt;   &lt;/noscript&gt;     &lt;/div&gt; &lt;/li&gt;    &lt;li&gt; Repeat Steps 2 &amp; 3 for all applicable files in Step 1.  NOTE: In this scenario, we did not need to change the file in the Tests directory. &lt;/li&gt;   &lt;/ol&gt;  &lt;/div&gt; &lt;!-- #copy-rename --&gt;&lt;br /&gt;&lt;div&gt;   &lt;a class=&quot;anchor&quot; id=&quot;customize&quot;&gt;&lt;/a&gt;   &lt;br /&gt;   &lt;h2 class=&quot;has-anchor-hash&quot;&gt; Customize the Form Code &lt;a class=&quot;anchor-hash-link&quot; href=&quot;#customize&quot;&gt;   &lt;svg class=&quot;anchor-hash-link__icon&quot; height=&quot;18&quot; viewbox=&quot;0 0 18 18&quot; width=&quot;18&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt; &lt;path d=&quot;M16.746 7.177l-4.101 4.101c-1.773 1.773-4.45 1.473-5.697.226-.378-.378-.275-1.093.229-1.596.433-.433.904-.588 1.594-.228.69.361 1.511.315 2.051-.224l4.101-4.101a1.61 1.61 0 0 0-2.278-2.278l-2.199 2.198a5.148 5.148 0 0 0-2.311-.545 5.18 5.18 0 0 0-.865.077l3.553-3.552a4.187 4.187 0 1 1 5.923 5.922zm-7.108 6.319a5.154 5.154 0 0 1-2.312-.544l-1.971 1.972a1.613 1.613 0 0 1-2.278 0 1.613 1.613 0 0 1 0-2.278l3.874-3.874c.54-.54 1.36-.586 2.05-.224.69.36 1.162.205 1.595-.228.504-.506.607-1.22.229-1.597-1.247-1.248-3.924-1.548-5.697.225l-3.874 3.874a4.187 4.187 0 1 0 5.923 5.923l3.326-3.327a5.068 5.068 0 0 1-.865.078z&quot;&gt;&lt;/path&gt;   &lt;/svg&gt;&lt;/a&gt; &lt;/h2&gt;     Now we need to modify the Code so that it extends the existing code.  &lt;br /&gt;   &lt;ol&gt;    &lt;li&gt; Alter namespace to your Custom module: &lt;code&gt;namespace Drupal\{custom_module}\Form;&lt;/code&gt;     &lt;div 1em=&quot;&quot; class=&quot;separator&quot; margin-left:=&quot;&quot; margin-right:=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;   &lt;noscript class=&quot;optimizedimg&quot; data-alt=&quot;namespace Drupal\customize_simplenews_sub_form\Form;&quot; data-jpg-mobile=&quot;//i.imgur.com/bG8xCR3m.jpg&quot; data-jpg=&quot;//i.imgur.com/bG8xCR3.jpg&quot; data-webp=&quot;//a.webpurr.com/6Mgn.webp&quot;&gt;    &lt;img src=&quot;//i.imgur.com/bG8xCR3.jpg&quot; alt=&quot;namespace Drupal\customize_simplenews_sub_form\Form;&quot; /&gt;   &lt;/noscript&gt;     &lt;/div&gt; &lt;/li&gt;    &lt;li&gt; Add use statement for original code with alias that is same as what was extended in Original Code: &lt;code&gt;use Drupal\simplenews\Form\SubscriptionsBlockForm as SubscriptionsFormBase;&lt;/code&gt;     &lt;div 1em=&quot;&quot; class=&quot;separator&quot; margin-left:=&quot;&quot; margin-right:=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;   &lt;noscript class=&quot;optimizedimg&quot; data-alt=&quot;use Drupal\simplenews\Form\SubscriptionsBlockForm as SubscriptionsFormBase;&quot; data-jpg-mobile=&quot;//i.imgur.com/SI5pkv6m.jpg&quot; data-jpg=&quot;//i.imgur.com/SI5pkv6.jpg&quot; data-webp=&quot;//a.webpurr.com/5z59.webp&quot;&gt;    &lt;img src=&quot;//i.imgur.com/SI5pkv6.jpg&quot; alt=&quot;use Drupal\simplenews\Form\SubscriptionsBlockForm as SubscriptionsFormBase;&quot; /&gt;   &lt;/noscript&gt;     &lt;/div&gt; &lt;/li&gt;    &lt;li&gt; Customize Class name to make unique for your module: &lt;code&gt; SubscriptionsCustomBlockForm &lt;/code&gt;     &lt;div 1em=&quot;&quot; class=&quot;separator&quot; margin-left:=&quot;&quot; margin-right:=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;   &lt;noscript class=&quot;optimizedimg&quot; data-alt=&quot;SubscriptionsCustomBlockForm&quot; data-jpg-mobile=&quot;//i.imgur.com/xKqyQPJm.jpg&quot; data-jpg=&quot;//i.imgur.com/xKqyQPJ.jpg&quot; data-webp=&quot;//a.webpurr.com/gvYd.webp&quot;&gt;    &lt;img src=&quot;//i.imgur.com/xKqyQPJ.jpg&quot; alt=&quot;SubscriptionsCustomBlockForm&quot; /&gt;   &lt;/noscript&gt;     &lt;/div&gt; &lt;/li&gt;    &lt;li&gt; Remove all code in file, except function located in Step 4 of the Locate the Existing Form Code: &lt;code&gt;getSubmitMessage()&lt;/code&gt;   &lt;br /&gt;   Before editing code:    &lt;div 1em=&quot;&quot; class=&quot;separator&quot; margin-left:=&quot;&quot; margin-right:=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;   &lt;noscript class=&quot;optimizedimg&quot; data-alt=&quot;getSubmitMessage()&quot; data-jpg-mobile=&quot;//i.imgur.com/VCWczP5m.jpg&quot; data-jpg=&quot;//i.imgur.com/VCWczP5.jpg&quot; data-webp=&quot;//a.webpurr.com/9J7k.webp&quot;&gt;    &lt;img src=&quot;//i.imgur.com/VCWczP5.jpg&quot; alt=&quot;getSubmitMessage()&quot; /&gt;   &lt;/noscript&gt;     &lt;/div&gt;   After removing extra code:    &lt;div 1em=&quot;&quot; class=&quot;separator&quot; margin-left:=&quot;&quot; margin-right:=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;   &lt;noscript class=&quot;optimizedimg&quot; data-alt=&quot;remove code&quot; data-jpg-mobile=&quot;//i.imgur.com/mAOgcRim.jpg&quot; data-jpg=&quot;//i.imgur.com/mAOgcRi.jpg&quot; data-webp=&quot;//a.webpurr.com/Nq84.webp&quot;&gt;    &lt;img src=&quot;//i.imgur.com/mAOgcRi.jpg&quot; alt=&quot;remove code&quot; /&gt;   &lt;/noscript&gt;     &lt;/div&gt; &lt;/li&gt;    &lt;li&gt; Alter code, as needed. Ex: &lt;code&gt;line 19: return $this-&gt;t(&#39;This is a different update message.&#39;);&lt;/code&gt;     &lt;div 1em=&quot;&quot; class=&quot;separator&quot; margin-left:=&quot;&quot; margin-right:=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;   &lt;noscript class=&quot;optimizedimg&quot; data-alt=&quot;return $this-&gt;t(&#39;This is a different update message.&#39;);&quot; data-jpg-mobile=&quot;//i.imgur.com/W4MxlbTm.jpg&quot; data-jpg=&quot;//i.imgur.com/W4MxlbT.jpg&quot; data-webp=&quot;//a.webpurr.com/GlZV.webp&quot;&gt;    &lt;img src=&quot;//i.imgur.com/W4MxlbT.jpg&quot; alt=&quot;return $this-&gt;t(&#39;This is a different update message.&#39;);&quot; /&gt;   &lt;/noscript&gt;     &lt;/div&gt; &lt;/li&gt;   &lt;/ol&gt;  &lt;/div&gt; &lt;!-- #customize --&gt;&lt;br /&gt;&lt;div&gt;   &lt;a class=&quot;anchor&quot; id=&quot;set-form-handler&quot;&gt;&lt;/a&gt;   &lt;br /&gt;   &lt;h2 class=&quot;has-anchor-hash&quot;&gt; Set the Form Handler Class &lt;a class=&quot;anchor-hash-link&quot; href=&quot;#set-form-handler&quot;&gt;   &lt;svg class=&quot;anchor-hash-link__icon&quot; height=&quot;18&quot; viewbox=&quot;0 0 18 18&quot; width=&quot;18&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt; &lt;path d=&quot;M16.746 7.177l-4.101 4.101c-1.773 1.773-4.45 1.473-5.697.226-.378-.378-.275-1.093.229-1.596.433-.433.904-.588 1.594-.228.69.361 1.511.315 2.051-.224l4.101-4.101a1.61 1.61 0 0 0-2.278-2.278l-2.199 2.198a5.148 5.148 0 0 0-2.311-.545 5.18 5.18 0 0 0-.865.077l3.553-3.552a4.187 4.187 0 1 1 5.923 5.922zm-7.108 6.319a5.154 5.154 0 0 1-2.312-.544l-1.971 1.972a1.613 1.613 0 0 1-2.278 0 1.613 1.613 0 0 1 0-2.278l3.874-3.874c.54-.54 1.36-.586 2.05-.224.69.36 1.162.205 1.595-.228.504-.506.607-1.22.229-1.597-1.247-1.248-3.924-1.548-5.697.225l-3.874 3.874a4.187 4.187 0 1 0 5.923 5.923l3.326-3.327a5.068 5.068 0 0 1-.865.078z&quot;&gt;&lt;/path&gt;   &lt;/svg&gt;&lt;/a&gt; &lt;/h2&gt;     Almost done coding!  Just need to edit the Handler Class for the entity we are modifying.  &lt;br /&gt;   &lt;ol&gt;    &lt;li&gt; Add hook to alter entity: &lt;code&gt;function customize_simplenews_sub_form_entity_type_alter(array &amp;$entity_types)&lt;/code&gt; &lt;/li&gt;  &lt;li&gt; Edit handler class for entity: &lt;code&gt;@var $entity_types \Drupal\Core\Entity\EntityTypeInterface[]&lt;/code&gt;   &lt;div 1em=&quot;&quot; class=&quot;separator&quot; margin-left:=&quot;&quot; margin-right:=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;   &lt;noscript class=&quot;optimizedimg&quot; data-alt=&quot;$entity_types[&#39;simplenews_subscriber&#39;]-&gt;setHandlerClass(&#39;form&#39;,      [&#39;block&#39; =&gt; &#39;Drupal\customize_simplenews_sub_form\Form\SubscriptionsCustomBlockForm&#39;    ]);&quot; data-jpg-mobile=&quot;//i.imgur.com/ucz34T9m.jpg&quot; data-jpg=&quot;//i.imgur.com/ucz34T9.jpg&quot; data-webp=&quot;//a.webpurr.com/4zB7.webp&quot;&gt;    &lt;img src=&quot;//i.imgur.com/ucz34T9.jpg&quot; alt=&quot;$entity_types[&#39;simplenews_subscriber&#39;]-&gt;setHandlerClass(&#39;form&#39;,      [&#39;block&#39; =&gt; &#39;Drupal\customize_simplenews_sub_form\Form\SubscriptionsCustomBlockForm&#39;    ]);&quot; /&gt;   &lt;/noscript&gt;     &lt;/div&gt; &lt;/li&gt;   &lt;/ol&gt;  &lt;/div&gt; &lt;!-- #set-form-handler --&gt;&lt;br /&gt;&lt;div&gt;   &lt;a class=&quot;anchor&quot; id=&quot;enable-custom-module&quot;&gt;&lt;/a&gt;   &lt;br /&gt;   &lt;h2 class=&quot;has-anchor-hash&quot;&gt; Enable Your Custom Module &lt;a class=&quot;anchor-hash-link&quot; href=&quot;#enable-custom-module&quot;&gt;   &lt;svg class=&quot;anchor-hash-link__icon&quot; height=&quot;18&quot; viewbox=&quot;0 0 18 18&quot; width=&quot;18&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt; &lt;path d=&quot;M16.746 7.177l-4.101 4.101c-1.773 1.773-4.45 1.473-5.697.226-.378-.378-.275-1.093.229-1.596.433-.433.904-.588 1.594-.228.69.361 1.511.315 2.051-.224l4.101-4.101a1.61 1.61 0 0 0-2.278-2.278l-2.199 2.198a5.148 5.148 0 0 0-2.311-.545 5.18 5.18 0 0 0-.865.077l3.553-3.552a4.187 4.187 0 1 1 5.923 5.922zm-7.108 6.319a5.154 5.154 0 0 1-2.312-.544l-1.971 1.972a1.613 1.613 0 0 1-2.278 0 1.613 1.613 0 0 1 0-2.278l3.874-3.874c.54-.54 1.36-.586 2.05-.224.69.36 1.162.205 1.595-.228.504-.506.607-1.22.229-1.597-1.247-1.248-3.924-1.548-5.697.225l-3.874 3.874a4.187 4.187 0 1 0 5.923 5.923l3.326-3.327a5.068 5.068 0 0 1-.865.078z&quot;&gt;&lt;/path&gt;   &lt;/svg&gt;&lt;/a&gt; &lt;/h2&gt;     Congrats!  The coding is over!  Now, just enable the module, refresh and test to verify.  &lt;br /&gt;   &lt;ol&gt;    &lt;li&gt; Verify system sees module: &lt;code&gt;fin drush pml | grep {custom_module}&lt;/code&gt;     &lt;div 1em=&quot;&quot; class=&quot;separator&quot; margin-left:=&quot;&quot; margin-right:=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;   &lt;noscript class=&quot;optimizedimg&quot; data-alt=&quot;fin drush pml | grep custom&quot; data-jpg-mobile=&quot;//i.imgur.com/C17k2WLm.jpg&quot; data-jpg=&quot;//i.imgur.com/C17k2WL.jpg&quot; data-webp=&quot;//a.webpurr.com/qlZk.webp&quot;&gt;    &lt;img src=&quot;//i.imgur.com/C17k2WL.jpg&quot; alt=&quot;fin drush pml | grep custom&quot; /&gt;   &lt;/noscript&gt;     &lt;/div&gt; &lt;/li&gt;    &lt;li&gt; Enable the Custom Module: &lt;code&gt;fin drush en {custom_module}&lt;/code&gt;     &lt;div 1em=&quot;&quot; class=&quot;separator&quot; margin-left:=&quot;&quot; margin-right:=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;   &lt;noscript class=&quot;optimizedimg&quot; data-alt=&quot;fin drush en customize_simplenews_sub_form&quot; data-jpg-mobile=&quot;//i.imgur.com/cbwUntZm.jpg&quot; data-jpg=&quot;//i.imgur.com/cbwUntZ.jpg&quot; data-webp=&quot;//a.webpurr.com/ojke.webp&quot;&gt;    &lt;img src=&quot;//i.imgur.com/cbwUntZ.jpg&quot; alt=&quot;fin drush en customize_simplenews_sub_form&quot; /&gt;   &lt;/noscript&gt;     &lt;/div&gt; &lt;/li&gt;    &lt;li&gt; If warning encountered during enable:    &lt;div 1em=&quot;&quot; class=&quot;separator&quot; margin-left:=&quot;&quot; margin-right:=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;   &lt;noscript class=&quot;optimizedimg&quot; data-alt=&quot;[warning] Invalid json in modules/custom/customize_simplenews_sub_form/composer.json&quot; data-jpg-mobile=&quot;//i.imgur.com/ikEUo4Jm.jpg&quot; data-jpg=&quot;//i.imgur.com/ikEUo4J.jpg&quot; data-webp=&quot;//a.webpurr.com/zNRR.webp&quot;&gt;    &lt;img src=&quot;//i.imgur.com/ikEUo4J.jpg&quot; alt=&quot;[warning] Invalid json in modules/custom/customize_simplenews_sub_form/composer.json&quot; /&gt;   &lt;/noscript&gt;     &lt;/div&gt;   &lt;ol&gt;	&lt;li&gt; Disable the Custom Module: &lt;code&gt;fin drush pmu {custom_module}&lt;/code&gt;   	 &lt;div 1em=&quot;&quot; class=&quot;separator&quot; margin-left:=&quot;&quot; margin-right:=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;     &lt;noscript class=&quot;optimizedimg&quot; data-alt=&quot;fin drush pmu customize_simplenews_sub_form&quot; data-jpg-mobile=&quot;//i.imgur.com/ePubB8Jm.jpg&quot; data-jpg=&quot;//i.imgur.com/ePubB8J.jpg&quot; data-webp=&quot;//a.webpurr.com/D4n4.webp&quot;&gt;  	&lt;img src=&quot;//i.imgur.com/ePubB8J.jpg&quot; alt=&quot;fin drush pmu customize_simplenews_sub_form&quot; /&gt;     &lt;/noscript&gt;  	 &lt;/div&gt; &lt;/li&gt;  	&lt;li&gt; Open the custom modules composer.json file: &lt;code&gt;bbedit ~/Sites/{custom_module}/composer.json&lt;/code&gt;   	 &lt;div 1em=&quot;&quot; class=&quot;separator&quot; margin-left:=&quot;&quot; margin-right:=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;     &lt;noscript class=&quot;optimizedimg&quot; data-alt=&quot;bbedit ~/Sites/customize_simplenews_sub_form/composer.json&quot; data-jpg-mobile=&quot;//i.imgur.com/lfwB6KCm.jpg&quot; data-jpg=&quot;//i.imgur.com/lfwB6KC.jpg&quot; data-webp=&quot;//a.webpurr.com/mEdK.webp&quot;&gt;  	&lt;img src=&quot;//i.imgur.com/lfwB6KC.jpg&quot; alt=&quot;bbedit ~/Sites/customize_simplenews_sub_form/composer.json&quot; /&gt;     &lt;/noscript&gt;  	 &lt;/div&gt; &lt;/li&gt;  	&lt;li&gt; Remove extra comma in require section &amp; Save changes. 	 &lt;div 1em=&quot;&quot; class=&quot;separator&quot; margin-left:=&quot;&quot; margin-right:=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;     &lt;noscript class=&quot;optimizedimg&quot; data-alt=&#39;remove comma at end of &quot;drupal/simplenews&quot;: &quot;^1.0&quot;&#39; data-jpg-mobile=&quot;//i.imgur.com/CQzNL8Fm.jpg&quot; data-jpg=&quot;//i.imgur.com/CQzNL8F.jpg&quot; data-webp=&quot;//a.webpurr.com/R9qQ.webp&quot;&gt;  	&lt;img src=&quot;//i.imgur.com/CQzNL8F.jpg&quot; alt=&#39;remove comma at end of &quot;drupal/simplenews&quot;: &quot;^1.0&quot;&#39; /&gt;     &lt;/noscript&gt;  	 &lt;/div&gt; &lt;/li&gt;  	&lt;li&gt; Enable the Custom Module: &lt;code&gt;fin drush en {custom_module}&lt;/code&gt;  	 &lt;div 1em=&quot;&quot; class=&quot;separator&quot; margin-left:=&quot;&quot; margin-right:=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;     &lt;noscript class=&quot;optimizedimg&quot; data-alt=&quot;fin drush en customize_simplenews_sub_form&quot; data-jpg-mobile=&quot;//i.imgur.com/cbwUntZm.jpg&quot; data-jpg=&quot;//i.imgur.com/cbwUntZ.jpg&quot; data-webp=&quot;//a.webpurr.com/ojke.webp&quot;&gt;  	&lt;img src=&quot;//i.imgur.com/cbwUntZ.jpg&quot; alt=&quot;fin drush en customize_simplenews_sub_form&quot; /&gt;     &lt;/noscript&gt;  	 &lt;/div&gt; &lt;/li&gt;     &lt;/ol&gt; &lt;/li&gt;  &lt;li&gt; Revisit Subscription Page Verify Changes. NOTE: If this is a fresh install, you may need to add the simplenews block to the sidebar. &lt;/li&gt;   &lt;/ol&gt;  &lt;/div&gt; &lt;!-- #enable-custom-module --&gt;&lt;br /&gt; &lt;div&gt; &lt;h2&gt;Congrats!&lt;/h2&gt;  You have successfully extended and existing form programmatically the &quot;Drupal way&quot;.  Hopefully, this introduction to extending Drupal code has provided you with a simple use case that will help you to continue extending other code.  If you ever get stuck, please don&#39;t hesitate to &lt;a href=&quot;https://contact.tekAura.com&quot; target=&quot;blank&quot;&gt;contact us&lt;/a&gt; or &lt;a href=&quot;https://pricing.tekAura.com#mentor&quot;&gt;sign-up for a mentoring session&lt;/a&gt;. &lt;/div&gt;</description><link>http://www.tekaura.com/2019/08/how-to-extend-existing-drupal-8-form.html</link><author>noreply@blogger.com (Shannon &quot;tekNorah&quot; Medlin)</author><thr:total>16</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7215669801447322432.post-628818551374271519</guid><pubDate>Thu, 09 May 2019 16:00:00 +0000</pubDate><atom:updated>2020-12-02T07:26:20.321-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">release</category><category domain="http://www.blogger.com/atom/ns#">security</category><category domain="http://www.blogger.com/atom/ns#">wordpress</category><title>WordPress 5.2 Jaco (Update): Debugging and Fixing Tools </title><description>&lt;style&gt;    .has-anchor-hash .anchor-hash-link {         left: 0.5em;         opacity: 0;         transition: opacity 0.3s;         display: inline-block;         height: 100%     }          .has-anchor-hash .anchor-hash-link__icon {         display: inline-block;         fill: #999     }          .has-anchor-hash .anchor-hash-link:hover .anchor-hash-link__icon {         fill: #44414E     }          .has-anchor-hash:hover .anchor-hash-link {         opacity: 1     }          .has-anchor-hash .anchor-hash-link {         color: #999 !important;         background-image: none !important     }     a.anchor {         display: block;         position: relative;         top: -80px;         visibility: hidden;     } &lt;/style&gt; &lt;br /&gt;&lt;div 1em=&quot;&quot; class=&quot;separator&quot; margin-left:=&quot;&quot; margin-right:=&quot;&quot; style=&quot;clear: both; text-align: center;&quot;&gt;    &lt;noscript class=&quot;optimizedimg&quot; data-alt=&quot;WordPress 5.2 Jaco (Update): Debugging and Fixing Tools&quot; data-jpg-mobile=&quot;//i.imgur.com/bjtbGsGm.jpg&quot; data-jpg=&quot;//i.imgur.com/bjtbGsG.jpg&quot; data-webp=&quot;//i.imgur.com/bjtbGsG.jpg&quot;&gt;        &lt;img src=&#39;//i.imgur.com/bjtbGsG.jpg&#39; alt=&#39;WordPress 5.2 Jaco (Update): Debugging and Fixing Tools&#39; /&gt;    &lt;/noscript&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;    With the latest version of WordPress &lt;a href=&quot;https://wordpress.org/news/2019/05/wordpress-5-2-jaco/&quot;&gt;comes with some pretty awesome sounding tools&lt;/a&gt;. The number of community and third-party plugins have continued to grow over the years and with that growth and WordPress core continues to change dramatically (*harum* Gutenberg *cough*). To keep up with changes, the WP Core devs have introduced a few new features that you may find helpful.     &lt;br /&gt;    &lt;ul&gt;        &lt;li&gt;            &lt;a href=&quot;#site-health-check&quot;&gt;Site Health Check&lt;/a&gt;            &lt;ul&gt;                &lt;li&gt;                    &lt;a href=&quot;#site-health-status&quot;&gt;Site Health Status&lt;/a&gt;                &lt;/li&gt;                &lt;li&gt;                    &lt;a href=&quot;#performance-checks&quot;&gt;Performance Checks&lt;/a&gt;                &lt;/li&gt;                &lt;li&gt;                    &lt;a href=&quot;#security-check&quot;&gt;Security Checks&lt;/a&gt;                &lt;/li&gt;                &lt;li&gt;                    &lt;a href=&quot;#site-health-info&quot;&gt;Site Health Info&lt;/a&gt;                &lt;/li&gt;            &lt;/ul&gt;        &lt;/li&gt;        &lt;li&gt;            &lt;a href=&quot;#php-error-protection&quot;&gt;PHP Error Protection&lt;/a&gt;        &lt;/li&gt;        &lt;li&gt;            &lt;a href=&quot;#add-dev-updates&quot;&gt;Additional Developer Updates&lt;/a&gt;        &lt;/li&gt;    &lt;/ul&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;    &lt;a class=&quot;anchor&quot; id=&quot;site-health-check&quot;&gt;&lt;/a&gt;    &lt;h2 class=&quot;has-anchor-hash&quot;&gt;        Site Health Check (improved)         &lt;a class=&quot;anchor-hash-link&quot; href=&quot;#site-health-check&quot;&gt;&lt;svg class=&quot;anchor-hash-link__icon&quot; height=&quot;18&quot; viewbox=&quot;0 0 18 18&quot; width=&quot;18&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;&lt;path d=&quot;M16.746 7.177l-4.101 4.101c-1.773 1.773-4.45 1.473-5.697.226-.378-.378-.275-1.093.229-1.596.433-.433.904-.588 1.594-.228.69.361 1.511.315 2.051-.224l4.101-4.101a1.61 1.61 0 0 0-2.278-2.278l-2.199 2.198a5.148 5.148 0 0 0-2.311-.545 5.18 5.18 0 0 0-.865.077l3.553-3.552a4.187 4.187 0 1 1 5.923 5.922zm-7.108 6.319a5.154 5.154 0 0 1-2.312-.544l-1.971 1.972a1.613 1.613 0 0 1-2.278 0 1.613 1.613 0 0 1 0-2.278l3.874-3.874c.54-.54 1.36-.586 2.05-.224.69.36 1.162.205 1.595-.228.504-.506.607-1.22.229-1.597-1.247-1.248-3.924-1.548-5.697.225l-3.874 3.874a4.187 4.187 0 1 0 5.923 5.923l3.326-3.327a5.068 5.068 0 0 1-.865.078z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;    &lt;/h2&gt; The Site Health Check tool was first introduced in Wordpress core in the last release version (5.1 &quot;Betty&quot;) and is seeing a couple of updates with this version. You may find it interesting to know this feature originated as the community plugin, &lt;a href=&quot;https://wordpress.org/plugins/health-check/&quot;&gt;Site Health Check and Troubleshooting&lt;/a&gt;. &lt;/div&gt;&lt;br /&gt;&lt;div&gt;    &lt;a class=&quot;anchor&quot; id=&quot;site-health-status&quot;&gt;&lt;/a&gt;    &lt;h3 class=&quot;has-anchor-hash&quot;&gt;        Site Health Status         &lt;a class=&quot;anchor-hash-link&quot; href=&quot;#site-health-status&quot;&gt;&lt;svg class=&quot;anchor-hash-link__icon&quot; height=&quot;18&quot; viewbox=&quot;0 0 18 18&quot; width=&quot;18&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;&lt;path d=&quot;M16.746 7.177l-4.101 4.101c-1.773 1.773-4.45 1.473-5.697.226-.378-.378-.275-1.093.229-1.596.433-.433.904-.588 1.594-.228.69.361 1.511.315 2.051-.224l4.101-4.101a1.61 1.61 0 0 0-2.278-2.278l-2.199 2.198a5.148 5.148 0 0 0-2.311-.545 5.18 5.18 0 0 0-.865.077l3.553-3.552a4.187 4.187 0 1 1 5.923 5.922zm-7.108 6.319a5.154 5.154 0 0 1-2.312-.544l-1.971 1.972a1.613 1.613 0 0 1-2.278 0 1.613 1.613 0 0 1 0-2.278l3.874-3.874c.54-.54 1.36-.586 2.05-.224.69.36 1.162.205 1.595-.228.504-.506.607-1.22.229-1.597-1.247-1.248-3.924-1.548-5.697.225l-3.874 3.874a4.187 4.187 0 1 0 5.923 5.923l3.326-3.327a5.068 5.068 0 0 1-.865.078z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;    &lt;/h3&gt; A new Status page has been added under “Tools” → “Site Health”. The page shows important information about your WordPress configuration and items that require your attention. &lt;/div&gt;&lt;br /&gt;&lt;div 1em=&quot;&quot; class=&quot;separator&quot; margin-left:=&quot;&quot; margin-right:=&quot;&quot; style=&quot;clear: both; text-align: center;&quot;&gt;    &lt;noscript class=&quot;optimizedimg&quot; data-alt=&quot;tekSolution: Site Health Status&quot; data-jpg-mobile=&quot;//i.imgur.com/Dul7scmm.jpg&quot; data-jpg=&quot;//i.imgur.com/Dul7scm.jpg&quot; data-webp=&quot;//b.webpurr.com/R9Ne.webp&quot;&gt;        &lt;img src=&#39;//i.imgur.com/Dul7scm.jpg&#39; alt=&#39;Site Health Status&#39; /&gt;    &lt;/noscript&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;    One item they have added that is &lt;a href=&quot;https://core.trac.wordpress.org/ticket/47046&quot;&gt;still up for debate&lt;/a&gt; is the &lt;b&gt;Performance Score&lt;/b&gt;. We all know how unhelpful &lt;a href=&quot;https://www.machmetrics.com/speed-blog/why-page-speed-scores-can-be-dangerous/&quot;&gt;some scores&lt;/a&gt; can be. But, don&#39;t fret, your friendly neighborhood software engineer (&lt;a href=&quot;https://m.me/tekAura&quot;&gt;me!&lt;/a&gt;) is right around the corner! For instance, having inactive themes or plugins on your website, while may be legitimately useful to you (as in the case of a parent theme), may also cause a security risk as hackers often will use inactive plugins and themes (which are often not updated) as a backdoor to your site. New Performance &amp;amp; Security checks with include:     &lt;br /&gt;    &lt;br /&gt;    &lt;a class=&quot;anchor&quot; id=&quot;performance-checks&quot;&gt;&lt;/a&gt;    &lt;h3 class=&quot;has-anchor-hash&quot;&gt;        Performance Checks 🚀         &lt;a class=&quot;anchor-hash-link&quot; href=&quot;#performance-checks&quot;&gt;&lt;svg class=&quot;anchor-hash-link__icon&quot; height=&quot;18&quot; viewbox=&quot;0 0 18 18&quot; width=&quot;18&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;&lt;path d=&quot;M16.746 7.177l-4.101 4.101c-1.773 1.773-4.45 1.473-5.697.226-.378-.378-.275-1.093.229-1.596.433-.433.904-.588 1.594-.228.69.361 1.511.315 2.051-.224l4.101-4.101a1.61 1.61 0 0 0-2.278-2.278l-2.199 2.198a5.148 5.148 0 0 0-2.311-.545 5.18 5.18 0 0 0-.865.077l3.553-3.552a4.187 4.187 0 1 1 5.923 5.922zm-7.108 6.319a5.154 5.154 0 0 1-2.312-.544l-1.971 1.972a1.613 1.613 0 0 1-2.278 0 1.613 1.613 0 0 1 0-2.278l3.874-3.874c.54-.54 1.36-.586 2.05-.224.69.36 1.162.205 1.595-.228.504-.506.607-1.22.229-1.597-1.247-1.248-3.924-1.548-5.697.225l-3.874 3.874a4.187 4.187 0 1 0 5.923 5.923l3.326-3.327a5.068 5.068 0 0 1-.865.078z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;    &lt;/h3&gt;    &lt;ul&gt;        &lt;li&gt;Latest WordPress version&lt;/li&gt;        &lt;li&gt;Up to date version of PHP&lt;/li&gt;        &lt;li&gt;Up to date SQL server&lt;/li&gt;        &lt;li&gt;Required and recommended PHP modules are installed&lt;/li&gt;        &lt;li&gt;UTF8MB4 is supported&lt;/li&gt;        &lt;li&gt;Scheduled events&lt;/li&gt;        &lt;li&gt;Working HTTP requests&lt;/li&gt;        &lt;li&gt;REST API available&lt;/li&gt;        &lt;li&gt;Can perform loopback requests&lt;/li&gt;    &lt;/ul&gt;    &lt;br /&gt;    &lt;a class=&quot;anchor&quot; id=&quot;security-check&quot;&gt;&lt;/a&gt;    &lt;h3 class=&quot;has-anchor-hash&quot;&gt;        Security Checks 🔒         &lt;a class=&quot;anchor-hash-link&quot; href=&quot;#security-check&quot;&gt;&lt;svg class=&quot;anchor-hash-link__icon&quot; height=&quot;18&quot; viewbox=&quot;0 0 18 18&quot; width=&quot;18&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;&lt;path d=&quot;M16.746 7.177l-4.101 4.101c-1.773 1.773-4.45 1.473-5.697.226-.378-.378-.275-1.093.229-1.596.433-.433.904-.588 1.594-.228.69.361 1.511.315 2.051-.224l4.101-4.101a1.61 1.61 0 0 0-2.278-2.278l-2.199 2.198a5.148 5.148 0 0 0-2.311-.545 5.18 5.18 0 0 0-.865.077l3.553-3.552a4.187 4.187 0 1 1 5.923 5.922zm-7.108 6.319a5.154 5.154 0 0 1-2.312-.544l-1.971 1.972a1.613 1.613 0 0 1-2.278 0 1.613 1.613 0 0 1 0-2.278l3.874-3.874c.54-.54 1.36-.586 2.05-.224.69.36 1.162.205 1.595-.228.504-.506.607-1.22.229-1.597-1.247-1.248-3.924-1.548-5.697.225l-3.874 3.874a4.187 4.187 0 1 0 5.923 5.923l3.326-3.327a5.068 5.068 0 0 1-.865.078z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;    &lt;/h3&gt;    &lt;ul&gt;        &lt;li&gt;Only running active themes&lt;/li&gt;        &lt;li&gt;Up to date plugins&lt;/li&gt;        &lt;li&gt;HTTPs connection&lt;/li&gt;        &lt;li&gt;Secure communication&lt;/li&gt;        &lt;li&gt;Debug mode off&lt;/li&gt;        &lt;li&gt;Can communicate with WordPress.org&lt;/li&gt;        &lt;li&gt;Background updates are working&lt;/li&gt;    &lt;/ul&gt;&lt;/div&gt;&lt;div&gt;    &lt;a class=&quot;anchor&quot; id=&quot;site-health-info&quot;&gt;&lt;/a&gt;    &lt;h3 class=&quot;has-anchor-hash&quot;&gt;        Site Health Info         &lt;a class=&quot;anchor-hash-link&quot; href=&quot;#site-health-info&quot;&gt;&lt;svg class=&quot;anchor-hash-link__icon&quot; height=&quot;18&quot; viewbox=&quot;0 0 18 18&quot; width=&quot;18&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;&lt;path d=&quot;M16.746 7.177l-4.101 4.101c-1.773 1.773-4.45 1.473-5.697.226-.378-.378-.275-1.093.229-1.596.433-.433.904-.588 1.594-.228.69.361 1.511.315 2.051-.224l4.101-4.101a1.61 1.61 0 0 0-2.278-2.278l-2.199 2.198a5.148 5.148 0 0 0-2.311-.545 5.18 5.18 0 0 0-.865.077l3.553-3.552a4.187 4.187 0 1 1 5.923 5.922zm-7.108 6.319a5.154 5.154 0 0 1-2.312-.544l-1.971 1.972a1.613 1.613 0 0 1-2.278 0 1.613 1.613 0 0 1 0-2.278l3.874-3.874c.54-.54 1.36-.586 2.05-.224.69.36 1.162.205 1.595-.228.504-.506.607-1.22.229-1.597-1.247-1.248-3.924-1.548-5.697.225l-3.874 3.874a4.187 4.187 0 1 0 5.923 5.923l3.326-3.327a5.068 5.068 0 0 1-.865.078z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;    &lt;/h3&gt;    A new Info page has been added under “Tools” → “Site Health”. This is where you can do you own debugging! And if you need any help, you can click the &quot;Copy site info to clipboard&quot; and paste directly into &lt;a href=&quot;https://www.blogger.com/contact&quot;&gt;our contact form&lt;/a&gt; or &lt;a href=&quot;https://www.blogger.com/pricing#mentor&quot;&gt;schedule a mentorship session&lt;/a&gt;. &lt;/div&gt;&lt;br /&gt;&lt;div 1em=&quot;&quot; class=&quot;separator&quot; margin-left:=&quot;&quot; margin-right:=&quot;&quot; style=&quot;clear: both; text-align: center;&quot;&gt;    &lt;noscript class=&quot;optimizedimg&quot; data-alt=&quot;Site Health Info&quot; data-jpg-mobile=&quot;//i.imgur.com/wLaGjsUm.jpg&quot; data-jpg=&quot;//i.imgur.com/wLaGjsU.jpg&quot; data-webp=&quot;//b.webpurr.com/qlDe.webp&quot;&gt;        &lt;img src=&#39;//i.imgur.com/wLaGjsU.jpg&#39; alt=&#39;Site Health Info&#39; /&gt;    &lt;/noscript&gt;&lt;/div&gt;&lt;div&gt;    The Info page provides a plethora of information about your website. While it is designed for detailed debugging and can be customized by plugin and theme developers, here is a snapshot the sections on this page.     &lt;br /&gt;    &lt;ul&gt;        &lt;li&gt;&lt;b&gt;WordPress&lt;/b&gt;: WordPress version, Language, Site URL, permalink structure, SSL enabled, Registration level, default comment status, access to wordpress.org (for updates)&lt;/li&gt;        &lt;li&gt;&lt;b&gt;Directories and Sizes&lt;/b&gt;: WordPress, upload, themes, and plugins install locations (on server) &amp;amp; size; database size; and total install size&lt;/li&gt;        &lt;li&gt;&lt;b&gt;Active theme&lt;/b&gt;: Theme name, version, author, features &amp;amp; install location&lt;/li&gt;        &lt;li&gt;&lt;b&gt;Other themes&lt;/b&gt;: List of other installed, but inactive themes (consider removing)&lt;/li&gt;        &lt;li&gt;&lt;b&gt;Inactive Plugins&lt;/b&gt;: List of installed, but inactive plugins (consider removing)&lt;/li&gt;        &lt;li&gt;&lt;b&gt;Media Handling&lt;/b&gt;: Editor name, version, resource limits (max media sizes), GD (image) version &amp;amp; status (affects thumbnail generation), Ghostscript version (handles PDFs)&lt;/li&gt;        &lt;li&gt;&lt;b&gt;Server&lt;/b&gt;: Server Architecture (Operating System), Web Server (Ex: Apache), PHP version and variables, cURL version, SUHOSIN status (PHP Extension that does some validation checks on plugins), additional .htaccess rules (affects access/security)&lt;/li&gt;        &lt;li&gt;&lt;b&gt;Database&lt;/b&gt;: Database extension, versions (server and client), user, host, name &amp;amp; prefix&lt;/li&gt;        &lt;li&gt;&lt;b&gt;WordPress Constants&lt;/b&gt;: Variables used globally across the entire install, if there are odd ones, may indicate a security breach&lt;/li&gt;        &lt;li&gt;&lt;b&gt;Filesystem Permissions&lt;/b&gt;: Shows if several directories are available to the WordPress install.         &lt;/li&gt;    &lt;/ul&gt;    &lt;br /&gt;&lt;/div&gt;&lt;div&gt;    &lt;a class=&quot;anchor&quot; id=&quot;php-error-protection&quot;&gt;&lt;/a&gt;    &lt;h2 class=&quot;has-anchor-hash&quot;&gt;        PHP Error Protection         &lt;a class=&quot;anchor-hash-link&quot; href=&quot;#php-error-protection&quot;&gt;&lt;svg class=&quot;anchor-hash-link__icon&quot; height=&quot;18&quot; viewbox=&quot;0 0 18 18&quot; width=&quot;18&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;&lt;path d=&quot;M16.746 7.177l-4.101 4.101c-1.773 1.773-4.45 1.473-5.697.226-.378-.378-.275-1.093.229-1.596.433-.433.904-.588 1.594-.228.69.361 1.511.315 2.051-.224l4.101-4.101a1.61 1.61 0 0 0-2.278-2.278l-2.199 2.198a5.148 5.148 0 0 0-2.311-.545 5.18 5.18 0 0 0-.865.077l3.553-3.552a4.187 4.187 0 1 1 5.923 5.922zm-7.108 6.319a5.154 5.154 0 0 1-2.312-.544l-1.971 1.972a1.613 1.613 0 0 1-2.278 0 1.613 1.613 0 0 1 0-2.278l3.874-3.874c.54-.54 1.36-.586 2.05-.224.69.36 1.162.205 1.595-.228.504-.506.607-1.22.229-1.597-1.247-1.248-3.924-1.548-5.697.225l-3.874 3.874a4.187 4.187 0 1 0 5.923 5.923l3.326-3.327a5.068 5.068 0 0 1-.865.078z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;    &lt;/h2&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;    The release of Wordpress 5.1 brought us a new PHP version warning message on the dashboard. This release moves forward with this warning system, adding some specific features that will help WordPress admins if encountering errors likely related to PHP version conflicts with outdated plugins and themes.&lt;/div&gt;&lt;figure 1em=&quot;&quot; class=&quot;separator&quot; margin-left:=&quot;&quot; margin-right:=&quot;&quot; style=&quot;clear: both; text-align: center;&quot;&gt;    &lt;noscript class=&quot;optimizedimg&quot; data-alt=&quot;PHP Version Warning&quot; data-jpg-mobile=&quot;//i.imgur.com/Y5dJRWlm.jpg&quot; data-jpg=&quot;//i.imgur.com/Y5dJRWl.jpg&quot; data-webp=&quot;//b.webpurr.com/Lnkg.webp&quot;&gt;        &lt;img src=&#39;//i.imgur.com/Y5dJRWl.jpg&#39; alt=&#39;PHP Version Warning&#39; /&gt;    &lt;/noscript&gt;    &lt;figcaption&gt;Warning about outdated PHP version with custom URL and related annotation&lt;/figcaption&gt;&lt;/figure&gt;&lt;br /&gt;&lt;div&gt;    The PHP error protection mechanism, which was &lt;a href=&quot;https://make.wordpress.org/core/2019/01/14/php-site-health-mechanisms-in-5-1/&quot;&gt;originally scheduled for release with version 5.1&lt;/a&gt;, is now included in WordPress core. This feature helps WordPress admins recover from the dreaded WSOD (White Screen of Death) by &quot;pausing&quot; the offending plugin or theme when logging into the admin dashboard. Once the issue has been resolved, the admin can resume the plugin. &lt;/div&gt;&lt;br /&gt;&lt;div&gt;    It is important to note that the frontend will remain unavailable (a message and link for the admin to login will be displayed on the webpage) with this feature and is only intended to provide admin access to the backend, making it easier for some admins to resolve an issue, especially if they don&#39;t have the access or know-how to delve into the code. The look of the error page can be modified, similar to &lt;a href=&quot;https://digwp.com/2009/11/custom-database-error-page/&quot;&gt;the database error page&lt;/a&gt;, and is especially important to do so, if you don&#39;t want an ugly error page with a link to login displayed to your website&#39;s visitors. &lt;/div&gt;&lt;br /&gt;&lt;div&gt;    Last, but not least, this feature also includes adding warning for PHP version requirements when installing new plugins. WordPress has had version requirements information for quite some time. But, with the increasing need to push PHP upgrades, largely due to lack of security updates for older versions, it is becoming even more important to realize that many plugins also require newer versions of PHP. &lt;/div&gt;&lt;br /&gt;&lt;div&gt;    &lt;a class=&quot;anchor&quot; id=&quot;add-dev-updates&quot;&gt;&lt;/a&gt;    &lt;h2 class=&quot;has-anchor-hash&quot;&gt;        Additional Developer Updates         &lt;a class=&quot;anchor-hash-link&quot; href=&quot;#add-dev-updates&quot;&gt;&lt;svg class=&quot;anchor-hash-link__icon&quot; height=&quot;18&quot; viewbox=&quot;0 0 18 18&quot; width=&quot;18&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;&lt;path d=&quot;M16.746 7.177l-4.101 4.101c-1.773 1.773-4.45 1.473-5.697.226-.378-.378-.275-1.093.229-1.596.433-.433.904-.588 1.594-.228.69.361 1.511.315 2.051-.224l4.101-4.101a1.61 1.61 0 0 0-2.278-2.278l-2.199 2.198a5.148 5.148 0 0 0-2.311-.545 5.18 5.18 0 0 0-.865.077l3.553-3.552a4.187 4.187 0 1 1 5.923 5.922zm-7.108 6.319a5.154 5.154 0 0 1-2.312-.544l-1.971 1.972a1.613 1.613 0 0 1-2.278 0 1.613 1.613 0 0 1 0-2.278l3.874-3.874c.54-.54 1.36-.586 2.05-.224.69.36 1.162.205 1.595-.228.504-.506.607-1.22.229-1.597-1.247-1.248-3.924-1.548-5.697.225l-3.874 3.874a4.187 4.187 0 1 0 5.923 5.923l3.326-3.327a5.068 5.068 0 0 1-.865.078z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;    &lt;/h2&gt;&lt;/div&gt;&lt;div&gt;    &lt;ul&gt;        &lt;li&gt;&lt;b&gt;Accessibility Updates &lt;/b&gt;: Several changes for input devices, including keyboard flow&lt;/li&gt;        &lt;li&gt;&lt;b&gt;New Dashboard Icons &lt;/b&gt;: Thirteen new icons, including those for Instagram, BuddyPress and those for the Earth conscious&lt;/li&gt;        &lt;li&gt;&lt;b&gt;Plugin Compatibility Checks &lt;/b&gt;: Prevents plugins that require a higher version of PHP than currently installed to be enabled&lt;/li&gt;        &lt;li&gt;&lt;b&gt;PHP Version Bump&lt;/b&gt;: WordPress now requires PHP 5.6.20, allowing widespread usage of namespaces, anonymous functions and other PHP features&lt;/li&gt;        &lt;li&gt;&lt;b&gt;Privacy Updates&lt;/b&gt;: A new theme page template, a conditional function, and CSS make designing and customizing the Privacy page easier&lt;/li&gt;        &lt;li&gt;&lt;b&gt;New Body Tag Hook&lt;/b&gt;: This long awaited hook allows theme and plugin developers to insert code right at the top of the &lt;code&gt;&amp;lt;body&amp;gt;&lt;/code&gt; element&lt;/li&gt;        &lt;li&gt;&lt;b&gt;Building JavaScript&lt;/b&gt;: webpack and Babel configurations are now included, which makes building javascript with these tools easier&lt;/li&gt;    &lt;/ul&gt;&lt;/div&gt;</description><link>http://www.tekaura.com/2019/05/wordpress-5-2.html</link><author>noreply@blogger.com (Shannon &quot;tekNorah&quot; Medlin)</author><thr:total>41</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7215669801447322432.post-7973543466755022870</guid><pubDate>Sat, 19 Jan 2019 14:41:00 +0000</pubDate><atom:updated>2020-12-02T07:24:20.067-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">firewall</category><category domain="http://www.blogger.com/atom/ns#">guide</category><category domain="http://www.blogger.com/atom/ns#">security</category><category domain="http://www.blogger.com/atom/ns#">virus</category><category domain="http://www.blogger.com/atom/ns#">wordpress</category><category domain="http://www.blogger.com/atom/ns#">WP-CLI</category><title>tekSolution: Protect &amp; Defend against attacks on Wordpress</title><description>&lt;div 1em=&quot;&quot; class=&quot;separator&quot; margin-left:=&quot;&quot; margin-right:=&quot;&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;noscript class=&quot;optimizedimg&quot; data-alt=&quot;tekSolution: Protect and Defend against attacks on your Wordpress website&quot; data-jpg-mobile=&quot;//i.imgur.com/iAGR2Adm.jpg&quot; data-jpg=&quot;//i.imgur.com/iAGR2Ad.jpg&quot; data-webp=&quot;//i.imgur.com/iAGR2Ad.jpg&quot;&gt;  &lt;img src=&#39;//i.imgur.com/iAGR2Ad.jpg&#39; alt=&#39;tekSolution: Protect and Defend against attacks on your Wordpress website&#39; /&gt;&lt;/noscript&gt;&lt;/div&gt;&lt;div&gt;Recently, &lt;a href=&quot;//tekaura.freshdesk.com/a/solutions/articles/30000032919-how-to-clean-protect-against-attacks-to-your-wordpress-website&quot; target=&quot;_blank&quot;&gt;we published a support article&lt;/a&gt; on our knowledge base regarding how we have implemented security measures on Wordpress websites.&amp;nbsp; Because we think this information is valuable to everyone, we are elaborating here on the topic.&lt;br /&gt;Security is an increasing concern for Wordpress websites, especially since &lt;a href=&quot;//www.globaldots.com/2018-bad-bot-report-the-year-bad-bots-went-mainstream/&quot; target=&quot;_blank&quot;&gt;the rise of bad bots&lt;/a&gt; on the internet last year.&amp;nbsp; These automated bad actors may be doing anything from scanning your website for security holes up to an including performing brute force attacks on your login page.&amp;nbsp; So, don&#39;t let all your marketing efforts to drive traffic to your website by halted by these potential issues and follow some simple steps to improve security on your WordPress website today.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;NOTE&lt;/b&gt;: This guide is meant for &lt;b&gt;shared&lt;/b&gt; hosting accounts.&amp;nbsp; If you have a VPS (Virtual Private Server), consider other/additional measures that work on the server or network level, specifically related to blocking malicious traffic, so that you can stop it &lt;b&gt;BEFORE&lt;/b&gt; it hits your application.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;h2&gt;Create a backup&lt;/h2&gt;Before making any changes to your website, it is always a good idea to backup your files and database.&amp;nbsp; How you go about this largely depends on your website host.&amp;nbsp; If available through your web host, use that (usually).&amp;nbsp; However, if that option is not available, we recommend using &lt;a href=&quot;//wordpress.org/plugins/updraftplus/&quot; target=&quot;_blank&quot;&gt;UpdraftPlus&lt;/a&gt;. You can even take this a step further and &lt;a href=&quot;//www.wpbeginner.com/plugins/how-to-put-your-wordpress-site-in-maintenance-mode/&quot; target=&quot;_blank&quot;&gt;turn on maintenance mode&lt;/a&gt;, in order to prevent your users from accessing the website while you are making changes.&amp;nbsp; Or better yet, use a staging or local development environment.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;h2&gt;Install some plugins&lt;/h2&gt;Decent security doesn&#39;t require a subscription.&amp;nbsp; The beauty of Wordpress is its large library of community supported plugins.&amp;nbsp; Sure, there are paid levels and services out there.&amp;nbsp; However, if you are growing, you might not have hundreds or thousands to spend.&amp;nbsp; We have found that using a combination of the &lt;a href=&quot;//wordpress.org/plugins/wordfence/&quot; target=&quot;_blank&quot;&gt;Wordfence&lt;/a&gt; and &lt;a href=&quot;//wordpress.org/plugins/all-in-one-wp-security-and-firewall/&quot; target=&quot;_blank&quot;&gt;AIOWPS&lt;/a&gt; (All In One WP Security) plugins, offers many of the most important security features available on the market:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Scheduled virus scan&lt;/li&gt;&lt;li&gt;Monitor file changes&lt;/li&gt;&lt;li&gt;Monitor available plugin updates&lt;/li&gt;&lt;li&gt;Brute force protection&lt;/li&gt;&lt;li&gt;Firewall&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;h2&gt;Some basic settings&lt;/h2&gt;After you install these security plugins on your WordPress website, it is important to make some changes to the configuration.&amp;nbsp; By default, many of the available features are not turned on and for good reason.&amp;nbsp; Some security features may lock you out of your website.&amp;nbsp; So, check to make sure your backup and restore plan is done and available (see above).&amp;nbsp; When you are ready, download &amp;amp; import &lt;a href=&quot;//github.com/tekAura/tekaura_configs/tree/master/WordPress/security&quot; target=&quot;_blank&quot;&gt;our configurations&lt;/a&gt; for Wordfence and AIOWPS.&lt;br /&gt;If you do choose to use our default configuration files, please note the following changes to your website that may affect you directly:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Your WP login URL is now /knockknock (Ex: http://example.com/knockknock)&lt;/li&gt;&lt;li&gt;You will need to log in every 60 minutes (authentication timeouts are enabled)&lt;/li&gt;&lt;li&gt;Email alerts are set up, but might need to be altered (Wordfence &amp;gt; All Options &amp;gt; &quot;Where to email alerts&quot; &amp;amp; WP Security &amp;gt; scanner &amp;gt; &quot;Send Email When Change Detected&quot;)&lt;/li&gt;&lt;li&gt;After 3 failed login attempts within 5 minutes from the same network (public IP), attempts from that network will be locked out for 1 hour (WP Security &amp;gt; User login &amp;gt; Login Lockdown)&lt;/li&gt;&lt;li&gt;After 20 consecutive failed login attempts within a 4 hour period, that user will be locked out for 4 hours&lt;/li&gt;&lt;/ul&gt;If any of these restrictions are too restrictive, please make the desired changes.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;h2&gt;Limit your Admin&lt;/h2&gt;Last, but not least, it is a good idea to only grant admin access to an account when and if it is needed and no more.&amp;nbsp; Many times, a breach occurs when no one is watching.&amp;nbsp; So, the logic here is if you don&#39;t currently need admin access to the website, disable it.&amp;nbsp; The best way to accomplish this is to:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Create separate account(s) for editing content (and set the user role to editor, or less if editor is not necessary)&lt;/li&gt;&lt;li&gt;Change the role of admin account to subscriber when not in use&lt;/li&gt;&lt;/ul&gt;The quickest way to change WP account roles is to use the Wordpress Command Line Interface (WP-CLI).&amp;nbsp; If your web host has a console option available, via cPanel or their website, use that.&amp;nbsp; If a console is not available, but, SSH access is available, generate an ssh key &amp;amp; add the key to your web host account, using their instructions. If neither is available, you can also manually change the role in the database. However, this is the most complicated of all options available and is prone to human error.&amp;nbsp; Ideally, if you can access WP-CLI via a web console or SSH, use the following command:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;wp user set-role {username} {role}&lt;/code&gt;&lt;/pre&gt;For example, to change the admin user&#39;s role to subscriber (disable admin access), run:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;wp user set-role admin subscriber&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;h2&gt;Last, but not least&lt;/h2&gt;Ask for help.&amp;nbsp; If you get stuck, look to your available resources.&amp;nbsp; Your web hosting provider and keyword searches can be great resources.&amp;nbsp; And if you would like some personal assistance, please don&#39;t hesitate to &lt;a href=&quot;http://tekaura.com/contact&quot; target=&quot;_blank&quot;&gt;contact us&lt;/a&gt;.&amp;nbsp; Let&#39;s make the world a safer place to do business.&lt;/div&gt;</description><link>http://www.tekaura.com/2019/01/teksolution-protect-and-defend-against.html</link><author>noreply@blogger.com (Shannon &quot;tekNorah&quot; Medlin)</author><thr:total>24</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7215669801447322432.post-8461484524983651146</guid><pubDate>Fri, 11 Jan 2019 23:46:00 +0000</pubDate><atom:updated>2020-12-02T07:30:02.433-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">adversity</category><category domain="http://www.blogger.com/atom/ns#">guide</category><category domain="http://www.blogger.com/atom/ns#">marketing</category><category domain="http://www.blogger.com/atom/ns#">messenger</category><title>4 Things I Learned About Direct Message Marketing</title><description>&lt;style&gt;  .has-anchor-hash .anchor-hash-link {    left: 0.5em;    opacity: 0;    transition: opacity 0.3s;    display: inline-block;    height: 100%   }      .has-anchor-hash .anchor-hash-link__icon {    display: inline-block;    fill: #999   }      .has-anchor-hash .anchor-hash-link:hover .anchor-hash-link__icon {    fill: #44414E   }      .has-anchor-hash:hover .anchor-hash-link {    opacity: 1   }      .has-anchor-hash .anchor-hash-link {    color: #999 !important;    background-image: none !important   }   a.anchor {    display: block;    position: relative;    top: -80px;    visibility: hidden;   } &lt;/style&gt;  &lt;br /&gt;  &lt;div 1em=&quot;&quot; class=&quot;separator&quot; margin-left:=&quot;&quot; margin-right:=&quot;&quot; style=&quot;clear: both; text-align: center;&quot;&gt;  &lt;noscript data-jpg=&#39;//i.imgur.com/gPdQK8a.jpg&#39; data-jpg-mobile=&#39;//i.imgur.com/gPdQK8am.jpg&#39; data-webp=&#39;//i.imgur.com/gPdQK8a.jpg&#39; data-alt=&quot;4 Things I Learned About Direct Message Marketing&quot; class=&#39;optimizedimg&#39;&gt;  &lt;img src=&#39;//i.imgur.com/gPdQK8a.jpg&#39; alt=&#39;4 Things I Learned About Direct Message Marketing&#39; /&gt;&lt;/noscript&gt;&lt;/div&gt;&lt;br /&gt;Direct Message Marketing is &lt;a href=&quot;//www.bluecompass.com/blog/text-message-marketing&quot; target=&quot;_blank&quot;&gt;all the rage&lt;/a&gt;, these days. Everyone has a phone in their pocket. So, naturally, the guaranteed delivery of your campaign through DMM means you spend less money on mass marketing efforts and have the opportunity of immediately opening a dialog.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;&lt;b&gt;The Path to Success is Paved with Naysayers&lt;/b&gt;&lt;/h2&gt;Anyone that owns a business has experienced resistance to DMM at one time or another.&amp;nbsp; Now, I&#39;m not talking about the attempts that are simply ignored, I&#39;m talking about the nasty, rude responders that cuss and block you.&amp;nbsp; A common immediate reaction to these tantrums is to consider it an exercise in scrubbing your friends list of negativity.&amp;nbsp; However, it can be easily turned into an opportunity.&amp;nbsp; Consider your target market.&amp;nbsp; Did the &quot;friend&quot; fall into yours?&amp;nbsp; Could you have changed the messaging in any way to appeal to this individual?&amp;nbsp; Even if the answer is a resounding &quot;NO!&quot;, you can still discover some areas of improvement that may generate more leads.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;&lt;b&gt;Don&#39;t Be Afraid to Get Feedback From Your Network&lt;/b&gt;&lt;/h2&gt;Developing your marketing strategy is hard.&amp;nbsp; Which is why it should not only be constantly improving, but also include reflection, so that any necessary changes can be applied.&amp;nbsp; One of the best ways to increase engagement with your community is to ask them for help.&amp;nbsp; As a service agency, I have found myself overlooking the need to get help from others.&amp;nbsp; But, when I do, I almost always come out of it with valuable information.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;&lt;b&gt;Avoid Using Open Ended Questions&lt;/b&gt;&lt;/h2&gt;A popular DMM tactic is to ask your contact a question.&amp;nbsp; As mentioned above, this a great Call To Action strategy.&amp;nbsp; However, if your question is too broad, it may cause cognitive dissonance as the reader often looses interest when too much effort is involved in a response, especially over chat.&amp;nbsp; For instance, avoid using the phrase: &quot;Do you or anyone you know need... ?&quot;.&amp;nbsp; This type of question crams a bunch of questions together.&amp;nbsp; Not only does the reader need to have a grasp of what you are offering, but also if it applies to any of their current challenges AND those of others in their network.&amp;nbsp; Most people immediately say NO to this type of question.&amp;nbsp; It is better to try something simple, like &quot;Hey!&amp;nbsp; I noticed the footer on your website isn&#39;t loading properly on mobile. Need Help?&quot; and include a link to a specific service/product you are offering.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;&lt;b&gt;Focus Efforts Where They are Effective&lt;/b&gt;&lt;/h2&gt;People need to be in the right mindset &lt;b&gt;before&lt;/b&gt; you reach out to them.&amp;nbsp; Using networks like Alignable and LinkedIn are obvious choices.&amp;nbsp; But, think about where your network is already looking for your services/products.&amp;nbsp; There is a good reason why so many entrepreneurs &lt;a href=&quot;//www.udemy.com/start-a-successful-business-on-amazon-7-easy-steps/&quot; target=&quot;_blank&quot;&gt;do well on Amazon&lt;/a&gt;. It&#39;s where customers go when they are &lt;b&gt;already&amp;nbsp;considering purchasing&lt;/b&gt;&amp;nbsp;a product online.&amp;nbsp; So, similarly, think about where your customers go when looking for the type of services and products you offer.&amp;nbsp; I often hang out in tech support areas for quality leads to come knocking, popping into places like &lt;a href=&quot;http://codementor.io/tekNorah&quot;&gt;codementor.io&lt;/a&gt;, and the &lt;a href=&quot;//www.drupal.org/node/314178&quot;&gt;Drupal Slack, IRC and RocketChat&lt;/a&gt; channels to see if I can offer some help.&amp;nbsp; Leads from these places are often my best clients.</description><link>http://www.tekaura.com/2019/01/4-things-i-learned-about-direct-message.html</link><author>noreply@blogger.com (Shannon &quot;tekNorah&quot; Medlin)</author><thr:total>283</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7215669801447322432.post-7326843654880717793</guid><pubDate>Thu, 23 Aug 2018 03:20:00 +0000</pubDate><atom:updated>2020-12-02T07:41:27.390-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">email</category><category domain="http://www.blogger.com/atom/ns#">project management</category><category domain="http://www.blogger.com/atom/ns#">stress</category><category domain="http://www.blogger.com/atom/ns#">tasks</category><category domain="http://www.blogger.com/atom/ns#">time management</category><category domain="http://www.blogger.com/atom/ns#">workload</category><title>Achievement Unlocked! - INBOX ZERO</title><description>&lt;style&gt;    .has-anchor-hash .anchor-hash-link {         left: 0.5em;         opacity: 0;         transition: opacity 0.3s;         display: inline-block;         height: 100%     }          .has-anchor-hash .anchor-hash-link__icon {         display: inline-block;         fill: #999     }          .has-anchor-hash .anchor-hash-link:hover .anchor-hash-link__icon {         fill: #44414E     }          .has-anchor-hash:hover .anchor-hash-link {         opacity: 1     }          .has-anchor-hash .anchor-hash-link {         color: #999 !important;         background-image: none !important     }     a.anchor {         display: block;         position: relative;         top: -80px;         visibility: hidden;     } &lt;/style&gt; &lt;br /&gt;&lt;div 1em=&quot;&quot; class=&quot;separator&quot; margin-left:=&quot;&quot; margin-right:=&quot;&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;noscript class=&quot;optimizedimg&quot; data-alt=&quot;Achievement Unlocked! - INBOX ZERO&quot; data-jpg-mobile=&quot;//i.imgur.com/Aa0uD64m.jpg&quot; data-jpg=&quot;//i.imgur.com/Aa0uD64.jpg&quot; data-webp=&quot;//i.imgur.com/Aa0uD64.jpg&quot;&gt;  &lt;img src=&#39;//i.imgur.com/Aa0uD64.jpg&#39; alt=&#39;Achievement Unlocked! - INBOX ZERO&#39; /&gt;&lt;/noscript&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;As a software developer, program manager, small business owner and digital viking with shade-tree mechanical inclination on the side, it is often a daunting, if not impossible, feat to clear out my Inbox.&amp;nbsp; In fact, this hasn&#39;t happened in so long that I don&#39;t rightly recall when was the last time.&amp;nbsp; So, I thought I would take a few moments, now that I don&#39;t have this cloud hanging over my head and tell you a little bit about how I have been able to accomplish this heroic moment.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;b&gt;Use Your Tools&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;As with anything in life, if you don&#39;t get the right tools, or even worse, use the tools ones you have them, it is just a big fat waste of your time.&amp;nbsp; As you can see in the screenshot above, I use &lt;a href=&quot;//www.google.com/inbox/&quot;&gt;Google&#39;s Inbox&lt;/a&gt; platform for emails.&amp;nbsp; I used to use Gmail, but switched to Inbox a while ago, not because it was more capable, but because it had less clutter and I am happy to see that Gmail is slowly being redesigned to fit this demand.&amp;nbsp; And don&#39;t worry, it still has folders (labels) for filtering.&amp;nbsp; But, I can minimize it from view with the &quot;three lines&quot; icon in the upper left hand corner.&amp;nbsp; Simple.&amp;nbsp; Inbox also does something super unique, it &quot;learns&quot; what emails you consider to be in what category/label.&amp;nbsp; So, you don&#39;t constantly have to setup filters, although you can.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;There are also a few &lt;b&gt;existing unique features&lt;/b&gt;, like the ability to &lt;a href=&quot;//support.google.com/inbox/answer/6067583&quot;&gt;snooze emails&lt;/a&gt; until a later day/time, that can be help to remove the clutter and free up my head space, until you are ready to deal with whatever.&amp;nbsp; Now, this doesn&#39;t mean you should avoid your emails.&amp;nbsp; No, this is a tool to use when you can&#39;t do the next step until later.&amp;nbsp; For example, I snoozed an email earlier today that was a response from a software vendor regarding a feature they were missing.&amp;nbsp; I am planning on updating the related project tomorrow, so set a reminder to add it in the morning.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;I also use &lt;a href=&quot;//chrome.google.com/webstore/detail/shared-inbox-crm-for-gmai/dheionainndbbpoacpnopgmnihkcmnkl?hl=en&quot;&gt;Gmelius&#39; Google Chrome extension&lt;/a&gt;&amp;nbsp;for &lt;b&gt;email tracking and statistics&lt;/b&gt;.&amp;nbsp; I use this tool primarily to allow me to see when the recipient opens the email.&amp;nbsp; The last thing I want to do is bug them if they are already looking at it.&amp;nbsp; Basically, it helps me to gauge when it is most appropriate to respond.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;b&gt;Know when to ditch email&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;No matter how pervasive, email communication doesn&#39;t always fit the job.&amp;nbsp; Like a square peg in a hole, email often fails when you are needing to discuss multiple topics with your team.&amp;nbsp; This is where a project management tool comes into play.&amp;nbsp; As a PM, I have used almost every tool out there.&amp;nbsp; Some of the most used by freelancers and entrepreneurs at the moment of this writing are &lt;a href=&quot;//trello.com/tour&quot;&gt;Trello&lt;/a&gt;, &lt;a href=&quot;//asana.com/product&quot;&gt;Asana&lt;/a&gt; &amp;amp; &lt;a href=&quot;//www.teamwork.com/projects-features&quot;&gt;Teamwork Projects&lt;/a&gt;.&amp;nbsp; Each have their own set of advantages and disadvantages.&amp;nbsp; But merely using one is a big step in the right direction, even if you are the only one on the project.&amp;nbsp; It will help to get your &amp;amp; your team&#39;s ideas out in the open, categorized and ready for planning and implementation.&amp;nbsp; With over 20 years in the industry, with extreme confidence, I can tell you that 80% of any project is in planning and communication.&amp;nbsp; So, don&#39;t let your 100&#39;s of replies on a single email thread bog you down.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;Another tool that is useful to help separate formal client requests from email fluff, is a ticket/contact management system.&amp;nbsp; Here at tekAura, we use &lt;a href=&quot;//freshdesk.com/help-desk-software&quot;&gt;FreshDesk&lt;/a&gt;.&amp;nbsp; Not only is it friendly to startups with a feature rich Free subscription level, affectionally coined, &quot;Sprout&quot;, but, more importantly, it keeps those support requests and out of my Inbox!&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;b&gt;Pivot Email ---&amp;gt; Notification Center&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;It might take a few hard filters to accomplish, but it is pretty simple to turn your Inbox into a notification center instead of a primary communication center.&amp;nbsp; Just setup a few categories (labels) like &quot;Support Requests&quot;, &quot;Leads&quot;, &quot;Feedback&quot;, whatever makes sense for you and before you know it, you won&#39;t be reading and responding to every email, you&#39;ll be scanning quickly and diverting traffic.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;So, the big question I have is: &lt;b&gt;What does your Inbox look like today?&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;If you need any help setting up a system that works for you or would simply like to share your thoughts on the subject, please leave a comment below or drop us a line on our&amp;nbsp;&lt;a href=&quot;http://contact/&quot;&gt;Contact&lt;/a&gt;&amp;nbsp;page.&lt;/div&gt;</description><link>http://www.tekaura.com/2018/08/achievement-unlocked-inbox-zero.html</link><author>noreply@blogger.com (Shannon &quot;tekNorah&quot; Medlin)</author><thr:total>8</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7215669801447322432.post-4559389633487033768</guid><pubDate>Thu, 01 Jun 2017 16:06:00 +0000</pubDate><atom:updated>2020-12-02T07:42:39.731-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">business networking</category><category domain="http://www.blogger.com/atom/ns#">productivity</category><category domain="http://www.blogger.com/atom/ns#">time management</category><title>To Help or Not To Help: That IS the question</title><description>&lt;style&gt;  .has-anchor-hash .anchor-hash-link {    left: 0.5em;    opacity: 0;    transition: opacity 0.3s;    display: inline-block;    height: 100%   }      .has-anchor-hash .anchor-hash-link__icon {    display: inline-block;    fill: #999   }      .has-anchor-hash .anchor-hash-link:hover .anchor-hash-link__icon {    fill: #44414E   }      .has-anchor-hash:hover .anchor-hash-link {    opacity: 1   }      .has-anchor-hash .anchor-hash-link {    color: #999 !important;    background-image: none !important   }   a.anchor {    display: block;    position: relative;    top: -80px;    visibility: hidden;   } &lt;/style&gt;  &lt;br /&gt;  &lt;div 1em=&quot;&quot; class=&quot;separator&quot; margin-left:=&quot;&quot; margin-right:=&quot;&quot; style=&quot;clear: both; text-align: center;&quot;&gt;  &lt;noscript data-jpg=&#39;//i.imgur.com/cOO2mO6.jpg&#39; data-jpg-mobile=&#39;//i.imgur.com/cOO2mO6m.jpg&#39; data-webp=&#39;//i.imgur.com/cOO2mO6.jpg&#39; data-alt=&quot;To Help or Not To Help: That IS the question&quot; class=&#39;optimizedimg&#39;&gt;  &lt;img src=&#39;//i.imgur.com/cOO2mO6.jpg&#39; alt=&#39;To Help or Not To Help: That IS the question&#39; /&gt;&lt;/noscript&gt;&lt;/div&gt;Today, I wrote this response to &lt;a href=&quot;//journal.thriveglobal.com/what-to-say-when-someone-asks-to-pick-your-brain-88d75f6288ad&quot;&gt;a recent article on Medium&lt;/a&gt;: &lt;a href=&quot;//medium.com/@tekNorah/yes-setting-boundaries-is-very-important-bfe31aafc504&quot;&gt;Yes! Setting boundaries is very important&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This got me thinking about how most of my opportunities started by helping someone else.&lt;br /&gt;&lt;br /&gt;For instance, yesterday, near the end of a &lt;a href=&quot;//www.codementor.io/teknorah&quot;&gt;codementor session&lt;/a&gt;, my mentee said: &quot;I know your time is valuable, but...&quot;&lt;br /&gt;&lt;br /&gt;The story of Beauty and the Beast comes to mind here. Btw, has anyone seen the remake? I wish all remakes honored the original with the same passion. What a cast! But, really, there is a huge lesson in there:&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;The Road to True Wealth is Littered with Obfuscated Golden Opportunities&lt;/h3&gt;&lt;blockquote class=&quot;tr_bq&quot;&gt;&quot;OK, but, where is this invisible Gold you speak and how do I sniff it out, my sweet Norah?&quot;&lt;br /&gt;&quot;Why, it is right under your nose, my good friend!&quot;&lt;/blockquote&gt;&lt;br /&gt;Here is the secret: Go-to the places where people are looking for your help.&lt;br /&gt;&lt;br /&gt;Seems too simple, right? Well, it really is! In marketing terms: find out where your target market hangs out.&lt;br /&gt;&lt;br /&gt;Here is an example: let&#39;s say that you are a Green Technology blogger. Your clients are manufacturers and organizations in that space. So, you might consider attending a seminar on a new green initiative. After the presentation, stick around, chat with the people, show interest in their work, ask about their challenges, maybe offer a suggestion... Why? Well, because you ARE interested, right? And at some point, you are likely to be asked: &quot;So, what do YOU do?&quot; And there you go, foot-in-door accomplished!&lt;br /&gt;&lt;br /&gt;Now, here is the most important part, segue into your story... You might start with: &quot;I help people like yourself by providing [your service/product]&quot;.&lt;br /&gt;&lt;br /&gt;Next thing you know, you have an email or business card in your hand and a first consultation scheduled!&lt;br /&gt;&lt;br /&gt;Volunteerism comes in many forms, but probably the most valuable to me is when I can remove someone&#39;s barriers. Whether the barrier is technology, network reach, funding, or something else, it seems like what people often need the most is someone to listen and help to frame questions that serve their goals.&lt;br /&gt;&lt;br /&gt;When was the last time you offered your expertise to someone for free? I would love to hear your story.&lt;br /&gt;&lt;br /&gt;Feel free to leave a comment, invite me to a Google Hangout using my email: smedlin@tekAura.com or &lt;a href=&quot;//www.blogger.com/m.me/norahaura&quot;&gt;Message me on Facebook&lt;/a&gt;</description><link>http://www.tekaura.com/2017/06/to-help-or-not-to-help-that-is-question.html</link><author>noreply@blogger.com (Shannon &quot;tekNorah&quot; Medlin)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7215669801447322432.post-7318494850334471581</guid><pubDate>Wed, 15 Mar 2017 22:43:00 +0000</pubDate><atom:updated>2020-12-02T07:43:22.895-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">capacity</category><category domain="http://www.blogger.com/atom/ns#">focus</category><category domain="http://www.blogger.com/atom/ns#">productivity</category><category domain="http://www.blogger.com/atom/ns#">project management</category><category domain="http://www.blogger.com/atom/ns#">stress</category><category domain="http://www.blogger.com/atom/ns#">tasks</category><category domain="http://www.blogger.com/atom/ns#">workload</category><title>7 Tips to Reduce Stress &amp; Get More Done</title><description>&lt;style&gt;  .has-anchor-hash .anchor-hash-link {    left: 0.5em;    opacity: 0;    transition: opacity 0.3s;    display: inline-block;    height: 100%   }      .has-anchor-hash .anchor-hash-link__icon {    display: inline-block;    fill: #999   }      .has-anchor-hash .anchor-hash-link:hover .anchor-hash-link__icon {    fill: #44414E   }      .has-anchor-hash:hover .anchor-hash-link {    opacity: 1   }      .has-anchor-hash .anchor-hash-link {    color: #999 !important;    background-image: none !important   }   a.anchor {    display: block;    position: relative;    top: -80px;    visibility: hidden;   } &lt;/style&gt;  &lt;br /&gt;  &lt;div 1em=&quot;&quot; class=&quot;separator&quot; margin-left:=&quot;&quot; margin-right:=&quot;&quot; style=&quot;clear: both; text-align: center;&quot;&gt;  &lt;noscript data-jpg=&#39;//i.imgur.com/Y4RSne6.jpg&#39; data-jpg-mobile=&#39;//i.imgur.com/Y4RSne6m.jpg&#39; data-webp=&#39;//i.imgur.com/Y4RSne6.jpg&#39; data-alt=&quot;7 Tips to Reduce Stress &amp;amp; Get More Done&quot; class=&#39;optimizedimg&#39;&gt;  &lt;img src=&#39;//i.imgur.com/Y4RSne6.jpg&#39; alt=&#39;7 Tips to Reduce Stress &amp;amp; Get More Done&#39; /&gt;&lt;/noscript&gt;&lt;/div&gt;I don&#39;t know about you, but I definitely get exhausted after a day filled with reactive vs proactive work.&amp;nbsp; There is no doubt that self-management is a challenge and I am always looking for new mental tricks to be as productive as possible.&amp;nbsp; If any of you are having similar issues, try some of these simple steps:&lt;br /&gt;&lt;br /&gt;&lt;div dir=&quot;ltr&quot;&gt;&lt;b&gt;1. Write down&lt;/b&gt;&lt;b&gt; requests&lt;/b&gt; (so they out of your head)&lt;br /&gt;Many people get caught up trying to use their email communications as a task tracking tool.&amp;nbsp; However, sooner than later, you will &quot;loose&quot; an email and spend the better part of an afternoon searching for it only to discover that the subject was unrelated to the request and/or expected keywords are missing.&amp;nbsp; I think everyone has run across one of these cryptic emails once or twice. Instead, try to pivot from reactive to proactive work style by logging requests into a PM tool.&amp;nbsp; Some awesome existing web tools are &lt;u&gt;&lt;a href=&quot;//trello.com/&quot;&gt;&lt;u&gt;&lt;b&gt;Trello&lt;/b&gt;&lt;/u&gt;&lt;/a&gt;&lt;/u&gt;, &lt;a href=&quot;//www.teamwork.com/&quot;&gt;&lt;b&gt;Teamwork&lt;/b&gt;&lt;/a&gt;, &lt;a href=&quot;//asana.com/&quot;&gt;&lt;b&gt;Asana&lt;/b&gt;&lt;/a&gt; and for the more daring, &lt;a href=&quot;//podio.com/&quot;&gt;&lt;b&gt;Podio&lt;/b&gt;&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot;&gt;&lt;b&gt;2. Itemize major&lt;/b&gt;&lt;b&gt; steps&lt;/b&gt; (as needed)&lt;br /&gt;We all have heard of several time management techniques to improve focus and increase workload/capacity.&amp;nbsp; everything from Inbox Zero to the Pomodoro technique, which is based off a 15-minute kitchen timer.&amp;nbsp; However, often these methods break down or are completely ignored over time and, usually, when under pressure.&amp;nbsp; So, instead of creating all the subtasks upfront or breaking up your day into arbitrary units, just start with a couple obvious ones, something like &lt;i&gt;Research&lt;/i&gt; &amp;amp; &lt;i&gt;Provide Estimate&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot;&gt;&lt;b&gt;3. Learn to walk&lt;/b&gt;&lt;b&gt; away&lt;/b&gt; (for your sanity)&lt;br /&gt;Probably the most important part of the process is to, simply, walk away. Take a break, go for a walk, do a chore, run an errand. This essential decompression will keep you energized throughout the day, allow you to do yoga the same day as a project deadline and still have plenty of time for a nice family dinner.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot;&gt;&lt;b&gt;4. Jot down your ideas&lt;/b&gt; (when they strike you)&lt;br /&gt;When the light bulb arrives, add it as a comment/note on your research task. Start planning your steps and adding them to the list.&amp;nbsp; Before you know it, the plan has practically built itself and you are easily able to provide an to estimate.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot;&gt;&lt;b&gt;5. Be curious&lt;/b&gt; (because why not?)&lt;br /&gt;Be sure to ask for more details about the request&#39;s requirements and expectations (parameters).&amp;nbsp; It is often better to ask as many questions as you can. Not only will you be better prepared to deliver to spec and on time, you will also, effectively, generate a higher quality result and inadvertently align expectations with realistic delivery.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot;&gt;&lt;b&gt;6. Confirm &amp;amp; Complete&lt;/b&gt; (and Confirm again!)&lt;br /&gt;Build confidence by consistently engaging the originator of the request. Delivering early and often is great, but if you don&#39;t get them to verify it is correct along the way, they won&#39;t check until everything has been completed.&amp;nbsp; The last thing you want us to have to redo your work or waste time. Unless you are being paid to provide multiple solutions/options, I suppose.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot;&gt;&lt;b&gt;7. Work passionately&lt;/b&gt; (there is no other H-way!)&lt;br /&gt;Bottom line, choose only those projects that you feel passionate about or provides you with a specific benefit.&amp;nbsp; The last thing you want, is to find yourself at a dead end job working on pointless initiatives.&lt;/div&gt;&lt;div dir=&quot;ltr&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot;&gt;This post was inspired by...&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;a href=&quot;//youtu.be/WhbYBb0huMs&quot;&gt;How&amp;nbsp;to Stay Focused&lt;/a&gt;&lt;/b&gt; by Brandon Buchard&lt;/div&gt;&lt;div dir=&quot;ltr&quot;&gt;&lt;br /&gt;&lt;/div&gt;</description><link>http://www.tekaura.com/2017/03/7-tips-to-reduce-stress-get-more-done.html</link><author>noreply@blogger.com (Shannon &quot;tekNorah&quot; Medlin)</author><thr:total>14</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7215669801447322432.post-2137804141355713595</guid><pubDate>Wed, 23 Mar 2016 20:51:00 +0000</pubDate><atom:updated>2020-12-02T07:43:56.297-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">agencies</category><category domain="http://www.blogger.com/atom/ns#">gigs</category><category domain="http://www.blogger.com/atom/ns#">interview</category><title>Freelancing In A Nutshell</title><description>&lt;style&gt;  .has-anchor-hash .anchor-hash-link {    left: 0.5em;    opacity: 0;    transition: opacity 0.3s;    display: inline-block;    height: 100%   }      .has-anchor-hash .anchor-hash-link__icon {    display: inline-block;    fill: #999   }      .has-anchor-hash .anchor-hash-link:hover .anchor-hash-link__icon {    fill: #44414E   }      .has-anchor-hash:hover .anchor-hash-link {    opacity: 1   }      .has-anchor-hash .anchor-hash-link {    color: #999 !important;    background-image: none !important   }   a.anchor {    display: block;    position: relative;    top: -80px;    visibility: hidden;   } &lt;/style&gt;  &lt;br /&gt;  &lt;div 1em=&quot;&quot; class=&quot;separator&quot; margin-left:=&quot;&quot; margin-right:=&quot;&quot; style=&quot;clear: both; text-align: center;&quot;&gt;  &lt;noscript data-jpg=&#39;//i.imgur.com/ZB0stBM.jpg&#39; data-jpg-mobile=&#39;//i.imgur.com/ZB0stBMm.jpg&#39; data-webp=&#39;//i.imgur.com/ZB0stBM.jpg&#39; data-alt=&quot;Freelancing In A Nutshell&quot; class=&#39;optimizedimg&#39;&gt;  &lt;img src=&#39;//i.imgur.com/ZB0stBM.jpg&#39; alt=&#39;Freelancing In A Nutshell&#39; /&gt;&lt;/noscript&gt;&lt;/div&gt;&lt;br /&gt;I never thought &lt;a href=&quot;//www.linkedin.com/pulse/freelancing-nutshell-shannon-teknorah-medlin&quot;&gt;my first post on LinkedIn&lt;/a&gt; would be about a talent service. But, here I go. I have been a freelance software developer and project manager for almost 3 years. Yay?!&lt;br /&gt;&lt;br /&gt;My biggest challenge on this journey has been finding clients that can afford to keep me interested. People love to work with me, not because I am a yes person, but because I am patient, friendly and a realist.&lt;br /&gt;&lt;br /&gt;Unfortunately, this often results in clients that don&#39;t live up to my expectations. Often, these clients do not make essential decisions and/or do not provide essential information in order for me to provide the level of quality I have promised. So, I found myself transitioning from Independent Software Developer to Project Manager. Sufficient requirements gathering is hard. But, it also absolutely necessary for success.&lt;br /&gt;&lt;br /&gt;This is where I hope toptal will fill in the gaps. I myself have thought about starting my own talent agency and/or creating a project management tool the freelancer/small business space. Honestly, I probably will still do it. But, I need to regain my lost capitol first. Toptal appears to be the most promising option on the market right now. Where many other freelance bidding platforms fail, toptal would succeed.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;h3&gt;Job Bidding Simply Does not Work&lt;/h3&gt;&lt;br /&gt;Freelancer and Upwork is filled with employers who want to pay too little for quality work and in turn this attracts low-skilled workers who overpromise and underdeliver. Sound familiar to anyone?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Essentially, this system is flawed at its core. If you allow someone to ask for a logo for $5, they will do it and they will get bidders for $1 or $3. However, what guarantee do you have that the work is original? What if you get caught? Are you ready for a lawsuit over a $2 logo? I wouldn&#39;t want to be that person.&lt;br /&gt;&lt;br /&gt;I mean, if you are willing to spend $600 on your iPhone, why can&#39;t you spend at least half of that on the logo that represents your brand, your reputation as a new business owner.&lt;br /&gt;&lt;br /&gt;As a freelancer looking for legitimate work, I have bid on 1000&#39;s of jobs on these websites over the past couple years and none have ever turned out.&lt;/div&gt;&lt;div&gt;&lt;h3&gt;Barking Up the Wrong Tree&lt;/h3&gt;&lt;br /&gt;Ok, so, these leads are not a good match, right? Right. But, I still believe in the quality work and fair compensation in the freelancer community. Everyone knows that you are only as good as your next contract. Well, what if all contracts were good. No, what if they were great?!&lt;br /&gt;&lt;br /&gt;Toptal&#39;s concept appears to addresses this issue. Not only do they screen their freelancers, but they also screen client contracts.&lt;br /&gt;&lt;br /&gt;So, I applied today and I will continue to post about my Toptal experience as a freelance developer.&lt;br /&gt;&lt;br /&gt;Don&#39;t let me down &lt;a href=&quot;//www.toptal.com/web&quot;&gt;Toptal Web development community&lt;/a&gt;, don&#39;t let me down. I want to join your community.&lt;/div&gt;</description><link>http://www.tekaura.com/2016/03/freelancing-in-nutshell.html</link><author>noreply@blogger.com (Shannon &quot;tekNorah&quot; Medlin)</author><thr:total>3</thr:total></item></channel></rss>