<?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: Jay Delisle</title>
    <description>The latest articles on DEV Community by Jay Delisle (@jdelisle).</description>
    <link>https://dev.to/jdelisle</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%2F501221%2Ffdb3240f-bb08-4785-ae70-72eaa81d3c63.jpeg</url>
      <title>DEV Community: Jay Delisle</title>
      <link>https://dev.to/jdelisle</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jdelisle"/>
    <language>en</language>
    <item>
      <title>My Year In Review - 2020</title>
      <dc:creator>Jay Delisle</dc:creator>
      <pubDate>Wed, 20 Jan 2021 05:00:00 +0000</pubDate>
      <link>https://dev.to/jdelisle/my-year-in-review-2020-15l0</link>
      <guid>https://dev.to/jdelisle/my-year-in-review-2020-15l0</guid>
      <description>&lt;p&gt;2020 was a year to remember. It had a lot of down points for sure. But just like anytime in life, there is always ups AND downs. So, to start the new year I wanted to look back at 2020 and go over some of the good things that happened.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. My First Software Engineering Job
&lt;/h2&gt;

&lt;p&gt;To start the year, I started work at my first software engineering job. I have a degree in mechanical engineering and was working in that field before making the switch to software engineering (I'll have a blog post on how I switched careers in the future - stay tuned!). I was miserable in my last job and just was not enjoying it whatsoever. I knew software was the route I wanted to go. After just over a year of learning software development - I had my first offer.   &lt;/p&gt;

&lt;p&gt;I love the work I do now. I'm a Test Automation Engineer and I primarily work with Python, which is great. Through this year of work, I improved upon my python skills tremendously. I gained real world development experience in python, testing, SQL and database usage, and much more. It was a year of learning. I had to learn about the tech stack in use, I had to learn the testing framework that we used, the codebase, and the standards that we followed. I look forward to the coming year as I continue to grow more and more!  &lt;/p&gt;

&lt;h2&gt;
  
  
  2. I Launched My First Website
&lt;/h2&gt;

&lt;p&gt;This year was the year I developed and launched my first live website - This blog site! This was a big accomplishment for me. My day job doesn't deal with web development. It is something I just like and continue to learn more about on the side. Through the year I continued to improve my python skills at work and my web development skills in the after hours of work. I got to the point where I was feeling confident and decided to launch my personal blog site. I intend for this blog to be a place for others to follow along and learn with me as I document my journey and new findings.  &lt;/p&gt;

&lt;p&gt;I will say, if you want to learn to code, or get better, then just build and launch something. I learned more in the two months after launching my site than I did the 6 months prior. Between figuring out how to do things from other sites and fixing errors and bugs I learned so much. I love &lt;a href="https://jamstack.org/"&gt;Jamstack&lt;/a&gt;, so I started looking into &lt;a href="https://jamstack.org/generators/"&gt;Static Site Generators&lt;/a&gt; and feel they are a great tool. This was the tech that started my web development journey and you can definitely expect more posts on SSG's and Jamstack to come!  &lt;/p&gt;

&lt;h2&gt;
  
  
  3. Started Blogging
&lt;/h2&gt;

&lt;p&gt;I always wanted to have/start a blog. I love teaching others. I love teaching others through my experience even more. I like to be real with people and by starting this blog, I can help others learn to code, learn new tech, or help them solve a problem. Blogging is also a great way to document your journey, what you have learned and are continuing to learn. It makes writing a year in review recap blog post easier too! ;) I look forward to continuing to build my technical writing skills, document my journey, and helping others through blogging this coming year.   &lt;/p&gt;

&lt;h2&gt;
  
  
  4. Skills Improved
&lt;/h2&gt;

&lt;p&gt;Through this year I learned new technologies and improved upon my skills as a developer.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Python - have a deeper understanding and fluency in the language which helps me in my career&lt;/li&gt;
&lt;li&gt;SQL - learned how to query and work with databases and continue to improve upon my SQL and database skillset at my day job&lt;/li&gt;
&lt;li&gt;Static Site Generators - as mentioned above I love SSG's and feel they are a great tool for web development today. This year I used mainly two when developing and practicing my web development skills

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.11ty.dev/"&gt;Eleventy&lt;/a&gt; - which this blog is built with&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://gohugo.io/"&gt;Hugo&lt;/a&gt; - I find it easy to work with and fits my development process well&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Tailwind - I used tailwind css to build this site and to be honest, feel I will use it on every project going forward. It is just a pleasure to use for me. I like keeping my HTML and styling together - less file switching and better efficiency.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Yes, 2020 was a year that will be remembered, for obvious reasons, but there was still a lot of good to come out of it!  &lt;/p&gt;

&lt;p&gt;I look forward to the new year as I continue to grow as an engineer, write more blog posts, and help others. Stay tuned for my next post on my goals and learning path for this year!  &lt;/p&gt;

&lt;p&gt;What was your biggest achievement of 2020? &lt;a href="https://twitter.com/delisle_domain"&gt;Follow me on Twitter&lt;/a&gt; and let me know!&lt;/p&gt;

&lt;p&gt;Stayed tuned for my next blog &lt;a href="https://www.thedelisledomain.com/blogs"&gt;here&lt;/a&gt; - on my learning goals for this year!&lt;/p&gt;

&lt;p&gt;Originally posted @ &lt;a href="https://www.thedelisledomain.com/blogs/my-year-in-review-2020/"&gt;Delisle Domain&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>career</category>
      <category>python</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>How to Build Site Navigation with Hugo</title>
      <dc:creator>Jay Delisle</dc:creator>
      <pubDate>Mon, 12 Oct 2020 04:00:00 +0000</pubDate>
      <link>https://dev.to/jdelisle/how-to-build-site-navigation-with-hugo-5719</link>
      <guid>https://dev.to/jdelisle/how-to-build-site-navigation-with-hugo-5719</guid>
      <description>&lt;p&gt;I have been playing around with Hugo and doing research. I've come to find that there are a few different ways to build out the site navigation. This tends to be the case and differs from each static site generator. So how do we build out the site navigation with Hugo? Let's jump right into it!  &lt;/p&gt;

&lt;p&gt;There are a few different ways, but there are two main ways that I use and find the most useful. If interested in a more in-depth explanation of the different ways, check out this &lt;a href="https://www.youtube.com/watch?v=E6bhmixcR5k&amp;amp;t=1199s"&gt;youtube&lt;/a&gt; video I found when figuring this out myself.  &lt;/p&gt;

&lt;p&gt;First, we'll go over the front matter option. Second, we will go over the completely customized navigation method. After explaining these two methods, we will see how to actually implement either option by looping over the menu option from either the front matter or custom navigation&lt;/p&gt;

&lt;h2&gt;
  
  
  Front Matter
&lt;/h2&gt;

&lt;p&gt;Using the front matter on markdown pages is a quick and easy solution. This is especially nice for smaller websites that don't use an extensive amount of pages. If you want to make a markdown file be part of your navigation just add the following in the front matter of the file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;---
menu: "mainmenu"
---
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can name the menu anything you want. This will use the &lt;code&gt;title&lt;/code&gt; attribute to name the actual navigation. Let's say you have a markdown file with the title of &lt;code&gt;About Me&lt;/code&gt;, but you want the actual navigation link to say &lt;code&gt;About&lt;/code&gt;. Then you would do the following instead of the above:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;---
menu:
    mainmenu:
        name: "About"
---
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This can be done anytime to allow you to determine the name of the navigation link.&lt;/p&gt;

&lt;h2&gt;
  
  
  Completely Custom Navigation
&lt;/h2&gt;

&lt;p&gt;The above works well for a small site, but as the number of pages grows, it doesn't scale well. I tend to just use the custom navigation from the start, it flows well with how I develop and build my sites. To build the custom navigation, just go to the &lt;code&gt;config.toml&lt;/code&gt; at the root of the Hugo project. Here we will add our custom menu. This will follow a similar pattern to the front matter when customizing the name. We will have our &lt;code&gt;menu&lt;/code&gt; and then in that menu decide what the menu will be called - &lt;code&gt;menu.nav&lt;/code&gt;. Again &lt;code&gt;nav&lt;/code&gt; here can be named whatever you want to name the menu. Then for each navigation link, we will have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;identifier&lt;/code&gt;: used to identify this specific link&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;name&lt;/code&gt;: The name you want to appear on the site's navigation&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;url&lt;/code&gt;: The &lt;strong&gt;relative&lt;/strong&gt; url to the page you want the link to go to&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;weight&lt;/code&gt;: another way of saying the order&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The above would be done for each navigation link. The below code snippet is the example code for what we talked about above, having a home page, about, and contact.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[menu]
    [[menu.nav]]
    identifier = "home"
    name = "Home"
    url = "/"
    weight = 1

    [[menu.nav]]
    identifier = "about"
    name = "About"
    url = "/about/"
    weight = 2

    [[menu.nav]]
    identifier = "connect"
    name = "Connect"
    url = "/connect/"
    weight = 3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Implement the Navigation
&lt;/h2&gt;

&lt;p&gt;Now, whether you used the front matter or custom navigation, we have to implement the navigation into the &lt;code&gt;nav&lt;/code&gt; template file. To do so, I have a &lt;code&gt;nav.html&lt;/code&gt; which holds everything in my &lt;code&gt;&amp;lt;nav&amp;gt;&amp;lt;/nav&amp;gt;&lt;/code&gt; tag and I use this as a partial - love partials!. In Hugo, we can loop over these items using the &lt;code&gt;range&lt;/code&gt; keyword and then dictate what menu to loop over. This would look like&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{{ range .Site.Menus.nav }}

{{ end }}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The only thing that would be different for you possibly is again what you name your menu. I named mine &lt;code&gt;nav&lt;/code&gt; so it is &lt;code&gt;.Site.Menus.nav&lt;/code&gt;. If you kept the &lt;code&gt;mainmenu&lt;/code&gt; from the template it would be &lt;code&gt;.Site.Menus.mainmenu&lt;/code&gt;. Within this template block, you can now just write the normal HTML for the navigation. The final code should look similar to what I have below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;ul id="nav"&amp;gt;
    {{ range .Site.Menus.nav }}
    &amp;lt;li&amp;gt;&amp;lt;a href=" {{ .URL }}"&amp;gt;{{ .Name }}&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
    {{ end }}
&amp;lt;/ul&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I hope you were able to learn some of the options to implement navigation in a Hugo site. I encourage you again to check out the youtube video linked above which helped me at the start as well. Until next time - Stay Coding and check out my other posts on my blog &lt;a href="https://www.thedelisledomain.com/blog/"&gt;here&lt;/a&gt;!&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>webdev</category>
      <category>hugo</category>
      <category>ssg</category>
    </item>
    <item>
      <title>How to Get Tailwind Integrated With a Hugo Site</title>
      <dc:creator>Jay Delisle</dc:creator>
      <pubDate>Sun, 04 Oct 2020 04:00:00 +0000</pubDate>
      <link>https://dev.to/jdelisle/how-to-get-tailwind-integrated-with-a-hugo-site-160o</link>
      <guid>https://dev.to/jdelisle/how-to-get-tailwind-integrated-with-a-hugo-site-160o</guid>
      <description>&lt;p&gt;&lt;a href="https://github.com/j-delisle/gowind"&gt;GoWind Boilerplate&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I love static site generators. They are a great tool for backend work when it comes to whipping up sites quickly. This site (as of now) is built on eleventy and uses Tailwind for the styling of it. I wanted to expand my horizons and started to look at other static site generators. As I had said in my last &lt;a href="https://www.thedelisledomain.com/blogs/select-language-go/"&gt;post&lt;/a&gt;, I started to learn &lt;a href="https://golang.org/"&gt;Go&lt;/a&gt;. After I started to learn about other SSG's I came across &lt;a href="https://gohugo.io/"&gt;Hugo&lt;/a&gt; and wanted to give it a try with those incredibly fast build speeds! In case you haven't also noticed, I love Tailwind! So I needed a way to quickly get started on a site using Hugo and with Tailwind already integrated. I did some research and found a few good resources - listed at the end of the post.  &lt;/p&gt;

&lt;p&gt;With the help of the resources - I spun up a quick boilerplate repo for myself (and whoever else would like) to use as a project starting point. &lt;strong&gt;Welcome, GoWind!&lt;/strong&gt; You can find the repo &lt;a href="https://github.com/j-delisle/gowind"&gt;here&lt;/a&gt;. Below, I will go over the minimal steps needed to have Tailwind up and running in a great development environment workflow! You can follow these steps to know how GoWind works!&lt;/p&gt;

&lt;h2&gt;
  
  
  Let's Get Started
&lt;/h2&gt;

&lt;p&gt;First, we must set up npm and install the needed dependencies. You can use&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm init -y

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

&lt;/div&gt;



&lt;p&gt;to quickly populate a &lt;code&gt;package.json&lt;/code&gt; with all the default values in your project directory. Next, we must install the needed dependencies of Tailwind. I'm going to assume that you have Hugo installed and setup. To install the dependencies needed just run&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install --save-dev autoprefixer postcss postcss-cli postcss-import tailwindcss

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

&lt;/div&gt;



&lt;p&gt;This will install tailwind and postcss with cli and import support.&lt;/p&gt;

&lt;h2&gt;
  
  
  Config Files
&lt;/h2&gt;

&lt;p&gt;After we have the dependencies installed, we must create and code our config files. First, in the project root, create a directory/folder named &lt;code&gt;assets&lt;/code&gt; and then another child directory named &lt;code&gt;css&lt;/code&gt;. Within &lt;code&gt;assets/css&lt;/code&gt; we are going to make 3 new files:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;main.css&lt;/code&gt; - this is where our tailwind directives will go&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;postcss.config.js&lt;/code&gt; - this is where we will include tailwind as a postcss plugin&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;tailwind.config.js&lt;/code&gt; - this is our tailwind config file.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Main.css
&lt;/h3&gt;

&lt;p&gt;Inside our &lt;code&gt;main.css&lt;/code&gt; file, we are going to add our tailwind directives, which while generate the needed classes to use tailwind. This is quite simple, if you are unaware of how to do this, just check out the tailwind &lt;a href="https://tailwindcss.com/docs/installation"&gt;docs&lt;/a&gt;. Since we are using postcss-import we use the &lt;code&gt;@import&lt;/code&gt; instead of &lt;code&gt;@tailwind&lt;/code&gt; to avoid issues per tailwinds directions. The file should look like the below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@import "tailwindcss/base";

@import "tailwindcss/components";

@import "tailwindcss/utilities";

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

&lt;/div&gt;



&lt;h3&gt;
  
  
  Post CSS Config
&lt;/h3&gt;

&lt;p&gt;In your &lt;code&gt;postcss.config.js&lt;/code&gt; file we are going to dictate to postcss to include tailwind as a plugin, as well as postcss-import and autoprefixer. To do so we add the following code to the &lt;code&gt;postcss.config.js&lt;/code&gt; file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;module.exports = {
    plugins: [
        require('postcss-import')({
            path: ["assets/css"]
        }),
        require('tailwindcss')('assets/css/tailwind.config.js'),
        require('autoprefixer')
    ]
}

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

&lt;/div&gt;



&lt;p&gt;Notice the path arguments for both postcss-import and tailwindcss. If you prefer to have your &lt;code&gt;postcss.config.js&lt;/code&gt; and &lt;code&gt;tailwind.config.js&lt;/code&gt; files in another location, just adjust your path to match that.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tailwind Config
&lt;/h3&gt;

&lt;p&gt;To automatically populate our &lt;code&gt;tailwind.config.js&lt;/code&gt; file we can run the command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npx tailwindcss init

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

&lt;/div&gt;



&lt;p&gt;This will create a tailwind config file at the root project directory with all the tailwind defaults. &lt;strong&gt;IMPORTANT&lt;/strong&gt; - make sure you move this file to the location that matches the path arg in your &lt;code&gt;postcss.config.js&lt;/code&gt; file for tailwind!&lt;/p&gt;

&lt;h2&gt;
  
  
  Add Tailwind to our HTML
&lt;/h2&gt;

&lt;p&gt;Lastly, we must add tailwind to our HTML head area. One thing I love about Hugo and SSGs, in general, is the power of separating code into sections, and Hugo's partials do a great job at this for me. Hugo uses Go Templating language. So we first must declare a &lt;code&gt;$styles&lt;/code&gt; variable like so:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{{ $styles := resources.Get "css/main.css" | postCSS (dict "config" "./assets/css/postcss.config.js") }}

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

&lt;/div&gt;



&lt;p&gt;Here we declare the styles var and use the Hugo functionality to get resources. Notice that the path to the css file is relative to the &lt;code&gt;assets&lt;/code&gt; directory. After grabbing the css file, we then pipe it to postCSS. Also, notice that the dict argument is telling Hugo the location of the PostCSS config file.  &lt;/p&gt;

&lt;p&gt;The last part of the code we need to add to the HTML &lt;code&gt;head&lt;/code&gt; helps us do something different depending if we are in production or not. If we are in production we want to minify the css and purge unused classes and reducing the file size. However, if we are in the development environment, we don't need nor care about this. To do this we add the following code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  {{ if .Site.IsServer }}

  {{ else }}
  {{ $styles := $styles | minify | fingerprint | resources.PostProcess }}

  {{ end }}

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

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;if .Site.IsServer&lt;/code&gt; tag determines if we are in development. It is a hugo boolean global variable that is true if using Hugo's built-in server, otherwise known as &lt;code&gt;hugo server&lt;/code&gt;. If we are in development, we just use the css. However, if we are not using the server, we are in production and Hugo Pipes will minify and purge the unused css.   &lt;/p&gt;

&lt;p&gt;And that is it! We should be up and running and able to use tailwind's utility classes! Run your hugo server and add some HTML with Tailwind to make sure everything is working properly.  &lt;/p&gt;

&lt;p&gt;In my research to do this myself, I came across a great youtube video, seen &lt;a href="https://www.youtube.com/watch?v=8Hr19zVHCbo&amp;amp;t=1s"&gt;here&lt;/a&gt; that helped me to understand the process. I modified it slightly and didn't use SASS like in the video. I like to keep things simple and just use pure CSS when needed.  &lt;/p&gt;

&lt;p&gt;That is all I have until next time - Staying Coding!&lt;/p&gt;

</description>
      <category>hugo</category>
      <category>tailwindcss</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>How to Style User-Generated Content with Tailwind CSS</title>
      <dc:creator>Jay Delisle</dc:creator>
      <pubDate>Wed, 16 Sep 2020 04:00:00 +0000</pubDate>
      <link>https://dev.to/jdelisle/how-to-style-user-generated-content-with-tailwind-css-3f9b</link>
      <guid>https://dev.to/jdelisle/how-to-style-user-generated-content-with-tailwind-css-3f9b</guid>
      <description>&lt;p&gt;Lately, I've been fiddling around with &lt;a href="https://tailwindcss.com/"&gt;Tailwind&lt;/a&gt; css and &lt;a href="https://www.11ty.dev/"&gt;Eleventy&lt;/a&gt; - (&lt;a href="https://www.thedelisledomain.com/"&gt;My site&lt;/a&gt; is built with them 😉 - love them 😍). I'm not going to talk about either of them in much detail, I'll have later posts for that! I did encounter a problem though and I had no idea how to solve it. So I wanted to quickly write about the problem and solution for others if they have the same issue.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;I had figured out how to style everything on my site using Tailwind - It is awesome and you should check it out if you haven't. I resonated with it as it goes along with my preference for writing HTML and not writing a lot of css. The problem was - I had no way of styling the user generated-markdown for my blog posts. At the time I had a few posts on the site and they weren't that good looking - which I knew and it was on my list of to-dos to update the UI of them. But I didn't know how to accomplish this. Static site generators convert markdown in HTML while using a template language that will inject content into the template language place holders. The code I had was as followed:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{{ content | safe }}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But how would I select just the &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt; tag in my blog posts and not all the h1 tags site wide?? or the &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt; tags of the user-generated content from the post?&lt;/p&gt;

&lt;h2&gt;
  
  
  The Solution
&lt;/h2&gt;

&lt;p&gt;Looking back, it was a simple solution, but at the moment I had no idea! After some quick google searching - I found quite the awesome solution. Just add a markdown class to the div holding the user-generated post! It is a simple solution and not something I came up with on my own - I came across this from the creator of &lt;a href="https://tailwindcss.com/docs/installation"&gt;Tailwind&lt;/a&gt; css himself on a forum - if you'd like to see the blog and forum where I found this info have a look &lt;a href="https://news.ycombinator.com/item?id=20656118"&gt;here&lt;/a&gt; &amp;amp; &lt;a href="https://tjaddison.com/blog/2019/08/styling-markdown-tailwind-gatsby/"&gt;here&lt;/a&gt;!   &lt;/p&gt;

&lt;p&gt;This allows for a way to specifically target the markdown generated HTML without the worry of selecting other tags site wide. So instead of my HTML looking like the above code block, it now has the added &lt;code&gt;markdown&lt;/code&gt; class in the div as seen below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{{ content | safe }}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;PS - you can name the class whatever you like - I just stuck with the convention used in the blog post above as it seems the most intuitive. By adding this class selector I can now write some css in my main.css file to style my posts. And the best part?! I still can write it in tailwind using the &lt;code&gt;@apply&lt;/code&gt; directive.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9K85ovIN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thedelisledomain.com/images/uploads/markdown.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9K85ovIN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thedelisledomain.com/images/uploads/markdown.png" alt="Markdown code!"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;From here you can customize how you style your posts however you like! Again its a simple solution that I couldn't think of in the moment, but it is a great solution nonetheless!&lt;/p&gt;

&lt;p&gt;Until next time - keep coding!&lt;/p&gt;

&lt;p&gt;Check out my blog where this post was originally posted - &lt;a href="https://www.thedelisledomain.com/blogs/how-to-style-user-generated-content-with-tailwind-css/"&gt;Here&lt;/a&gt;&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>markdown</category>
      <category>tailwindcss</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>How To Get Started Making Your Own Python Package</title>
      <dc:creator>Jay Delisle</dc:creator>
      <pubDate>Mon, 14 Sep 2020 04:00:00 +0000</pubDate>
      <link>https://dev.to/jdelisle/how-to-get-started-making-your-own-python-package-3f0n</link>
      <guid>https://dev.to/jdelisle/how-to-get-started-making-your-own-python-package-3f0n</guid>
      <description>&lt;p&gt;Over the past few days - I've been looking into getting more involved in opensource - so I've been on Github just exploring different repositories and technologies. This got me thinking - how cool would it be to have a tool or program that could help other developers up on GitHub? Most of my stuff now is just websites - not full applications. But how do I start? How can I make my software available to others to use? After googling, I quickly realized I needed to make my own package! So here we will learn the basics of how to make your own Python package!&lt;/p&gt;

&lt;h2&gt;
  
  
  What is a Package
&lt;/h2&gt;

&lt;p&gt;A python package is just a bunch of files that do something. Similar to a python module - which ends up just being a &lt;code&gt;file.py&lt;/code&gt; (module) that can be imported for use.&lt;/p&gt;

&lt;h2&gt;
  
  
  Minimum Requirements
&lt;/h2&gt;

&lt;p&gt;As I said above, this will go over everything needed at the most minimal level to create your own python package. So let's say you have this awesome idea for a package and you call it &lt;code&gt;my_package&lt;/code&gt; - so original I know 🤣.&lt;/p&gt;

&lt;h3&gt;
  
  
  File Structure
&lt;/h3&gt;

&lt;p&gt;The below shows the minimum files and directory structure needed.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;📦 my_package
 ┣ 📂 my_package
 ┃ ┗ 📜 __init__.py
 ┣ 📂 tests
 ┣ 📜 LICENSE
 ┣ 📜 README.md
 ┗ 📜 setup.py

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

&lt;/div&gt;



&lt;p&gt;The root directory is the name of our package - my_package. Then inside this, we have another directory named the same thing. This is where all of the source code for the package will live - &lt;strong&gt;Don't forget the init.py file!&lt;/strong&gt; At the root we also have&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a tests directory for all unit tests&lt;/li&gt;
&lt;li&gt;a LICENSE file so one can know the terms of use of your package - if you need help picking a license just visit &lt;a href="https://choosealicense.com/"&gt;HERE&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;a README written in markdown. This is where you explain all about your package like what it does, how to use it, how to download etc.&lt;/li&gt;
&lt;li&gt;Last is the setup.py file which is used as the build script by &lt;a href="https://packaging.python.org/key_projects/#setuptools"&gt;setuptools&lt;/a&gt;. This file contains things like the name of the package, the version, description, author, and more.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Generating Release Requirements
&lt;/h3&gt;

&lt;p&gt;After you have the needed files, we need to create the needed tools/files for a release, otherwise known as generating the &lt;a href="https://packaging.python.org/glossary/#term-Distribution-Package"&gt;distribution packages&lt;/a&gt; for the package. These tools can quickly and easily be installed with &lt;code&gt;pip&lt;/code&gt; on the command line as follows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;python3 -m pip install --user --upgrade setuptools wheel
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;after installing these run the below command from the package root directory:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;python3 setup.py sdist bdist_wheel
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;VOILA&lt;/strong&gt; and just like, that you've generated what is needed for distributing the package.&lt;/p&gt;

&lt;h2&gt;
  
  
  Upload Your Awesome Package!
&lt;/h2&gt;

&lt;p&gt;Now it is time to upload your package to the &lt;a href="https://pypi.org/"&gt;Python Package Index&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You will need to register for an account (if you don't already have one) on &lt;a href="https://pypi.org/"&gt;PyPi&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;We can use &lt;a href="https://packaging.python.org/key_projects/#twine"&gt;twine&lt;/a&gt; to now upload the package. First, you will need to install it if you don't already have it&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;python3 -m pip install --user --upgrade twine
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then run the below command to upload your package!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;python3 -m twine upload dist/*
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And just like that you now know what is the minimum needed requirements to upload a package to PyPi and be able to install that package with &lt;code&gt;pip&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Few Notes
&lt;/h2&gt;

&lt;p&gt;If you have questions on any topic here - take a look at this &lt;a href="https://packaging.python.org/tutorials/packaging-projects/"&gt;tutorial&lt;/a&gt; as it is what I followed to do so.&lt;/p&gt;

&lt;p&gt;Also, note that the above tutorial shows how to also upload to TestPyPi and how to debug and make sure your package installs correctly etc.&lt;/p&gt;

&lt;p&gt;Thanks for reading and can't wait to see what awesome package you come up with! Stay coding!&lt;/p&gt;

&lt;p&gt;Originally posted on my personal blog: &lt;a href="https://www.thedelisledomain.com/"&gt;Check it out here!&lt;/a&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>showdev</category>
      <category>beginners</category>
      <category>howto</category>
    </item>
    <item>
      <title>Git Branch Workflows and What I Use</title>
      <dc:creator>Jay Delisle</dc:creator>
      <pubDate>Thu, 03 Sep 2020 04:00:00 +0000</pubDate>
      <link>https://dev.to/jdelisle/git-branch-workflows-and-what-i-use-2fom</link>
      <guid>https://dev.to/jdelisle/git-branch-workflows-and-what-i-use-2fom</guid>
      <description>&lt;p&gt;Git is an awesome developer tool! I highly recommend getting more familiar with it if you haven't done so already, especially if you're just starting in software development. A main component of Git are branches, which allow another user to take a snapshot of the upstream code, copy it, and then allow that user to add/modify/make changes without affecting the original (master) branches code. This is used in many different ways between developers and software companies, but all in all, have the same function - to allow a better workflow of software development.&lt;/p&gt;

&lt;h2&gt;
  
  
  Workflow Types
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Basic Workflow
&lt;/h3&gt;

&lt;p&gt;The basic git workflow is really simple and thus doesn't do very well with complications added to it. The master branch is remote. When developers want to work on something in the code, they work on it on the local level and when done commit and push to master. This approach is simple and will work fine for the lone developer making small websites, but for a team of devs, this is asking for trouble. This doesn't allow for the benefit of what branches provide.&lt;/p&gt;

&lt;h3&gt;
  
  
  Feature Branch Workflow
&lt;/h3&gt;

&lt;p&gt;For a feature branch workflow, there is the master branch as in all workflows. Now let's say a developer has been assigned a task to add a new feature to the tool. He can create a new branch from the master and work on adding that feature independent of the stable production of master. While they are doing this, another dev can make another feature branch for a different feature. When the developer is done adding the feature, that feature branch can then be merged into master. This workflow keeps the feature branch and master separate, unlike the basic workflow.&lt;/p&gt;

&lt;h3&gt;
  
  
  Gitflow Workflow
&lt;/h3&gt;

&lt;p&gt;The Gitflow workflow is a newer method that was developed by Vincent Driessen in 2010. It is very similar to the feature branch workflow but has a major difference. let's say that you are working with a feature branch workflow. The developer implements a new feature in a branch and then merges their feature branch into the production master... and it breaks the site! The major plus of a gitflow workflow is added support for development. There is a master branch that is always clean and live - it is the live production code. Then downstream is the development branch which can be run daily with testing. Then when a developer adds a new feature, they merge their feature branch into the development branch. In this instance, the development branch is run through a nightly run every night of tests to test code. The development branch is merged into the master production at set intervals twice a week. This workflow allows for the pros of the feature branch workflow but adds better functionality in terms of testing and verifying new features that have been merged into the development branch.  &lt;/p&gt;

&lt;p&gt;Branches allow developers to do a lot! There are more workflows but these are the ones that I have seen to be the most useful to me in my software journey. Do a google search of git workflows to learn of others, there is a plethora of info out there by people way more versed in this subject than I am!&lt;/p&gt;

&lt;h2&gt;
  
  
  Branch Workflow I Use
&lt;/h2&gt;

&lt;p&gt;For this website, I use the Gitflow workflow. I have my master branch which I use as my production/live branch. Thanks to the awesome &lt;a href="https://www.netlify.com/"&gt;Netlify&lt;/a&gt; - whenever I push anything to the &lt;code&gt;master&lt;/code&gt; branch - my site will automatically rebuild and deploy. Under master, I have my &lt;code&gt;development&lt;/code&gt; branch. This is where I will do quick fixes and changes that won't take a while and where I verify any new code before again merging into production. Lastly, I make new branches for any new features or modifications. For example, when I rebuilt my site using &lt;a href="https://tailwindcss.com/"&gt;TailwindCSS&lt;/a&gt;, I made a new feature branch &lt;code&gt;tailwind_convert&lt;/code&gt;. Once completed this change in the new branch, I merged the code into master and deleted the branch.&lt;/p&gt;

&lt;h2&gt;
  
  
  How To...
&lt;/h2&gt;

&lt;p&gt;Now for one of the reasons I wanted to write this post - so I can remember commands! It helps to have a place of reference for this.&lt;/p&gt;

&lt;h3&gt;
  
  
  Create a New Branch
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight properties"&gt;&lt;code&gt;&lt;span class="err"&gt;git&lt;/span&gt; &lt;span class="err"&gt;checkout&lt;/span&gt; &lt;span class="err"&gt;-b&lt;/span&gt; &lt;span class="err"&gt;new_branch_name&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The above command will create a new branch and check it out at the same time. &lt;strong&gt;REMEMBER&lt;/strong&gt; you want to be in the branch that you wanted the new branch to be downstream from.&lt;/p&gt;

&lt;h3&gt;
  
  
  Change Branches
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight properties"&gt;&lt;code&gt;&lt;span class="err"&gt;git&lt;/span&gt; &lt;span class="err"&gt;checkout&lt;/span&gt; &lt;span class="err"&gt;branch_name_to_switch_to&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Delete Branches
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight properties"&gt;&lt;code&gt;&lt;span class="err"&gt;git&lt;/span&gt; &lt;span class="err"&gt;branch&lt;/span&gt; &lt;span class="err"&gt;-d&lt;/span&gt; &lt;span class="err"&gt;branch_to_delete&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Merge
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight properties"&gt;&lt;code&gt;&lt;span class="err"&gt;git&lt;/span&gt; &lt;span class="err"&gt;checkout&lt;/span&gt; &lt;span class="err"&gt;branch_to_merge_new_code_into&lt;/span&gt;
&lt;span class="err"&gt;git&lt;/span&gt; &lt;span class="err"&gt;merge&lt;/span&gt; &lt;span class="err"&gt;branch_to_merge_into_current_branch&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I hope you learned something new here and if not, at least now have a place to pull up a quick reference of git branch commands when you can't remember!&lt;/p&gt;

&lt;p&gt;As always - stay Coding!&lt;/p&gt;

&lt;p&gt;Originally posted on my personal blog: &lt;a href="https://www.thedelisledomain.com/blogs/git-branch-workflows-and-what-i-use/"&gt;Check it out here!&lt;/a&gt;&lt;/p&gt;

</description>
      <category>git</category>
      <category>100daysofcode</category>
      <category>codenewbie</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
