<?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: ZacharyP</title>
    <description>The latest articles on Forem by ZacharyP (@zacharyp).</description>
    <link>https://forem.com/zacharyp</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%2F775725%2F55b57b3c-fb07-461b-a3d7-2979a06895a3.jpg</url>
      <title>Forem: ZacharyP</title>
      <link>https://forem.com/zacharyp</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/zacharyp"/>
    <language>en</language>
    <item>
      <title>The Art of Over Engineering</title>
      <dc:creator>ZacharyP</dc:creator>
      <pubDate>Fri, 01 Jul 2022 17:47:00 +0000</pubDate>
      <link>https://forem.com/zacharyp/the-art-of-over-engineering-5bed</link>
      <guid>https://forem.com/zacharyp/the-art-of-over-engineering-5bed</guid>
      <description>&lt;p&gt;This blog was originally written &lt;a href="https://zacharyp.blog/the-art-of-over-engineering" rel="noopener noreferrer"&gt;here&lt;/a&gt; 👈🏼&lt;/p&gt;

&lt;p&gt;&lt;em&gt;simple answers are for the suckers...&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Is what I kept saying to myself while building out a &lt;em&gt;..totally unnecessary&lt;/em&gt; tool I would use to do this groundbreaking new form of communication... &lt;strong&gt;Blogging!!&lt;/strong&gt; &lt;em&gt;..hmm what's that? &lt;a href="https://dev.to/zacharyp"&gt;dev.to&lt;/a&gt;?? never heard of em.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  For why?
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;I wanted to…&lt;/em&gt; explore something I was wholly unfamiliar with and thought what better way to accomplish that than building a bespoke blogging tool for myself and write about the whole experience using that tool. A win win for the reader and me. They get spicy content , I get “&lt;em&gt;solutions&lt;/em&gt;” to every “&lt;em&gt;mistake&lt;/em&gt;” I make in my DMs.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;…everyone learns!&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The 3 Amigos
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://tauri.app/" rel="noopener noreferrer"&gt;Tauri&lt;/a&gt; - The spicy Electron competitor that allows me to build this program in almost any FE framework I want strapped with a Rust backend, capable of producing lightweight fully compatible versions for all OSs &lt;em&gt;…even those who have a strange fascination with penguins.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.slatejs.org/" rel="noopener noreferrer"&gt;Slate.js&lt;/a&gt; - A React based framework for building a rich text editor that lets me cherry pick whatever features I want packaged together in reusable components. &lt;em&gt;…Like a digital Lego set but for writing&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://supabase.com/" rel="noopener noreferrer"&gt;Supabase&lt;/a&gt; - An open source database &lt;em&gt;…and much much more&lt;/em&gt; provider capable of storing all the 1s and 0s responsible for what you’re reading now, and giving me an easy way to go an get them.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4rrs67gckntptck5b7g6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4rrs67gckntptck5b7g6.png" alt="https://res.cloudinary.com/dey85zjmf/image/upload/v1656691180/Art%20of%20over%20Eng./3amigos_bmapz6.png" width="800" height="515"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What did we learn?
&lt;/h2&gt;

&lt;p&gt;That with the power of the almighty Webview via &lt;a href="https://tauri.app/about/architecture#wry" rel="noopener noreferrer"&gt;WRY&lt;/a&gt; and &lt;a href="https://tauri.app/about/architecture#tao" rel="noopener noreferrer"&gt;TAO&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;These libraries have been absorbed in one fashion or another into the main Tauri repo.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;my Tauri app beats the breaks off of a similar app built on electron &lt;em&gt;…in theory&lt;/em&gt; when it comes to just about every countable metric. &lt;em&gt;…I counted at least to 6&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;hold on I have to break out my magnifying glass&lt;/em&gt; 🔎&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fruyo7ellbytit23r25ya.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fruyo7ellbytit23r25ya.png" alt="https://res.cloudinary.com/dey85zjmf/image/upload/v1656690814/Art%20of%20over%20Eng./EBfilesize_oloyui.png" width="413" height="25"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The energy it took your brain to read this sentence cost more than this app running at full tilt.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4ic1f1092od9lpnt5rrt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4ic1f1092od9lpnt5rrt.png" alt="https://res.cloudinary.com/dey85zjmf/image/upload/v1656690814/Art%20of%20over%20Eng./EBusage_kw6zhx.png" width="646" height="55"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Almost forgot to give everyone their grain of 🧂, I am flying by stuff at a million miles an hour and leaking details like a sieve as always do your own research.&lt;/p&gt;

&lt;h2&gt;
  
  
  Locking it down
&lt;/h2&gt;

&lt;p&gt;I get to yank out all of the &lt;code&gt;node.env === development{ let me have ALL of the spicy DB commands }&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;bs out of the blogs repo and shove all of the API logic centered around posting to the DB into the apps repo.&lt;/p&gt;

&lt;p&gt;Next.js does a great job hiding variables but good luck untangling the Rust compiled spaghetti binary and for those that can &lt;em&gt;…Gather round everyone, on the count of three..&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz1yy678wpuobw7b472t0.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz1yy678wpuobw7b472t0.gif" alt="https://res.cloudinary.com/dey85zjmf/image/upload/v1656690828/Art%20of%20over%20Eng./nerd_ybmnjc.gif" width="498" height="362"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Eventually&lt;/em&gt; I will add the ability to delete posts from the app truly isolating all of the spicy variables and API calls from  &lt;code&gt;{bigShadyTechCompany.name}&lt;/code&gt; who got pissed at me when I showed everyone that you &lt;em&gt;…yes you&lt;/em&gt; can &lt;a href="https://dev.to/zacharyp/how-fast-could-it-really-get-4m7h"&gt;bend time using 11ty&lt;/a&gt; and have not stopped since trying to obtain the keys to my demise. &lt;em&gt;…but in the mean time SEO score go BrtTtTtTtTt&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;but what about editing!?!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I dont make mistcakes, moving on.&lt;/p&gt;

&lt;h2&gt;
  
  
  If it fits it ships
&lt;/h2&gt;

&lt;p&gt;I was able to cram my Slate.js instance &lt;strong&gt;wholesale&lt;/strong&gt; into my app and like the 10th anniversary edition of Skyrim    &lt;em&gt;…yup a decade&lt;/em&gt; running &lt;strong&gt;all&lt;/strong&gt; the mods…&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhuxclxqdupwffu6lwm5n.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhuxclxqdupwffu6lwm5n.gif" alt="https://res.cloudinary.com/dey85zjmf/image/upload/v1656690820/Art%20of%20over%20Eng./todd-howard-it-just-works_vnw9s7.gif" width="498" height="278"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;but Zach! that would totally not work, what kind of scam are you trying to pull?&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This should be the part where I commend you on your observation skills and agree with you fully &lt;strong&gt;but&lt;/strong&gt; the reality of it is after some minor route futzing wouldn’t you know it that S.O.B compiled. &lt;em&gt;…I was as surprised as everyone else.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frlj3obahutx6jbfdkei4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frlj3obahutx6jbfdkei4.png" alt="https://res.cloudinary.com/dey85zjmf/image/upload/v1656690810/Art%20of%20over%20Eng./EBdesktopimage_qzciho.png" width="292" height="163"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;…Breaking News! Reading documentation actually works!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Now that only gets us halfway to the finish line and it is time to see if Supabase would play nice with the other two. I essentially took what I had refactored it to React and to make a short story even shorter it fit..&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fufyu1xwi0evs1kns3l4v.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fufyu1xwi0evs1kns3l4v.gif" alt="https://res.cloudinary.com/dey85zjmf/image/upload/v1656691042/Art%20of%20over%20Eng./jim-carrey-like-a-glove_uagp6o.gif" width="498" height="205"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This speaks to Supabases excellent DX and Tauris ability to turn most FE ingredients into a meal fit for any computers palate. &lt;em&gt;…Blog Bourgogne!&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Bring it home
&lt;/h2&gt;

&lt;p&gt;While building this one out I was ready to have heroic stories of fighting my way out of a stack trace a million lines deep using nothing but CLI prompts, the reality &lt;em&gt;…all be it a much more boring one IMO&lt;/em&gt; was a pretty linear process of build, break and repeat until I was done.&lt;/p&gt;

&lt;p&gt;In the end I am left with a clean, easy and safe way to get my message out to the masses &lt;em&gt;…all hail hypno-blogger&lt;/em&gt; and learned a bunch along the way.&lt;/p&gt;

&lt;p&gt;Woo that was a lot of words glad ya made it down here, thanks for hanging out 👋🏼&lt;/p&gt;

&lt;h2&gt;
  
  
  Housekeeping
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Could this have been all handled by a simple ‘npm run dev’ ?&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Duh.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Should someone follow this path?&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Maybe not this exact one but take the deeper meaning of it all and run with that.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;What was the point of all this?&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Telling a story helps me learn better and technical think pieces tend to be boring af.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;What’s happening with the ole &lt;a href="http://zacharyp.dev/" rel="noopener noreferrer"&gt;Zacharyp.dev&lt;/a&gt; 11ty swap??&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Chill out…&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Do you have a Twitter?&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Kinda off topic don’t ya think… but I &lt;a href="https://twitter.com/TweetZachBack" rel="noopener noreferrer"&gt;do&lt;/a&gt;&lt;/p&gt;

</description>
      <category>supabase</category>
      <category>slatejs</category>
      <category>tauri</category>
      <category>programming</category>
    </item>
    <item>
      <title>The Big Server Farm in the Sky</title>
      <dc:creator>ZacharyP</dc:creator>
      <pubDate>Wed, 06 Apr 2022 23:58:00 +0000</pubDate>
      <link>https://forem.com/zacharyp/the-big-server-farm-in-the-sky-b5c</link>
      <guid>https://forem.com/zacharyp/the-big-server-farm-in-the-sky-b5c</guid>
      <description>&lt;p&gt;This blog was originally written &lt;a href="https://zacharyp.blog/the-big-server-farm-in-the-sky" rel="noopener noreferrer"&gt;here&lt;/a&gt; 👈🏼&lt;/p&gt;

&lt;p&gt;&lt;em&gt;in a previous &lt;a href="https://dev.to/zacharyp/how-fast-could-it-really-get-4m7h"&gt;episode&lt;/a&gt; I mentioned...&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;In reality by using a combination of 11ty serverless and Netlify functions we offload almost everything to the mythical server farm in the sky...&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;...and the comment I received the most &lt;em&gt;...once&lt;/em&gt; was what is this farm, what makes it so mythical, &lt;em&gt;where are the baby goats&lt;/em&gt;?!?&lt;/p&gt;

&lt;p&gt;Like Ms. Frizzle and the gang we are going on a field trip to answer all of those questions.&lt;/p&gt;

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




&lt;h2&gt;
  
  
  Conjunction
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;...no&lt;/em&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  junction
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;...you better not&lt;/em&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  what even is a serverless function?
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;...straight to jail&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;To all those still here &lt;em&gt;...big respect&lt;/em&gt; a serverless function &lt;em&gt;...in the most basic terms&lt;/em&gt; takes work off of the end users browser and ships that data cattle to a server farm that handles all of the heavy lifting and returns the result.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;but you said server&lt;u&gt;LESS&lt;/u&gt; yet it goes to a server? I need answers!&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Serverless is the &lt;em&gt;...marketing approved&lt;/em&gt; way to say &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Server that you don't maintain, have to setup, update, scale, cry over, but get to use like you did."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If this is not a sufficient answer take it up with &lt;br&gt;
&lt;code&gt;${majorServerlessVendorMarketingDepartment.email}&lt;/code&gt;&lt;br&gt;
&lt;em&gt;...Let me get through my spiel and I will give out a reward.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;💡 A &lt;strong&gt;SALT MINES&lt;/strong&gt; amount of 🧂: I am &lt;em&gt;...attempting&lt;/em&gt; to cram a novel into a pamphlet. This is all from my narrow perspective, use it as a reference to do your own exploring through the topic. &lt;em&gt;...It's all fun and games until someone takes me seriously.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Who has the goods?
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Short answer...&lt;/em&gt; a ton of companies that provide any combination of options you could ever want.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;My answer...&lt;/em&gt; Netlify, I gravitated towards how easy it was to wire everything up and get running. &lt;em&gt;...for more flattery please unlock the season pass.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The real question is...&lt;/p&gt;

&lt;h3&gt;
  
  
  What is it good for?
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;After much boiling...&lt;/em&gt; we are left with a few main points that make serverless functions so spicy.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Scalability&lt;/strong&gt;, &lt;em&gt;...did your spicy marketing tweet go viral and now your website is in the direct gaze of the twitter hivemind??&lt;/em&gt; being able to scale in real time all of the provisioning &lt;em&gt;and zZzZzzZZzzZ...&lt;/em&gt; is handled for you by the vendor. You as the user get to focus on what is really important. &lt;em&gt;...idk selling rare Squishmellows.&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;0 server config/maintenance&lt;/strong&gt;, &lt;em&gt;...uh-oh your bespoke server is throwing an 856 THPS code can you fix it?!&lt;/em&gt; no because I made that up and wonderful people &lt;em&gt;...with titles on their LinkedIn pages&lt;/em&gt; have solved the real problems associated with running a server so we don't have to.&lt;/li&gt;
&lt;/ul&gt;




&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The $$$&lt;/strong&gt;, being able to ramp up and down with precision lowers the cost for the user. I don't have a funny story here &lt;em&gt;...all my work on Netlify is free.99&lt;/em&gt; so as a consolation prize this &lt;a href="https://www.youtube.com/watch?v=N6lYcXjd4pg&amp;amp;ab_channel=Fireship" rel="noopener noreferrer"&gt;video&lt;/a&gt; by the Fireship Youtube channel sums up what serverless functions help us avoid.&lt;/li&gt;
&lt;/ul&gt;




&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Speed&lt;/strong&gt;,&lt;em&gt;...unlike Jack Traven who only wanted to keep it above 50,&lt;/em&gt; serverless functions live much closer to the end user which makes delivery times consistently faster and more reliable at scale when compared to their bespoke breatheran. &lt;em&gt;...if only my pizza delivery could figure this one out.&lt;/em&gt; Shipping less and less JS to the end user helps bring really clean well functioning experiences to more people who before were limited by their hardware or data connection. &lt;em&gt;...rare Squishmellows for ALL!!&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;💡 A few things to think about: There are some drawbacks when it comes to serverless functions &lt;em&gt;...instead of spoiling all the fun&lt;/em&gt; I just wanted to mention them for further study by the class later.&lt;/p&gt;

&lt;p&gt;🔒 Serverless functions introduce a new set of security questions.&lt;/p&gt;

&lt;p&gt;❄️ "cold-start" or when a server needs to boot up when it is used potentially causing lag &lt;em&gt;...like your car in the winter&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;🐞 Debugging becomes &lt;em&gt;...interesting&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;...if you made it THIS far 🎉 Congratulations 🎉 as promised baby goats..&lt;/em&gt;&lt;/p&gt;

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




&lt;p&gt;Thanks for reading 👋🏼 do your own research and check me out on &lt;a href="https://twitter.com/TweetZachBack" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;! &lt;/p&gt;




&lt;h3&gt;
  
  
  TLDR
&lt;/h3&gt;

&lt;p&gt;Serverless functions provide a ton of useful features for both the developers and the end users by shipping the giant JS data cattle to a server farm near you..&lt;/p&gt;

&lt;p&gt;My data cattle on the server farm:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F88t29o5aocczju6meba4.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F88t29o5aocczju6meba4.gif" alt="Data cattle on the server farm" width="498" height="278"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>serverless</category>
      <category>netlify</category>
      <category>javascript</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Using 11ty to bend time</title>
      <dc:creator>ZacharyP</dc:creator>
      <pubDate>Wed, 30 Mar 2022 23:44:00 +0000</pubDate>
      <link>https://forem.com/zacharyp/how-fast-could-it-really-get-4m7h</link>
      <guid>https://forem.com/zacharyp/how-fast-could-it-really-get-4m7h</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;This blog was originally written on &lt;a href="https://zacharyp.blog/using-11ty-to-bend-time" rel="noopener noreferrer"&gt;Zacharyp.blog&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;With my site converted to Next.js with all the fun things it brings to the table I thought wow &lt;em&gt;so fast&lt;/em&gt; , &lt;em&gt;so nice&lt;/em&gt; even lugging around all that JS, life was great..&lt;/p&gt;




&lt;h3&gt;
  
  
  Enter &lt;a href="https://www.11ty.dev/" rel="noopener noreferrer"&gt;11ty&lt;/a&gt; and it’s &lt;em&gt;0...&lt;/em&gt; &lt;em&gt;wait really... 0&lt;/em&gt; boilerplate JS?!?
&lt;/h3&gt;

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

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;How does that even work?  how are things functional??  Zach you are lying I was taught that JS is  the answer to all my functional hopes and dreams...&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So let me give you the grand overview &lt;em&gt;...I promise it's not magic&lt;/em&gt; , with more in-depth looks into how to achieve this yourself in the future.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;once I figure it out for myself 😅&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Lets set the stage.
&lt;/h2&gt;

&lt;p&gt;The old and busted &lt;a href="https://www.zacharyp.dev/" rel="noopener noreferrer"&gt;ZacharyP.dev&lt;/a&gt; is built mainly using &lt;a href="https://nextjs.org/docs/getting-started" rel="noopener noreferrer"&gt;Next.js&lt;/a&gt; and &lt;a href="https://chakra-ui.com/" rel="noopener noreferrer"&gt;Chakra-UI&lt;/a&gt; two wonderful tools I  recommend checking out &lt;em&gt;butttt&lt;/em&gt; they are built on top of React making that JS bundle &lt;strong&gt;thick&lt;/strong&gt; by default. I am giving up a lot of that minty fresh UX these tools provide for raw speed.&lt;/p&gt;

&lt;p&gt;The new hotness is being built using &lt;a href="https://www.11ty.dev/docs/" rel="noopener noreferrer"&gt;11ty&lt;/a&gt; and &lt;a href="https://mozilla.github.io/nunjucks/" rel="noopener noreferrer"&gt;Nunjuks&lt;/a&gt; a powerful templating language that follows conventions you are used to seeing in React and will begin to realize that most of these patterns are more fundamental than you think. I chose Tailwind this time around because I can achieve the same visual results but for a fraction of the cost &lt;em&gt;anddd it’s an excuse to learn it..&lt;/em&gt; &lt;/p&gt;

&lt;p&gt;Now the allure of absolutely 0 JS is amazing and never having to &lt;em&gt;&lt;code&gt;document.&lt;/code&gt;&lt;/em&gt; anything ever again would be sensational but the reality of it is like Thanos...&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F99olm3gec8fkecg5hanh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F99olm3gec8fkecg5hanh.png" alt="JS is inevitable" width="606" height="288"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Plot twist... I lure you in with claims of 0 client side JS and just when you think you’ve dodged the weight of the bundle it sneaks up behind you...&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In reality by using a combination of &lt;a href="https://www.11ty.dev/docs/plugins/serverless/" rel="noopener noreferrer"&gt;11ty serverless&lt;/a&gt; and &lt;a href="https://docs.netlify.com/functions/overview/" rel="noopener noreferrer"&gt;Netlify functions&lt;/a&gt; we offload almost everything to the mythical server farm in the sky and take a webpage built on &lt;a href="https://nextjs.org/docs/getting-started" rel="noopener noreferrer"&gt;Next.js&lt;/a&gt;/&lt;a href="https://chakra-ui.com/" rel="noopener noreferrer"&gt;Chakra-UI&lt;/a&gt; from a respectable:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F83hzzvx9ky0vmkbk5kr0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F83hzzvx9ky0vmkbk5kr0.png" alt="NextJS site Google inspect build stats" width="722" height="32"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;to the 11ty/Tailwind builds ridiculous:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnzv8ktipjhg3aawudfqb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnzv8ktipjhg3aawudfqb.png" alt="11ty site Google inspect build stats" width="724" height="35"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Same content, same styling, same functionality but the race was not even close 11ty wins by a mile.
&lt;/h3&gt;




&lt;p&gt;💡 BIG GRAIN OF 🧂: The NextJS build is &lt;u&gt;&lt;strong&gt;not&lt;/strong&gt;&lt;/u&gt; taking advantage of any serverless functions which would certainly close the gap. The comparison is to the current live builds and done in separate incognito mode windows. &lt;/p&gt;

&lt;p&gt;💡 When the project is completed a much broader comparison will be done to see how accurate the small scale test was. &lt;/p&gt;




&lt;h2&gt;
  
  
  For my final party trick
&lt;/h2&gt;

&lt;p&gt;I use a &lt;a href="https://docs.netlify.com/configure-builds/on-demand-builders/" rel="noopener noreferrer"&gt;Netlify On-demand Builder&lt;/a&gt; set up to update the live site without having to rebuild the whole thing every time a new blog is posted... &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;I can hear everyone now... but Zach it’s a &lt;strong&gt;static&lt;/strong&gt; site what sort of witchcraft did you tap into?!?&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5clvwgj1a2wy3igev39a.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5clvwgj1a2wy3igev39a.gif" alt="They're a witch! gif" width="220" height="135"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To that I respond with a series of buzz words..&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Edge CDN: &lt;a href="https://www.youtube.com/watch?v=3hScMLH7B4o&amp;amp;ab_channel=IDGTECHtalk" rel="noopener noreferrer"&gt;TLDR&lt;/a&gt; &lt;em&gt;or&lt;/em&gt; &lt;a href="https://www.youtube.com/watch?v=cEOUeItHDdo&amp;amp;ab_channel=IBMTechnology" rel="noopener noreferrer"&gt;Deep dive&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://docs.netlify.com/configure-builds/on-demand-builders/#time-to-live-ttl" rel="noopener noreferrer"&gt;Time to live (TTL)&lt;/a&gt; &lt;em&gt;hope you like reading&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=6FyXURRVmR0&amp;amp;ab_channel=SimplyExplained" rel="noopener noreferrer"&gt;Caching&lt;/a&gt; &lt;em&gt;a general explanation&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Simply put...&lt;/em&gt; On-demand Builders are serverless functions used to generate web content as needed that’s automatically cached on Netlify’s Edge CDN. They enable you to build pages for your site when a user visits them for the first time and then cache them at the edge for subsequent visits. &lt;/p&gt;

&lt;p&gt;You pair that with the TTL which causes a “rebuild” to occur on the server which is how we can update the live site without having to run a full on deploy &lt;em&gt;...thank you Netlify docs for that perfect explanation..&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;💡 &lt;strong&gt;This is a work in progress I’ll check in as it comes along&lt;/strong&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Thanks for reading 👋🏼 and check me out on &lt;a href="https://twitter.com/TweetZachBack" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; !
&lt;/h3&gt;




&lt;h2&gt;
  
  
  TLDR
&lt;/h2&gt;

&lt;p&gt;I am taking my old and busted NextJS website and replacing it with the shiny new 11ty one, shaving a lifetime off of load times without changing how it looks or functions. &lt;/p&gt;

&lt;p&gt;Me with my new 11ty site &lt;em&gt;when it’s done...&lt;/em&gt;&lt;/p&gt;

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

</description>
      <category>11ty</category>
      <category>netlify</category>
      <category>serverless</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Letting it all hang out</title>
      <dc:creator>ZacharyP</dc:creator>
      <pubDate>Tue, 08 Feb 2022 16:21:00 +0000</pubDate>
      <link>https://forem.com/zacharyp/letting-it-all-hang-out-4mc9</link>
      <guid>https://forem.com/zacharyp/letting-it-all-hang-out-4mc9</guid>
      <description>&lt;p&gt;This is repost of a blog I wrote &lt;a href="https://zacharyp.blog/letting-it-all-hang-out" rel="noopener noreferrer"&gt;here!&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Putting yourself out there.
&lt;/h2&gt;

&lt;p&gt;This week I launched &lt;a href="https://www.zacharyp.dev/" rel="noopener noreferrer"&gt;zacharyp.dev&lt;/a&gt; my own personal site dedicated to showing off my work and be a test bench for new techniques. I have been working on this for the better part of 2ish months and I finally felt ready current bugs and all... to show off to the world. I am no stranger to putting out content in one form or another but always as a side thing like music or video games, this was a whole new ball game because it is directly linked to what I hope in the not so distant future is my career.&lt;/p&gt;

&lt;p&gt;I would be lying if I said I was not nervous over this but at first I could not place why and I just chalked it up to simple new project nerves. Now that I have had time to sit in this feeling I realized that up until this point I have not had anything forward facing announcing my work at becoming a developer. I have been on this path relatively in the dark, with the launching of this site along with finally.. getting my social presence in order that abruptly changed.&lt;/p&gt;

&lt;h2&gt;
  
  
  It all became real.
&lt;/h2&gt;

&lt;p&gt;For those that did not know as of this post id say we are at about the 10 month mark since I wrote my first line of code ever. Launching that site is the culmination of those 10 months and the hard work that has gone into it. Launching the site is me fully committing all the practice rounds are over it's time to perform and that realization is what made me more nervous than anything, because with that leap comes the possibility of total failure. Now I am not all doom and gloom I actually have a supreme confidence in my ability to see this through but acknowledging those downsides is what fuels that next step and the one after that.&lt;/p&gt;

&lt;p&gt;All this rambling is to say I had a simple choice, either let fear of failure break me or let it be the fuel that pushes me forward. Both choices are neither right nor wrong, fear is the bodies way to get you to pay better attention. Fear can be harnessed like any other emotion to boil things down to what really is important to yourself. To me the fear of regret for not trying to see this through is a harder pill to swallow than the fear of financial hardship.&lt;/p&gt;

&lt;p&gt;I will leave yall with this, I've been reading Dune again and the movie was dope for a part 1.. but the "Litany Against Fear" sums this all up nicely..&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“I must not fear. Fear is the mind-killer. Fear is the little-death that brings total obliteration. I will face my fear. I will permit it to pass over me and through me. And when it has gone past I will turn the inner eye to see its path. Where the fear has gone there will be nothing. Only I will remain.” -Frank Herbert, Dune&lt;/p&gt;
&lt;/blockquote&gt;

</description>
    </item>
    <item>
      <title>Programming Productivity</title>
      <dc:creator>ZacharyP</dc:creator>
      <pubDate>Fri, 21 Jan 2022 19:47:00 +0000</pubDate>
      <link>https://forem.com/zacharyp/programming-productivity-4pg3</link>
      <guid>https://forem.com/zacharyp/programming-productivity-4pg3</guid>
      <description>&lt;p&gt;This post was originally written on my &lt;a href="https://zacharyp.blog/programming-productivity" rel="noopener noreferrer"&gt;blog&lt;/a&gt; &lt;/p&gt;




&lt;h2&gt;
  
  
  I Know..
&lt;/h2&gt;

&lt;p&gt;..there are a million ways to optimize writing code, but how do you know what ones actually make your life easier?? Easy you read this article and I'll tell you..&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqm0lf6ki744swf72ofnl.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqm0lf6ki744swf72ofnl.gif" alt="https://c.tenor.com/YctxttUmGMYAAAAC/forehead-slap-slapping-forehead.gif" width="498" height="274"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The real answer is you play around with stuff and see what you like and what you don't. I just wanted an excuse to talk about some of the things that have really helped me out as someone who is brand new to the development party and want to get up to speed.&lt;/p&gt;

&lt;h3&gt;
  
  
  Take better notes
&lt;/h3&gt;

&lt;p&gt;This sounds simple when you say it out loud and looks different for everyone but taking good notes is more than just jotting down some stuff in a notebook you never look at again. This is a shameless plug for &lt;a href="https://www.notion.so/product" rel="noopener noreferrer"&gt;Notion&lt;/a&gt; as that is the tool I have used for note taking since the beginning and it's what I am most comfortable with but their are plenty of other tools that serve the same function. &lt;em&gt;Check out this &lt;a href="https://www.ntaskmanager.com/blog/best-notion-alternatives/" rel="noopener noreferrer"&gt;blog&lt;/a&gt; by NTask to check those out.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Notion provides me a way to link together any content revolving around a topic/project in one place, which for a scatterbrain like myself is key to being able to keep my focus which in turn helps me write code faster and more efficiently.  &lt;em&gt;Check out &lt;a href="https://www.youtube.com/channel/UCfqj2oq6LVmR3ybC2nfjqKg" rel="noopener noreferrer"&gt;August Bradley&lt;/a&gt;&lt;/em&gt; &lt;em&gt;on YouTube my set up is derived from his videos.&lt;/em&gt; Notion has tools that make it easy to capture the information as well making the research process easier not having to slow down and enter all that information yourself.&lt;/p&gt;

&lt;p&gt;I tend to scrape as much information as I can into the bucket while I am researching a topic and then trim it down later leaving me with just the good bits and I don't have to have a 1000 chrome tabs open just one neat and organized Notion database.&lt;/p&gt;

&lt;h3&gt;
  
  
  Lose the battle, Win the war
&lt;/h3&gt;

&lt;p&gt;We have all been staring at our screens, 4hrs deep, completely bewildered at why this little thing does not want to do what we tell it to do, nothing build breaking, and likely something no one notices but you but it is all consuming like a blackhole where nothing else gets done. Does this sound familiar??&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvkviupyjyogojg8wjiio.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvkviupyjyogojg8wjiio.gif" alt="https://assets-global.website-files.com/5f3c19f18169b62a0d0bf387/60d33bed2f9c710d07b87e46_j_nvR0IzCf_p7I48K25FPArjljVHgn9nyzrTjs9Y3fN6SWjrhZN31UtY7K0mLmMc11PA3ITO3Pdx2R4aq3ZKnh-Tkp5Id1pwFUssGEYZVNy2dfrtsvZ2aC2bZbrnUyd-gqgKKEja.gif" width="220" height="164"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This may be a tough one to hear but.. it's &lt;strong&gt;ok&lt;/strong&gt;, letting that issue go is the first step at fixing that other bug no one notices but you. All jokes aside I struggled with this for a long time in more aspects than just coding and it is a daily struggle to not get sucked into that vortex but it has immeasurably increased my overall programing speed.&lt;/p&gt;

&lt;p&gt;I use a system now that if the issue is not breaking the site and I have spent more than 30 min with no progress, I drop a TODO down and come back to it once I have finished building out what I can. &lt;em&gt;check out &lt;a href="https://marketplace.visualstudio.com/items?itemName=Gruntfuggly.todo-tree" rel="noopener noreferrer"&gt;Todo Tree&lt;/a&gt;&lt;/em&gt; &lt;em&gt;a great vsCode extension I use to handle that.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Take a break and a drink
&lt;/h3&gt;

&lt;p&gt;...Seriously go do that I'll wait.&lt;/p&gt;

&lt;p&gt;This goes hand in hand with the last point. I know that everyone reading this has experienced this moment where you are so focused in &lt;em&gt;anddddddd&lt;/em&gt; it's tomorrow, you haven't eaten since who knows and water seems a distant memory, breaks? never heard of them.&lt;/p&gt;

&lt;p&gt;I commend those who can work like that but for me my brain is mush around the hour and a half mark if I don't step back and take a break. I try and take a small break every hour or so to look away from my screens, get a drink, and stretch. I tend to have some of my most insightful thoughts about a project I am working on in those moments.&lt;/p&gt;

&lt;h3&gt;
  
  
  What about you?
&lt;/h3&gt;

&lt;p&gt;Was this helpful? Am I blowing smoke?? Want to yell at me about how I missed an important point???&lt;/p&gt;

&lt;p&gt;Find me on &lt;a href="https://twitter.com/TweetZachBack" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, &lt;a href="https://github.com/ZachCodedThat" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/zachary-przybilski/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;, &lt;a href="https://dev.to/zacharyp"&gt;Dev&lt;/a&gt;, &lt;a href="https://www.zacharyp.dev/" rel="noopener noreferrer"&gt;Portfolio&lt;/a&gt; and let me know!&lt;/p&gt;

&lt;p&gt;Until next time!&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>programming</category>
      <category>productivity</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Auto blog scraper in your GH profile using GH Actions.</title>
      <dc:creator>ZacharyP</dc:creator>
      <pubDate>Tue, 04 Jan 2022 20:08:00 +0000</pubDate>
      <link>https://forem.com/zacharyp/auto-blog-scraper-in-your-gh-profile-using-gh-actions-39gb</link>
      <guid>https://forem.com/zacharyp/auto-blog-scraper-in-your-gh-profile-using-gh-actions-39gb</guid>
      <description>&lt;p&gt;Wana get right to it click here &lt;/p&gt;

&lt;h2&gt;
  
  
  What
&lt;/h2&gt;

&lt;p&gt;...is an auto blog scraper? A small tool used to take a look at your blog of choice every so often and automatically updates your &lt;a href="https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-readmes" rel="noopener noreferrer"&gt;GitHub readMe&lt;/a&gt; with a nice list of links to the most recent posts all hands free. Here is &lt;a href="https://github.com/ZachCodedThat" rel="noopener noreferrer"&gt;mine&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;and a GitHub Action?? A way to automate processes I don't want to do anymore. This rabbit hole runs deep but for the scope of this tutorial we are only going to scratch the surface of that iceberg. &lt;/p&gt;

&lt;p&gt;This uses a GitHub Action called &lt;a href="https://github.com/gautamkrishnar/blog-post-workflow" rel="noopener noreferrer"&gt;blog-post-workflow&lt;/a&gt; a brilliant tool which does all of the heavy lifting behind the scenes to make this simple workflow possible. &lt;/p&gt;




&lt;h2&gt;
  
  
  Why
&lt;/h2&gt;

&lt;h2&gt;
  
  
  &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2au3kzt5ib54tcyrchka.gif" alt="Because we can" width="268" height="268"&gt;
&lt;/h2&gt;

&lt;h2&gt;
  
  
  How &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;I am under the assumption you already have a GitHub readME since you have made it this far down the page, but if not here is a bonus micro tutorial.&lt;/em&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a new folder with the same name as your GitHub username.&lt;/li&gt;
&lt;li&gt;Create a README.md file in that repo and push it to GitHub.&lt;/li&gt;
&lt;li&gt;Continue with your regularly scheduled tutorial.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;1:&lt;/strong&gt; Open the readME repo in your code editor of choice.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;2:&lt;/strong&gt; Create a folder named &lt;code&gt;.github&lt;/code&gt; and a folder named &lt;code&gt;workflows&lt;/code&gt; within the new &lt;code&gt;.github&lt;/code&gt; folder. &lt;/p&gt;




&lt;p&gt;&lt;strong&gt;3:&lt;/strong&gt; Create a file within the &lt;code&gt;workflows&lt;/code&gt; folder named &lt;code&gt;blog-post-workflow.yml&lt;/code&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0n819hzjd99yu6qpjpuu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0n819hzjd99yu6qpjpuu.png" alt="Folder structure" width="315" height="153"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;4:&lt;/strong&gt; Within that new &lt;code&gt;.yml&lt;/code&gt; file paste the following code and replace &lt;br&gt;
  &lt;strong&gt;&lt;code&gt;{ YOUR_FEED_HERE }&lt;/code&gt;&lt;/strong&gt; with whatever blogs RSS feed you want to &lt;a href="https://dev.to/feed/zacharyp"&gt;scrape&lt;/a&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;```yaml
 name: Latest blog post workflow
 on:
    schedule: # Sets the Action to trigger based on time
      - cron: "0 0 * * *" # triggers the action every hour 
    workflow_dispatch: # Allows you to run the action manually 


 jobs:
    update-readme-with-blog:
      name: Update this repo's README with latest blog posts
      runs-on: ubuntu-latest
      steps:
        - name: Checkout
          uses: actions/checkout@v2
        - name: Pull in dev.to posts
          uses: gautamkrishnar/blog-post-workflow@master
          with:
            feed_list: { YOUR_FEED-HERE }

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

&lt;/div&gt;



&lt;h3&gt;
  
  
  Some things to note:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;u&gt;&lt;a href="https://www.ibm.com/docs/en/db2oc?topic=task-unix-cron-format" rel="noopener noreferrer"&gt;cron&lt;/a&gt;&lt;/u&gt;&lt;/strong&gt;:  is a fancy way to tell time and in this case is how we set a timer on our bot &lt;em&gt;in this case once every day at midnight.&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;u&gt;workflow_dispatch&lt;/u&gt;&lt;/strong&gt;: is what runs through the jobs provided to the bot and attempts to run them. &lt;em&gt;this is where if an error occurs it will provide what step in the job is causing an issue.&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;5:&lt;/strong&gt; In the &lt;code&gt;README.md&lt;/code&gt; file paste the following code where you want the list to show up with a link to the main page of that blog. Just replace &lt;code&gt;{BLOGS_URL}&lt;/code&gt; with the actual URL to your blog.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;```md 

 &amp;lt;!-- BLOG-POST-LIST:START --&amp;gt;
 &amp;lt;!-- BLOG-POST-LIST:END --&amp;gt;

 ➡️ [more blog posts...]({BLOGS_URL})

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

&lt;/div&gt;






&lt;p&gt;&lt;strong&gt;6:&lt;/strong&gt; Push changes to GH and pat yourself on the back because you have finished! From here the Action will fire every hour until told otherwise, all you need to do now is go write the blog post you've been putting off for awhile. 🎉🎉🎉&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;💡 Side-Note: You can manually run this action by...&lt;/strong&gt;  &lt;/p&gt;

&lt;p&gt;First: Going to the Actions tab in the README repo on GitHub&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi00idgh0xto2do0lpk7c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi00idgh0xto2do0lpk7c.png" alt="GitHub repo navigation bar Highlighted is the Actions tab" width="800" height="96"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next: Click on the Action and click on the run workflow button to manually run the action.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdohycnnpnznvdrfte9i2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdohycnnpnznvdrfte9i2.png" alt="Shows the submenu for the individual Actions, showing where the manual run button is." width="363" height="243"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  TLDR
&lt;/h3&gt;

&lt;p&gt;Use GH actions to automate the updating of your GH profile with any new blog posts using a tool called &lt;strong&gt;blog-post-workflow&lt;/strong&gt;. &lt;em&gt;...you know this is a tutorial right??&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;Me writing all this fun and engaging content for everyone: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr6412ojbvm468tt9g5yj.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr6412ojbvm468tt9g5yj.gif" alt="Bruce Almighty typewriter scene gif" width="426" height="240"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Writing this tutorial was a hands on way for me to try and better &lt;br&gt;
understand the subject and too practice technical writing. Thank you for reading 👋🏼 Follow me on &lt;a href="https://twitter.com/TweetZachBack" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; to watch me teach myself how to code by teaching everyone else.&lt;/p&gt;

</description>
      <category>github</category>
      <category>readme</category>
      <category>markdown</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
