<?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: Leo Mercier</title>
    <description>The latest articles on Forem by Leo Mercier (@leomercier).</description>
    <link>https://forem.com/leomercier</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%2F122595%2Fa38a7103-2447-44ba-8c08-f5ea720fed27.jpg</url>
      <title>Forem: Leo Mercier</title>
      <link>https://forem.com/leomercier</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/leomercier"/>
    <language>en</language>
    <item>
      <title>Deploying a Gatsby Site to Firebase with Google Cloud Build (CI/CD)</title>
      <dc:creator>Leo Mercier</dc:creator>
      <pubDate>Fri, 21 Jun 2019 15:30:18 +0000</pubDate>
      <link>https://forem.com/leomercier/deploying-a-gatsby-site-to-firebase-with-google-cloud-build-ci-cd-511c</link>
      <guid>https://forem.com/leomercier/deploying-a-gatsby-site-to-firebase-with-google-cloud-build-ci-cd-511c</guid>
      <description>&lt;p&gt;I have seen a load of articles on hosting Gatsby on Netlify but none for Firebase &amp;amp; Google Cloud Platform so decided to do a write up on it. In the following configuration its free to hosting too so great for any starter projects.&lt;/p&gt;

&lt;p&gt;I run the development team at Crowdform, &lt;a href="https://www.crowdform.co.uk/"&gt;a digital product studio in London&lt;/a&gt;, and we have been busy building our lastest client websites in Gatsby. &lt;/p&gt;

&lt;p&gt;As an agency we have chosen ReactJS and GraphQL in our larger digital products so seemed natural to make the move to Gatsby too for consistency. Gatsby can be used to build static websites that are Progressive Web Apps, they follow the latest web standards, and are optimised to be highly performant so score well on Google Lighthouse. We do still use Wordpress but now in a headless configuration.&lt;/p&gt;

&lt;h1&gt;
  
  
  Prerequisites
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Gatsby Project (&lt;a href="https://www.gatsbyjs.org/docs/quick-start/"&gt;Follow the Quick Start Guide&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Project in GitHub, Bitbucket or Google Cloud Source Repository&lt;/li&gt;
&lt;li&gt;Google Cloud Account with billing enabled (you will not be charged as the limits on Cloud Build are generous and Firebase Hosting is free. Cloud Build gives you the first 120 builds-minutes per day free)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.crowdform.co.uk/blog/deploying-a-gatsby-site-to-firebase-with-google-cloud-build#firebase"&gt;Google Firebase Project&lt;/a&gt; &amp;amp; Google Cloud Build API enabled&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Setting Up Cloud Build
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Add a build trigger&lt;/li&gt;
&lt;li&gt;Link a Git Repo&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://www.crowdform.co.uk/blog/deploying-a-gatsby-site-to-firebase-with-google-cloud-build#cloudbuild"&gt;Full Google Cloud Build Instructions&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Cloudbuild.yaml Config
&lt;/h1&gt;

&lt;p&gt;Create a file cloudbuild.yaml in the root of your project and copy across the below Gist into the YAML file.&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;steps:
  - name: node:10.15.1
    entrypoint: yarn
    args: ["install"]
  - name: node:10.15.1
    entrypoint: yarn
    args: ["add", "firebase-tools"]
  - name: node:10.15.1
    entrypoint: yarn
    args: ["build"]
  - name: "node:10.15.1"
    entrypoint: "./node_modules/.bin/firebase"
    args: ["deploy", "--project", "$PROJECT_ID", "--token", "$_TOKEN"]

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;Use a Yarn &amp;amp; Node virtual machine&lt;/li&gt;
&lt;li&gt;Install all dependencies&lt;/li&gt;
&lt;li&gt;Install Firebase-cli (normally installed global on a local machine)&lt;/li&gt;
&lt;li&gt;Run the Gatsby build function and generate the static site to /public&lt;/li&gt;
&lt;li&gt;Push the contents of the public folder to Firebase Hosting.&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Authorising Firebase
&lt;/h1&gt;

&lt;p&gt;&lt;code&gt;firebase login:ci&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;In CloudBuild under the “Substitution variables” add the key value.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;_TOKEN: {token from firebase login:ci}&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Now Run the build Trigger&lt;/p&gt;

&lt;p&gt;For a full step by step guide see our article on &lt;a href="https://www.crowdform.co.uk/blog/deploying-a-gatsby-site-to-firebase-with-google-cloud-build"&gt;deploying a gatsby site to Firebase with Cloud Build&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>gatsby</category>
      <category>firebase</category>
      <category>googlecloudbuild</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Startups for Realists #1 – with Tom Evans, COO of EmailOctopus</title>
      <dc:creator>Leo Mercier</dc:creator>
      <pubDate>Thu, 25 Apr 2019 16:15:41 +0000</pubDate>
      <link>https://forem.com/leomercier/startups-for-realists-1-with-tom-evans-coo-of-emailoctopus-nlf</link>
      <guid>https://forem.com/leomercier/startups-for-realists-1-with-tom-evans-coo-of-emailoctopus-nlf</guid>
      <description>&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%2Fwww.crowdform.co.uk%2Fwp-content%2Fuploads%2F2019%2F04%2FScreenshot-2019-04-24-at-17.30.11-1.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%2Fwww.crowdform.co.uk%2Fwp-content%2Fuploads%2F2019%2F04%2FScreenshot-2019-04-24-at-17.30.11-1.png" alt="EmailOctopus Marketing"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In Startups for Realists, we talk to people in the world of startups about the realities of their day-to-day work – the good, the bad and everything in-between.&lt;/p&gt;

&lt;p&gt;This week we spoke to Tom Evans, the COO of &lt;a href="https://emailoctopus.com/?ref=crowdform" rel="noopener noreferrer"&gt;EmailOctopus, a bootstrapped email marketing platform&lt;/a&gt;, with a focus on simplicity and low-cost (around 1/3rd of the price of MailChimp) all whilst offering excellent customer support. Over the last 5 years, they’ve helped more than 30,000 organisations send over 6 billion emails.&lt;/p&gt;

&lt;h2&gt;
  
  
  What’s your typical day look like?
&lt;/h2&gt;

&lt;p&gt;I enjoy my sleep, so try to wake up around 8.30. After catching up on the news and getting ready for the day I switch onto EmailOctopus work. The first half-hour of the day is spent quickly checking up on our reports, numbers, and emails from customers which have come in overnight. Most of the morning reports have now been automated so I can see our acquisition figures on a day/day or month/month comparative basis at a very quick glance.&lt;/p&gt;

&lt;h2&gt;
  
  
  What’s your office set-up?
&lt;/h2&gt;

&lt;p&gt;I work from a mix of home and an office space...&lt;/p&gt;

&lt;p&gt;You can read the &lt;a href="https://www.crowdform.co.uk/blog/interview-tom-evans-emailoctopus-email-marketing" rel="noopener noreferrer"&gt;full interview with Tom Evans, over on our product studio’s blog&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>marketing</category>
      <category>startup</category>
      <category>interview</category>
      <category>amazonses</category>
    </item>
    <item>
      <title>Lesser known tricks to level up your UI design</title>
      <dc:creator>Leo Mercier</dc:creator>
      <pubDate>Mon, 22 Apr 2019 10:01:52 +0000</pubDate>
      <link>https://forem.com/leomercier/lesser-known-tricks-to-level-up-your-ui-design-491o</link>
      <guid>https://forem.com/leomercier/lesser-known-tricks-to-level-up-your-ui-design-491o</guid>
      <description>&lt;p&gt;Over the last three years at Crowdform we’ve designed countless &lt;a href="https://www.crowdform.co.uk/blog/what-is-a-digital-product"&gt;digital products&lt;/a&gt;. Along the way we’ve picked up a few subtle and unexpected tricks which can really level up a product design. So we thought: why not collate these tips into a series of articles to help the other UI designers out there?&lt;/p&gt;

&lt;p&gt;1) OVERLAY SHAPES ACROSS SECTIONS TO ADD MORE DEPTH&lt;/p&gt;

&lt;p&gt;Sometimes a straight transition from one section to another looks, well…boring.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--p0zb9wEa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.crowdform.co.uk/wp-content/uploads/2019/04/BlogHD1a-1900x931.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--p0zb9wEa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.crowdform.co.uk/wp-content/uploads/2019/04/BlogHD1a-1900x931.png" alt="example of bad UX"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you have a graphic element on your page, it’s worth experimenting by overlaying it across two sections. Your design should look more fluid and less compartmentalised.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--O8fYthMZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.crowdform.co.uk/wp-content/uploads/2019/04/BlogHD1b-1900x931.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--O8fYthMZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.crowdform.co.uk/wp-content/uploads/2019/04/BlogHD1b-1900x931.png" alt="suggested improvement of UX example"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We wrote a longer article, with 6 other examples, over on our &lt;a href="https://www.crowdform.co.uk/blog/7-lesser-known-tricks-to-level-up-your-ui-design"&gt;product studio’s blog&lt;/a&gt;. &lt;/p&gt;

</description>
      <category>uxdesign</category>
      <category>digitalproducts</category>
      <category>uidesign</category>
      <category>css</category>
    </item>
  </channel>
</rss>
