<?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: Owen Conti 🇨🇦 </title>
    <description>The latest articles on Forem by Owen Conti 🇨🇦  (@owenconti).</description>
    <link>https://forem.com/owenconti</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%2F126444%2F10b583f5-6a33-4ead-aa2e-1ff1fe0e27bb.jpg</url>
      <title>Forem: Owen Conti 🇨🇦 </title>
      <link>https://forem.com/owenconti</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/owenconti"/>
    <language>en</language>
    <item>
      <title>How I use Calenderio to block time and reconcile my calendars</title>
      <dc:creator>Owen Conti 🇨🇦 </dc:creator>
      <pubDate>Tue, 08 Mar 2022 05:07:00 +0000</pubDate>
      <link>https://forem.com/owenconti/how-i-use-calenderio-to-block-time-and-reconcile-my-calendars-44ab</link>
      <guid>https://forem.com/owenconti/how-i-use-calenderio-to-block-time-and-reconcile-my-calendars-44ab</guid>
      <description>&lt;p&gt;I have four calendars I manage on a daily basis to organize my time and schedule:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Full time job&lt;/li&gt;
&lt;li&gt;Consulting job&lt;/li&gt;
&lt;li&gt;Shared family calendar&lt;/li&gt;
&lt;li&gt;Personal calendar&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Trying to manage and reconcile four calendars can be a challenge. When I schedule an appointment on my personal calendar, I now need to go block off time on the three other calendars to ensure I don't get double booked. Or when I get invited to a meeting at my full time job, I need to block off that time on my consulting calendar and the family calendar. This takes a lot of time and effort to keep up to date on a regular basis.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vB5Sscvf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://de64kzghgxr9r.cloudfront.net/c9c99e51-e2ba-461f-a996-591c7ba30a94/dist/assets/weekly-calendar-overview.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vB5Sscvf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://de64kzghgxr9r.cloudfront.net/c9c99e51-e2ba-461f-a996-591c7ba30a94/dist/assets/weekly-calendar-overview.jpeg" alt="Weekly calendar overview" width="880" height="571"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Rather than manage all of that myself everyday, I now rely on &lt;a href="https://calenderio.com?utm_source=dev-to&amp;amp;utm_medium=website&amp;amp;utm_campaign=dev-to-article&amp;amp;utm_content=how-i-use-calenderio-article"&gt;Calenderio&lt;/a&gt; to keep all of my calendars in sync. At the time of writing this article, I have six connections setup between various calendars in Calenderio. Let's dive into how I have these connections setup.&lt;/p&gt;

&lt;p&gt;Figuring out the logistics of how automatic calendar syncing works is very important when understanding how your connections need to be structured. The key thing to remember is that your events will essentially be &lt;em&gt;duplicated&lt;/em&gt; across your calendars. So if you have all four calendars added to your local calendar app, you'll see the same event pop up four times. This is the problem I originally ran into until I decided to create a single, "source of truth" calendar.&lt;/p&gt;

&lt;p&gt;I've created a dedicated calendar called "Life" which is what I use for my day-to-day calendar interactions. My personal appointments are scheduled directly into the Life calendar, and the three other calendars (Work, Consulting, Family) are all synced to the Life calendar. So now when I view my Life calendar, it contains the events from all four calendars.&lt;/p&gt;

&lt;p&gt;Here's a brief diagram on how my connections are setup:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Full time job    --&amp;gt; Life
Consulting job   --&amp;gt; Life
Family           --&amp;gt; Life

Life             --&amp;gt; Full time job
Life             --&amp;gt; Consulting job
Life             --&amp;gt; Family
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can see above that I have each calendar setup as a two-way sync, meaning events created on the Life calendar are sent to the three other calendars as well. By doing this, it means that an event created on my Work calendar goes through this flow:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Event is created by a team member on my Work calendar, ie: I'm invited to a meeting&lt;/li&gt;
&lt;li&gt;Calenderio syncs the event to my Life calendar&lt;/li&gt;
&lt;li&gt;Calenderio also syncs the event to my Consulting calendar and Family calendar&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Now that event is blocked off on all four calendars that I have to manage. I can rely on my single Life calendar to manage my day-to-day, and my calendar app now looks like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--H5sg-3WG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://de64kzghgxr9r.cloudfront.net/c9c99e51-e2ba-461f-a996-591c7ba30a94/dist/assets/weekly-calendar-synced.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--H5sg-3WG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://de64kzghgxr9r.cloudfront.net/c9c99e51-e2ba-461f-a996-591c7ba30a94/dist/assets/weekly-calendar-synced.jpeg" alt="Weekly calendar synced" width="880" height="571"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you're interested in a walk-through guide of setting up Calenderio for your own calendar syncing, you can check out the &lt;a href="https://calenderio.com/article/how-to-sync-your-personal-calendar-to-your-work-calendar?utm_source=dev-to&amp;amp;utm_medium=website&amp;amp;utm_campaign=dev-to-article&amp;amp;utm_content=how-i-use-calenderio-article"&gt;"How to sync your personal calendar to your work calendar"&lt;/a&gt; guide published on Calenderio's website.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>tips</category>
      <category>automation</category>
      <category>startup</category>
    </item>
    <item>
      <title>Why you should be using React Context more often</title>
      <dc:creator>Owen Conti 🇨🇦 </dc:creator>
      <pubDate>Fri, 12 Feb 2021 15:10:41 +0000</pubDate>
      <link>https://forem.com/owenconti/why-you-should-be-using-react-context-more-often-517m</link>
      <guid>https://forem.com/owenconti/why-you-should-be-using-react-context-more-often-517m</guid>
      <description>&lt;p&gt;When people think of context in a React JS app, they often think of global state. "I need to manage the theme my app is set to use, I can use context for this." While this isn't wrong, context can be used for so much more than that use case. I like to think of it as "encapsulated state".&lt;/p&gt;

&lt;p&gt;Think of context as a component in your tree that can provide props directly to any child below it. Combine that with hooks, and you can write some clean APIs for your components. Let's take a look at a simple example using a Modal component.&lt;/p&gt;

&lt;p&gt;Here's a look at a modal that accepts an &lt;code&gt;onClose&lt;/code&gt; prop which should be called to close the modal. The modal manages its own transition system, so when closing the modal, the modal's custom &lt;code&gt;closeModal&lt;/code&gt; needs to be called. After the transition is complete, the passed-in &lt;code&gt;onClose&lt;/code&gt; prop will be called.&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="c1"&gt;// inside your Modal component...&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;Modal&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;onClose&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;closeModal&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;useCallback&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// Fake code, pretend to start the closing transition&lt;/span&gt;
        &lt;span class="c1"&gt;// and call `onClose` when the transition is done&lt;/span&gt;
        &lt;span class="nx"&gt;startCloseTransition&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;onClose&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="nx"&gt;onClose&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;

    &lt;span class="k"&gt;return&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;ModalOverlay&lt;/span&gt; &lt;span class="na"&gt;closeModal&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;closeModal&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;ModalContent&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;ModalHeader&lt;/span&gt; &lt;span class="na"&gt;title&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="na"&gt;closeModal&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;closeModal&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;ModalBody&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
              &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;cloneElement&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;children&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;closeModal&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;ModalBody&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;ModalContent&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;ModalOverlay&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;Here's the corresponding component that uses the &lt;code&gt;Modal&lt;/code&gt; component above:&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="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;SomeComponent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;modalOpen&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setModalOpen&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="k"&gt;return&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;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"button"&lt;/span&gt; &lt;span class="na"&gt;onClick&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;setModalOpen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Open Modal&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;

            &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;modalOpen&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;Modal&lt;/span&gt; &lt;span class="na"&gt;title&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Some Modal"&lt;/span&gt; &lt;span class="na"&gt;onClose&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;setModalOpen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&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;SomeComponentModalContent&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;Modal&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="kc"&gt;null&lt;/span&gt;&lt;span class="si"&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;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;SomeComponentModalContent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="nx"&gt;closeModal&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// `closeModal` is available here because the `Modal`&lt;/span&gt;
    &lt;span class="c1"&gt;// component passes it via the `cloneElement` call&lt;/span&gt;
    &lt;span class="k"&gt;return&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;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;The content of the modal goes here&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;p&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="nt"&gt;button&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"button"&lt;/span&gt; &lt;span class="na"&gt;onClick&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;closeModal&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Close the modal&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;button&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="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;Continue reading this post &lt;a href="https://owenconti.com/posts/why-you-should-be-using-react-context-more-often/"&gt;on my website&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>react</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Adding Stripe Checkout and Customer Portal to your Laravel application</title>
      <dc:creator>Owen Conti 🇨🇦 </dc:creator>
      <pubDate>Tue, 09 Feb 2021 15:32:58 +0000</pubDate>
      <link>https://forem.com/owenconti/adding-stripe-checkout-and-customer-portal-to-your-laravel-application-gne</link>
      <guid>https://forem.com/owenconti/adding-stripe-checkout-and-customer-portal-to-your-laravel-application-gne</guid>
      <description>&lt;p&gt;With the latest version of Laravel Cashier, you can very quickly connect your application to Stripe using Stripe's Checkout feature and Customer Portal feature.&lt;/p&gt;

&lt;p&gt;This allows you to get a new application up and running with payments and subscriptions in very little time.&lt;/p&gt;

&lt;p&gt;Read the &lt;a href="https://owenconti.com/posts/adding-stripe-checkout-and-customer-portal-to-your-laravel-application/"&gt;full post on my website&lt;/a&gt; or check out the YouTube video below!&lt;/p&gt;

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

</description>
      <category>laravel</category>
      <category>stripe</category>
      <category>cashier</category>
      <category>checkout</category>
    </item>
    <item>
      <title>How to use GitHub Actions to build, test, and deploy your Laravel application</title>
      <dc:creator>Owen Conti 🇨🇦 </dc:creator>
      <pubDate>Sat, 07 Sep 2019 14:48:37 +0000</pubDate>
      <link>https://forem.com/owenconti/how-to-use-github-actions-to-build-test-and-deploy-your-laravel-application-3e4h</link>
      <guid>https://forem.com/owenconti/how-to-use-github-actions-to-build-test-and-deploy-your-laravel-application-3e4h</guid>
      <description>&lt;p&gt;GitHub Actions is GitHub's take on a CI/CD platform. In this series, we'll learn how we can utilize GitHub Actions to build, test, and deploy Laravel applications.&lt;/p&gt;

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

</description>
      <category>devops</category>
      <category>beginners</category>
      <category>laravel</category>
      <category>web</category>
    </item>
    <item>
      <title>How to use Laravel Vapor without having to use RDS</title>
      <dc:creator>Owen Conti 🇨🇦 </dc:creator>
      <pubDate>Mon, 26 Aug 2019 15:20:45 +0000</pubDate>
      <link>https://forem.com/owenconti/how-to-use-laravel-vapor-without-having-to-use-rds-2k7n</link>
      <guid>https://forem.com/owenconti/how-to-use-laravel-vapor-without-having-to-use-rds-2k7n</guid>
      <description>&lt;p&gt;You can use Larvel Vapor with an existing MySQL/Postgres instance, just like you did before Vapor!&lt;/p&gt;

&lt;p&gt;Watch the video below to learn how we can connect our Vapor applications to existing database instances without having to pay for RDS.&lt;/p&gt;

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

</description>
      <category>serverless</category>
      <category>laravel</category>
      <category>beginners</category>
      <category>web</category>
    </item>
    <item>
      <title>Setting up Custom Domains and HTTPS Certificates with Laravel Vapor</title>
      <dc:creator>Owen Conti 🇨🇦 </dc:creator>
      <pubDate>Mon, 19 Aug 2019 14:30:17 +0000</pubDate>
      <link>https://forem.com/owenconti/setting-up-custom-domains-and-https-certificates-with-laravel-vapor-4nek</link>
      <guid>https://forem.com/owenconti/setting-up-custom-domains-and-https-certificates-with-laravel-vapor-4nek</guid>
      <description>&lt;p&gt;Make sure you watch the previous video in this series: &lt;a href="https://dev.to/owenconti/deploying-a-project-with-laravel-vapor-2bd2"&gt;Deploying a Project with Laravel Vapor&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Let's walk through how you can setup a custom domain and HTTPS certificate with Laravel Vapor.&lt;/p&gt;

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

</description>
      <category>serverless</category>
      <category>laravel</category>
      <category>beginners</category>
      <category>web</category>
    </item>
    <item>
      <title>Deploying a project with Laravel Vapor</title>
      <dc:creator>Owen Conti 🇨🇦 </dc:creator>
      <pubDate>Sun, 18 Aug 2019 18:29:40 +0000</pubDate>
      <link>https://forem.com/owenconti/deploying-a-project-with-laravel-vapor-2bd2</link>
      <guid>https://forem.com/owenconti/deploying-a-project-with-laravel-vapor-2bd2</guid>
      <description>&lt;p&gt;Deploying your Laravel projects is now as simple as running two commands on your command line.&lt;/p&gt;

&lt;p&gt;Find out how easy it is to up and running with Laravel Vapor:&lt;/p&gt;

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

</description>
      <category>serverless</category>
      <category>laravel</category>
      <category>beginners</category>
      <category>web</category>
    </item>
    <item>
      <title>Launching my first side project, Released!</title>
      <dc:creator>Owen Conti 🇨🇦 </dc:creator>
      <pubDate>Tue, 04 Jun 2019 14:32:45 +0000</pubDate>
      <link>https://forem.com/owenconti/launching-my-first-side-project-released-4jl1</link>
      <guid>https://forem.com/owenconti/launching-my-first-side-project-released-4jl1</guid>
      <description>&lt;p&gt;Hi all!&lt;/p&gt;

&lt;p&gt;I'm launching my first official side project today, Released!&lt;/p&gt;

&lt;p&gt;Released helps you with software versioning, generating release notes, sending notifications, and publishing your application.&lt;/p&gt;

&lt;p&gt;There's a free plan available to all users which allows you to import one repository and play around with Released!&lt;/p&gt;

&lt;p&gt;Otherwise, for the first week of launch, I'm offering a 50% discount on the yearly plan ($50 USD down from $100!).&lt;/p&gt;

&lt;p&gt;Check it out at: &lt;a href="https://releasedapp.com"&gt;https://releasedapp.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I also have a walk through video of the application you can check out:&lt;/p&gt;

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

</description>
      <category>showdev</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Learn Gitlab's CI/CD Service - Course for Developers</title>
      <dc:creator>Owen Conti 🇨🇦 </dc:creator>
      <pubDate>Fri, 24 May 2019 18:19:45 +0000</pubDate>
      <link>https://forem.com/owenconti/learn-gitlab-s-ci-cd-service-course-for-developers-3na4</link>
      <guid>https://forem.com/owenconti/learn-gitlab-s-ci-cd-service-course-for-developers-3na4</guid>
      <description>&lt;p&gt;Not many people know how feature packed Gitlab is. Which is why I'm launching a new course this summer on Gitlab's CI/CD service!&lt;/p&gt;

&lt;p&gt;This course will help you get started with Continuous Integration, Delivery, and Deployment all on Gitlab's &lt;strong&gt;free&lt;/strong&gt; plan.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Topics I'll be covering:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Overview of Gitlab CI/CD&lt;/li&gt;
&lt;li&gt;Understanding Stages during a build&lt;/li&gt;
&lt;li&gt;Creating your first CI/CD script&lt;/li&gt;
&lt;li&gt;Publishing and downloading Artifacts&lt;/li&gt;
&lt;li&gt;Deploying your application with Gitlab&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;BONUS:&lt;/strong&gt; Hosting your own Docker image on Gitlab's Registry service&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sign up for the email list: &lt;a href="https://gitlab.courses.owenconti.com"&gt;https://gitlab.courses.owenconti.com&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I'll also be previewing various lessons of the course on my YouTube channel: &lt;a href="https://youtube.com/owenconti"&gt;https://youtube.com/owenconti&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you have ideas on anything else you'd like to see me cover, please let a comment down below!&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>beginners</category>
      <category>devops</category>
    </item>
    <item>
      <title>What the Error? ReactJS: Nothing returned from render</title>
      <dc:creator>Owen Conti 🇨🇦 </dc:creator>
      <pubDate>Wed, 22 May 2019 13:57:12 +0000</pubDate>
      <link>https://forem.com/owenconti/what-the-error-reactjs-nothing-returned-from-render-43ak</link>
      <guid>https://forem.com/owenconti/what-the-error-reactjs-nothing-returned-from-render-43ak</guid>
      <description>&lt;p&gt;This is the third video in my new series, What the Error? where I debug and resolve common error messages in web frameworks.&lt;/p&gt;

&lt;p&gt;This video covers ReactJS's "Nothing returned from render".&lt;/p&gt;

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

</description>
      <category>beginners</category>
      <category>discuss</category>
      <category>tutorial</category>
      <category>tips</category>
    </item>
    <item>
      <title>What the Error? ReactJS: Hooks can only be called inside the body of a function component</title>
      <dc:creator>Owen Conti 🇨🇦 </dc:creator>
      <pubDate>Mon, 20 May 2019 16:41:28 +0000</pubDate>
      <link>https://forem.com/owenconti/what-the-error-reactjs-hooks-can-only-be-called-inside-the-body-of-a-function-component-10im</link>
      <guid>https://forem.com/owenconti/what-the-error-reactjs-hooks-can-only-be-called-inside-the-body-of-a-function-component-10im</guid>
      <description>&lt;p&gt;This is the second video in my new series, What the Error? where I debug and resolve common error messages in web frameworks.&lt;/p&gt;

&lt;p&gt;This video covers ReactJS's "Hooks can only be called inside the body of a function component".&lt;/p&gt;

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

</description>
      <category>beginners</category>
      <category>discuss</category>
      <category>tutorial</category>
      <category>tips</category>
    </item>
    <item>
      <title>What the Error? ReactJS: Rendered fewer hooks than expected</title>
      <dc:creator>Owen Conti 🇨🇦 </dc:creator>
      <pubDate>Sun, 19 May 2019 14:50:17 +0000</pubDate>
      <link>https://forem.com/owenconti/what-the-error-reactjs-rendered-fewer-hooks-than-expected-2m7c</link>
      <guid>https://forem.com/owenconti/what-the-error-reactjs-rendered-fewer-hooks-than-expected-2m7c</guid>
      <description>&lt;p&gt;This is the first video in my new series, What the Error? where I debug and resolve common error messages in web frameworks.&lt;/p&gt;

&lt;p&gt;This video covers ReactJS's "Rendered fewer hooks than expected".&lt;/p&gt;

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

</description>
      <category>beginners</category>
      <category>discuss</category>
      <category>tutorial</category>
      <category>tips</category>
    </item>
  </channel>
</rss>
