<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Posts from Cap&apos;n Ola</title><description>Ahoy, seasoned JavaScript developers and daring dev pirates! Join our swashbuckling crew as we embark on thrilling treasure hunts unraveling the secrets of HTML, CSS, and JavaScript, all while having a blast!</description><link>https://queen.raae.codes/posts/olavea/</link><item><title>⛵ 🔧 ~ Testing Galleon attributes with Carrd</title><link>https://queen.raae.codes/2025-04-18-testing-galleon-attributes-with-carrd/</link><guid isPermaLink="true">https://queen.raae.codes/2025-04-18-testing-galleon-attributes-with-carrd/</guid><description>I tested our own docs for Galleon attributes on our Queen Raae&apos;s github I Added the Script to the in my Carrd website 1. I clicked &quot;+ Add Element&quot; 2. I clicked…</description><pubDate>Fri, 18 Apr 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I tested our own docs for Galleon attributes on our &lt;a href=&quot;https://github.com/queen-raae/galleon-attributes&quot;&gt;Queen Raae&apos;s github&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;I Added the Script to the &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt; in my Carrd website&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;I clicked &amp;quot;+ Add Element&amp;quot;&lt;/li&gt;
&lt;li&gt;I clicked &amp;quot;&amp;lt;/&amp;gt; Embed&amp;quot; to create a new Embed element&lt;/li&gt;
&lt;li&gt;I Set Type to Code&lt;/li&gt;
&lt;li&gt;I Copy / Pasted in &lt;code&gt;&amp;lt;script async src=&amp;quot;https://cdn.jsdelivr.net/npm/@raae/galleon-attributes@1/dist/script.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;I Set the Style to &amp;quot;Hidden&amp;quot; and then &amp;quot;Head&amp;quot; for my website&apos;s &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt; element&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I used these Excellent &lt;a href=&quot;https://carrd.co/docs/building/embedding-custom-code&quot;&gt;Carrd docs&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./carrd-1.2-in-the-head-yeah.png&quot; alt=&quot;in the head&quot;&gt;&lt;/p&gt;
&lt;h1&gt;&lt;a href=&quot;https://github.com/queen-raae/galleon-attributes#test-galleon-attributes&quot;&gt;I Tested Galleon Attributes&lt;/a&gt;&lt;/h1&gt;
&lt;h2&gt;Step 1. I added a container element to hold the data&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;I clicked &amp;quot;+ Add Element&amp;quot;&lt;/li&gt;
&lt;li&gt;I clicked &amp;quot;Container&amp;quot; to create a new Container element&lt;/li&gt;
&lt;li&gt;I Added the attribute &lt;code&gt;gl-get=https://galleon.tools/v1/queen&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Step 2. I added a text element inside my container element&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;I clicked &amp;quot;+ Add Element&amp;quot;&lt;/li&gt;
&lt;li&gt;I clicked &amp;quot;Text&amp;quot; to create a new Text element&lt;/li&gt;
&lt;li&gt;I Added the attribute &lt;code&gt;gl-bind=name&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Step 3. I added an Image element inside my container element&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;I clicked &amp;quot;+ Add Element&amp;quot;&lt;/li&gt;
&lt;li&gt;I clicked &amp;quot;Image&amp;quot; to create a new Image element&lt;/li&gt;
&lt;li&gt;I Added the attribute &lt;code&gt;gl-bind-src=avatar.url&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;I Added the attribute &lt;code&gt;gl-bind-alt=avatar.alt&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Image with No Upload Blocks me from Publishing my Changes&lt;/h2&gt;
&lt;p&gt;This is where I hit my first rock right under the surface of the sea. I tried to publish my changes, but Carrd said no.&lt;/p&gt;
&lt;p&gt;The error message looked like this:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./carrd-3-unfinished-element.png&quot; alt=&quot;unfinished element&quot;&gt;&lt;/p&gt;
&lt;p&gt;I had to upload an image to make my element finished so I could publish the changes to my website.&lt;/p&gt;
&lt;h2&gt;Image with placeholder shows the placeholder, not our test image&lt;/h2&gt;
&lt;p&gt;I looked at my site, an wouldn&apos;t you guess it, I&apos;d hit another rock in the sea. I could see the image I had uploaded and NOT the image I was supposed to see, the image from our test api. Onward!&lt;/p&gt;
&lt;h2&gt;Step 4. I added a Link element inside my container element&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;I clicked &amp;quot;+ Add Element&amp;quot;&lt;/li&gt;
&lt;li&gt;I clicked &amp;quot;Link&amp;quot; to create a new Link element&lt;/li&gt;
&lt;li&gt;I Added the attribute &lt;code&gt;gl-iterate=socials&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;I Added the attribute &lt;code&gt;gl-bind-href=url&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;I Added the attribute &lt;code&gt;gl-bind=label&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;My Link doesn&apos;t work&lt;/h2&gt;
&lt;p&gt;Here I hit my third rock. I can see the link, but nothing happens when I try to cllick it. When I &amp;quot;Inspect&amp;quot; my website I see the href with the right link, see below:
&lt;img src=&quot;./carrd-4-doesnt-link.png&quot; alt=&quot;My Link doesn&apos;t work&quot;&gt;&lt;/p&gt;
&lt;p&gt;Testing Galleon attributes with Carrd&lt;/p&gt;
</content:encoded></item><item><title>⛵ 🔧 ~ Pirate&apos;s pages are weirdly unblocking</title><link>https://queen.raae.codes/2024-02-29-pirates-pages-are-weirdly-unblocking/</link><guid isPermaLink="true">https://queen.raae.codes/2024-02-29-pirates-pages-are-weirdly-unblocking/</guid><description>Pirate&apos;s pages are weirdly unblocking Recovering my childhood&apos;s piraty creativity was a ... dirty knife fight ⚔️. And THAT&apos;s why I&apos;m giving you my fav trick.…</description><pubDate>Thu, 29 Feb 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;Pirate&apos;s pages are weirdly unblocking&lt;/h1&gt;
&lt;p&gt;Recovering my childhood&apos;s piraty creativity was a ... dirty knife fight ⚔️. And THAT&apos;s why I&apos;m giving you my fav trick. My ace in the hole. I know it&apos;s not politically correct anymore, but I&apos;m giving you a gun you can take to your own creativity knife fight&lt;/p&gt;
&lt;p&gt;I recovered my childhood&apos;s piraty creativity and one tool I used is an age old and peculiar process I call the Pirate&apos;s Pages.&lt;/p&gt;
&lt;p&gt;I&apos;ve done my Pirate&apos;s Pages since 2021.
Queen Raae started YEARS before me. And spent considerable time convincing me to do them.&lt;/p&gt;
&lt;h2&gt;What are Pirate&apos;s Pages?&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;I sit down in my private pirate place with a cup of dark coffee.&lt;/li&gt;
&lt;li&gt;A fat pile of blank A4 papers in front of me and my fav fountain pen in my hand. I start a timer for 22 minutes.&lt;/li&gt;
&lt;li&gt;Now I write down EVERYTHING that pops into my head. Literally. For example:&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;«I slept like dog shaite. Woke up sweaty like a hairy pig, from a bad dream. I was back working on the ship. We were loaded to the gunnels with guests in their summer finery. Toasting tall glasses of champagne. Our skipper was drink as a skunk and not far away I saw the cops coming in their black and white rubber dinghy. We were F***ED.&lt;/p&gt;
&lt;p&gt;I guess it&apos;s because I&apos;m meeting &lt;strong&gt;(redacted)&lt;/strong&gt; tomorrow. F*******! I can&apos;t BELIEVE she can still get to me, after all these years.»&lt;/p&gt;
&lt;h2&gt;Why do I do Pirate&apos;s Pages?&lt;/h2&gt;
&lt;p&gt;Yeah it&apos;s BAD shit, pouring out. And it&apos;s REAL. That is the  WHY right there, I get the BAD shit OUT with my Pirate&apos;s Pages. That makes it easier to get my creative stuff out.&lt;/p&gt;
&lt;h2&gt;There&apos;s no wrong way to do Pirate&apos;s Pages&lt;/h2&gt;
&lt;p&gt;There&apos;s no wrong way for me to do my Pirate&apos;s Pages. And doing morning pages is not really writing. I&apos;m just dragging my pen across the page. Getting down whatever. As fast as I can. Nothing is too weird, weak, angry, evil, stupid or politically incorrect for my Pirate&apos;s Pages. Because nobody is EVER reading my Pirate&apos;s Pages. I didn&apos;t even read them MYSELF the first handful of weeks.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://pbs.twimg.com/media/GHf_nzKW8AAWGLi?format=jpg&amp;amp;name=large&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;h2&gt;Really?&lt;/h2&gt;
&lt;p&gt;I know what your thinking «You call THIS bringing a gun to a knife fight? Give me a BREAK! This isn&apos;t even a tool.»&lt;/p&gt;
&lt;h2&gt;History speaks for itself&lt;/h2&gt;
&lt;p&gt;Well I&apos;m not overstating it when I say that this tool has worked for hundreds of recovered artists. Maybe even thousands of recovered artists. Artists like &lt;a href=&quot;https://tim.blog/2015/01/15/morning-pages/&quot;&gt;Tim Ferriss&lt;/a&gt;. This tool is originally called The Morning Pages. Buy the beautiful book &lt;a href=&quot;https://www.amazon.com/Artists-Way-Spiritual-Higher-Creativity-ebook/dp/B083X758NX/&quot;&gt;The Artist&apos;s Way by Julia Cameron&lt;/a&gt; and read all about it.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://m.media-amazon.com/images/I/81bwx11MQQL._SL1500_.jpg&quot; alt=&quot;The Artist&apos;s Way cover by Julia Cameron&quot;&gt;&lt;/p&gt;
&lt;h2&gt;Since this beloved book came out in 1992, it&apos;s been praised by artists like Martin Scorsese, John Cleese and Reese Witherspoon.&lt;/h2&gt;
</content:encoded></item><item><title>⛵ 🔧 ~ Didn&apos;t you know Jamstack programming used to be illegal? Huh?</title><link>https://queen.raae.codes/2022-10-27-backstory-1/</link><guid isPermaLink="true">https://queen.raae.codes/2022-10-27-backstory-1/</guid><description>Ahoy, skill-builder pirate of Jamstackia! 👋😸🏴‍☠️ We looked into &quot;my Again Logbook 📕&quot; in my last letter, and today I&apos;ll start with the backstory of my…</description><pubDate>Thu, 27 Oct 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Ahoy, skill-builder pirate of Jamstackia!&lt;/p&gt;
&lt;p&gt;👋😸🏴‍☠️&lt;/p&gt;
&lt;p&gt;We looked into &amp;quot;my Again Logbook 📕&amp;quot; in my last letter, and today I&apos;ll start with the backstory of my plugin workbook. It&apos;s just a start, and you can start thinking about:&lt;/p&gt;
&lt;p&gt;How writing your own backstory could be good for your motivation.&lt;/p&gt;
&lt;h2&gt;HOW Jamstack programming used to be illegal back in the good old, OLD times&lt;/h2&gt;
&lt;p&gt;You probably didn&apos;t know that, but soon you will.&lt;/p&gt;
&lt;h2&gt;A long time ago, on a Bridge far, far away ....&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;./a-long-time.jpg&quot; alt=&quot;a-long-time&quot;&gt;&lt;/p&gt;
&lt;p&gt;Lance-Lotta (13) is programming on her illegal Gatsby plugin.&lt;/p&gt;
&lt;p&gt;«What are you DOING!» Shouts Lizabeth.&lt;/p&gt;
&lt;p&gt;«I&apos;m sourcing images from this piraty API thingy!» Says Lance-Lotta&lt;/p&gt;
&lt;p&gt;«Sourcery!? You KNOW how illegal Jamstack sourcery is under the city&apos;s new anti-witchcraft laws.» Says Lizabeth.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./lance-lotta-1.1.jpg&quot; alt=&quot;lance-lotta&quot;&gt;&lt;/p&gt;
&lt;p&gt;«Relax, I&apos;ll never get caught» Says Lance-Lotta.&lt;/p&gt;
&lt;p&gt;«You&apos;ll never get caught?! Like you didn&apos;t get caught last week when you &amp;quot;borrowed&amp;quot; Merlina&apos;s yellow submarine and crashed it into our bridge? Or like that time you....» Says Lizabeth.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./sinking-submarine-1.jpg&quot; alt=&quot;sinking submarine&quot;&gt;&lt;/p&gt;
&lt;p&gt;«Oh DO shut up or else.» Says Lance-Lotta.&lt;/p&gt;
&lt;p&gt;Yo-Ho-Ho and a bottle of GO! 😺&lt;/p&gt;
&lt;h2&gt;Your TODO&lt;/h2&gt;
&lt;p&gt;Write up a sentence about your idea for your backstory and email it to Lillian (7 🏴‍☠️👸) and me, that would help us a lot!&lt;/p&gt;
&lt;p&gt;🏴‍☠️😺👍&lt;br&gt;
ARR!&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Stay piraty 🏴‍☠️😺👍 and keep practicing!&lt;br&gt;
Cap&apos;n Ola Vea&lt;/p&gt;
</content:encoded></item><item><title>⛵ 🔧 ~ Could The Again Logbook 📕 help you to do your sub-task again and again?</title><link>https://queen.raae.codes/2022-10-19-again-logbook/</link><guid isPermaLink="true">https://queen.raae.codes/2022-10-19-again-logbook/</guid><description>Ahoy, skill-builder pirate of Jamstackia! 👋😸🏴‍☠️ We looked into &quot;my favorite focus tool to find out when your sub-task practice session is done, the…</description><pubDate>Wed, 19 Oct 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Ahoy, skill-builder pirate of Jamstackia!&lt;/p&gt;
&lt;p&gt;👋😸🏴‍☠️&lt;/p&gt;
&lt;p&gt;We looked into &amp;quot;my favorite focus tool to find out when your sub-task practice session is done, &lt;a href=&quot;/2022-10-13-croco-clock/&quot;&gt;the croco-clock 🐊-⏲️&lt;/a&gt;&amp;quot; in my last letter. Today I&apos;ll show you The Again Logbook 📕.&lt;/p&gt;
&lt;p&gt;We&apos;ll look at:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What The Again Logbook 📕 is,&lt;/li&gt;
&lt;li&gt;Why it can help you to do your sub-task again and again&lt;/li&gt;
&lt;li&gt;How you use The Again Logbook 📕&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;WHAT is The Again Logbook 📕?&lt;/h2&gt;
&lt;p&gt;The Again Logbook can be a little red notebook. Here is mine; the Queen bought it for me in Greece.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./The-Again-Logbook-2.3.jpg&quot; alt=&quot;The-Again-Logbook&quot;&gt;&lt;/p&gt;
&lt;h2&gt;WHY could The Again Logbook 📕 help you to do your sub-task again and again?&lt;/h2&gt;
&lt;p&gt;Firstly you decide to automate your sub-task into your dev-brain. This is good for your motivation. Your personal value increases with each sub-task you have automated into your dev-brain.&lt;/p&gt;
&lt;p&gt;Secondly, by deciding to do your sub-task six times, or whatever you choose, you confirm to yourself your decision to automate your sub-task into your dev-brain.&lt;/p&gt;
&lt;p&gt;Thirdly, if you give up before you have done your sub-task six times you loose.&lt;/p&gt;
&lt;h2&gt;HOW do you use your Again Logbook? 📕&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Set your croco-clock 🐊-⏲️ to, for example 96 minutes&lt;/li&gt;
&lt;li&gt;Make a row of tiny squares, as many as the repetitions you decided on&lt;/li&gt;
&lt;li&gt;Each time you finish your sub-task, turn one tiny square into an &amp;quot;!&amp;quot;&lt;/li&gt;
&lt;li&gt;Keep doing your sub-task again and again until your croco-clock 🐊-⏲️ goes ARRR! even past your six times, but keep making a new &amp;quot;!&amp;quot; each time&lt;/li&gt;
&lt;li&gt;Because doing them more times than you planned feels like winning&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;The_Again_Logbook-1-3.jpg&quot; alt=&quot;The_Again_Logbook&quot;&gt;&lt;/p&gt;
&lt;p&gt;Yo-Ho-Ho and a bottle of GO! 😺&lt;/p&gt;
&lt;h2&gt;Your TODO&lt;/h2&gt;
&lt;p&gt;Try it out and send Lillian (7 🏴‍☠️👸) and me a sentence about your Again Logbook 📕 experiments.&lt;/p&gt;
&lt;p&gt;🏴‍☠️😺👍&lt;br&gt;
ARR!&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Stay piraty 🏴‍☠️😺👍 and keep practicing!&lt;br&gt;
Cap&apos;n Ola Vea&lt;/p&gt;
</content:encoded></item><item><title>⛵ 🔧 ~ Could a croco-clock 🐊-⏲️ help you to focus like a pirate?</title><link>https://queen.raae.codes/2022-10-13-croco-clock/</link><guid isPermaLink="true">https://queen.raae.codes/2022-10-13-croco-clock/</guid><description>Ahoy, skill-builder pirate of Jamstackia! In my last letter, we looked into Don&apos;t let Distraction Diaz distract you. Today, I&apos;ll show you my favorite focus…</description><pubDate>Thu, 13 Oct 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Ahoy, skill-builder pirate of Jamstackia!&lt;/p&gt;
&lt;p&gt;In my last letter, we looked into &lt;a href=&quot;/2022-09-29-automate/&quot;&gt;Don&apos;t let Distraction Diaz distract you&lt;/a&gt;. Today, I&apos;ll show you my favorite focus tool to determine when your sub-task practice session is done. It&apos;s my great-grandfather Captain Crook&apos;s croco clock. 🐊 ⏲️ We&apos;ll look at:&lt;/p&gt;
&lt;p&gt;What a croco-clock is,
Why it can help you focus and
How you use it.&lt;/p&gt;
&lt;h2&gt;WHAT is a croco-clock 🐊 ⏲️ ?&lt;/h2&gt;
&lt;p&gt;A croco-clock 🐊 can be an egg clock ⏲️ that goes ARRR! when your sub-task practice session is done.&lt;/p&gt;
&lt;p&gt;Then you can stop&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./by-croc.jpg&quot; alt=&quot;Sketch of Captain Croc&quot;&gt;&lt;/p&gt;
&lt;h2&gt;WHY could a croco-clock 🐊-⏲️ help you to focus like a pirate?&lt;/h2&gt;
&lt;p&gt;Firstly you decide to automate your sub-task into your dev-brain. This is good for your focus.&lt;/p&gt;
&lt;p&gt;Secondly, by starting your croco-clock 🐊-⏲️ you confirm to yourself your decision to automate your sub-task into your dev-brain&lt;/p&gt;
&lt;p&gt;Thirdly, the clock is literally ticking, and you know you have this ONE practice session to automate your sub-task into your dev-brain.&lt;/p&gt;
&lt;h2&gt;HOW do you use your croco-clock 🐊-⏲️ ?&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;You set your croco-clock 🐊-⏲️ to for example, 96 minutes&lt;/li&gt;
&lt;li&gt;And place it in another room, especially if you are using your cellphone&lt;/li&gt;
&lt;li&gt;You do your sub-task in exactly the same way again and again&lt;/li&gt;
&lt;li&gt;Keep doing your sub-task again and again until your croco-clock 🐊-⏲️ goes ARRR! even past the point, you feel you are already doing your sub-task 96%-reliably&lt;/li&gt;
&lt;li&gt;Because you&apos;re a practice pirate and this sub-task will be YOUR treasure only when you have it automated into your dev-brain&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Yo-Ho-Ho and a bottle of GO! 😺&lt;/p&gt;
&lt;h2&gt;Your TODO&lt;/h2&gt;
&lt;p&gt;Write up a sentence about your croco-clock 🐊-⏲️ experiments and email it to Lillian (7 🏴‍☠️👸) and me; that would help us a lot!&lt;/p&gt;
&lt;p&gt;🏴‍☠️😺👍&lt;br&gt;
ARR!&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Stay piraty 🏴‍☠️😺👍 and keep practicing!&lt;br&gt;
Cap&apos;n Ola Vea&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;PS:&lt;/strong&gt; The next letter will be about &amp;quot;The Again Logbook.&amp;quot;&lt;/p&gt;
</content:encoded></item><item><title>⛵ 🔧 ~ Decide to automate your sub-task into your dev-brain</title><link>https://queen.raae.codes/2022-09-29-automate/</link><guid isPermaLink="true">https://queen.raae.codes/2022-09-29-automate/</guid><description>Ahoy, skill-builder pirate of Jamstackia! 👋😺🏴‍☠️ We looked into a can-do-with-effort sub-task in my last letter, and so today, I say: Decide to automate…</description><pubDate>Thu, 29 Sep 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Ahoy, skill-builder pirate of Jamstackia!&lt;/p&gt;
&lt;p&gt;👋😺🏴‍☠️&lt;/p&gt;
&lt;p&gt;We looked into a can-do-with-effort sub-task in my last letter, and so today, I say:&lt;/p&gt;
&lt;p&gt;Decide to automate your sub-task into your dev-brain&lt;/p&gt;
&lt;h2&gt;WHY: Your distractor enemies are &amp;quot;In It To Win It&amp;quot;&lt;/h2&gt;
&lt;p&gt;Your distractor enemies are &amp;quot;In It To Win It&amp;quot; and so should you be because you should not underestimate the Distracting Power of your enemies. Who are you up against? You have to find out for yourself who your worst distractor enemies are. But I KNOW one of your dev-brain&apos;s enemies is your own personal Distraction Diaz. Every time Distraction Diaz slaps your dev-brain, there&apos;s a chance you lose your focus.&lt;/p&gt;
&lt;h2&gt;Don&apos;t let Distraction Diaz take you down until your sub-task practice session is done&lt;/h2&gt;
&lt;p&gt;During your sub-task practice, session thoughts and feelings will enter your dev-brain uninvited. Here is a technique to help you stay focused.&lt;/p&gt;
&lt;h2&gt;HOW do you make each distraction leave your dev-brain?&lt;/h2&gt;
&lt;p&gt;A. When a distraction enters your dev-brain observe it calmly and label it either &amp;quot;thought&amp;quot; or &amp;quot;feeling,&amp;quot; and let it go.&lt;/p&gt;
&lt;p&gt;B. Go back to practicing your sub-task.&lt;/p&gt;
&lt;p&gt;C. You can practice this labeling technique by meditating. That&apos;s what I do daily. Check out this &lt;a href=&quot;https://www.headspace.com/meditation/focus&quot;&gt;11 minute guided meditation for focus by Headspace&lt;/a&gt; if this sounds useful for you. I use a meditation from this focus-pack every day 😺&lt;/p&gt;
&lt;h2&gt;Example: Git hell distraction anger&lt;/h2&gt;
&lt;p&gt;This week I&apos;ve been working on a plugin upgrade for our favorite client, and I ran into a bit of a git hell 😠 I did not let myself be distracted into trying to fix that myself. Instead, I labeled my anger &amp;quot;feeling,&amp;quot; then I gave my laptop to The Queen and stayed in the kitchen until she fixed it. Then I went back to practicing my sub-task.&lt;/p&gt;
&lt;h2&gt;Your TODO&lt;/h2&gt;
&lt;p&gt;Write up a sentence, or two, about a distraction you labeled in a recent practice session. Or maybe a distraction that made you lose your focus. Or if you tried the labeling technique on a dev-task in your day job, please let us hear about it in an email. That&apos;ll do Lillian (7 🏴‍☠️👸) and me a ton of good!&lt;/p&gt;
&lt;p&gt;🏴‍☠️😺👍&lt;/p&gt;
&lt;p&gt;ARR!&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Stay piraty 🏴‍☠️😺👍 and keep practicing!&lt;/p&gt;
&lt;p&gt;Cap&apos;n Ola Vea&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;P.S:&lt;/strong&gt; The following letter will ask, &amp;quot;When is your sub-task practice session done?&amp;quot;&lt;/p&gt;
</content:encoded></item><item><title>⛵ 🔧 ~ Ola is doing a can-do-with-effort sub-task</title><link>https://queen.raae.codes/2022-09-15-can-do-with-effort/</link><guid isPermaLink="true">https://queen.raae.codes/2022-09-15-can-do-with-effort/</guid><description>Ahoy, skill-builder pirate of Jamstackia! We looked into one useless-on-it&apos;s-own sub-task in my last letter, and I promised you this letter would be about &quot;How…</description><pubDate>Thu, 15 Sep 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Ahoy, skill-builder pirate of Jamstackia!&lt;/p&gt;
&lt;p&gt;We looked into one useless-on-it&apos;s-own sub-task &lt;a href=&quot;/2022-09-07-async-await/&quot;&gt;in my last letter&lt;/a&gt;, and I promised you this letter would be about &amp;quot;How do you know what type of sub-task is right to bite off for your dev-brain?&amp;quot;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;To can&apos;t-do or NOT can&apos;t-do, that is the question.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;🗣️ 💀&lt;/p&gt;
&lt;h2&gt;Answer: a can&apos;t-do sub-task is bad for your brain&lt;/h2&gt;
&lt;p&gt;After years of piraty experimentation on the Pirate Princess, my current conclusion is &amp;quot;a can&apos;t-do sub-task is bad for your brain&amp;quot; because it&apos;s stealing your focus like a pirate steals loot. So a can-do-with-effort sub-task is better for your focus and thus your dev-brain.&lt;/p&gt;
&lt;p&gt;I&apos;ll soon tell you WHY a can&apos;t-do sub-task is stealing your focus like a pirate, but first: WHAT is a can-do-with-effort sub-task?&lt;/p&gt;
&lt;h2&gt;WHAT is a can-do-with-effort sub-task?&lt;/h2&gt;
&lt;p&gt;You sometimes start out with a can&apos;t-do sub-task. Then after practicing a little, it becomes a can-do-with-effort sub-task. And Then, after practicing a lot more, you have a can-do-96%-reliably sub-task because you have finally nailed your sub-task into your dev-brain.&lt;/p&gt;
&lt;p&gt;Imagine a yellow board with three parts:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;a can&apos;t-do sub-task&lt;/li&gt;
&lt;li&gt;a can-do-with-effort sub-task&lt;/li&gt;
&lt;li&gt;a can-do-96%-reliably sub-task&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;./sub-task-board.png&quot; alt=&quot;sub-task-board&quot;&gt;&lt;/p&gt;
&lt;p&gt;You write your sub-task on a blue sticky note and move it from 1. to 2. and then to 3.&lt;/p&gt;
&lt;h2&gt;WHY a can&apos;t-do sub-task is stealing your focus like a pirate?&lt;/h2&gt;
&lt;p&gt;Like me, you probably also have many sub-tasks on your can-do-with-effort board. You need one less sub-task on your can-do-with-effort board. Because for each sub-task you have on your can-do-with-effort board, the harder it is for your dev-brain to focus on nailing the sub-task you&apos;re practicing in the moment. According to &lt;a href=&quot;https://www.amazon.com/Badass-Making-Awesome-Kathy-Sierra-ebook/dp/B00VAUIM18/&quot;&gt;Kathy Sierra&apos;s badass book Badass&lt;/a&gt;, having too many sub-tasks on her can-do-with-effort board is The Number One thing stealing focus and wrecking the skill-buildership of developers.&lt;/p&gt;
&lt;h2&gt;HOW do you find your can-do-with-effort sub-task?&lt;/h2&gt;
&lt;p&gt;A. Look back on a dev-task you did last week&lt;/p&gt;
&lt;p&gt;B. Bite off a can-do-with-effort sub-task&lt;/p&gt;
&lt;p&gt;Yo-Ho-Ho and a bottle of GO! 😺&lt;/p&gt;
&lt;h2&gt;Example (Warning: summer workcation tall tales alert! ☀️ 🗣️ 💬 🔈)&lt;/h2&gt;
&lt;p&gt;Let&apos;s look at my slightly off-topic but weirdly handy example from our piraty summer workcation.&lt;/p&gt;
&lt;h2&gt;A can-do-with-effort sub-task for Lillian (7 🏴‍☠️👸)&lt;/h2&gt;
&lt;p&gt;Twisting the outboard engine handle:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;To go faster forward&lt;/li&gt;
&lt;li&gt;To go slower forward&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Your TODO&lt;/h2&gt;
&lt;p&gt;Write up an idea for a sub-task and email it to Lillian (7 🏴‍☠️👸) and me. That would help us a lot! Then bite off a can-do-with-effort sub-task from a dev-task you did last week.&lt;/p&gt;
&lt;p&gt;🏴‍☠️😺👍&lt;br&gt;
ARR!&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Stay piraty 🏴‍☠️😺👍 and keep practicing!&lt;br&gt;
Cap&apos;n Ola Vea&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;P.S
The following letter will cover &amp;quot;Decide to automate your sub-task into your dev-brain in one practice session.&amp;quot;&lt;/p&gt;
</content:encoded></item><item><title>⛵ 🔧 ~ Ola adds &quot;async and await&quot; to sourceNodes in his piraty plugin</title><link>https://queen.raae.codes/2022-09-07-async-await/</link><guid isPermaLink="true">https://queen.raae.codes/2022-09-07-async-await/</guid><description>Adding &quot;async and await&quot; to sourceNodes is a sub-task In my daily gatsby-plugin practice, I ONLY do one sub-task each session. Today&apos;s sub-task was: - adding…</description><pubDate>Wed, 07 Sep 2022 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Adding &amp;quot;async and await&amp;quot; to sourceNodes is a sub-task&lt;/h2&gt;
&lt;p&gt;In my daily gatsby-plugin practice, I ONLY do one sub-task each session. Today&apos;s sub-task was:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;adding &lt;code&gt;async&lt;/code&gt; to &lt;code&gt;exports.sourceNodes =&lt;/code&gt; and&lt;/li&gt;
&lt;li&gt;&lt;code&gt;await createPiratyNodes(&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;I&apos;ll soon tell you WHY I do a daily sub-task, but first WHAT is a sub-task?&lt;/p&gt;
&lt;h2&gt;WHAT is a sub-task?&lt;/h2&gt;
&lt;p&gt;That dev-task YOU did last week? Close your eyes and see your dev-task as a pink donut. Bite off a useless-on-it&apos;s-own sub-task. NOW you can chew it. Without choking on it *&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./Donut_shark_by_Lillian_Raae-Vea-pink.png&quot; alt=&quot;Donut_shark_by_Lillian_Raae-Vea&quot;&gt;&lt;/p&gt;
&lt;h2&gt;HOW do you find your sub-task?&lt;/h2&gt;
&lt;p&gt;A. Look at a dev-task you did last week&lt;/p&gt;
&lt;p&gt;B. Bite off a useless-on-it&apos;s-own sub-task&lt;/p&gt;
&lt;p&gt;That&apos;s all 😺&lt;/p&gt;
&lt;h2&gt;WHY do I do a daily sub-task?&lt;/h2&gt;
&lt;p&gt;Because MY dev-brain practice is more piraty on a tiny sub-task than on the whole dev-task.&lt;/p&gt;
&lt;h2&gt;Here is my code before practice&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-js&quot;&gt;// gatsby-node.js

const piraty = `source piraty api here`;

const createPiratyNodes = async (gatsbyUtils) =&amp;gt; {
  console.log(`create Piraty Nodes here`);
};

// Add async

exports.sourceNodes = (gatsbyUtils) =&amp;gt; {
  // Add await

  createPiratyNodes(gatsbyUtils, piraty);
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;After practice&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-js&quot;&gt;// gatsby-node.js

const piraty = `source piraty api here`;

const createPiratyNodes = async (gatsbyUtils) =&amp;gt; {
  console.log(`create Piraty Nodes here`);
};

// Add async

exports.sourceNodes = async (gatsbyUtils) =&amp;gt; {
  // Add await

  await createPiratyNodes(gatsbyUtils, piraty);
};
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Try out a sub-task on your own dev-brain; it might make your practice more piraty 🏴‍☠️😺👍&lt;/p&gt;
&lt;p&gt;ARR!&lt;/p&gt;
&lt;p&gt;Cap&apos;n Ola Vea&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;P.S&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The next plugin-pirate letter will cover &amp;quot;How do you know what type of sub-task is right to bite off for your dev-brain?&amp;quot;&lt;/p&gt;
&lt;p&gt;* Some people CAN chew a whole donut without choking on it. Don&apos;t believe me? Dig up the video with Paul Scanlon winning a donut-eating contest against a Gatsby co-worker. You&apos;ll find the video somewhere &lt;a href=&quot;https://twitter.com/PaulieScanlon&quot;&gt;on Paul&apos;s twitter.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Read more about adding async await to sourceNodes in Queen @raae&apos;s email &lt;a href=&quot;/2022-05-25-await-node-creation/&quot;&gt;Remember to await node creation! ⏳ ⌛️&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>⛵ 🔧 ~ Take the upgraded Gatsby Cloudinary plugins for a spin</title><link>https://queen.raae.codes/2022-07-09-backwards/</link><guid isPermaLink="true">https://queen.raae.codes/2022-07-09-backwards/</guid><description>Taking a tiny break from the summer vacay content hiatus to let you know: The upgraded Gatsby Cloudinary plugins are ready for you! Take&apos;em for a spin on your…</description><pubDate>Sat, 09 Jul 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Taking a tiny break from the summer vacay content hiatus to let you know:&lt;/p&gt;
&lt;h2&gt;The upgraded Gatsby Cloudinary plugins are ready for you!&lt;/h2&gt;
&lt;p&gt;Take&apos;em for a spin on your website.&lt;/p&gt;
&lt;p&gt;Support for gatsby-plugin-image and Gatsby v4 support has landed.&lt;/p&gt;
&lt;p&gt;The good news is that you don&apos;t need to upgrade to Gatsby v4 because we made&apos;em backward compatible with v3 as well.&lt;/p&gt;
&lt;h2&gt;How do I get the upgraded Gatsby Cloudinary plugins?&lt;/h2&gt;
&lt;p&gt;The source plugin has an official new release:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;yarn add gatsby-source-cloudinary@latest
npm install gatsby-source-cloudinary@latest
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;While the transformer plugin is in beta, we would love it if you took it for a spin; it works with both Gatsby v3 and Gatsby v4:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;yarn add gatsby-transformer-cloudinary@beta-v4
npm install gatsby-transformer-cloudinary@beta-v4
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Suppose you are already using gatsby-transformer-cloudinary with existing data. In that case, you might want to start with gatsby-transformer-cloudinary@beta, which has no breaking changes, but the possibility to migrate to gatsby-plugin-image before doing v4 needed changes.&lt;/p&gt;
&lt;h2&gt;Backwards compatible plugins&lt;/h2&gt;
&lt;p&gt;With the gentle guidance of my mentor and senior plugin engineer, I&apos;ve contributed code and learned a lot. I don&apos;t know your favorite learning style, but I am a learning-by-doing kind of junior dev.&lt;/p&gt;
&lt;p&gt;I&apos;ll share one thing I learned about backward compatibility: the &amp;quot;if-else&amp;quot; statement. That&apos;s right! Good old else &amp;quot;if-else&amp;quot; is one thing I used to make gatsby-transformer-cloudinary work with your old Gatsby version. Or work with your new Gatsby version if you&apos;ve updated it.&lt;/p&gt;
&lt;p&gt;This is what I did:&lt;/p&gt;
&lt;p&gt;I installed &lt;code&gt;gatsby-plugin-utils&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;npm i gatsby-plugin-utils
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I followed the Great Gatsby version 4 docs on backward compatible global state: &lt;a href=&quot;https://www.gatsbyjs.com/docs/reference/release-notes/migrating-source-plugin-from-v3-to-v4/#3-global-state&quot;&gt;3. Global state backward compatible&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-js&quot;&gt;// packages/gatsby-transformer-cloudinary/gatsby-node.js

let coreSupportsOnPluginInit = undefined;

try {
  const { isGatsbyNodeLifecycleSupported } = require(`gatsby-plugin-utils`);

  if (isGatsbyNodeLifecycleSupported(`onPluginInit`)) {
    coreSupportsOnPluginInit = &amp;quot;stable&amp;quot;;
  } else if (isGatsbyNodeLifecycleSupported(`unstable_onPluginInit`)) {
    coreSupportsOnPluginInit = &amp;quot;unstable&amp;quot;;
  }
} catch (error) {
  console.error(`could not check`);
}

const pluginOptions = getPluginOptions();

const initializaGlobalState = ({ reporter }, pluginOptions) =&amp;gt; {
  setPluginOptions({ reporter, pluginOptions });
};

if (coreSupportsOnPluginInit === &amp;quot;stable&amp;quot;) {
  exports.onPluginInit = initializeGlobalState;
} else if (coreSupportsOnPluginInit === &amp;quot;stable&amp;quot;) {
  exports.unstable_onPluginInit = initializeGlobalState;
} else {
  exports.onPreBootstrap = initializeGlobalState;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Join our bug-treasure-hunt&lt;/h2&gt;
&lt;p&gt;When I say learning-by-doing, I mean doing again and again and again. So if you DO run into a bug, please report it. I&apos;d love to look in on my code again; it&apos;s great repetition. 😺&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;All the best&lt;br&gt;
Cap&apos;n Ola Vea&lt;/p&gt;
</content:encoded></item><item><title>⛵ 🔧 ~ POW! Password Peek-a-boo</title><link>https://queen.raae.codes/2022-03-15-pow-password-peek-a-boo/</link><guid isPermaLink="true">https://queen.raae.codes/2022-03-15-pow-password-peek-a-boo/</guid><description>My Sunday Skill Builder Session: This Sunday, I made Password Peek-a-boo on the login page on our POW!-website. So now we&apos;re showing you your password if you…</description><pubDate>Tue, 15 Mar 2022 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;My Sunday Skill Builder Session:&lt;/h2&gt;
&lt;p&gt;This Sunday, I made Password Peek-a-boo on the login page on our POW!-website. So now we&apos;re showing you your password if you poke the eye icon inside the password field. Later we will use that login page on the POW! app&lt;/p&gt;
&lt;h2&gt;What did I do?&lt;/h2&gt;
&lt;p&gt;POW! Password Peek-a-boo
&lt;img src=&quot;OlaCast-20-POW-Day-51-POW-Password-Peek-a-boo-41.jpg&quot; alt=&quot;POW! Password Peek-a-boo&quot;&gt;&lt;/p&gt;
&lt;h2&gt;Why did I do it?&lt;/h2&gt;
&lt;p&gt;I like to see my pasSwords when I copy-paste them from 1Password and write them from memory because I am a visual guy. So we want our POW! customers to be able to choose for themselves. And because Queen @raae told me to do it.&lt;/p&gt;
&lt;h2&gt;How did I do it?&lt;/h2&gt;
&lt;p&gt;The short version:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;made a button with MUI&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class=&quot;language-js&quot;&gt;&amp;lt;IconButton&amp;gt;👁️&amp;lt;/IconButton&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;added an aria-label and an onClick handler&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class=&quot;language-js&quot;&gt;&amp;lt;IconButton
  aria-label=&amp;quot;toggle password visibility&amp;quot;
  onClick={handleClickShowPassword}
&amp;gt;
  👁️
&amp;lt;/IconButton&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;For the long version of My Sunday Skill Builder Session:, watch &lt;a href=&quot;https://youtu.be/v00Uro6UQvY&quot;&gt;Sunday&apos;s OlaCast on YouTube&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;br&gt;
💪😺👍&lt;br&gt;
Keep your skill-building-ship afloat this week!&lt;br&gt;
⛵🔧🏴‍☠️&lt;/p&gt;
&lt;p&gt; &lt;br&gt;
Ola Vea&lt;br&gt;
Cap&apos;n of his own skill-builder-ship&lt;/p&gt;
</content:encoded></item><item><title>⛵ 🔧 ~ I found one error while creating pages only for markdown pages, not for markdown sections</title><link>https://queen.raae.codes/2022-03-01-supplies/</link><guid isPermaLink="true">https://queen.raae.codes/2022-03-01-supplies/</guid><description>My Sunday Skill Builder Session: This Sunday, I created pages only for markdown pages, not for markdown sections. On our POW!-website. What did I do? I created…</description><pubDate>Tue, 01 Mar 2022 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;My Sunday Skill Builder Session:&lt;/h2&gt;
&lt;p&gt;This Sunday, I created pages only for markdown pages, not for markdown sections. On our POW!-website.&lt;/p&gt;
&lt;h2&gt;What did I do?&lt;/h2&gt;
&lt;p&gt;I created pages with markdown and the createPages hook from @GatsbyJS&lt;/p&gt;
&lt;h2&gt;Why did I do it?&lt;/h2&gt;
&lt;p&gt;Because it&apos;s tidier than creating a bunch of &amp;quot;bonus&amp;quot; pages with content I already show on my index page. And because Queen Benedicte @raae told me to do it.&lt;/p&gt;
&lt;h2&gt;How did I do it?&lt;/h2&gt;
&lt;p&gt;The short version is I started out with my 1.2.3 A.B.C. mnemonic Gingerbread house. And I found one error; see below.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;filter ☕ first&lt;/li&gt;
&lt;li&gt;bakingSong 🎵 🦢&lt;/li&gt;
&lt;li&gt;aromaNode 🍰💰&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;A. aromaNodePath 🍰.🍓.🐛
B. bakingSong 🎵 🙀
C. catsbyId 😼🆔&lt;/p&gt;
&lt;h2&gt;What was the error I found?&lt;/h2&gt;
&lt;p&gt;I forgot to rename &lt;code&gt;allMarkdownRemark&lt;/code&gt; to &lt;code&gt;supplies&lt;/code&gt; in my graphql query:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-js&quot;&gt;// wrong

const { data } = await graphql(`{
      allMarkdownRemark(
        filter: { fileAbsolutePath: { regex: &amp;quot;/index.md/&amp;quot; } }
      ) {}
    }`);

// right

const { data } = await graphql(`{
      supplies: allMarkdownRemark(
        filter: { fileAbsolutePath: { regex: &amp;quot;/index.md/&amp;quot; } }
      ) {}
    }`);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;So that when I was going to use my data: &lt;code&gt;data.supplies.nodes.forEach&lt;/code&gt; I got an error message, and the pages were not created.&lt;/p&gt;
&lt;p&gt;For the long version of My Sunday Skill Builder Session, watch &lt;a href=&quot;https://youtu.be/hkGZiodGe7U&quot;&gt;Sunday&apos;s OlaCast on YouTube&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;br&gt;
💪😺👍&lt;br&gt;
Keep your skill-building-ship afloat this week!&lt;br&gt;
⛵🔧🏴‍☠️&lt;/p&gt;
&lt;p&gt; &lt;br&gt;
Ola Vea&lt;br&gt;
Cap&apos;n of his own skill-builder-ship&lt;/p&gt;
</content:encoded></item><item><title>⛵ 🔧 ~ Failed at &quot;create pages only for markdown pages, not for markdown sections&quot;</title><link>https://queen.raae.codes/2022-02-22-only-md-pages/</link><guid isPermaLink="true">https://queen.raae.codes/2022-02-22-only-md-pages/</guid><description>My Sunday Skill Builder Session: This Sunday, I tried to create pages only for markdown pages, not for markdown sections. On our POW! Website. What did I do? I…</description><pubDate>Tue, 22 Feb 2022 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;My Sunday Skill Builder Session:&lt;/h2&gt;
&lt;p&gt;This Sunday, I tried to create pages only for markdown pages, not for markdown sections. On our POW! Website.&lt;/p&gt;
&lt;h2&gt;What did I do?&lt;/h2&gt;
&lt;p&gt;I created pages with markdown files and the createPages hook from @GatsbyJS&lt;/p&gt;
&lt;h2&gt;Why did I do it?&lt;/h2&gt;
&lt;p&gt;Because it&apos;s tidier and because Queen Benedicte @raae told me to do it.&lt;/p&gt;
&lt;h2&gt;How did I do it?&lt;/h2&gt;
&lt;p&gt;The short version is I started out with my 1.2.3 A.B.C. mnemonic Gingerbread house.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Supplies: allMarkdownRemark.node&lt;/li&gt;
&lt;li&gt;Bakingsong = bakingSong.js&lt;/li&gt;
&lt;li&gt;Loop over the supply node and create a page&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;A. Ahoy! Aroma path!&lt;br&gt;
B. BakingSong is a component&lt;br&gt;
C. Catsby id is context&lt;/p&gt;
&lt;h2&gt;What went wrong?&lt;/h2&gt;
&lt;p&gt;I&apos;ll get into what went wrong on Thursday at 7 pm CET!&lt;/p&gt;
&lt;p&gt;That&apos;s right; I&apos;ll be live coding alone on our Gatsby Deep-Dives because the Queen and the Pirate Princess are skiing in the mountains. ⛰️⛷️&lt;/p&gt;
&lt;p&gt;For the long version of My Sunday Skill Builder Session watch &lt;a href=&quot;https://youtu.be/lMDA0WuAZSA&quot;&gt;Sunday&apos;s OlaCast on YouTube&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;br&gt;
💪😺👍&lt;br&gt;
Keep your skill-building-ship afloat this week!&lt;br&gt;
⛵🔧🏴‍☠️&lt;/p&gt;
&lt;p&gt; &lt;br&gt;
Ola Vea&lt;br&gt;
Cap&apos;n of his own skill-builder-ship&lt;/p&gt;
</content:encoded></item><item><title>⛵ 🔧 ~ I created a Link with markdown on our POW!-website</title><link>https://queen.raae.codes/2022-02-15-markdown/</link><guid isPermaLink="true">https://queen.raae.codes/2022-02-15-markdown/</guid><description>My Sunday Skill Builder Session: This Sunday, I created a Link with markdown on our POW!-website. What did I do? I created a Link with markdown. Why did I do…</description><pubDate>Tue, 15 Feb 2022 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;My Sunday Skill Builder Session:&lt;/h2&gt;
&lt;p&gt;This Sunday, I created a &lt;code&gt;Link&lt;/code&gt; with markdown on our POW!-website.&lt;/p&gt;
&lt;h2&gt;What did I do?&lt;/h2&gt;
&lt;p&gt;I created a &lt;code&gt;Link&lt;/code&gt; with markdown.&lt;/p&gt;
&lt;h2&gt;Why did I do it?&lt;/h2&gt;
&lt;p&gt;I want to use markdown as my Content Management System (CMS) because it&apos;s my favorite CMS and Queen Raae told me to use markdown.&lt;/p&gt;
&lt;h2&gt;How did I do it?&lt;/h2&gt;
&lt;p&gt;I started out on my L.O.V.E. acronym.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;L.&lt;/code&gt; Link and path and label&lt;br&gt;
&lt;code&gt;O.&lt;/code&gt; Open up in GraphiQL&lt;br&gt;
&lt;code&gt;V.&lt;/code&gt; Variable&lt;br&gt;
&lt;code&gt;E.&lt;/code&gt; Evol is love backward, no just kidding. I will do «E. Empty» on this Sunday&apos;s Skill Builder Session.&lt;/p&gt;
&lt;h3&gt;L.&lt;/h3&gt;
&lt;p&gt;Link and path and label&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-js&quot;&gt;// POW!-website / pages / {MarkdownRemark.fields__slug}.js
&amp;lt;Link to={}&amp;gt;{}&amp;lt;/Link&amp;gt;

// POW!-website / content / index / index.md

---
....
    cta:
      path: /signup
      label: Yes to privacy
---
....
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;O.&lt;/h3&gt;
&lt;p&gt;Open up in GraphiQL&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-js&quot;&gt;// POW!-website / pages / {MarkdownRemark.fields__slug}.js
export const query = graphql`
  query ($id: String) {
    markdownRemark(id: { eq: $id }) {
      frontmatter {
        sections {
          cta {
            path
            label
          }
        }
      }
    }
  }
`;
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;V.&lt;/h3&gt;
&lt;p&gt;First I make the variable:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-js&quot;&gt;// POW!-website / pages / {MarkdownRemark.fields__slug}.js
const { path, label } = section.cta;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then I use the variable:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-js&quot;&gt;&amp;lt;Link to={path}&amp;gt;{label}&amp;lt;/Link&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&quot;language-js&quot;&gt;// POW!-website / pages / {MarkdownRemark.fields__slug}.js
import React from &amp;quot;react&amp;quot;;
import { graphql, Link } from &amp;quot;gatsby&amp;quot;;

const ComponentName = ({ data }) =&amp;gt; {
  const { frontmatter, html } = data.markdownRemark;
  const { title, sections } = frontmatter;

  return (
    &amp;lt;&amp;gt;
      &amp;lt;div className=&amp;quot;container&amp;quot;&amp;gt;
        &amp;lt;h1&amp;gt;{title}&amp;lt;/h1&amp;gt;
        &amp;lt;div dangerouslySetInnerHTML={{ __html: html }} /&amp;gt;
        {(sections || []).map((section) =&amp;gt; {
          const { title } = section;
          const { html } = section.body.childMarkdownRemark || {};
          const { path, label } = section.cta || {};
          return (
            &amp;lt;section&amp;gt;
              &amp;lt;h2&amp;gt;{title}&amp;lt;/h2&amp;gt;
              {html &amp;amp;&amp;amp; &amp;lt;div dangerouslySetInnerHTML={{ __html: html }} /&amp;gt;}
              {path &amp;amp;&amp;amp; &amp;lt;Link to={path}&amp;gt;{label}&amp;lt;/Link&amp;gt;}
            &amp;lt;/section&amp;gt;
          );
        })}
      &amp;lt;/div&amp;gt;
    &amp;lt;/&amp;gt;
  );
};

export const query = graphql`
  query ($id: String) {
    markdownRemark(id: { eq: $id }) {
      html
      frontmatter {
        title
        sections {
          cta {
            path
            label
          }
          title
          body {
            childMarkdownRemark {
              html
            }
          }
        }
      }
    }
  }
`;

export default ComponentName;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt; &lt;br&gt;
For the long version, watch &lt;a href=&quot;https://youtu.be/rPiQi_bOk8s&quot;&gt;Sunday&apos;s OlaCast&lt;/a&gt; on YouTube.&lt;/p&gt;
&lt;p&gt; &lt;br&gt;
💪😺👍&lt;br&gt;
Keep your skill-builder-ship afloat this week!&lt;br&gt;
⛵🔧🏴‍☠️&lt;/p&gt;
&lt;p&gt;Ola Vea&lt;br&gt;
Cap&apos;n of his own skill-builder-ship&lt;/p&gt;
</content:encoded></item><item><title>⛵ 🔧 ~ Ola adds a slug field to his homemade markdown node</title><link>https://queen.raae.codes/2022-02-08-markdown-slug/</link><guid isPermaLink="true">https://queen.raae.codes/2022-02-08-markdown-slug/</guid><description>My Sunday Skill Builder Session: This Sunday, I added a slug field to my homemade markdown node 🐛 What did I do? I added a slug field to my homemade markdown…</description><pubDate>Tue, 08 Feb 2022 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;My Sunday Skill Builder Session:&lt;/h2&gt;
&lt;p&gt;This Sunday, I added a slug field to my homemade markdown node 🐛&lt;/p&gt;
&lt;h2&gt;What did I do?&lt;/h2&gt;
&lt;p&gt;I added a slug field to my homemade markdown node with createNodeField from the onCreateNode hook.&lt;/p&gt;
&lt;h2&gt;Why did I do it?&lt;/h2&gt;
&lt;p&gt;I need that slug to add support for a basic content section to create Markdown marketing pages with sections for Queen @raae&apos;s usepow.app.&lt;/p&gt;
&lt;h2&gt;How did I do it?&lt;/h2&gt;
&lt;p&gt;Short version:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-js&quot;&gt;// POW!-website / gatsby - node.js;
async function slugifyMarkdownRemarkNode({ actions, node, getNode }) {
  const { createNodeField } = actions;
  if (node.internal.type === &amp;quot;MarkdownRemark&amp;quot;) {
    const slug = createFilePath({ node, getNode });
    createNodeField({
      name: &amp;quot;slug&amp;quot;,
      node,
      value: slug,
    });
  }
}

exports.onCreateNode = async (gatsbyUtils) =&amp;gt; {
  await Promise.all([slugifyMarkdownRemarkNode(gatsbyUtils)]);
};
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Cheat Sheet:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-js&quot;&gt;// POW!-site/gatsby-node.js
async function slugifyMarkdownRemarkNode({ actions, node, getNode }) {
  // 🔨💰🍓
  con
  // my md type of node ... internal
  if ( ) {
    // 🐛 = 🔨 + 📁 + 🎢 ({ node, getNode })
  con
    // 🔨💰🍓 ({ 🐛, 💰, 🐛 })
    cre
      na
      no
      va
    })
  }
};
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If you can guess what one of the emojis mean, reply to this email 😺👍&lt;/p&gt;
&lt;p&gt;Long version: &lt;a href=&quot;https://youtu.be/otRx6U5zASw&quot;&gt;Sunday&apos;s OlaCast on YouTube&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;br&gt;
💪😺👍&lt;br&gt;
Keep your skill-builder-ship afloat this week!&lt;br&gt;
⛵🔧🏴‍☠️&lt;/p&gt;
&lt;p&gt;Ola Vea&lt;br&gt;
Cap&apos;n of his own skill-builder-ship&lt;/p&gt;
</content:encoded></item><item><title>⛵ 🔧 ~ I created an image file with createRemoteFileNode</title><link>https://queen.raae.codes/2022-01-31-image-file/</link><guid isPermaLink="true">https://queen.raae.codes/2022-01-31-image-file/</guid><description>My Sunday Skill Builder Session: This Sunday, I created an image file with createRemoteFileNode What did I do? I created an image file to use inside my node…</description><pubDate>Mon, 31 Jan 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;imageFile-1.jpeg&quot; alt=&quot;imageFile&quot;&gt;&lt;/p&gt;
&lt;h2&gt;My Sunday Skill Builder Session:&lt;/h2&gt;
&lt;p&gt;This Sunday, I created an image file with createRemoteFileNode&lt;/p&gt;
&lt;h2&gt;What did I do?&lt;/h2&gt;
&lt;p&gt;I created an image file to use inside my node&lt;/p&gt;
&lt;h2&gt;Why did I do it?&lt;/h2&gt;
&lt;p&gt;I wanted to use some Gatsby Image trickery on the thumbnail in our youtube data 💪😺. Therefore I downloaded the thumbnail into my data layer. At least, that is how I see it.&lt;/p&gt;
&lt;h2&gt;How did I do it?&lt;/h2&gt;
&lt;p&gt;The short version:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-js&quot;&gt;// POW!-website plugins / local - source - youtube / gatsby - node.js;
const { createRemoteFileNode } = require(&amp;quot;gatsby-source-filesystem&amp;quot;);

const youTubeNodeId = createNodeId(`you-tube-${id}`);

const imageFile = await createRemoteFileNode({
  url: embedData.thumbnail_url,
  parentNodeId: youTubeNodeId,
  getCache,
  createNode,
  createNodeId,
});
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And then, I use my image file inside my node like this.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-js&quot;&gt;createNode({
  thumnail___NODE: imageFile.id,
});
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;For the longer version, watch &lt;a href=&quot;https://youtu.be/LQ2DRJbG8FY&quot;&gt;Sunday&apos;s OlaCast on YouTube&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;br&gt;
💪😺👍&lt;br&gt;
Keep your skill-building-ship afloat this week!&lt;br&gt;
⛵🔧🏴‍☠️&lt;/p&gt;
&lt;p&gt; &lt;br&gt;
Ola Vea&lt;br&gt;
Cap&apos;n of his own skill-builder-ship&lt;/p&gt;
</content:encoded></item><item><title>⛵ 🔧 ~ This Sunday&apos;s Skill-Builder-Session went WRONG!</title><link>https://queen.raae.codes/2022-01-25-wrong/</link><guid isPermaLink="true">https://queen.raae.codes/2022-01-25-wrong/</guid><description>My Sunday Skill Builder Session: This Sunday, I was only supposed to prepare 1 node and get data later. What went wrong? What did I do? I prepared 1 node. Why…</description><pubDate>Tue, 25 Jan 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;OlaCast-14-POW-Day-1-WRONG-26.jpeg&quot; alt=&quot;wrong&quot;&gt;&lt;/p&gt;
&lt;h2&gt;My Sunday Skill Builder Session:&lt;/h2&gt;
&lt;p&gt;This Sunday, I was only supposed to prepare 1 node and get data later. What went wrong?&lt;/p&gt;
&lt;h2&gt;What did I do?&lt;/h2&gt;
&lt;p&gt;I prepared 1 node.&lt;/p&gt;
&lt;h2&gt;Why did I do it?&lt;/h2&gt;
&lt;p&gt;I did just a tiiiny task again. So that I automate it in my brain. (That rhymes, when I say it at least... 💪😺)&lt;/p&gt;
&lt;h2&gt;How did I do it (WRONG)?&lt;/h2&gt;
&lt;p&gt;I kept on coding further. For 2 more hours! Live on youtube. What was I thinking?&lt;/p&gt;
&lt;p&gt; &lt;br&gt;
💪😺👍&lt;br&gt;
Keep your skill-building-ship afloat this week!&lt;br&gt;
⛵🔧🏴‍☠️&lt;/p&gt;
&lt;p&gt; &lt;br&gt;
Ola Vea&lt;br&gt;
Cap&apos;n of his own skill-builder-ship&lt;/p&gt;
</content:encoded></item><item><title>⛵ 🔧 ~ How did I free up my mind to focus on ONE coding step at the time? While live coding, late at night.</title><link>https://queen.raae.codes/2022-01-18-free-focus/</link><guid isPermaLink="true">https://queen.raae.codes/2022-01-18-free-focus/</guid><description>My Sunday Skill Builder Sessions: This Sunday, I did 2 live Skill-Builder-Sessions, and the second was terrible! 🙀 I knew it when waking up, so I prepared. I…</description><pubDate>Tue, 18 Jan 2022 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;My Sunday Skill Builder Sessions:&lt;/h2&gt;
&lt;p&gt;This Sunday, I did 2 live Skill-Builder-Sessions, and the second was terrible! 🙀&lt;/p&gt;
&lt;p&gt;I knew it when waking up, so I prepared. I needed to prepare to keep myself un-distracted even when tired.&lt;/p&gt;
&lt;p&gt;My daily morning Skill-Builder-Session went well because my mind is fresh, alone, and un-distracted up in my labyrinthine loft. Just my code, my coffee, and I.&lt;/p&gt;
&lt;p&gt;But my second Skill-Builder-Session would be worse because live coding is distracting. You know, making sure video and audio are ok. And comments, putting them on screen, reading them out loud, removing them from the screen. And then my own talking, getting carried away into a story, for example. Distracting. But smooth sailing compared to later, in the dark and stormy night.&lt;/p&gt;
&lt;p&gt;However, the terrible third session would find me physically and mentally tired for four reasons.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;08:00 PM is LATE for me. Most normal days, I am literally in bed reading a book about heroes in ancient Greece.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;No coffee. For many hours.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I would have come straight up from a great-tasting but rich fish dinner cooked by the Queen herself.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Before the dinner, I would have come straight in from bicycling Lillian (7 🏴‍☠️👸) to the wintry woods. Bicycling around after the skiing Pirate Princess between the ski tracks under snow-laden branches and bicycling back home on icy and car-filled roads. Lovely, but tiring.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;So I knew I&apos;d be tired and distracted. How did I prepare to free up my mind to focus on only one coding step at the time?&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;skill-builder-w3-2022.jpg&quot; alt=&quot;focus&quot;&gt;&lt;/p&gt;
&lt;h2&gt;What did I do?&lt;/h2&gt;
&lt;p&gt;I used an acronym to name the steps of my task. I wrote «iACTiONS» on paper.&lt;/p&gt;
&lt;h2&gt;Why did I do it?&lt;/h2&gt;
&lt;p&gt;Looking over at «iACTiONS» freed up my mind to focus on doing each step. Like i. id.&lt;/p&gt;
&lt;h2&gt;How did I do it?&lt;/h2&gt;
&lt;p&gt;I wrote down the «iACTiONS» on paper like this:&lt;/p&gt;
&lt;p&gt;i. id
A. actions
C. contentDigest
T. type
i. internal: {
O. (OLA_TUBE_ID)
N. node
S. singing&lt;/p&gt;
&lt;p&gt;Every time I got distracted, I could take a quick look at my paper. But because I KNEW my paper was there, I relaxed and stayed focused enough to remember that I was on «T. type» and get back to coding. I remember this happening several times 💪😺.&lt;/p&gt;
&lt;p&gt; &lt;br&gt;
💪😺👍&lt;br&gt;
Keep your skill-building-ship afloat this week!&lt;br&gt;
⛵🔧🏴‍☠️&lt;/p&gt;
&lt;p&gt; &lt;br&gt;
Ola Vea&lt;br&gt;
Cap&apos;n of his own skill-builder-ship&lt;/p&gt;
&lt;p&gt; &lt;br&gt;
&lt;strong&gt;PS:&lt;/strong&gt; Here is the video of my late-night live Skill-Builder-Session &lt;a href=&quot;https://youtu.be/_ZLxiOfhIi8?t=329&quot;&gt;starting at 5 minutes&lt;/a&gt; when I start coding from «i. id» If you watch for 1 minute, you will see gorgeous Giggles-the-pug in the video of the id I am using. Giggles is one of Sid&apos;s two dogs. Sid, formerly at Gatsby, now at Cloudflare.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;PPS:&lt;/strong&gt; You can find my cheat sheet for the live coding [this GitHub issue] (https://github.com/olavea/Rubys-TimeShip/issues/8).&lt;/p&gt;
</content:encoded></item><item><title>⛵ 🔧 ~ Minimal-doable-task</title><link>https://queen.raae.codes/2022-01-12-minimal-doable-task/</link><guid isPermaLink="true">https://queen.raae.codes/2022-01-12-minimal-doable-task/</guid><description>My Sunday Skill Builder Session: I made a minimal-doable-task 🧚‍♀️ What did I do? I deconstructed a task into a minimal-doable-task Why did I do it? I wanted…</description><pubDate>Wed, 12 Jan 2022 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;My Sunday Skill Builder Session:&lt;/h2&gt;
&lt;p&gt;I made a minimal-doable-task 🧚‍♀️&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./skill-builder-w2-2022-ship-it.jpg&quot; alt=&quot;Now I have a Taskerbell-Task&quot;&gt;&lt;/p&gt;
&lt;h2&gt;What did I do?&lt;/h2&gt;
&lt;p&gt;I deconstructed a task into a minimal-doable-task&lt;/p&gt;
&lt;h2&gt;Why did I do it?&lt;/h2&gt;
&lt;p&gt;I wanted my task to be tiny, so that I could automate it in my skull, by doing it again and again. Automating it in my skull is skill building.&lt;/p&gt;
&lt;h2&gt;How did I do it?&lt;/h2&gt;
&lt;p&gt;I wrote down the two smallest tasks i did this week. I picked the smallest task, cut it in half. I picked one half. I cut my half-task in 3. Now I have a Taskerbell-Task.&lt;/p&gt;
&lt;p&gt; &lt;br&gt;
💪😺👍&lt;br&gt;
Keep your skill-building-submarine afloat this week!&lt;br&gt;
⛵🔧🏴‍☠️&lt;/p&gt;
&lt;p&gt; &lt;br&gt;
Cap&apos;n Ola Vea&lt;/p&gt;
&lt;p&gt; &lt;br&gt;
&lt;strong&gt;PS:&lt;/strong&gt; Sunday&apos;s #OlaCast is rescheduled for 11:30 CET where you get to see my &lt;a href=&quot;https://youtu.be/4fQj3YNKYoQ&quot;&gt;minimal-doable-task in action&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>⛵ 🔧 ~ Programatically create pages for tags from Sanity.io</title><link>https://queen.raae.codes/2022-01-04-tag-pages/</link><guid isPermaLink="true">https://queen.raae.codes/2022-01-04-tag-pages/</guid><description>My Sunday Skill Builder Session: What did I do? I followed the &quot;red string&quot; of one tag from the front end of the web app and all the way back to my backend in…</description><pubDate>Tue, 04 Jan 2022 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;My Sunday Skill Builder Session:&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;tags-on-a-pink-card-from-twitter-smaller.jpg&quot; alt=&quot;tags-on-a-pink-card&quot;&gt;&lt;/p&gt;
&lt;h2&gt;What did I do?&lt;/h2&gt;
&lt;p&gt;I followed the &amp;quot;red string&amp;quot; of one tag from the front end of the web app and all the way back to my backend in sanity.io.&lt;/p&gt;
&lt;h2&gt;Why did I do it?&lt;/h2&gt;
&lt;p&gt;I want to use tags in a way that make it easier for Lillian (7 🏴‍☠️👸) to finish her projects by shipping them to the internet — and then archiving her projects on my labyrinthine loft because it is good for skill-building to finish projects.&lt;/p&gt;
&lt;h2&gt;How did I do it?&lt;/h2&gt;
&lt;p&gt;See this two-minute summary where I followed the &amp;quot;red string&amp;quot; of one tag from the frontend of the web app and all the way back to my backend in sanity.io.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://youtu.be/ix_0vrwQnWk?t=1200&quot;&gt;Ola follows the &amp;quot;red string&amp;quot; near the end of 🏴‍☠️ OlaCast: Sunday Skill Builder Session&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you feel like doing me a favor, you can give me a 🏴‍☠️ emoji comment to feed my youtube algos some vitamins.&lt;/p&gt;
&lt;p&gt;💪😺👍&lt;br&gt;
Keep your skill-building-submarine afloat this week!&lt;br&gt;
🔧⛵🏴‍☠️&lt;/p&gt;
&lt;p&gt; &lt;br&gt;
Cap&apos;n Ola Vea&lt;/p&gt;
</content:encoded></item><item><title>⛵ 🔧 ~ Create data relationship between TAGS and Lillian&apos;s photos of projects</title><link>https://queen.raae.codes/2021-12-21-data-model/</link><guid isPermaLink="true">https://queen.raae.codes/2021-12-21-data-model/</guid><description>My Skill Building Session: What did I do? Create data relationship between TAGS and Lillian&apos;s photos of projects. Why did I do it? To make it easier for…</description><pubDate>Tue, 21 Dec 2021 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;My Skill Building Session:&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;./data-relationships-1-w51-2021.jpg&quot; alt=&quot;data-relationships&quot;&gt;&lt;/p&gt;
&lt;h2&gt;What did I do?&lt;/h2&gt;
&lt;p&gt;Create data relationship between TAGS and Lillian&apos;s photos of projects.&lt;/p&gt;
&lt;h2&gt;Why did I do it?&lt;/h2&gt;
&lt;p&gt;To make it easier for Lillian to ship her projects to friends.&lt;/p&gt;
&lt;h2&gt;How did I do it?&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;The Plan&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;S - See: &lt;code&gt;toppings&lt;/code&gt; are not on &lt;code&gt;pizzas&lt;/code&gt; in GraphQL&lt;br&gt;
A - Array: Add &lt;code&gt;array&lt;/code&gt; to pizza.js in Sanity&lt;/p&gt;
&lt;p&gt;N - Nodes: &lt;code&gt;toppings&lt;/code&gt; are now on &lt;code&gt;pizzas&lt;/code&gt; in GraphQL&lt;/p&gt;
&lt;p&gt;Look at these steps later:&lt;/p&gt;
&lt;p&gt;I - Into my webapp with GraphQL&lt;/p&gt;
&lt;p&gt;T - Treasure: TBD&lt;br&gt;
Y - Yeah: Toppings can be linked in my web app after copy-pasting some Wes Bos wizardry.&lt;/p&gt;
&lt;h2&gt;The Steps&lt;/h2&gt;
&lt;h3&gt;S - See: &lt;code&gt;toppings&lt;/code&gt; are not on &lt;code&gt;pizzas&lt;/code&gt; in GraphQL or in GraphiQL&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-js&quot;&gt;// ToppingsFilter.js
// How do I get a list of all the pizzas with their toppings?
const { pizzas } = useStaticQuery(graphql`
  query {
    pizzas: allSanityPizza {
      nodes {
        // 👁️ Look no &amp;quot;toppings&amp;quot; here 👀
        id
      }
      slug {
        current
      }
    }
  }
}`);
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;A - Array: Add &lt;code&gt;array&lt;/code&gt; to pizza.js in Sanity&lt;/h3&gt;
&lt;p&gt;I added this code to my pizza.js. in Sanity&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-js&quot;&gt;// schemas/pizza.js
  {
    name: &apos;toppings&apos;,
    title: &apos;Toppings and Tools and Tags of Pirate Princess Lillian (6 🏴‍☠️👸)&apos;,
    type: &apos;array&apos;,
    of: [{ type: &apos;reference&apos;, to: [{ type: &apos;topping&apos; }] }],
  }
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;N - Nodes: &lt;code&gt;toppings&lt;/code&gt; are now on &lt;code&gt;pizzas&lt;/code&gt; in GraphQL&lt;/h3&gt;
&lt;p&gt;I looked in my GraphiQL and copy-pasted the new query into ToppingsFilter.js&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-js&quot;&gt;// Rubys-TimeShip/src/components/ToppingsFilter.js
// This is how do I get a list of all the Pizzas with their toppings!
const { pizzas } = useStaticQuery(graphql`
  query {
    pizzas: allSanityPizza {
      nodes {
        toppings {
          name
          id
        }
        slug {
          current
        }
        id
      }
    }
  }
`);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And that&apos;s enough steps for this week!&lt;/p&gt;
&lt;p&gt;Pirate Princess Lillian joined me at the beginning of Sunday&apos;s &lt;a href=&quot;https://youtu.be/ix_0vrwQnWk&quot;&gt;skill building session on youtube&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you would like to see how the web app will look in the end &lt;a href=&quot;https://youtu.be/ix_0vrwQnWk?t=1200&quot;&gt;jump to the 20 minute mark&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;💪😺👍&lt;br&gt;
Keep your skill-building-submarine afloat this week!&lt;br&gt;
⛵🔧🏴‍☠️&lt;/p&gt;
&lt;p&gt; &lt;br&gt;
Cap&apos;n Ola Vea&lt;/p&gt;
&lt;p&gt; &lt;br&gt;
&lt;strong&gt;PS:&lt;/strong&gt; If you feel like doing me a favour give me a smiley emoji comment to feed my youtube algo some vitamins.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://timeship1.gatsbyjs.io/pizzas/&quot;&gt;The web app I am working on&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://youtu.be/ix_0vrwQnWk?t=1200&quot;&gt;Direct link to the 20 minute mark in Sunday&apos;s OlaCast on YouTube&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item></channel></rss>