<?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: Jess Rezac</title>
    <description>The latest articles on Forem by Jess Rezac (@cheerupemodev).</description>
    <link>https://forem.com/cheerupemodev</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%2F182047%2F82206362-81d6-4fdd-985f-4c0c57ded967.png</url>
      <title>Forem: Jess Rezac</title>
      <link>https://forem.com/cheerupemodev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/cheerupemodev"/>
    <language>en</language>
    <item>
      <title>Organizing Notes for Coding Bootcamp (with Notion)</title>
      <dc:creator>Jess Rezac</dc:creator>
      <pubDate>Mon, 23 Nov 2020 00:00:00 +0000</pubDate>
      <link>https://forem.com/cheerupemodev/organizing-notes-for-coding-bootcamp-with-notion-34mo</link>
      <guid>https://forem.com/cheerupemodev/organizing-notes-for-coding-bootcamp-with-notion-34mo</guid>
      <description>&lt;p&gt;I started pre-work for my online software engineering program in April 2019, but I don't feel like I hit my stride in note-taking until a few months later. Identifying the best platform for me and then getting organized within that platform took time. Because I have good notetaking skills, the substance of my notes was more than sufficient, but when I revisit my notes I find them to be a little more like a pile of papers than an organized notebook. When you're starting your own collection of notes for a coding bootcamp, you'll want to find the right software, establish a template or design pattern that all of your notes will follow, and then stick to it. &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%2Fhtz2gbub1ojj6t33w7gz.jpg" 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%2Fhtz2gbub1ojj6t33w7gz.jpg" alt="Hardcover Moleskine notebook with "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Platforms
&lt;/h2&gt;

&lt;p&gt;For most of my professional career, I've used &lt;a href="https://www.evernote.com" rel="noopener noreferrer"&gt;Evernote&lt;/a&gt; to keep track of notes digitally. I'm mid-career as a digital marketer, progressing into a career as a software engineer, so I have quite a bit of experience with the platform. I started taking notes in Evernote, but quickly decided that its handling of code wasn't going to meet my needs. Evernote formats code into a monospace font, but it doesn't color the code so it's not very easy to scan when you're reviewing. &lt;/p&gt;

&lt;p&gt;I did like using Markdown formatting, so that's what I sought in my next program. I tried &lt;a href="https://bear.app/" rel="noopener noreferrer"&gt;Bear&lt;/a&gt; and &lt;a href="https://boostnote.io/" rel="noopener noreferrer"&gt;Boostnote&lt;/a&gt;. Bear is nice because it's a beautiful user interface. Boostnote is open source and built for developers. I could also sync it between platforms using Google Drive which I liked. &lt;/p&gt;

&lt;p&gt;Then, I was chatting with a friend who works in bitcoin and he said, "Have you tried &lt;a href="https://www.notion.so" rel="noopener noreferrer"&gt;Notion&lt;/a&gt;? People on my twitter love it. I should say, VCs who invested in them love it. They might be biased." It turns out that Scott and the VCs he follows on Twitter were right to suggest Notion. Very quickly it became my platform of choice. It even imported those old notes from Evernote. Convenient! &lt;/p&gt;

&lt;h2&gt;
  
  
  Design Patterns
&lt;/h2&gt;

&lt;p&gt;As I started taking notes using Notion, I experimented with a few different patterns to organize my notes. What ultimately worked for me was to take notes following a similar outline of the modules at my coding bootcamp. I attended &lt;a href="https://www.flatironschool.com" rel="noopener noreferrer"&gt;Flatiron School&lt;/a&gt; so obviously this works well for Flatiron, but I would imagine any boot camp has some structure for its program that could be translated into a template for organizing notes. &lt;/p&gt;

&lt;p&gt;I have a Flatiron workspace in Notion and then a Notes page within that workspace. For each of the five modules in my program, I created an inline link database on the Notes page: Procedural Ruby, Sinatra, Ruby on Rails, Javascript, React. I also created a new database for certain topics that didn't rise to the level of a module but stood out from the content of the module that they were contained in: RegEx, SQL, Bash and Git, HTML and CSS. &lt;/p&gt;

&lt;p&gt;Within those databases, I created a page for every section of lessons within the module. I added a URL property to each database and used that field to link my notes to the first lesson in the section. &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%2F1ooulg792xaa2kni7xje.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%2F1ooulg792xaa2kni7xje.png" title="JavaScript link database" alt="screenshot of Notion inline link database about JavaScript"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;As I worked through the lessons, each lesson had an H1 heading on the section page in the module database. I've liked this system because it's easy to go back and scroll through notes without a lot of clicking. &lt;/p&gt;

&lt;p&gt;Photo by &lt;a href="https://unsplash.com/@goian?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Ian Schneider&lt;/a&gt; on &lt;a href="https://unsplash.com/s/photos/moleskine?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

</description>
      <category>bootcamp</category>
      <category>flatiron</category>
      <category>notion</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>Continuous Deployment of a Gatsby site to cPanel with Git Version Control</title>
      <dc:creator>Jess Rezac</dc:creator>
      <pubDate>Sun, 01 Nov 2020 21:50:00 +0000</pubDate>
      <link>https://forem.com/cheerupemodev/continuous-deployment-of-a-gatsby-site-to-cpanel-with-git-version-control-5ha2</link>
      <guid>https://forem.com/cheerupemodev/continuous-deployment-of-a-gatsby-site-to-cpanel-with-git-version-control-5ha2</guid>
      <description>&lt;p&gt;Last weekend, I launched my developer portfolio site at &lt;a href="https://www.rezac.dev"&gt;www.rezac.dev&lt;/a&gt;. I built the site in &lt;a href="https://www.gatsbyjs.com/"&gt;Gatsby&lt;/a&gt; because I was excited to play with a static-site generator and Gatsby is React-based. My last project, &lt;a href="https://www.rezac.dev/projects/bout-manager"&gt;Bout Manager&lt;/a&gt;, was built in React so choosing a React-based generator encouraged me to focus on mastering Gatsby specifically and &lt;a href="https://tailwindcss.com/"&gt;Tailwind CSS&lt;/a&gt;, the two tools I was hoping this project would add to my repertoire. &lt;/p&gt;

&lt;p&gt;When it came time to deploy my site, I decided to stick with the virtual shared hosting account I've had for more than a decade. My portfolio is likely to be deployed for a long time, so I couldn't really justify spinning it out in a different cloud-based location than all of the other websites I host and manage. There is plenty of time for me to familiarize myself with cloud-based deployment solutions. &lt;/p&gt;

&lt;p&gt;To deploy a Gatsby site using cPanel, we'll need to build a Gatsby site, create a home for it on cPanel, and create a Git repository on cPanel using Git Version Control. &lt;/p&gt;

&lt;h2&gt;
  
  
  Create a Gatsby site
&lt;/h2&gt;

&lt;p&gt;Begin by creating a Gatsby site, you can use Gatsby's &lt;a href="https://www.gatsbyjs.com/docs/quick-start/"&gt;Quick Start guide&lt;/a&gt; to get up and running pretty quickly. I started mine with &lt;a href="https://www.gatsbyjs.com/starters/melanienolan/gatsby-starter-tailwind-css/"&gt;Melanie Nolan's Gatsby-Starter-Tailwind-CSS&lt;/a&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;gatsby new gatsby-cpanel-deploy https://github.com/melanienolan/gatsby-starter-tailwind-css 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Test your installation with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;gatsby-cpanel-deploy 
&lt;span class="nv"&gt;$ &lt;/span&gt;gatsby develop 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Define deployment instructions for cPanel
&lt;/h2&gt;

&lt;p&gt;Next, create a &lt;code&gt;.cpanel.yml&lt;/code&gt; file in your project directory with deployment instructions.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt; 
&lt;span class="na"&gt;deployment&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; 
     &lt;span class="na"&gt;tasks&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; 
          &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;export DEPLOYPATH=/home/&amp;lt;username&amp;gt;/&amp;lt;public_html&amp;gt;/&lt;/span&gt;
          &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;/bin/cp -R public/* $DEPLOYPATH&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Line 1 is the beginning of a YAML file.&lt;/li&gt;
&lt;li&gt;Lines 2 and 3 add &lt;code&gt;deployment&lt;/code&gt; and &lt;code&gt;tasks&lt;/code&gt; keys.&lt;/li&gt;
&lt;li&gt;Line 4 begins a list of BASH commands that run during deployment.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The first BASH command defines a variable, &lt;code&gt;DEPLOYPATH&lt;/code&gt; that holds the path on our server where deployed files will be located.&lt;/p&gt;

&lt;p&gt;Replace &lt;code&gt;&amp;lt;username&amp;gt;&lt;/code&gt; with your account username and &lt;code&gt;&amp;lt;public_html&amp;gt;&lt;/code&gt; with the location of your files in your site directory. For many deployment cases, this is likely to be &lt;code&gt;public_html&lt;/code&gt;, but I am deploying to a subfolder of a subdomain on an add-on domain within my account, so my path will be to &lt;code&gt;demos.rezac.dev/gatsby-cpanel-deploy&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The second BASH command deploys a specified file or directory to the directory defined in &lt;code&gt;$DEPLOYPATH&lt;/code&gt;. When you run &lt;code&gt;gatsby build&lt;/code&gt;, Gatsby will automatically write all files to the &lt;code&gt;public/&lt;/code&gt; folder, so &lt;code&gt;public/*&lt;/code&gt; deploys all files in that directory.&lt;/p&gt;

&lt;h2&gt;
  
  
  Build your Gatsby site
&lt;/h2&gt;

&lt;p&gt;Run &lt;code&gt;gatsby build&lt;/code&gt; to create your site's build files and &lt;code&gt;public&lt;/code&gt; folder and &lt;code&gt;gatsby serve&lt;/code&gt; to check your build.&lt;/p&gt;

&lt;p&gt;Push changes to your repo. By default, many Gatsby starters add &lt;code&gt;public&lt;/code&gt; to &lt;code&gt;.gitignore&lt;/code&gt;, so you'll need to remove it for Git Version Control to eventually be able to access those files from your repo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Set up Git Version Control
&lt;/h2&gt;

&lt;p&gt;With deployment instructions defined in &lt;code&gt;.cpanel.yml&lt;/code&gt; and the site's build pushed to our GitHub repository, we're ready to set up a second remote repository in cPanel using Git Version Control.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;First, grab your GitHub repository clone URL from your repo on GitHub by clicking the &lt;code&gt;Code&lt;/code&gt; button and copying the URL. I prefer to use the HTTPS URL.&lt;/li&gt;
&lt;li&gt;Next, go go to &lt;code&gt;Git Version Control&lt;/code&gt; from cPanel and click the &lt;code&gt;Create&lt;/code&gt; button.&lt;/li&gt;
&lt;li&gt;Enable the toggle to clone a repository.&lt;/li&gt;
&lt;li&gt;Enter your copied clone URL in the clone URL field.&lt;/li&gt;
&lt;li&gt;Enter a path for repostiroy directory. I store mine in a directory named after the GitHub repository in a &lt;code&gt;repositories&lt;/code&gt; directory in my site files.&lt;/li&gt;
&lt;li&gt;Enter a respository name.&lt;/li&gt;
&lt;li&gt;Click &lt;code&gt;Create&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Deploy from Git Version Control
&lt;/h2&gt;

&lt;p&gt;To deploy for the first time, click the &lt;code&gt;Manage&lt;/code&gt; button next to your new repo in the repositories list in Git Version Control.&lt;/p&gt;

&lt;p&gt;Click the &lt;code&gt;Pull or Deploy&lt;/code&gt; tab and then the &lt;code&gt;Deploy HEAD Commit&lt;/code&gt; button.&lt;/p&gt;

&lt;p&gt;Git Version Control will immediately queue the deployment and will add Last Deployment Information when the deployment is complete.&lt;/p&gt;

&lt;h2&gt;
  
  
  Set up continuous deployment to Git Version Control in your local repository
&lt;/h2&gt;

&lt;p&gt;As you push changes to your repository on GitHub, you can return to the &lt;code&gt;Pull or Deploy&lt;/code&gt; tab for your repository in Git Version Control and click &lt;code&gt;Update from Remote&lt;/code&gt; followed by &lt;code&gt;Deploy HEAD Commit&lt;/code&gt; to make changes live on your site.&lt;/p&gt;

&lt;p&gt;This may feel too cumbersome as it requires pushing changes to GitHub, logging in to cPanel, and manually starting two processes before changes are live. An easier solution would be to set up a continuous deployment pipeline in your local repository, and with Git Version Control this is possible.&lt;/p&gt;

&lt;p&gt;Copy the clone URL for your Git Version Control repo from the repo's &lt;code&gt;Basic Information&lt;/code&gt; tab.&lt;/p&gt;

&lt;p&gt;In your local repository, run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;git remote add &amp;lt;remotename&amp;gt; &amp;lt;cloneurl&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;where &lt;code&gt;&amp;lt;remotename&amp;gt;&lt;/code&gt; is a unique name for your new remote – I usually name this remote &lt;code&gt;cpanel&lt;/code&gt; whereas the GitHub remote is named &lt;code&gt;origin&lt;/code&gt; – and &lt;code&gt;&amp;lt;cloneurl&amp;gt;&lt;/code&gt; is the clone URL you coppied from Git Version Control.&lt;/p&gt;

&lt;p&gt;You can check if the command has worked using &lt;code&gt;git remote -v&lt;/code&gt; which will list your established remotes.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;git remote &lt;span class="nt"&gt;-v&lt;/span&gt;
cpanel &amp;lt;cpanel clone url&amp;gt; &lt;span class="o"&gt;(&lt;/span&gt;fetch&lt;span class="o"&gt;)&lt;/span&gt;
cpanel &amp;lt;cpanel clone url&amp;gt; &lt;span class="o"&gt;(&lt;/span&gt;push&lt;span class="o"&gt;)&lt;/span&gt;
origin &amp;lt;github clone url&amp;gt; &lt;span class="o"&gt;(&lt;/span&gt;fetch&lt;span class="o"&gt;)&lt;/span&gt;
origin &amp;lt;github clone url&amp;gt; &lt;span class="o"&gt;(&lt;/span&gt;push&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, your deployment cycle will look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;gatsby build
&lt;span class="nv"&gt;$ &lt;/span&gt;git add &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;span class="nv"&gt;$ &lt;/span&gt;git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"Update build"&lt;/span&gt;
&lt;span class="nv"&gt;$ &lt;/span&gt;git push origin main
&lt;span class="nv"&gt;$ &lt;/span&gt;git push cpanel main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Git Version Control will show its progress in your terminal window as it completes the deployment:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Enumerating objects: 32, &lt;span class="k"&gt;done&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt;
Counting objects: 100% &lt;span class="o"&gt;(&lt;/span&gt;32/32&lt;span class="o"&gt;)&lt;/span&gt;, &lt;span class="k"&gt;done&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt;
Delta compression using up to 4 threads
Compressing objects: 100% &lt;span class="o"&gt;(&lt;/span&gt;18/18&lt;span class="o"&gt;)&lt;/span&gt;, &lt;span class="k"&gt;done&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt;
Writing objects: 100% &lt;span class="o"&gt;(&lt;/span&gt;19/19&lt;span class="o"&gt;)&lt;/span&gt;, 15.08 KiB | 3.77 MiB/s, &lt;span class="k"&gt;done&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt;
Total 19 &lt;span class="o"&gt;(&lt;/span&gt;delta 11&lt;span class="o"&gt;)&lt;/span&gt;, reused 0 &lt;span class="o"&gt;(&lt;/span&gt;delta 0&lt;span class="o"&gt;)&lt;/span&gt;
remote: Recieved update on checked-out branch, queueing deployment.
remote: &lt;span class="nt"&gt;---&lt;/span&gt;
remote: apiversion: 3
remote: func: create
remote: module: VersionControlDeployment
remote: result:
remote: data:
remote: deploy_id: 17
remote: log_path: /home/cranewif/.cpanel/logs/vc_1604266002.21772_git_deploy.log
remote: repository_root: /home/cranewif/repositories/gatsby-cpanel-deploy
remote: sse_url: /sse/UserTasks/00000000_5f9f2812355a77/vc_1604266002.21772_git_deploy.log
remote: task_id: 00000000/5f9f2812355a77
remote: timestamps:
remote: queued: &lt;span class="s1"&gt;'1604266002.23371'&lt;/span&gt;
remote: errors: ~
remote: messages: ~
remote: metadata: &lt;span class="o"&gt;{}&lt;/span&gt;
remote:
remote: status: 1
remote: warnings: ~
To ssh://jlrezac.com/home/cranewif/repositories/gatsby-cpanel-deploy
   494f663..57b1676 main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In theory, you could also set up your cPanel remote in the &lt;code&gt;public&lt;/code&gt; folder, but keep in mind that &lt;code&gt;gatsby build&lt;/code&gt; erases the contents of the &lt;code&gt;public&lt;/code&gt; folder every time it runs, so you would need to keep your &lt;code&gt;.cpanel.yml&lt;/code&gt; file in the same directory as your Gatsby files and copy it along with &lt;code&gt;.gitignore&lt;/code&gt; over each time you re-built your site. I'm interested in this solution, so if you try it, let me know how it works out for you!&lt;/p&gt;

&lt;p&gt;Thank you to Eric Janto for getting me started on &lt;a href="https://www.ericjanto.com/deploy-gatsby-cpanel/"&gt;deploying a Gatsby site using Git Version Control&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This is my first real post on Dev.to. I'm excited to hear what you think!&lt;/p&gt;

</description>
      <category>gatsby</category>
      <category>react</category>
      <category>javascript</category>
      <category>git</category>
    </item>
  </channel>
</rss>
