<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Roseanna Mcfarlane</title>
    <description>The latest articles on Forem by Roseanna Mcfarlane (@roseanna).</description>
    <link>https://forem.com/roseanna</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%2F114596%2Fb1d9595f-8a7c-4a5c-ac40-87ac38f52802.jpg</url>
      <title>Forem: Roseanna Mcfarlane</title>
      <link>https://forem.com/roseanna</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/roseanna"/>
    <language>en</language>
    <item>
      <title>This One Weird Trick to Create a Website in Minutes</title>
      <dc:creator>Roseanna Mcfarlane</dc:creator>
      <pubDate>Wed, 17 Jun 2020 07:07:14 +0000</pubDate>
      <link>https://forem.com/roseanna/this-one-weird-trick-to-create-a-website-in-minutes-2ek4</link>
      <guid>https://forem.com/roseanna/this-one-weird-trick-to-create-a-website-in-minutes-2ek4</guid>
      <description>&lt;p&gt;Okay, so I have been intending to write this blog for a while now. I was lucky enough to be invited to the beta of &lt;a href="https://www.stackbit.com" rel="noopener noreferrer"&gt;Stackbit&lt;/a&gt; a while ago and I was absolutely blown away! This is a small write up discussing why I think the JAM Stack is the future of web development and how Stackbit is using it to empower web engineers to their full potential.&lt;/p&gt;

&lt;p&gt;So let's get to the basics, what is the &lt;a href="https://jamstack.org" rel="noopener noreferrer"&gt;JAMStack?&lt;/a&gt; Unlike other applications stacks such as LAMP or MEAN, JAMStack is not about specific technologies as it is about how an application is built.&lt;/p&gt;

&lt;p&gt;Modern web development continues to get more and more powerful. By simply using Javascript, API's and Markup you can leverage a number of third party resources to create powerful, full stack applications in minutes, without worrying about the overhead. Stackbit allows users to abstract away much of the setup required to create a JAMStack website and helps you to choose from a number of different Stack combinations.&lt;/p&gt;

&lt;p&gt;It's 👏 so 👏 easy 👏!&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1:
&lt;/h2&gt;

&lt;p&gt;Choose a theme. Stackbit makes it really easy by providing a selection of pre designed themes&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fj3kn8aseqmup08swzba7.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fj3kn8aseqmup08swzba7.gif" alt="Alt Text" width="600" height="337"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2:
&lt;/h2&gt;

&lt;p&gt;Select your site generator&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Feyrjljfagi3s6fm32tn7.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Feyrjljfagi3s6fm32tn7.gif" alt="Alt Text" width="760" height="427"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Choose from a wide selection of well known static site generators such as Gatsby and Jekyll.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3:
&lt;/h2&gt;

&lt;p&gt;Select the content management system / cms you want to use, or none. I choose &lt;a href="https://www.netlify.com" rel="noopener noreferrer"&gt;Netlify's&lt;/a&gt; CMS because it's lightweight and simple to use.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fihhj8isanvfm71r5tf4t.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fihhj8isanvfm71r5tf4t.gif" alt="Alt Text" width="1600" height="900"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That's it! No you can upload your content and style it however you please.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://jam-jam.netlify.app" rel="noopener noreferrer"&gt;See live page here!&lt;/a&gt;&lt;/p&gt;

</description>
      <category>jamstack</category>
      <category>website</category>
      <category>stackbit</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Deploy and Host in 30 Seconds with Netlify Drop</title>
      <dc:creator>Roseanna Mcfarlane</dc:creator>
      <pubDate>Fri, 08 Mar 2019 12:37:25 +0000</pubDate>
      <link>https://forem.com/roseanna/deploy-and-host-in-30-seconds-with-netlify-drop-hod</link>
      <guid>https://forem.com/roseanna/deploy-and-host-in-30-seconds-with-netlify-drop-hod</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;"I had a website, but hosting was too expensive...other options look difficult to use"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This was something I heard recently from a family member. I immediately suggested they look into &lt;a href="https://www.netlify.com" rel="noopener noreferrer"&gt;Netlify&lt;/a&gt;, specifically &lt;a href="https://app.netlify.com/drop" rel="noopener noreferrer"&gt;Netlify Drop&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Netlify has been around for a while now and they have built a really powerful platform with a huge number of tools and features. The best part? &lt;strong&gt;It's free and super easy to use!&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://i.giphy.com/media/nlmwU1uZgFGdq/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/nlmwU1uZgFGdq/giphy.gif" alt="doge shiba" width="119" height="124"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let's look at how easy it is for a non technical person to deploy and host a static web site with Netlify and their product Netlify Drop&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Setup your website folder correctly:
&lt;/h3&gt;

&lt;p&gt;Ensure all the files are named correctly. Html should be in a file named index, CSS should be in a file named styles and Javascript should be in a file named scripts. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fabw3zwbqe2zakffrsrmd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fabw3zwbqe2zakffrsrmd.png" alt="Picture showing correct and incorrect file structure" width="800" height="733"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Drag and Drop
&lt;/h3&gt;

&lt;p&gt;Drag the folder from your pc into the browser and watch the magic happen.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fs0seonzhypn5hr35minr.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fs0seonzhypn5hr35minr.gif" alt="Gif image showing the process of dragging the project folder into the browser" width="600" height="299"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And that's it!&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fe6jcmufpnenu7omp72za.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fe6jcmufpnenu7omp72za.gif" alt="doge shiba times three" width="500" height="150"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now you can go ahead and set up your own custom domain, hook the website up with Netlify's cms to manage blog posts or even add and manage forms! &lt;/p&gt;

&lt;p&gt;Power to the people baby! &lt;br&gt;
&lt;a href="https://i.giphy.com/media/8c147bu4hTnvhnZjLa/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/8c147bu4hTnvhnZjLa/giphy.gif" alt="blue haired girl mouth agape" width="480" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Check out the finished product which is now a bookmark for my newest prized possession &lt;a href="https://roseanna.dev" rel="noopener noreferrer"&gt;Roseanna.dev&lt;/a&gt;&lt;/p&gt;

</description>
      <category>netlify</category>
      <category>webdev</category>
      <category>beginners</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Using LaunchDarkly's Feature Flags with React to Display Real Time Information</title>
      <dc:creator>Roseanna Mcfarlane</dc:creator>
      <pubDate>Thu, 17 Jan 2019 08:18:59 +0000</pubDate>
      <link>https://forem.com/roseanna/using-launchdarklys-feature-flags-with-react-to-display-real-time-information-400</link>
      <guid>https://forem.com/roseanna/using-launchdarklys-feature-flags-with-react-to-display-real-time-information-400</guid>
      <description>&lt;p&gt;Have you ever needed to update information on a web page on short notice but found the whole process complicated, slow and error prone? Editing the code, re deploying...wouldn't it be great if you could do that in a simple admin console without changing any code?&lt;br&gt;
Well you can with LaunchDarkly!&lt;/p&gt;

&lt;p&gt;LaunchDarkly is a service that allows users to easily implement feature flags in their projects. Feature flags can be used to modify user defined features in a running app through the LaunchDarkly admin console.&lt;/p&gt;

&lt;p&gt;This is incredibly powerful in cases where you would like to add a feature to a product but want to control it after deployment, avoiding the need for a re-deploy if you discover things don't go as planned.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9z19zpxi4a2ev1qk8lz0.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9z19zpxi4a2ev1qk8lz0.gif" alt="Gif of girl failing to knock down all dominoes" width="460" height="279"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Feature flags can also be used to roll out features to a specified percentage of users or users that meet certain requirements, allowing for super simple canary launches.&lt;/p&gt;

&lt;p&gt;Aside from devops and feature rollouts there are many other real world use cases for LaunchDarkly.&lt;br&gt;
In this post we’ll cover how you could use LaunchDarkly to display the results of a certain well-known sporting event (&lt;strong&gt;who shall not be explicitly named, but it's related to something Super 🏈&lt;/strong&gt;) where there is no available API and the information needs to be manually updated.&lt;/p&gt;

&lt;p&gt;LaunchDarkly helps you decouple deployment from release and also provides a mechanism for non-technical people to manage the behaviour of your running service.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm787c1p51lrv96ksi377.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm787c1p51lrv96ksi377.gif" alt="gif of excited lady" width="450" height="281"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So grab a drink and sit down with me as we explore the power of feature flags.&lt;br&gt;
This example uses Create React App to spin up an empty project and &lt;a href="https://www.netlify.com" rel="noopener noreferrer"&gt;Netlify&lt;/a&gt; for hosting. ❤️&lt;/p&gt;

&lt;p&gt;Let's start with the &lt;a href="https://app.launchdarkly.com/default/production/quickstart/tutorial" rel="noopener noreferrer"&gt;quickstart&lt;/a&gt; tutorial. This takes you through the first steps of creating a feature flag.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3130uc87nayaibtd2ej6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3130uc87nayaibtd2ej6.png" alt="Image showing the tutorial sections" width="800" height="278"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;First create a feature flag and choose a name. Then choose which application language you plan to use and select the environment it will be used for.&lt;/p&gt;

&lt;p&gt;As this example is using React, I chose to use an integration which supports the use of LaunchDarkly with React &lt;a href="https://github.com/yusinto/ld-react" rel="noopener noreferrer"&gt;LD-React&lt;/a&gt;. &lt;br&gt;
It follows idiomatic React patterns and uses the websocket LaunchDarkly API so feature flag changes will be pushed to client without the need for a page refresh.&lt;/p&gt;
&lt;h4&gt;
  
  
  Note
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;p&gt;Something to note with the use of the client side SDK is that you &lt;strong&gt;MUST&lt;/strong&gt; manually enable feature flags for use client-side by checking a box in the settings section within the LaunchDarkly admin console. &lt;strong&gt;see below&lt;/strong&gt; Otherwise you may find yourself scratching your head for a while asking yourself 'but whyyyyy?. Well, that's why. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftllkm3rwy3w6tafi6l39.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftllkm3rwy3w6tafi6l39.png" alt="Image of checkbox for enabling client side SDK usage" width="616" height="80"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The code snippet below shows a flag that is a simple boolean variable called showCountDown. It toggles a countdown React component on and off.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;flags&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;showCountDown&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;H1Title&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Countdown&lt;/span&gt; &lt;span class="na"&gt;date&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Sun, 03 Feb 2019&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;H1Title&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This second flag is called a multivariate flag. It allows a user to define a number of variations which return a string value rather than a bool.&lt;br&gt;
It has eight variations to represent all the teams competing in the sports event this example was based on. Go the Gliders! &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnofzk3dacp0ovrro0gb1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnofzk3dacp0ovrro0gb1.png" alt="Picture showing the LaunchDarkly admin console with the multi variate flag" width="800" height="501"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Something you may notice when you have your first flag working is the page information is updated without reloading the page. This is great in the event of someone waiting for a page to update without refreshing it regularly. It ensures they will have the correct information immediately.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa976xhkluwow8lmw9fkh.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa976xhkluwow8lmw9fkh.gif" alt="Gif of man making a rainbow with his hands" width="600" height="338"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Aside from feature flags, LaunchDarkly also provides support for A/B testing and tracking goals.&lt;br&gt;
Being able to display certain info/features for specific groups and then getting analytics on user interactions is very useful.&lt;/p&gt;

&lt;p&gt;So go ahead and implement those flags! I would love to hear about how you're using feature flags in your applications.&lt;/p&gt;

&lt;p&gt;For a closer look at the project check out the repo &lt;a href="https://github.com/RoseannaM/ld-example" rel="noopener noreferrer"&gt;here&lt;/a&gt; or visit the &lt;a href="https://ldproject.netlify.com/" rel="noopener noreferrer"&gt;live version&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Happy hacking.&lt;/p&gt;

</description>
      <category>launchdarkly</category>
      <category>react</category>
      <category>featureflags</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
