<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Ed Gray</title>
    <description>The latest articles on DEV Community by Ed Gray (@marketingclouded).</description>
    <link>https://dev.to/marketingclouded</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F308317%2F62c4b845-01e3-4f96-b1b4-632e4623966e.png</url>
      <title>DEV Community: Ed Gray</title>
      <link>https://dev.to/marketingclouded</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/marketingclouded"/>
    <language>en</language>
    <item>
      <title>Salesforce Marketing Cloud: Installing Einstein Tracking Codes on Shopify</title>
      <dc:creator>Ed Gray</dc:creator>
      <pubDate>Tue, 13 Oct 2020 19:59:50 +0000</pubDate>
      <link>https://dev.to/marketingclouded/salesforce-marketing-cloud-installing-einstein-tracking-codes-on-shopify-3d9a</link>
      <guid>https://dev.to/marketingclouded/salesforce-marketing-cloud-installing-einstein-tracking-codes-on-shopify-3d9a</guid>
      <description>&lt;p&gt;Salesforce Marketing Cloud's tracking codes are essential to unlocking many of its advanced marketing automation features. Whether you're simply wanting to send an email based upon what product(s) a subscriber has viewed or start up Einstein's recommendation engine - it begins with correctly installing tracking codes.&lt;/p&gt;

&lt;p&gt;Unfortunately, figuring out how to install the codes that track subscriber behavior can prove challenging for non-experts. This step-by-step guide will help get you started installing the collect codes on any standard Shopify store - without the need of any additional applications.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This guide assumes you've uploaded an &lt;a href="https://help.salesforce.com/articleView?id=mc_pb_catalog_import.htm&amp;amp;type=5"&gt;initial product catalog&lt;/a&gt;, created the standard &lt;a href="https://help.salesforce.com/articleView?id=mc_pb_enable_pb_data_extensions.htm&amp;amp;type=5"&gt;Einstein Recommendation data extensions&lt;/a&gt;, understand &lt;a href="https://help.salesforce.com/articleView?id=mc_es_available_personalization_strings.htm&amp;amp;type=5"&gt;personalization strings&lt;/a&gt; and know the basics of &lt;a href="https://help.shopify.com/en/manual/online-store/os/using-themes/change-the-layout/theme-code"&gt;editing the theme code of a standard Shopify store&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1 - Base Collect Code
&lt;/h3&gt;

&lt;p&gt;Every webpage that uses a Marketing Cloud tracking code will need the Base Collect Code installed first. Install the following code in the theme.liquid file before the closing  tag: &lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Make sure to replace the MID with your business unit unique identifier, not only for the Base Collect Code but for all of the below code.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ULxC8cCD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/rekaqwgg46vxks1g7nvm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ULxC8cCD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/rekaqwgg46vxks1g7nvm.png" alt="Update the Theme.liquid file"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2 - Start appending Subscriber ID or Subscriber Key to outbound links
&lt;/h3&gt;

&lt;p&gt;Next, we need a way to identify a specific Marketing Cloud subscriber's behavior on the website. One relatively easy way to do this is by passing the subscriber key or id as a parameter in links from Marketing Cloud emails.&lt;/p&gt;

&lt;p&gt;You could use Marketing Cloud's Parameter Manager to automatically append the same parameters to all links - but this can interfere with other links you build that rely on other parameters. Instead, I recommend working with Marketing Cloud's support team to alter the Conversion Tracking Link that can be enabled on specific links in an email.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KNze9o1t--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/hwsg8n0ksfludqynjhli.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KNze9o1t--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/hwsg8n0ksfludqynjhli.png" alt="Conversion Tracking Links"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For example, I used the &lt;a href="https://help.salesforce.com/articleView?id=mc_es_conversion_landingpg.htm&amp;amp;r=https%3A%2F%2Fwww.google.com%2F&amp;amp;type=5"&gt;default 'sfmc_sub=%%subscriberid%%' used by checking the Conversion Tracking Link&lt;/a&gt; box in Email Studio on links that lead to the Shopify store.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3 - Tracking Users
&lt;/h3&gt;

&lt;p&gt;Now that we have parameters in links to help identify subscribers, we can use javascript to use the parameter in the User Collect Code. Here is an example of the javascript to install at the bottom of theme.liquid template:&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;Remember to replace the MID - and 'sfmc_sub' with the name of the parameter used for the unique Subscriber's ID or Key.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Don't be tricked by the use of 'email' in the collect code, we can use any unique identifier that Marketing Cloud can map to the subscriber.&lt;/strong&gt; In fact you should NOT use an email address or any other Personal Identifying Information in the tracking codes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ignore Salesforce instructions on only installing the User tracking code on login pages.&lt;/strong&gt; We want to be able to identify subscribers and track their behavior by establishing a cookie regardless of whether they log into the Shopify store.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;While this method has the benefit of establishing cookies for subscribers without requiring them to log into the Shopify store, it can cause issues when subscribers forward their email to others or copy/paste it into a website.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4 - Track Products Views
&lt;/h3&gt;

&lt;p&gt;With subscribers being identified through the User collect code, it's time to track what products they're viewing. Install the following code in the product.liquid template file in your Shopify theme:&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;Remember to change the MID to your Marketing Cloud ID.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 5 - Streaming Catalog Updates
&lt;/h3&gt;

&lt;p&gt;Tracking item views is easy - keeping your product catalog up to date is a bit more difficult. No one wants to constantly be uploading a new catalog every time you add, remove or adjust a product on Shopify.&lt;/p&gt;

&lt;p&gt;There are essentially two options for automatically keeping the catalog up to date: batch uploads and Streaming Catalog Updates. Batch uploads are a possible solution, but require regularly exporting a .csv from your Shopify store to Marketing Cloud's SFTP - but this will require either an additional application or API development. Many of the Shopify applications once capable of automatically exporting a catalog are no longer compatible with Salesforce's strict SFTP rules.&lt;/p&gt;

&lt;p&gt;Instead, let's use Streaming Catalog Updates in Shopify by installing the following code on your product.liquid template:&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;Remember to update the MID and the domain of your Shopify store for the url attribute. This is a simple product catalog, with a single primary category attribute and multi-value Tags attribute. If your catalog requires more attributes, you'll need to map them to the Shopify object here.&lt;/p&gt;

&lt;p&gt;Make sure to turn on Streaming Catalog Updates in the Implementation dashboard. Next, whitelist the domain of your store - and the standard cdn.shopify.com domain where product images may be hosted.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TY61byUg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ezi74k6znqzgciisrwbp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TY61byUg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ezi74k6znqzgciisrwbp.png" alt="Turn Streaming Catalog Updates On"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 6 - Troubleshooting Collect Codes
&lt;/h3&gt;

&lt;p&gt;With the Base, User, Item View and Streaming Catalog Update codes installed, it's time to check if they are working. Navigate to the Status dashboard under either Web or Email Einstein Recommendations to see which of the installed codes are working. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--IG8TTDPs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/4coatlumud4pvt52ihja.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--IG8TTDPs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/4coatlumud4pvt52ihja.png" alt="Einstein Collect Code Status"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Remember, you won't get identified sessions until users click on a link that passes their Subscriber ID or Key. Test the User code by sending a test email to yourself.&lt;/p&gt;

&lt;p&gt;Unless you're a superhuman coder, there are likely to be mistakes to work through - it happens. Don't worry, the remaining of the tracking codes are relatively simple - the Streaming Catalog Updates and User Code are the tricky ones that we must get to work first.&lt;/p&gt;

&lt;p&gt;You can use the &lt;a href="https://developers.google.com/web/tools/chrome-devtools/network"&gt;Network tab in Chrome's Developer Inspector tool&lt;/a&gt; - &lt;em&gt;filter for 'IGO' and make sure any kind of ad or script blockers are turned off.&lt;/em&gt; Navigate the website and check the payload of the tracking codes to see what needs fixed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VTvkdpSQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ekylbluqvm86uvuvr121.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VTvkdpSQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ekylbluqvm86uvuvr121.png" alt="Network Inspector tool"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 7 - Track Cart Activity
&lt;/h3&gt;

&lt;p&gt;To track what items are in a subscriber's cart, we'll use JavaScript to listen for the Add-to-Cart button is clicked on a product's page. Add-to-Cart buttons can vary depending on your Shopify theme - so you will need to know the CSS class or ID for JavaScript to identify the button(s) that should trigger the event.  &lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;This Shopify's store Add-to-Cart button has a class of '.product-form__cart-submit'. When a button with that class is clicked, the cart tracking collect code will be triggered. &lt;em&gt;Remember to replace it with the class of your Shopify store's Add-to-Cart button(s).&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;It's important to note that the cart tracking code will overwrite any existing information in the subscriber's cart. That's why the tracking code needs to loop through all the items that are already in their Shopify cart - while adding the new product as well.  &lt;/p&gt;

&lt;p&gt;Next, we should also track cart activity on the actual cart page by inserting the following code into the cart's liquid template:&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;The above code will let Marketing Cloud know when a subscriber's cart is empty.  As always, remember to change the MID to your Marketing Cloud's unique identifier.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 8 - Track Purchases
&lt;/h3&gt;

&lt;p&gt;Instead of updating a liquid template file, we'll be adding the following collect code to the additional scripts section of the &lt;a href="https://help.shopify.com/en/manual/orders/status-tracking/customize-order-status"&gt;checkout settings in Shopify&lt;/a&gt;:&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;&lt;em&gt;We need to include the base tracking code again because Shopify's checkout process is handled on a third-party site.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_GtL73SK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/2hnwf13nrb07wlayodui.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_GtL73SK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/2hnwf13nrb07wlayodui.png" alt="Order Processing settings"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Since shoppers may return to their order confirmation page several times, we should included liquid code that will only initiate the purchase tracking code the &lt;a href="https://help.shopify.com/en/manual/orders/status-tracking/customize-order-status/first-time-accessed"&gt;first time a user visits the page&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 9 - Track Searches
&lt;/h3&gt;

&lt;p&gt;Next, replace the MID and install the following code in the search liquid template file:&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;h3&gt;
  
  
  Step 10 - Track Category Views
&lt;/h3&gt;

&lt;p&gt;Categories are referred to as collections in Shopify. Install the category collect code in the collection liquid template:&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;&lt;em&gt;Congratulations: your Shopify store is now tracking the behavior of your Marketing Cloud Subscribers!&lt;/em&gt; Check the Status dashboard again to make sure everything is working properly - and fix any issues.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 11 - Check IGO Data Extensions
&lt;/h3&gt;

&lt;p&gt;With the catalog uploaded and collect codes now installed, the &lt;a href="https://help.salesforce.com/articleView?id=mc_pb_integration_with_contact_builder.htm&amp;amp;type=5"&gt;IGO data extensions&lt;/a&gt; should start populating.&lt;/p&gt;

&lt;p&gt;You'll notice the user_id is mapped to the Subscriber ID or Key in the 'email' column of the IGO_Profiles extension. This user_id is the external key to map the subscriber's activity inside the IGO_Views and IGO_Purchase extensions.&lt;/p&gt;

&lt;p&gt;Finally, with some SQL queries and the _Subscribers data view - you're ready to set up some sendable data extensions based upon what products a subscriber viewed or purchased. With some more time and data, you can also start using the &lt;a href="https://www.marketingcloud.today/personalization-builder-setup-part1/"&gt;Einstein email and web product recommendations&lt;/a&gt; and behavioral triggers.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(This content was made while working as a Marketing Cloud consultant for &lt;a href="https://learningcurv.com/"&gt;LearningCurv&lt;/a&gt; in Austin, TX)&lt;/em&gt; &lt;/p&gt;

</description>
      <category>shopify</category>
      <category>salesforce</category>
      <category>marketingcloud</category>
      <category>sfmc</category>
    </item>
    <item>
      <title>Segmenting and Reporting On Subscriber Behavior in Salesforce Marketing Cloud</title>
      <dc:creator>Ed Gray</dc:creator>
      <pubDate>Mon, 28 Sep 2020 19:46:59 +0000</pubDate>
      <link>https://dev.to/marketingclouded/segmenting-and-reporting-on-subscriber-behavior-in-salesforce-marketing-cloud-38lk</link>
      <guid>https://dev.to/marketingclouded/segmenting-and-reporting-on-subscriber-behavior-in-salesforce-marketing-cloud-38lk</guid>
      <description>&lt;p&gt;Salesforce Marketing Cloud's Journey Builder is a robust and powerful tool to target subscribers with tailored emails, texts and digital ads. But placing all your subscribers into perpetual journeys for segmenting is not always the best option (neither is Einstein's fluctuating engagement scoring).&lt;/p&gt;

&lt;p&gt;Below is quick way to set up a data extension that updates everyday with a subscriber's email behavior in the last 180 days. The SQL queries rely entirely on &lt;a href="https://help.salesforce.com/articleView?id=mc_as_data_views.htm&amp;amp;type=0"&gt;Data Views&lt;/a&gt;, so they should work the same on every account or business unit. &lt;/p&gt;

&lt;p&gt;The &lt;em&gt;Performance_Subscriber&lt;/em&gt; data extension can then be filtered for further segmentation or customized with additional fields. It can also be used for reporting purposes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1
&lt;/h3&gt;

&lt;p&gt;Create the &lt;em&gt;Performance_Subscriber&lt;/em&gt; Data Extension using the following SSJS activity:&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;This should prevent any typos or mistakes when setting up the data extension. Any of the SQL queries below would require some modifications if changes to the field names or data types were made. To learn more about creating data extensions using SSJS or WSProxy, read &lt;a href="https://ampscript.xyz/how-tos/how-to-use-wsproxy-to-work-with-data-extensions-in-ssjs/"&gt;Ivan Razen's thorough guide here&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2
&lt;/h3&gt;

&lt;p&gt;Create a SQL query that &lt;strong&gt;overwrites&lt;/strong&gt; &lt;em&gt;Performance_Subscriber&lt;/em&gt; with the following code:&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;&lt;em&gt;Performance_Subscriber&lt;/em&gt; now has the relevant subscriber information from the Subscribers and Sent Data Views. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Depending on the number of subscribers in the business unit, separating or combining some of the SQL queries may be possible. This sequence of queries doesn't take more than a few minutes to run with 1.2 million records.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3
&lt;/h3&gt;

&lt;p&gt;Next, use this SQL query to &lt;strong&gt;update&lt;/strong&gt; &lt;em&gt;Performance_Subscriber&lt;/em&gt; with information from the Open and Click Data Views:&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;&lt;em&gt;Performance_Subscriber&lt;/em&gt; records both unique and all clicks and opens. It might be helpful for finding the most engaged subscribers. &lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4
&lt;/h3&gt;

&lt;p&gt;Calculate their open and click rates with an SQL activity that &lt;strong&gt;updates&lt;/strong&gt; &lt;em&gt;Performance_Subscriber&lt;/em&gt;:&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;h3&gt;
  
  
  Step 5
&lt;/h3&gt;

&lt;p&gt;Finally, schedule an Automation to run the SQL activities, ordered in the same as they were created.&lt;/p&gt;

&lt;h3&gt;
  
  
  Now What?
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Performance_Subscriber&lt;/em&gt; is now ready to be filtered into sendable data extensions, like a segment of those with a high open rate, but low click rate. With some additional SQL and columns, you could even track trends in a subscriber's click or open rate over the last 30, 60, 90 days etc. &lt;/p&gt;

&lt;p&gt;Not only is &lt;em&gt;Performance_Subscriber&lt;/em&gt; helpful for segmenting, it can also be the basis of creating helpful reports. For example, a signup source could be added to subscriber's record. An additional data extension could be created that grouped together the performance of the source, instead of the individual subscriber.&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;Marketing Cloud's out-of-the-box segmenting for scheduled sends and more precise journey entry sources is practically non-existent. But with some data extensions and SQL queries, the possibilities for segmentation is limitless.&lt;/p&gt;

&lt;p&gt;With the above SSJS, SQL queries and automation, any business unit can quickly have a data extension that's a useful start to segmenting its email subscribers.&lt;/p&gt;

&lt;p&gt;You can also find the code necessary to build Performance_Subscriber in this &lt;a href="https://github.com/marketingclouded/sfmc-reporting/tree/master/subscriber-behavior"&gt;github repository&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How do you use SQL queries to segment subscribers?&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>salesforce</category>
      <category>martech</category>
      <category>marketingcloud</category>
      <category>sfmc</category>
    </item>
    <item>
      <title>Tracking the Health of Your Salesforce Marketing Cloud Account</title>
      <dc:creator>Ed Gray</dc:creator>
      <pubDate>Mon, 28 Sep 2020 17:24:09 +0000</pubDate>
      <link>https://dev.to/marketingclouded/tracking-the-health-of-your-salesforce-marketing-cloud-account-3jif</link>
      <guid>https://dev.to/marketingclouded/tracking-the-health-of-your-salesforce-marketing-cloud-account-3jif</guid>
      <description>&lt;p&gt;Reporting in Salesforce Marketing Cloud can be challenging for new users. The "reports" available through Analytics Builder are limiting and difficult to work with.  But with a little knowledge of SQL and &lt;a href="https://help.salesforce.com/articleView?id=mc_as_data_views.htm&amp;amp;type=0"&gt;Data Views&lt;/a&gt;, creating data tables tailored to your business use case becomes possible.&lt;/p&gt;

&lt;p&gt;Below is an example of a report created to track the basic "health" of a business unit: subscriber growth and the number of emails sent, opened, clicked and bounced. It's completely based upon Marketing Cloud's Data Views, so the exact same SQL queries should work for any account. &lt;/p&gt;

&lt;p&gt;Some queries could be combined or separated depending on the number of records in the business unit - this was developed for a client with more than 1.2 million records and never take more than a few minutes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1
&lt;/h3&gt;

&lt;p&gt;Run a SSJS activity to create the 3 data extensions needed for the report using this code: &lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;Using this SSJS will make sure the fields are the exact same name and data type needed for the SQL queries below to work without modifications. For more information on how you can create data extensions using SSJS and WSProxy, &lt;a href="https://ampscript.xyz/how-tos/how-to-use-wsproxy-to-work-with-data-extensions-in-ssjs/"&gt;read Ivan Razine's exceptional guide here&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2
&lt;/h3&gt;

&lt;p&gt;Create a SQL activity that &lt;strong&gt;appends&lt;/strong&gt; the &lt;em&gt;Account_Health_Daily&lt;/em&gt; data extension with the following code:&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;Why append? Because many Data Views only track the last 180 days of activity. By appending new records, we can keep some basic information about the account longer. This could be useful if we wanted to make year-over-year comparisons etc. &lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3
&lt;/h3&gt;

&lt;p&gt;Unfortunately, appending &lt;em&gt;Account_Health_Daily&lt;/em&gt; means the most recent day's stats will be added to the end of the data extension. Since SQL can't overwrite the same data extension used as a source, a second data extension will be made to sort the records by most recent day first.&lt;/p&gt;

&lt;p&gt;Use the following code to &lt;strong&gt;overwrite&lt;/strong&gt; the data extension &lt;em&gt;Account_Health_Daily_Sorted&lt;/em&gt;:&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;h3&gt;
  
  
  Step 4
&lt;/h3&gt;

&lt;p&gt;Now that the basic stats from each day are logged, they can be grouped together by month. Start with the following code to &lt;strong&gt;overwrite&lt;/strong&gt; the &lt;em&gt;Account_Health_Monthly&lt;/em&gt; data extension:&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;h3&gt;
  
  
  Step 5
&lt;/h3&gt;

&lt;p&gt;Next, record the number of active subscribers on the 1st of the month using the following SQL code to &lt;strong&gt;update&lt;/strong&gt; &lt;em&gt;Account_Health_Monthly&lt;/em&gt;:&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;h3&gt;
  
  
  Step 6
&lt;/h3&gt;

&lt;p&gt;Finally, calculate the open, click and bounce rate for the month by &lt;strong&gt;updating&lt;/strong&gt; &lt;em&gt;Account_Health_Monthly&lt;/em&gt; with this SQL query:&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;h3&gt;
  
  
  Step 7
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--k4jkgTld--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/qvc2zsll4iv7bxqe1nc9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--k4jkgTld--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/qvc2zsll4iv7bxqe1nc9.png" alt="Daily Automation Setup"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now an Automation can be created to append and update the data extensions. Schedule an Automation to run every day, with the SQL activities in the following order:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Appends Account_Health_Daily with Data View info&lt;/li&gt;
&lt;li&gt;Overwrites Account_Health_Daily_Sorted&lt;/li&gt;
&lt;li&gt;Overwrites Account_Health_Monthly with 
 Account_Health_Daily info&lt;/li&gt;
&lt;li&gt;Updates Account_Health_Monthly with Active Subscribers&lt;/li&gt;
&lt;li&gt;Updates Account_Health_Monthly with Open, Click, Bounce 
 Rates&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Adding Previous Days
&lt;/h3&gt;

&lt;p&gt;The SQL query appending the daily log are carefully written to only include data from the previous day - and only that one day. To &lt;strong&gt;append&lt;/strong&gt; &lt;em&gt;Account_Health_Daily&lt;/em&gt; with previous days, use the following code:&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;The above query will look into the data extension, find the oldest day on record and append the next oldest. Keep running it manually or place it in an automation to run until &lt;em&gt;Account_Health_Daily&lt;/em&gt; has enough information to be useful.&lt;/p&gt;

&lt;h3&gt;
  
  
  Presenting Reporting Data
&lt;/h3&gt;

&lt;p&gt;Data extensions are the basis of all custom reporting in Marketing Cloud - but they can be difficult for humans to sift through for useful information.&lt;/p&gt;

&lt;p&gt;Below are two examples of HTML blocks to build inside Content Builder and placed into an email or cloud page. They group together the business unit's basic stats for the previous week - and three more weeks for context. It's a good start to presenting the information from the data extensions in a way that is actually helpful.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gist.github.com/marketingclouded/4bf5543ef18cad83b0b5ab96056b06c1"&gt;Weekly Growth HTML Block&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gist.github.com/marketingclouded/0dc1c1189f26dd9298ef4f0baaca3f0a"&gt;Weekly Performance HTML Block&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Additional Notes
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Subscribers can open and click emails days, even months after it was sent. Don't be surprised if there are single days where a business unit has stats that appear impossible.&lt;/li&gt;
&lt;li&gt;Reporting in Marketing Cloud is rarely 100% accurate. Look for trends, not exactness in your data.&lt;/li&gt;
&lt;li&gt;The code needed for this report can be found in a &lt;a href="https://github.com/marketingclouded/sfmc-reporting/tree/master/account-health"&gt;github repository here&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;With the above code, you can have the necessary data extensions setup, an automation to refresh them and an HTML block to neatly present the data in less than an hour. It can help answer some common questions like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;When did our open or click rates start to increase or decrease?&lt;/li&gt;
&lt;li&gt;When did our account grow or shrink?&lt;/li&gt;
&lt;li&gt;When did our bounce rate suddenly increase?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This "Account Health" report is just one example of the awesome things you can develop with a little SQL in Marketing Cloud. &lt;strong&gt;What are some examples of "reporting" data extensions you've built in Marketing Cloud and why?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(This report was developed while working as a Marketing Cloud consultant for &lt;a href="https://learningcurv.com/"&gt;LearningCurv&lt;/a&gt; in Austin, TX)&lt;/em&gt;&lt;/p&gt;

</description>
      <category>salesforce</category>
      <category>marketingcloud</category>
      <category>sfmc</category>
      <category>analytics</category>
    </item>
    <item>
      <title>100+ Places to Find Freelance and Remote Web Developer Jobs</title>
      <dc:creator>Ed Gray</dc:creator>
      <pubDate>Tue, 18 Feb 2020 23:18:31 +0000</pubDate>
      <link>https://dev.to/marketingclouded/100-places-to-find-freelance-and-remote-web-developer-jobs-51c0</link>
      <guid>https://dev.to/marketingclouded/100-places-to-find-freelance-and-remote-web-developer-jobs-51c0</guid>
      <description>&lt;p&gt;Whether you're wanting to become a digital nomad, earn extra money as a freelancer or work from home instead of a cubicle - you've come to the right place. &lt;strong&gt;Below are more than 100 websites you can find freelance and/or remote web developer jobs.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Web development is one of the best job markets for remote work, so there's lots of opportunities - but there can also be lots of competition. Getting hired or signing clients is often a numbers game, so I'm hoping this exhaustive list will help you find more opportunities in your job search. If you're still struggling, try these &lt;a href="https://gennovacap.com/web-development/how-to-land-a-remote-web-developer-job/"&gt;6 tips for getting hired as a remote web developer&lt;/a&gt;. &lt;/p&gt;

&lt;h4&gt;
  
  
  So here's the list of job boards, freelance platforms and social media groups you can use to find a remote web developer job. Please leave a comment with your tips on getting hired or places to find work - I'll try to keep this an updated resources for the Dev.to community.
&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://www.10xmanagement.com/" rel="nofollow noopener"&gt;&lt;b&gt;➡️ 10xManagement&lt;/b&gt;&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://www.airtasker.com/tasks/?task_states=posted%2Cassigned%2Ccompleted%2Coverdue%2Cclosed&amp;amp;radius=50000&amp;amp;task_types=online&amp;amp;max_price=9999&amp;amp;min_price=5&amp;amp;search_term=web%20development&amp;amp;badges=" rel="nofollow noopener"&gt;&lt;b&gt;➡️ AirTasker&lt;/b&gt;&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://angel.co/jobs" rel="nofollow noopener"&gt;&lt;b&gt;➡️ AngelList&lt;/b&gt;&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://angularjobs.com/job-search/?query=remote" rel="nofollow noopener"&gt;&lt;b&gt;➡️ Angular Jobs&lt;/b&gt;&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://authenticjobs.com/#remote=true" rel="nofollow noopener"&gt;&lt;b&gt;➡️ Authentic Jobs&lt;/b&gt;&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://codeable.io/experts-application/" rel="nofollow noopener"&gt;&lt;b&gt;➡️ Codeable&lt;/b&gt;&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://www.codementor.io/freelance-jobs/web-developer" rel="nofollow noopener"&gt;&lt;b&gt;➡️ Codementor&lt;/b&gt;&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://codepen.io/jobs/" rel="nofollow noopener"&gt;&lt;b&gt;➡️ CodePen&lt;/b&gt;&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://communo.com/" rel="nofollow noopener"&gt;&lt;b&gt;➡️ Communo&lt;/b&gt;&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://www.cybercoders.com/search/?searchterms=remote+developer" rel="nofollow noopener"&gt;&lt;b&gt;➡️ CyberCoders&lt;/b&gt;&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://dev.to/listings/jobs" rel="nofollow noopener"&gt;&lt;b&gt;➡️ DEV.to&lt;/b&gt;&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://www.dice.com/jobs?q=remote&amp;amp;countryCode=US&amp;amp;radius=30&amp;amp;radiusUnit=mi&amp;amp;page=1&amp;amp;pageSize=20&amp;amp;facets=employmentType%7CpostedDate%7CworkFromHomeAvailability%7CemployerType%7CeasyApply&amp;amp;language=en" rel="nofollow noopener"&gt;&lt;b&gt;➡️ Dice&lt;/b&gt;&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://discordapp.com/" rel="nofollow noopener"&gt;&lt;b&gt;➡️ Discord Channels:&lt;/b&gt;&lt;/a&gt;&lt;/h4&gt;

&lt;ul&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://slashrocket.io/" rel="nofollow noopener"&gt;&lt;span&gt;Slashrocket&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://www.reactiflux.com/" rel="nofollow noopener"&gt;&lt;span&gt;Reactiflux&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;&lt;a href="https://distantjob.com/find-a-job/" rel="nofollow"&gt;➡️ DistantJob&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://dynamitejobs.co/" rel="nofollow noopener"&gt;&lt;b&gt;➡️ Dynamite Jobs&lt;/b&gt;&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://jobs.emberjs.com/jobs/search?utf8=%E2%9C%93&amp;amp;q=remote&amp;amp;l=&amp;amp;lat=&amp;amp;long=&amp;amp;d=" rel="nofollow noopener"&gt;&lt;b&gt;➡️ Ember&lt;/b&gt;&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://europeremotely.com/" rel="nofollow"&gt;➡️ EuropeRemotely&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://www.facebook.com/groups/remotework.digitalnomads/" rel="nofollow noopener"&gt;&lt;b&gt;➡️ Facebook Groups:&lt;/b&gt;&lt;/a&gt;&lt;/h4&gt;

&lt;ul&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://www.facebook.com/groups/1176956578995726/" rel="nofollow noopener"&gt;&lt;span&gt;Remote Jobs, Work Anywhere - Inventive Hub&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://www.facebook.com/groups/remotework.digitalnomads/" rel="nofollow noopener"&gt;&lt;span&gt;Remote Work &amp;amp; Jobs for Digital Nomads&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://www.facebook.com/groups/remotestartupjobs/" rel="nofollow noopener"&gt;&lt;span&gt;Remote Tech Jobs&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://www.facebook.com/groups/827012854123588/" rel="nofollow noopener"&gt;&lt;span&gt;Digital Nomad Jobs - Remote Jobs @ letsworkremotely&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://www.facebook.com/groups/remotejobs/" rel="nofollow noopener"&gt;&lt;span&gt;Remote Jobs&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://www.facebook.com/groups/remotejobsfordigitalnomads/" rel="nofollow noopener"&gt;&lt;span&gt;Digital Nomad Jobs: Remote Job Opportunities&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://www.facebook.com/groups/RemoteWorkers/" rel="nofollow noopener"&gt;&lt;span&gt;Remote Workers&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://www.facebook.com/groups/reactnativejb/?ref=br_rs" rel="nofollow noopener"&gt;&lt;span&gt;Remote Jobs for React Native&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://www.facebook.com/groups/1480445112024641" rel="nofollow noopener"&gt;&lt;span&gt;Remote Jobs in Blockchain and crypto-currencies&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://www.facebook.com/groups/901954586546769/" rel="nofollow noopener"&gt;&lt;span&gt;Remote Jobs&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://www.facebook.com/groups/417156235300771" rel="nofollow noopener"&gt;&lt;span&gt;Wordpress Freelancers and Developers&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://www.facebook.com/groups/1731920143492858" rel="nofollow noopener"&gt;&lt;span&gt;Awesome Remote Jobs | The Digital Nomad&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://www.facebook.com/groups/537183800044588" rel="nofollow noopener"&gt;&lt;span&gt;Digital Nomad Jobs Postings&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://www.facebook.com/groups/Laravel.Vuejs.Jobs" rel="nofollow noopener"&gt;&lt;span&gt;Laravel &amp;amp; VueJS - Freelance &amp;amp; Remote Jobs&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://www.facebook.com/groups/vuejsforhire" rel="nofollow noopener"&gt;&lt;span&gt;Vue.js Freelance and Remote Jobs&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;&lt;a href="https://www.flexjobs.com/jobs/web-software-development-programming" rel="nofollow noopener"&gt;&lt;b&gt;➡️ FlexJobs&lt;/b&gt;&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://www.freelancer.com/jobs/?keyword=developer" rel="nofollow noopener"&gt;&lt;b&gt;➡️ Freelancer&lt;/b&gt;&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://www.freelancermap.com/it-projects/1-Development" rel="nofollow"&gt;➡️ FreelancerMap&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://frontendremotejobs.com/" rel="nofollow noopener"&gt;&lt;b&gt;➡️ Front End Remote Jobs&lt;/b&gt;&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://www.g2i.co/for-developers/remote" rel="nofollow noopener"&gt;&lt;b&gt;➡️ G2i&lt;/b&gt;&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://jobs.github.com/positions?utf8=%E2%9C%93&amp;amp;description=&amp;amp;location=remote" rel="nofollow noopener"&gt;&lt;b&gt;➡️ GitHub Jobs&lt;/b&gt;&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://www.gun.io/freelancing-with-gunio" rel="nofollow noopener"&gt;&lt;b&gt;➡️ Gun.io&lt;/b&gt;&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://www.guru.com/d/jobs/" rel="nofollow noopener"&gt;&lt;b&gt;➡️ Guru.com&lt;/b&gt;&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://news.ycombinator.com/jobs" rel="nofollow noopener"&gt;&lt;b&gt;➡️ Hacker News&lt;/b&gt;&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://hireable.com/" rel="nofollow noopener"&gt;&lt;b&gt;➡️ Hireable&lt;/b&gt;&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://hired.com/jobs/information-tech" rel="nofollow noopener"&gt;&lt;b&gt;➡️ Hired&lt;/b&gt;&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://www.idealist.org/en/jobs?q=web%20developer&amp;amp;remoteOk=YES&amp;amp;searchMode=true&amp;amp;sort=relevance" rel="nofollow"&gt;➡️ idealist&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://iwantremote.com/" rel="nofollow noopener"&gt;&lt;b&gt;➡️ iwantremote&lt;/b&gt;&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://www.jobisjob.com/remote+web+developer/jobs" rel="nofollow noopener"&gt;&lt;b&gt;➡️ jobisjob&lt;/b&gt;&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://jobspresso.co/remote-software-jobs/" rel="nofollow noopener"&gt;&lt;b&gt;➡️ Jobspresso&lt;/b&gt;&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://jsremotely.com/" rel="nofollow noopener"&gt;&lt;b&gt;➡️ JS Remotely&lt;/b&gt;&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://justremote.co/remote-developer-jobs" rel="nofollow noopener"&gt;&lt;b&gt;➡️ JustRemote&lt;/b&gt;&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://landing.jobs/" rel="nofollow"&gt;➡️ Landing.jobs&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://localancers.com/" rel="nofollow noopener"&gt;&lt;b&gt;➡️ Localancers&lt;/b&gt;&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://www.linkedin.com/jobs/search/?geoId=103644278&amp;amp;keywords=web%20developer&amp;amp;location=United%20States" rel="nofollow noopener"&gt;&lt;b&gt;➡️ LinkedIN Groups:&lt;/b&gt;&lt;/a&gt;&lt;/h4&gt;

&lt;ul&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://www.linkedin.com/groups/1815840/" rel="nofollow noopener"&gt;&lt;span&gt;Software Development Jobs&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://www.linkedin.com/groups/1498597/" rel="nofollow noopener"&gt;&lt;span&gt;The FlexJobs Group&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://www.linkedin.com/groups/6794564/" rel="nofollow noopener"&gt;&lt;span&gt;Remote Ruby on Rails Developers&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://www.linkedin.com/groups/1274877/" rel="nofollow noopener"&gt;&lt;span&gt;Drupal Jobs&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://www.linkedin.com/groups/10453354/" rel="nofollow noopener"&gt;&lt;span&gt;JOBS, Internships, Recruitment and Tips&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://www.linkedin.com/groups/8608766/" rel="nofollow noopener"&gt;&lt;span&gt;Remote IT jobs&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://www.linkedin.com/groups/2523258/" rel="nofollow noopener"&gt;&lt;span&gt;SAP Basis remote jobs&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://www.linkedin.com/groups/8613673/" rel="nofollow noopener"&gt;&lt;span&gt;Remote Jobs in Artificial Intelligence and Data Science&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://www.linkedin.com/groups/12036370/" rel="nofollow noopener"&gt;&lt;span&gt;US IT Recruiter - Remote &amp;amp; Freelance Jobs&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://www.linkedin.com/groups/6752660/" rel="nofollow noopener"&gt;&lt;span&gt;IT Recruiters USA - Virtual/Remote Only&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://www.linkedin.com/groups/4111372/" rel="nofollow noopener"&gt;&lt;span&gt;Java &amp;amp; J2EE Jobs&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://www.linkedin.com/groups/8493106/" rel="nofollow noopener"&gt;&lt;span&gt;Remote Jobs and Remote Workers&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://www.linkedin.com/groups/4264094/" rel="nofollow noopener"&gt;&lt;span&gt;Java Developers &amp;amp; Java Architects&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://www.linkedin.com/groups/1912478/" rel="nofollow noopener"&gt;&lt;span&gt;JavaScript Discussion &amp;amp; Jobs&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://www.linkedin.com/groups/1958013/" rel="nofollow noopener"&gt;&lt;span&gt;PHP &amp;amp; MySQL Discussion &amp;amp; Jobs&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://www.linkedin.com/groups/990627/" rel="nofollow noopener"&gt;&lt;span&gt;Flash, Flex, AIR Discussion &amp;amp; Jobs&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://www.linkedin.com/groups/6671798/" rel="nofollow noopener"&gt;&lt;span&gt;JOBS: Data Science, Big Data Analytics, Machine Learning&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://www.linkedin.com/groups/3968111/" rel="nofollow noopener"&gt;&lt;span&gt;Jobs for Python Django Developer&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://www.linkedin.com/groups/2464762/" rel="nofollow noopener"&gt;&lt;span&gt;Jobs 2.0 IT&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://www.linkedin.com/groups/3101493/" rel="nofollow noopener"&gt;&lt;span&gt;Web Programming Jobs&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://www.linkedin.com/groups/5169885/" rel="nofollow noopener"&gt;&lt;span&gt;Functional Programming Jobs&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://www.linkedin.com/groups/4947542/" rel="nofollow noopener"&gt;&lt;span&gt;Google Go &amp;amp; Golang Programming Jobs&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://www.linkedin.com/groups/2428898/" rel="nofollow noopener"&gt;&lt;span&gt;Tech Network&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;&lt;a href="https://motionrecruitment.com/tech-jobs?keywords=remote" rel="nofollow"&gt;➡️ MotionRecruitment&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://nodesk.co/remote-jobs/" rel="nofollow noopener"&gt;&lt;b&gt;➡️ NODESK&lt;/b&gt;&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://www.outsourcely.com/remote-web-development-jobs" rel="nofollow"&gt;➡️ Outsourcely&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://pangian.com/job-travel-remote/" rel="nofollow noopener"&gt;&lt;b&gt;➡️ Pangian&lt;/b&gt;&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://www.peopleperhour.com/site/register#freelancer" rel="nofollow noopener"&gt;&lt;b&gt;➡️ PeoplePerHour&lt;/b&gt;&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://powertofly.com/jobs/?keywords=%22Web+Developer%22&amp;amp;location=Remote" rel="nofollow noopener"&gt;&lt;b&gt;➡️ Power to Fly&lt;/b&gt;&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://www.reddit.com/r/forhire/" rel="nofollow noopener"&gt;&lt;b&gt;➡️ Reddit&lt;/b&gt;&lt;/a&gt;&lt;/h4&gt;

&lt;ul&gt;
    &lt;li&gt;&lt;a href="https://www.reddit.com/r/jobbit/" rel="nofollow noopener"&gt;&lt;span&gt;&lt;span&gt;Jobbit&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://www.reddit.com/r/railsjobs/" rel="nofollow noopener"&gt;&lt;span&gt;Railsjobs&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://www.reddit.com/r/gameDevClassifieds/" rel="nofollow noopener"&gt;&lt;span&gt;gameDevClassifieds&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://www.reddit.com/r/DeveloperJobs/" rel="nofollow noopener"&gt;&lt;span&gt;Developer Jobs&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://www.reddit.com/r/forhire/" rel="nofollow noopener"&gt;&lt;span&gt;Forhire&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://www.reddit.com/r/sysadminjobs/" rel="nofollow noopener"&gt;&lt;span&gt;SysAdmin Jobs&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://www.reddit.com/r/javascriptjobs/" rel="nofollow noopener"&gt;&lt;span&gt;JavaScript Jobs&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://www.reddit.com/r/WebDeveloperJobs/" rel="nofollow noopener"&gt;&lt;span&gt;Web Developer Jobs&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://www.reddit.com/r/remotepython/" rel="nofollow noopener"&gt;&lt;span&gt;Remote Python Jobs&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;&lt;a href="https://remote.co/remote-jobs/developer/" rel="nofollow noopener"&gt;&lt;b&gt;➡️ Remote.co&lt;/b&gt;&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://remoteleads.io/" rel="noopener"&gt;&lt;b&gt;➡️ RemoteLeads&lt;/b&gt;&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://remoteok.io/remote-dev-jobs" rel="nofollow noopener"&gt;&lt;b&gt;➡️ RemoteOK&lt;/b&gt;&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://remoters.net/jobs/software-development/" rel="nofollow noopener"&gt;&lt;b&gt;➡️ Remoters&lt;/b&gt;&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="http://remotetalent.co/jobs/" rel="nofollow"&gt;➡️ RemoteTalent&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://remotive.io/remote-jobs/software-dev" rel="nofollow noopener"&gt;&lt;b&gt;➡️ Remotive&lt;/b&gt;&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://jobs.rubynow.com/" rel="nofollow noopener"&gt;&lt;b&gt;➡️ Ruby Now&lt;/b&gt;&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://www.skipthedrive.com/remote-web-developer-jobs/" rel="nofollow noopener"&gt;&lt;b&gt;➡️ SkipTheDrive&lt;/b&gt;&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://slack.com/" rel="nofollow noopener"&gt;&lt;b&gt;➡️ Slack Channels:&lt;/b&gt;&lt;/a&gt;&lt;/h4&gt;

&lt;ul&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://larachat.co/register" rel="nofollow noopener"&gt;&lt;span&gt;Larachat&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://www.rubyonrails.link/" rel="nofollow noopener"&gt;&lt;span&gt;Ruby on Rails Link&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://embercommunity.slack.com/" rel="nofollow noopener"&gt;&lt;span&gt;Ember Community Gathering&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://ionic-worldwide.slack.com/" rel="nofollow noopener"&gt;&lt;span&gt;Ionic Worldwide&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://scotchio.slack.com/" rel="nofollow noopener"&gt;&lt;span&gt;Scotch.io&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://gophers.slack.com/" rel="nofollow noopener"&gt;&lt;span&gt;GOphers&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://ios-developers.slack.com/" rel="nofollow noopener"&gt;&lt;span&gt;iOS Developers&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="http://www.hashtagdevelopers.com/" rel="nofollow noopener"&gt;&lt;span&gt;#Developers&lt;/span&gt;&lt;/a&gt; &lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://phpchat.co/" rel="nofollow noopener"&gt;&lt;span&gt;PHP Chat&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="http://slack.zewo.io/" rel="nofollow noopener"&gt;&lt;span&gt;Zewo&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="http://bootstrap-slack.herokuapp.com/" rel="nofollow noopener"&gt;&lt;span&gt;bootstrap&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://pythondev.slack.com/" rel="nofollow noopener"&gt;&lt;span&gt;Python Developers&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="http://python-community-slack.herokuapp.com/" rel="nofollow noopener"&gt;&lt;span&gt;Python Community&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://www.javaspecialists.eu/slack/" rel="nofollow noopener"&gt;&lt;span&gt;JavaSpecialists&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://slack-signup.ratpack.io/" rel="nofollow noopener"&gt;&lt;span&gt;Ratpack&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://babeljs.slack.com/" rel="nofollow noopener"&gt;&lt;span&gt;Babel.js&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="http://javascript-devs.herokuapp.com/" rel="nofollow noopener"&gt;&lt;span&gt;WeLearnJS&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://d3-slackin.herokuapp.com/" rel="nofollow noopener"&gt;&lt;span&gt;D3&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://slack.reactjsnews.com/" rel="nofollow noopener"&gt;&lt;span&gt;ReactJS&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="http://slack.telescopeapp.org/" rel="nofollow noopener"&gt;&lt;span&gt;Vulcan&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://draftjs.herokuapp.com/" rel="nofollow noopener"&gt;&lt;span&gt;Draft.js&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://decoslackin.herokuapp.com/" rel="nofollow noopener"&gt;&lt;span&gt;Deco&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://slack.strapi.io/" rel="nofollow noopener"&gt;&lt;span&gt;Strapi&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://chartjs-slack.herokuapp.com/" rel="nofollow noopener"&gt;&lt;span&gt;Chart.js&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://redux-slackin.herokuapp.com/" rel="nofollow noopener"&gt;&lt;span&gt;Redux&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;a href="https://threejs-slack.herokuapp.com/" rel="nofollow noopener"&gt;&lt;span&gt;three.js&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;&lt;a href="https://www.sologig.com/jobs?Keywords=remote&amp;amp;Radius=30&amp;amp;PageNumber=1&amp;amp;OrderBy=Relevance" rel="nofollow noopener"&gt;&lt;b&gt;➡️ Sologig&lt;/b&gt;&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://stackoverflow.com/jobs" rel="nofollow noopener"&gt;&lt;b&gt;➡️ Stack Overflow&lt;/b&gt;&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://www.toptal.com/" rel="nofollow noopener"&gt;&lt;b&gt;➡️ Toptal&lt;/b&gt;&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://triplebyte.com/" rel="nofollow noopener"&gt;&lt;b&gt;➡️ Triplebyte&lt;/b&gt;&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://www.upwork.com/freelance-jobs/" rel="nofollow noopener"&gt;&lt;b&gt;➡️ Upwork&lt;/b&gt;&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://www.vettery.com/candidate" rel="nofollow"&gt;➡️ Vettery&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://vuejobs.com/freelance-vuejs-jobs" rel="nofollow noopener"&gt;&lt;b&gt;➡️ Vue Jobs&lt;/b&gt;&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://weworkremotely.com/" rel="nofollow noopener"&gt;&lt;b&gt;➡️ We Work Remotely&lt;/b&gt;&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://workew.com/remote-jobs/" rel="nofollow noopener"&gt;&lt;b&gt;➡️ Workew&lt;/b&gt;&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://www.workingnomads.co/jobs?category=development" rel="nofollow noopener"&gt;&lt;b&gt;➡️ Working Nomads&lt;/b&gt;&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://x-team.com/join/" rel="nofollow noopener"&gt;&lt;b&gt;➡️ X-Team&lt;/b&gt;&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;a href="https://www.xfive.co/service/rent-development-team/#work-with-us" rel="nofollow"&gt;➡️ xfive&lt;/a&gt;&lt;/h4&gt;

&lt;h4&gt;&lt;em&gt;&lt;strong&gt;This list of places to find remote and freelance web developer jobs are partly sourced from these excellent articles:&lt;/strong&gt;&lt;/em&gt;&lt;/h4&gt;

&lt;ul&gt;
    &lt;li&gt;
&lt;a href="https://medium.com/@dericksozo/remote-front-end-freelance-developer-jobs-46eda84c438a" rel="noopener"&gt;&lt;span&gt;&lt;span&gt;Top 9 Places to Find Remote Front-End Freelance Developer Jobs&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span&gt; by Derick Sozo (9/23/2019)&lt;/span&gt;
&lt;/li&gt;
    &lt;li&gt;
&lt;span&gt;&lt;a href="https://hackernoon.com/freelance-websites-for-web-developers-to-find-development-projects-and-remote-jobs-wjq339o" rel="noopener"&gt;&lt;span&gt;14 Platforms for Web Developers to Find Development Projects and Remote Jobs&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span&gt; by Rajinder Singh (11/18/2019)&lt;/span&gt;
&lt;/li&gt;
    &lt;li&gt;
&lt;a href="https://hundred5.com/blog/sourcing-from-slack" rel="noopener"&gt;&lt;span&gt;&lt;span&gt;Candidate Sourcing from Slack - 109 Slack Communities for Finding New Hires&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span&gt; by Mile Živković (11/16/2018)&lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://gennovacap.com/web-development/remote-freelance-web-developer-jobs/" rel="noopener"&gt;&lt;span&gt;&lt;span&gt;Freelance Web Developer Jobs&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span&gt; by Ed Gray&lt;/span&gt;
&lt;/li&gt;
    &lt;li&gt;
&lt;span&gt;&lt;a href="https://hundred5.com/blog/sourcing-from-facebook" rel="noopener"&gt;&lt;span&gt;Candidate Sourcing from Facebook: 44 Best Facebook Groups to Find Remote Talent&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span&gt; by Mile Živković (12/19/2018)&lt;/span&gt;
&lt;/li&gt;
    &lt;li&gt;
&lt;a href="https://dev.to/duomly/18-websites-where-you-can-find-a-remote-job-3a91" rel="noopener"&gt;&lt;span&gt;&lt;span&gt;18 websites, where you can find a remote job&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span&gt; by Duomly (10/31/2019)&lt;/span&gt;
&lt;/li&gt;
    &lt;li&gt;
&lt;a href="https://skillcrush.com/2019/12/13/sites-finding-remote-work/"&gt;&lt;span&gt;The 25+ Best Sites for Finding Remote Work in 2019&lt;/span&gt;&lt;/a&gt; by Scott Morris&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Want to know what to expect to be paid? &lt;a href="https://gennovacap.com/web-development/front-end-developer-jobs-salary/"&gt;Check out this resource on front-end developer salary here.&lt;/a&gt;&lt;/p&gt;

</description>
      <category>career</category>
    </item>
    <item>
      <title>8 Tips to Improve UpWork Profile for Web Developers</title>
      <dc:creator>Ed Gray</dc:creator>
      <pubDate>Sat, 15 Feb 2020 00:41:09 +0000</pubDate>
      <link>https://dev.to/marketingclouded/8-tips-to-improve-upwork-profile-for-web-developers-3n7f</link>
      <guid>https://dev.to/marketingclouded/8-tips-to-improve-upwork-profile-for-web-developers-3n7f</guid>
      <description>&lt;p&gt;What’s the perfect profile to get &lt;a href="https://gennovacap.com/web-development/remote-freelance-web-developer-jobs/" rel="noopener noreferrer"&gt;freelance web developer jobs&lt;/a&gt; on UpWork? There’s really no such thing - but there are some common traits among the most successful freelancers on UpWork. Here are some of the tips and tricks they suggest for improving your chances at getting freelance work and raising your prices.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Professional Photo
&lt;/h2&gt;

&lt;p&gt;Having a professional looking photo is fundamental to winning contracts on UpWork. Those making the hiring decisions are sifting through dozens of proposals and an unprofessional photo makes it easy for them to move past yours. UpWork itself claims that those with professional photos get hired 5x more than those that don’t.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fwfbqfsx4jrfaor1k9rd1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fwfbqfsx4jrfaor1k9rd1.png" alt="Mike Volkin's UpWork Profile Picture Tips"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.upwork.com/fl/mikevolkin" rel="noopener noreferrer"&gt;Mike Volkin is a top-rated freelance CMO on UpWork&lt;/a&gt; and sometimes featured on their homepage. He also &lt;a href="https://www.mikevolkin.com/entrepreneur-coaching/" rel="noopener noreferrer"&gt;coaches entrepreneurs on becoming a profitable freelancer&lt;/a&gt;. Here are his tips on taking the best profile photo to get freelance jobs on UpWork &lt;strong&gt;(start at 10:18)&lt;/strong&gt;:&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/gK18PWRzeF0"&gt;
&lt;/iframe&gt;
&lt;br&gt;
• Grin, but don’t force too big of a smile or you’ll end up looking creepy.&lt;br&gt;
• Be well dressed&lt;br&gt;
• Have a clean, solid color background. If the background is too busy, use Photoshop to blur it out.&lt;br&gt;
• Tilt your head at an angle.&lt;br&gt;
• Crop the photo to include your shoulders and up. Don’t be too far away, but don’t include only your face.&lt;/p&gt;
&lt;h2&gt;
  
  
  2. Specific, Descriptive Title
&lt;/h2&gt;

&lt;p&gt;After your photo, your title is the next thing prospective hiring managers will look at. Make sure it conveys that you are capable of excelling at the jobs you’re applying for. This means being descriptive and specific, not generalized in an attempt to please too many people.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fhw615u7b483xfjhcyu3k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fhw615u7b483xfjhcyu3k.png" alt="Josh Burn's UpWork Profile Title Tips"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.upwork.com/fl/joshuaburns" rel="noopener noreferrer"&gt;Josh Burns is another top-rated freelancer on UpWork&lt;/a&gt; who specializes in SQL Server and has made more than $500,000 on the platform. He has a helpful &lt;a href="https://www.youtube.com/channel/UCQZ9jWTa3xpyUAPgNnAHRpw" rel="noopener noreferrer"&gt;YouTube channel about being successful on UpWork&lt;/a&gt; and here are his tips on the right title &lt;strong&gt;(start at 2:25)&lt;/strong&gt;: &lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/tLoyDcIXGy0"&gt;
&lt;/iframe&gt;
&lt;br&gt;
• The title is another vital first impression, make sure it captures attention in search results and proposals.&lt;br&gt;
• Your title should describe the specific skills needed to complete the jobs you’re looking for.&lt;br&gt;
• As always, think from your clients perspective about what would make it easier for them to notice and hire you.&lt;br&gt;
• If you have more than one skill, &lt;a href="https://www.upwork.com/blog/2019/03/specialized-profiles-upwork/" rel="noopener noreferrer"&gt;split them into specialized profiles&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;You can also browse through competing freelancer profiles to determine what is working in your niche. Don’t copy their title, but do use it to guide your own.&lt;/p&gt;
&lt;h2&gt;
  
  
  3. Use Emoji Bullet Points
&lt;/h2&gt;

&lt;p&gt;Both Josh and Mike encourage the use of bullet points and/or emojis to break up paragraphs of text in your overview. Make it as easy for potential clients to skim your profile. They’re too busy to read through paragraphs of text. You can find &lt;a href="https://getemoji.com/" rel="noopener noreferrer"&gt;all the emojis your profile might need here&lt;/a&gt;. Here’s an example from Josh’s current profile on UpWork:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F1h672zixkgc7jeygfw0b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F1h672zixkgc7jeygfw0b.png" alt="Upwork Profile Overview Tips"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  4. Focus on the First 2-3 Sentences of Your Overview
&lt;/h2&gt;

&lt;p&gt;Yes, your entire Overview is important, but the first 1-2 sentences are what appear in search results. Avoid using that valuable real estate to repeat your name or thank them for visiting like here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F1eo7hi662ovj1mzf5p3n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F1eo7hi662ovj1mzf5p3n.png" alt="Bad Example of a UpWork Profile Overview"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;While this freelancer is having a good amount of success on UpWork, they might be able to raise their rates by improving the cliche introduction to the Overview. &lt;a href="https://www.upwork.com/o/profiles/users/~01f3c2bcc972b8349a/?s=1044578476142100494" rel="noopener noreferrer"&gt;Colton’s profile&lt;/a&gt; is a better example of using the introduction to establish credibility before a potential client even clicks on your profile:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F8rfl9kmgeahc7jtq9eke.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F8rfl9kmgeahc7jtq9eke.png" alt="Good Example of UpWork Profile Overview"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You might also consider a customer-focused introduction like &lt;a href="https://www.upwork.com/fl/nredmond" rel="noopener noreferrer"&gt;Nick R’s&lt;/a&gt;. It helps grab clients attention by starting a conversation and helps him stand out from the other search results: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fh31rur0t12sxauoxjcy9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fh31rur0t12sxauoxjcy9.png" alt="Another Good Example of an UpWork Overview"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;1/3rd of jobs on UpWork are invite-only, so having a profile worth clicking on in search results can convert into more clients. Establishes that trust and makes yourself intriguing to searchers. Even if you’re newish to the platform, UpWork does incorporate some randomness into its rankings to give freelancers a chance to get noticed.&lt;/p&gt;
&lt;h2&gt;
  
  
  5. Proof, Specialization &amp;amp; How to Start
&lt;/h2&gt;

&lt;p&gt;Here is the framework &lt;a href="https://johnsfreetuts.com/" rel="noopener noreferrer"&gt;freelance developer and coach John Morris&lt;/a&gt; has for writing the rest of your Overview: proof, specialization and explaining your process. &lt;/p&gt;
&lt;h3&gt;
  
  
  Proof
&lt;/h3&gt;

&lt;p&gt;John notes that very few of us trust marketers and whether you like it or not, your UpWork profile &lt;em&gt;is&lt;/em&gt; a sales pitch. Try to overcome their doubts by &lt;em&gt;showing&lt;/em&gt; potential clients you know what you’re talking about. Don’t just claim to be an expert or reliable, prove it with facts like years of experience, certifications, clients you’ve worked with and/or reviews. You shouldn’t wait until the portfolio section to establish credibility.&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/FYjF1tkPQZ0"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  Specialization
&lt;/h3&gt;

&lt;p&gt;Pick your speciality and don’t try and appeal to too many markets. Make it clear what you do and don’t do for clients. If you established credibility in the first section, now is the time to make yourself seem sought-after by having standards. Avoid sounding like 95% of other web developers by explaining your skills so that a non-technical person can understand them. Instead focus on the results and business goals you’ll deliver &lt;strong&gt;(start at 15:44)&lt;/strong&gt;:&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/RelT4aQX3V0"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  Your Process
&lt;/h3&gt;

&lt;p&gt;Clients are always nervous about getting started. Walk them through the steps of what they will need to do to begin working with you. Do they already have a logo or images for the website? How will they pay and when? Not only does it help ease their mind, it signals that you’re an experienced professional who’s done this before. Also, don’t forget to ask for the sale. Make sure you explain your process in a way that calls them to an action to get started.&lt;/p&gt;

&lt;p&gt;John’s framework makes it easier for freelancers to tackle the intimidating process of writing an overview that converts proposals into clients. Remember, if hiring decision makers are searching on UpWork, they’re already in-market for services. They already know they need a web developer if they’re searching for one. Instead your profile should focus on establishing your credibility, qualify the ‘leads’ by explaining what it is you do and don’t do, and encouraging them to ‘covert’ by explaining the next steps.&lt;/p&gt;

&lt;p&gt;Josh also recommends freelancers include the skills and search terms you want to be found for in your overview a few times. It helps you rank higher in search results &lt;strong&gt;(start at 14:33)&lt;/strong&gt;:&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/7lQHOzlKiQk"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Your Portfolio
&lt;/h2&gt;

&lt;p&gt;You don’t need 100 items in your portfolio, but John Morris suggests about ten. Don’t have too few or you may appear inexperienced. If you don’t have enough projects to adequately fill up the portfolio section, find some unconventional ways to build upon it by starting some self-directed projects yourself or approaching past clients for more work. If your portfolio doesn’t match your claims of experience in the overview, now the client won’t trust you and is likely to move on. &lt;/p&gt;

&lt;p&gt;For example, I’ve only helped build one WordPress site recently and it was for my client &lt;a href="https://gennovacap.com/" rel="noopener noreferrer"&gt;Gennovacap, a team of app and web developers in Austin, TX&lt;/a&gt;. But including only that in my portfolio would not create the impression that I’m experienced enough to charge the rates I want to. Instead, I’m going to approach my client, whom I already have a relationship with, about assisting in &lt;a href="https://gennovacap.com/services/web-development/" rel="noopener noreferrer"&gt;Gennovacap’s web development&lt;/a&gt; projects. Then I should quickly have enough examples for my portfolio on UpWork. &lt;/p&gt;

&lt;p&gt;Hear more of John's suggestions on building out your portfolio here &lt;strong&gt;(start at 22:48)&lt;/strong&gt;:&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/RelT4aQX3V0"&gt;
&lt;/iframe&gt;
&lt;br&gt;
Remember, when it comes to web development, looks matter. Make sure your portfolio is visually impressive. If your portfolio looks good enough, you might not even need to have the best of overviews to land enough jobs on UpWork. Josh also recommends naming your portfolio projects with keywords you want to rank for in search results.&lt;/p&gt;
&lt;h2&gt;
  
  
  7. Close Your Contracts
&lt;/h2&gt;

&lt;p&gt;Leaving contracts open with no activity will lower your Job Success Score on UpWork. If your clients want to work with you long-term, that’s great and actually increases your score. But don’t let them keep a contract open only to add more work later. Get the contract completed, reviewed and have the client invite you to apply to a new job &lt;strong&gt;(start at 10:55)&lt;/strong&gt;:&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/7lQHOzlKiQk"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Job Categories
&lt;/h2&gt;

&lt;p&gt;You selected your skills, but did you remember to set your job categories in UpWork? Navigate to your profile settings and scroll down until you find your categories. Pick the main and sub categories most related to your skills. This should help with your search rankings. Once again, here's Josh to explain more &lt;strong&gt;(start at 8:12)&lt;/strong&gt;:&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/7lQHOzlKiQk"&gt;
&lt;/iframe&gt;
&lt;br&gt;
So I hope these 8 tips help you find more success on UpWork as a freelance web developer. Many of the same principles could be applied to other freelance platforms like Fiverr or Freelancer.&lt;/p&gt;

&lt;h3&gt;
  
  
  What are your tips and tricks to making freelance work UpWork profitable?
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;P.S. I am not affiliated with UpWork or any of the featured freelancers in any way.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>career</category>
    </item>
    <item>
      <title>5 Newish Improvements to AWS Spot Instances</title>
      <dc:creator>Ed Gray</dc:creator>
      <pubDate>Tue, 28 Jan 2020 19:42:45 +0000</pubDate>
      <link>https://dev.to/marketingclouded/5-newish-improvements-to-aws-spot-instances-540</link>
      <guid>https://dev.to/marketingclouded/5-newish-improvements-to-aws-spot-instances-540</guid>
      <description>&lt;p&gt;If you use EC2, you’re probably already aware of the existence of &lt;a href="https://aws.amazon.com/ec2/spot/getting-started/"&gt;Spot instances&lt;/a&gt;. Spot has existed for years, but like many AWS services, has dramatically changed over time.  It’s Amazon’s way of keeping their servers busy by selling spare computing capacity at a 50% to 90% discount - then reclaiming that computing capacity when On-Demand customers need it again.&lt;/p&gt;

&lt;p&gt;While the computing environment for Spot has always been the exact same as On-Demand, Amazon has been rolling out more and more integrations of Spot within other AWS services. Here are five ways Amazon has made it easier for your organization to take advantage of the cost savings of Spot instances:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. &lt;a href="https://aws.amazon.com/blogs/compute/introducing-the-capacity-optimized-allocation-strategy-for-amazon-ec2-spot-instances/"&gt;EC2 Auto Scaling and EC2 Fleet features a new allocation strategy&lt;/a&gt; that can automatically mix in available Spot instances.
&lt;/h3&gt;

&lt;p&gt;First, you configure the pools of Spot instances capable of running your workloads, then select the “lowest price” allocation option. This will spin up capacity only using the lowest-priced &lt;a href="https://gennovacap.com/cloud/aws-spot-instances/"&gt;Spot instances&lt;/a&gt; among your chosen pools. EC2 Fleet also has a “diversified” strategy that will evenly spin up Spot instances among your chosen pools.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Batch workloads were always a natural pairing for Spot instances, but it’s even easier now with &lt;a href="https://www.youtube.com/watch?v=qPU9FzuAKIw"&gt;an option within AWS Batch&lt;/a&gt;.
&lt;/h3&gt;

&lt;p&gt;If your job gets interrupted, Batch can automatically resubmit it onto a different Spot or On-Demand instance. With the cheaper compute provided by Spot, organizations are able to dramatically increase their processing power to accomplish more jobs, more quickly. To learn more, take a listen to the &lt;a href="https://aws.amazon.com/podcasts/339-batch-workloads-on-amazon-ec2-spot-instances/"&gt;AWS Podcast discussion on Spot instances with Batch here&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. The computing capacity demanded by Machine Learning is going to continue to grow exponentially. This can be cost prohibitive for many businesses, but recently &lt;a href="https://hackernoon.com/grow-your-ai-while-cutting-machine-learning-costs-sagemaker-will-now-manage-spot-instances-for-you-fau3222"&gt;Amazon added Managed Spot Training to SageMaker&lt;/a&gt;.
&lt;/h3&gt;

&lt;p&gt;Now SageMaker can automatically checkpoint data when Spot instances are interrupted - and restart the workloads when the capacity becomes available again. The AWS Blog recently summarized how one &lt;a href="https://aws.amazon.com/blogs/machine-learning/cinnamon-ai-saves-70-on-ml-model-training-costs-with-amazon-sagemaker-managed-spot-training/?nc1=b_rp"&gt;AI company had saved 70% on ML training runs by taking advantage of the Managed Spot Training&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. At re:Invent 2019, Amazon announced Fargate Spot for both &lt;a href="https://aws.amazon.com/blogs/aws/aws-fargate-spot-now-generally-available/"&gt;Elastic Container Services&lt;/a&gt; and &lt;a href="https://aws.amazon.com/blogs/aws/amazon-eks-on-aws-fargate-now-generally-available/?nc1=b_rp"&gt;Elastic Kubernetes Services&lt;/a&gt;.
&lt;/h3&gt;

&lt;p&gt;Fargate manages the provisioning and scaling of resources needed to run your containers - and now can do so with Spot to save up to 70%. Some workloads just aren’t fault-tolerant, but if they can restart after an interruption, then Fargate Spot is a way to significantly &lt;a href="https://gennovacap.com/cloud/amazon-aws-billing/"&gt;lower your AWS bill&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/ZA6uVub2H4Q"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Amazon has made several changes over the last couple years to make it easier to estimate the costs and service interruptions of Spot:
&lt;/h3&gt;

&lt;p&gt;• &lt;a href="https://aws.amazon.com/about-aws/whats-new/2019/12/amazon-ec2-spot-now-provides-instance-launch-notifications-via-amazon-cloudwatch-events/"&gt;AWS recently announced launch events for Spot instances will now be available through the Amazon CloudWatch Events CLI&lt;/a&gt;. This will enable customers to better control when certain workflows are launched when a Spot instance becomes available&lt;/p&gt;

&lt;p&gt;• Amazon &lt;a href="https://aws.amazon.com/blogs/compute/new-amazon-ec2-spot-pricing/"&gt;no longer relies on a complicated bidding process to determine Spot pricing&lt;/a&gt;. Now your organization either pays the prevailing Spot price if the spare capacity is available - or it doesn’t. This has made the pricing significantly more stable and instead of bidding against other potential AWS customers, you simply tell AWS the maximum amount your organization is willing to pay.&lt;/p&gt;

&lt;p&gt;• Engineers can easily research the price savings and interruption averages of every available instance type in every Availability Zone using the &lt;a href="https://aws.amazon.com/ec2/spot/instance-advisor/"&gt;Spot Instance Advisor&lt;/a&gt;. For most instance types, it is the customer choosing to terminate Spot instances - not AWS - for more than 95% of the time. But for other instance types it can be AWS interrupting service more than 20% of the time, making them potentially unsuitable for certain workloads.&lt;/p&gt;

&lt;p&gt;Spot instances may not be the best option for all workloads or business scenarios. But when you need to scale up your computing power at an affordable price, retooling your architecture to rely on Spot could be worth it. Looking to learn more about Spot instances? Here are a few great resources:&lt;/p&gt;

&lt;p&gt;• Western Digital used &lt;a href="https://aws.amazon.com/blogs/aws/western-digital-hdd-simulation-at-cloud-scale-2-5-million-hpc-tasks-40k-ec2-spot-instances/"&gt;AWS Batch with 40,000 Spot instances to complete 2.5 million HPC tasks in just 8 hours&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;• &lt;a href="https://softwareengineeringdaily.com/2019/01/18/spot-instances-with-amiram-shachar/"&gt;Amiram Shachar’s podcast on SpotInst at Software Engineering Daily&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/1GMB6Pjxn2c"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>aws</category>
      <category>kubernetes</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>Five DevOps Practices to Improve Your Team's Performance</title>
      <dc:creator>Ed Gray</dc:creator>
      <pubDate>Wed, 08 Jan 2020 19:02:47 +0000</pubDate>
      <link>https://dev.to/marketingclouded/five-devops-practices-to-improve-your-team-s-performance-286</link>
      <guid>https://dev.to/marketingclouded/five-devops-practices-to-improve-your-team-s-performance-286</guid>
      <description>&lt;p&gt;DevOps isn’t the latest developer fad or programming trend, it’s essential to delivering superior products and services in a safe, effective and timely manner. &lt;strong&gt;Investing in DevOps is no longer an option given the frequent changes in customer needs, technology and security challenges.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Last summer, DORA released it’s comprehensive study on what are the common characteristics of organizations that have successfully adopted DevOps principles versus those that haven’t. The research is based upon 6 years of data from more than 31,000 professionals and was led by Google Cloud’s Nicole Forsgren. &lt;a href="https://cloud.google.com/blog/products/devops-sre/the-2019-accelerate-state-of-devops-elite-performance-productivity-and-scaling"&gt;You can read the entire report here&lt;/a&gt;. You can also read &lt;a href="https://dev.to/ikrnic/accelerate-state-of-devops-report-2019-communities-of-practices-are-so-dope-4bp7"&gt;Ivan Krnic’s summary of the State of DevOps Report on dev.to here&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/Fzu5Ry5lU8c"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;While Ivan focuses on the recommendation that organizations adopt “Communities of Practice” method of adapting and improving DevOps, I am going to highlight some of the other recommendations.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. The better an organization used the cloud, the more likely it accurately predicted software costs. (page 37)
&lt;/h3&gt;

&lt;p&gt;Because it’s relatively easy to scale and control, &lt;strong&gt;organizations that reported using the cloud more effectively were 2.6 times more likely to accurately predict the cost of operating software. They were also 1.65 times more likely to stay under budget.&lt;/strong&gt; Taking full advantage of the cloud’s elasticity and monitoring was much more important to an organization’s success than whether the cloud was public, private or a hybrid.&lt;/p&gt;

&lt;p&gt;The cloud’s standard “pay for only what you use” model also encourages efficient coding. Investing in traditional server infrastructure and its fixed costs makes it less likely organizations will focus on efficiency.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. A culture that encourages learning and improvement over blame significantly increases productivity. (pages 28 and 53)
&lt;/h3&gt;

&lt;p&gt;If you’ve never failed, you’re probably not trying to do anything worthwhile. The DORA report found strong evidence that &lt;strong&gt;the best performing teams encouraged trust, risk-sharing, creativity and information sharing.&lt;/strong&gt; Focus on fixing the system that led to failure, not an individual's mistakes. This isn’t about avoiding accountability, it’s about fostering an environment of psychological security so that your skilled employees are more productive.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. External code reviews does NOT reduce risk. (pages 50 to 52)
&lt;/h3&gt;

&lt;p&gt;A change process that requires approval from an external team was 2.6 times more likely to be among the worst performing organizations in the report. There is no evidence that a slower, heavyweight change process lowers risk. In fact, data tended to support the hypothesis that deploying larger batches of codes less frequently led to more failures, not less.&lt;/p&gt;

&lt;p&gt;Instead, the findings suggest &lt;strong&gt;organization’s adopt a clear lightweight change approval process that relies on peer-reviewed code during the development process and automated testing.&lt;/strong&gt; Automated tools were able to detect problems earlier in the development process than formal reviews. Respondents to the survey that had a clear understanding of the change process were 1.8 times more likely to be among the best performing organizations in the report.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. The lowest performing organizations were the most likely to use proprietary tools. (pages 59 and 60)
&lt;/h3&gt;

&lt;p&gt;Everyone knows investing in automated testing and deployment tools are fundamental to improving DevOps. But the reports findings suggest developing proprietary tools can be counterproductive. &lt;strong&gt;The report also found the best performing respondents were the more likely to use open source tools and planned to use more.&lt;/strong&gt; Finding and contributing to the communities around commonly used tools helped developers feel more productive. (page 63)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NfKYWCsz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/in82e1tv0kba4f4b9v6o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NfKYWCsz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/in82e1tv0kba4f4b9v6o.png" alt="Organizations with poor performing DevOps were more likely to use Proprietary tools."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Feeling productive reduces burnout. (pages 68)
&lt;/h3&gt;

&lt;p&gt;It may be obvious, but it’s another reason to invest in DevOps: the more productive your engineers feel, the less likely they are to burnout. Burnout isn’t just being tired, it’s a recognized medical condition that can wreck an otherwise valuable employee’s ability to contribute. &lt;strong&gt;The less automated testing, self-guided learning and peer-driven review your organization supports, the more likely your skilled employees are going to have their time wasted, leading to frustration.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We noticed that ourselves at Gennovacap when working with an AI company. It wasn’t just that their cloud architecture didn’t allow for easy scaling, but deployments were crashing - and what is more frustrating than that? Our team of &lt;a href="https://gennovacap.com/case-study/aws-devops-cloud-costs/"&gt;AWS DevOps engineers&lt;/a&gt; didn’t dramatically &lt;a href="https://gennovacap.com/cloud/amazon-aws-billing/"&gt;lower their AWS billing using Spot instances&lt;/a&gt;, but provide a stable development environment for their engineers.&lt;/p&gt;

&lt;p&gt;Want to learn more about the 2019 Accelerate State of DevOps Report, but don’t want to read the 82 pages yourself? Then we recommend listening to the &lt;a href="https://www.arresteddevops.com/state-of-devops/"&gt;Arrested Devops podcast&lt;/a&gt;, where hosts Matty Stratton and Jessica Kerr talk with the report’s main author Nicole Fosgren and Jez Humble. &lt;/p&gt;

</description>
      <category>devops</category>
    </item>
  </channel>
</rss>
