<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Jonathan Giardino</title>
    <description>The latest articles on DEV Community by Jonathan Giardino (@jonathan_gardn).</description>
    <link>https://dev.to/jonathan_gardn</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%2F369773%2F9ff24d8d-792b-48ad-b2e3-7d379c991cb9.png</url>
      <title>DEV Community: Jonathan Giardino</title>
      <link>https://dev.to/jonathan_gardn</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jonathan_gardn"/>
    <language>en</language>
    <item>
      <title>3 Random Reasons to love SwiftUI</title>
      <dc:creator>Jonathan Giardino</dc:creator>
      <pubDate>Sat, 20 Jun 2020 10:14:20 +0000</pubDate>
      <link>https://dev.to/jonathan_gardn/3-random-reasons-to-love-swiftui-nln</link>
      <guid>https://dev.to/jonathan_gardn/3-random-reasons-to-love-swiftui-nln</guid>
      <description>&lt;p&gt;A few weeks ago I started my journey to become an expert in SwiftUI, you can read about it &lt;a href="https://dev.to/jonathan_gardn/my-100-days-of-swiftui-begin-here-3mcf"&gt;here&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;I am a Javascript developer so many "programming" concepts are quite easy to pick up, however, when I started getting into SwiftUI I felt a feeling of joy and excitement to what concerns building UIs with a completely different approach.&lt;/p&gt;

&lt;p&gt;Every day that I spend learning this framework I feel more and more enthusiastic about it. &lt;/p&gt;

&lt;p&gt;Today, I am going to list 3 Random Reasons to join me in loving this new fantastic way of building iOS native apps, and I am not even going deep.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Goodbye Grid and Flexbox
&lt;/h2&gt;

&lt;p&gt;I don't think Grid and Flexbox are bad, in fact, they are actually an amazing way to layout web and mobile apps. However, as the most performing athletes or the most popular and successful people on the planet remind us every day, we can always do better.&lt;/p&gt;

&lt;p&gt;This is what happened, in my opinion with SwiftUI.&lt;/p&gt;

&lt;p&gt;VStack (Vertical Stack), HStack (Horizontal Stack), and ZStack (Depth Stack, from Z-Index) are the three containers that speed the development of a layout tremendously. As you can deduct they help you to layout your elements vertically, horizontally, or layered on each other.&lt;/p&gt;

&lt;p&gt;Plus, each element in SwiftUI starts positioning itself from the center, which is really handy.&lt;/p&gt;

&lt;p&gt;Let's say I want to have three squares with some text, one on top in the middle, the other two below stacked horizontally. All this needs to be on a circled shape that works as a background.&lt;/p&gt;

&lt;p&gt;This is how we would do it in SwiftUI:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="kt"&gt;ZStack&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; 
&lt;span class="c1"&gt;//The order of the layers goes from top to bottom, the first element will be in the back and accordingly all the following on top of each other.&lt;/span&gt;
            &lt;span class="kt"&gt;Circle&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;foregroundColor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;gray&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="kt"&gt;VStack&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="c1"&gt;//Here we stack vertically a text element and a HStack that in turn has two text elements but this time they will layout horizontally&lt;/span&gt;
                &lt;span class="kt"&gt;Text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Hello, World!"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                    &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;frame&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt; &lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                    &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;background&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;Color&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cyan&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
                &lt;span class="kt"&gt;HStack&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                    &lt;span class="kt"&gt;Text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"No Need of Grid"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                        &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;frame&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt; &lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                        &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;background&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;Color&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;systemPink&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
                    &lt;span class="kt"&gt;Text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"..Or Flexbox!"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                        &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;frame&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt; &lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                        &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;background&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;Color&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;yellow&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
                &lt;span class="p"&gt;}&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--JK-5xjnd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/o3gyv5j4pjdtb2j0rgq2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--JK-5xjnd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/o3gyv5j4pjdtb2j0rgq2.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Don't you love it already?&lt;/p&gt;

&lt;h2&gt;
  
  
  2.Spacers
&lt;/h2&gt;

&lt;p&gt;What if we want to move the first square on top of the screen and the other two on the bottom.&lt;/p&gt;

&lt;p&gt;Easy peasy, we just insert a &lt;code&gt;Spacer()&lt;/code&gt; between them and this will push them all the way to the end of the screen, and the direction will be based on the StackView they belong to, which in this case is a VStack, hence vertically.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="kt"&gt;ZStack&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="kt"&gt;Circle&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;foregroundColor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;gray&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="kt"&gt;VStack&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="kt"&gt;Text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Hello, World!"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                    &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;frame&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt; &lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                    &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;background&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;Color&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cyan&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

                &lt;span class="kt"&gt;Spacer&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

                &lt;span class="kt"&gt;HStack&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                    &lt;span class="kt"&gt;Text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"No Need of Grid"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                        &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;frame&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt; &lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                        &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;background&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;Color&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;systemPink&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
                    &lt;span class="kt"&gt;Text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"..Or Flexbox!"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                        &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;frame&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt; &lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                        &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;background&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;Color&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;yellow&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
                &lt;span class="p"&gt;}&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5Me8nGOl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/zxt51oy77nch3gzoyt2n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5Me8nGOl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/zxt51oy77nch3gzoyt2n.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Live Canvas
&lt;/h2&gt;

&lt;p&gt;Are you tired like me to rebuild the project every time you edit a corner radius of a button or change the spacing or the font of a paragraph?&lt;/p&gt;

&lt;p&gt;Well, SwiftUI has a Live Canvas that show the changes almost to the second. It's really impressive and speeds up UI development amazingly.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NmbN4tdN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/12n6qmr5inxi4ornp0lg.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NmbN4tdN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/12n6qmr5inxi4ornp0lg.gif" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Any feedback, comment or advice is super appreciated, in fact it is encouraged.&lt;/p&gt;

&lt;p&gt;Let's connect!&lt;/p&gt;

&lt;p&gt;Website: &lt;a href="https://jonathangiardino.com/"&gt;jonathangiardino.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Twitter: &lt;a href="https://twitter.com/jonathan_gardn"&gt;@jonathan_gardn&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Medium: &lt;a href="https://medium.com/@jonathangiardino"&gt;@jonathangiardino&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Photo by Louis Hansel @shotsoflouis on &lt;a href="%5Bhttps://unsplash.com/photos/MardkT836BU%5D(https://unsplash.com/photos/MardkT836BU)"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

</description>
      <category>swift</category>
      <category>ios</category>
      <category>programming</category>
      <category>beginners</category>
    </item>
    <item>
      <title>3 things I've learned about Swift in the last week.</title>
      <dc:creator>Jonathan Giardino</dc:creator>
      <pubDate>Tue, 09 Jun 2020 09:35:41 +0000</pubDate>
      <link>https://dev.to/jonathan_gardn/3-things-i-learned-about-swift-in-the-last-week-417e</link>
      <guid>https://dev.to/jonathan_gardn/3-things-i-learned-about-swift-in-the-last-week-417e</guid>
      <description>&lt;p&gt;Here I am with another episode of My 100 Days of SwiftUI journey.&lt;/p&gt;

&lt;p&gt;In the last few days, I went through some fundamentals of the Swift language like functions, closures, and structs, and as a Frontend developer used to write Javascript I've found lots of commonalities, however when switching to another language some things are named or used differently.&lt;/p&gt;

&lt;p&gt;Additionally, Javascript (unless using Typescript) is not a strongly typed language which makes it different from Swift or other programming languages.&lt;/p&gt;

&lt;p&gt;In this article, I won't go over the fundamentals of Swift but I would like to highlight 3 things that I did not know and that I could not relate as a programmer, coming from Javascript.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Inout parameters
&lt;/h3&gt;

&lt;p&gt;All the parameters that are passed into Swift function cannot be changed as they are constants, so  we basically return a new value every time we call that function with a new argument in the parameter.&lt;/p&gt;

&lt;p&gt;Thanks to the &lt;strong&gt;&lt;em&gt;inout&lt;/em&gt;&lt;/strong&gt;  parameters we can change the value directly inside the function instead of returning a new one, and that will reflect the original value outside that function.&lt;/p&gt;

&lt;p&gt;For instance, let's say we want to raise a number to the tenth power:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="kd"&gt;func&lt;/span&gt; &lt;span class="nf"&gt;decuplicate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;number&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;inout&lt;/span&gt; &lt;span class="kt"&gt;Int&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;number&lt;/span&gt; &lt;span class="o"&gt;*=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;In this case we are not just making operation to multiply but we are multiplying and assigning the new value to &lt;code&gt;number&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;To use this function we need to create a variable to store the Int we are going to use in it and when we call that function we are going to use an ampersand before the variable name.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="nv"&gt;newNum&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; 
&lt;span class="nf"&gt;decuplicate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;number&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;newNum&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;I was a bit confused to be honest but this short explanation on &lt;a href="%5Bhttps://www.hackingwithswift.com/quick-start/understanding-swift/when-should-you-use-inout-parameters%5D(https://www.hackingwithswift.com/quick-start/understanding-swift/when-should-you-use-inout-parameters)"&gt;HackingWithSwift&lt;/a&gt; helped me. &lt;/p&gt;

&lt;h3&gt;
  
  
  2. Capturing values in closures
&lt;/h3&gt;

&lt;p&gt;When you return a closure in a function, that closure can access or "capture" the values present in that function and keep track of them even when they no longer exist.&lt;/p&gt;

&lt;p&gt;In this example the function &lt;code&gt;eat()&lt;/code&gt; returns a closure, that accordingly accepts a string as parameter and returns void (so basically return nothing, it just prints to the console):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="kd"&gt;func&lt;/span&gt; &lt;span class="nf"&gt;eat&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;String&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="kt"&gt;Void&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"I'm going to eat some &lt;/span&gt;&lt;span class="se"&gt;\(&lt;/span&gt;&lt;span class="nv"&gt;$0&lt;/span&gt;&lt;span class="se"&gt;)&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Then we can call that function and simply use the closure inside it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="nv"&gt;meal&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;eat&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="nf"&gt;meal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Fruit"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;//prints "I'm going to eat some Fruit"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;If we create a value inside the function &lt;code&gt;eat()&lt;/code&gt; , for example to keep track of how many times we eat. Our closure will capture that value which will remain active within the closure each time we call the function.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="kd"&gt;func&lt;/span&gt; &lt;span class="nf"&gt;eat&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;String&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="kt"&gt;Void&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="nv"&gt;mealCounter&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Meals for today: &lt;/span&gt;&lt;span class="se"&gt;\(&lt;/span&gt;&lt;span class="n"&gt;mealCounter&lt;/span&gt;&lt;span class="se"&gt;)&lt;/span&gt;&lt;span class="s"&gt;. I'm going to eat some &lt;/span&gt;&lt;span class="se"&gt;\(&lt;/span&gt;&lt;span class="nv"&gt;$0&lt;/span&gt;&lt;span class="se"&gt;)&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;mealCounter&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;And when we call the function our &lt;code&gt;mealCounter&lt;/code&gt; will increase each time &lt;code&gt;eat()&lt;/code&gt; is called.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="nf"&gt;meal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Beans and Eggs"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;meal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Tofu"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;meal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Salad"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;meal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Pizza"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;//mealCounter will increase to 5 in this case&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  3. Struct and Property observers
&lt;/h3&gt;

&lt;p&gt;When we create an instance of a struct, sometimes we want something to happen each time a property changes.&lt;/p&gt;

&lt;p&gt;Let's say we have created a struct that tracks how much distance we have done with our running or cycling:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="kd"&gt;struct&lt;/span&gt; &lt;span class="kt"&gt;Distance&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="nv"&gt;action&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;String&lt;/span&gt;
    &lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="nv"&gt;miles&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;Int&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Then we create an instance for our session:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="nv"&gt;session&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kt"&gt;Distance&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;action&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"Running"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;miles&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;session&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;miles&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;
&lt;span class="n"&gt;session&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;miles&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;7&lt;/span&gt;
&lt;span class="n"&gt;session&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;miles&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;12&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Wouldn't be cool if each time we call the &lt;code&gt;miles&lt;/code&gt; property and update it we also notify the user about the distance?&lt;/p&gt;

&lt;p&gt;Well, we can do that with Property observers lie &lt;code&gt;didSet()&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="kd"&gt;struct&lt;/span&gt; &lt;span class="kt"&gt;Distance&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="nv"&gt;action&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;String&lt;/span&gt;
    &lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="nv"&gt;miles&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;Int&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;didSet&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"You have been &lt;/span&gt;&lt;span class="se"&gt;\(&lt;/span&gt;&lt;span class="n"&gt;action&lt;/span&gt;&lt;span class="se"&gt;)&lt;/span&gt;&lt;span class="s"&gt; for &lt;/span&gt;&lt;span class="se"&gt;\(&lt;/span&gt;&lt;span class="n"&gt;miles&lt;/span&gt;&lt;span class="se"&gt;)&lt;/span&gt;&lt;span class="s"&gt;miles"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Any feedback, comment or advice is super appreciated, in fact, it is encouraged.&lt;/p&gt;

&lt;p&gt;Let's connect!&lt;/p&gt;

&lt;p&gt;Website: &lt;a href="https://jonathangiardino.com/"&gt;jonathangiardino.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Twitter: &lt;a href="https://twitter.com/jonathan_gardn"&gt;@jonathan_gardn&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Medium: &lt;a href="https://medium.com/@jonathangiardino"&gt;@jonathangiardino&lt;/a&gt;&lt;/p&gt;

</description>
      <category>swift</category>
      <category>ios</category>
      <category>beginners</category>
      <category>programming</category>
    </item>
    <item>
      <title>Fundamentals and  surprising discoveries in Swift (Bonus at the end)</title>
      <dc:creator>Jonathan Giardino</dc:creator>
      <pubDate>Wed, 03 Jun 2020 15:58:11 +0000</pubDate>
      <link>https://dev.to/jonathan_gardn/fundamentals-and-surprising-discoveries-in-swift-bonus-at-the-end-5c</link>
      <guid>https://dev.to/jonathan_gardn/fundamentals-and-surprising-discoveries-in-swift-bonus-at-the-end-5c</guid>
      <description>&lt;p&gt;In my previous post, &lt;strong&gt;&lt;em&gt;&lt;a href="https://dev.to/jonathan_gardn/my-100-days-of-swiftui-begin-here-3mcf"&gt;My 100 Days of SwiftUI begin here&lt;/a&gt;,&lt;/em&gt;&lt;/strong&gt; I explained the process that brought me to start this blog series and this is the first episode of the journey, all aboard!&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;em&gt;Variables, simple data types, and string interpolation&lt;/em&gt;
&lt;/h3&gt;

&lt;p&gt;When going through really basic fundamentals concepts are simple, but like often happens, one ends up finding out little surprising details. That is exactly what happened.&lt;/p&gt;

&lt;p&gt;For instance, I knew already about Multi-line strings, but what I did not know is that the start and end with three double quote marks must on their own line.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="nv"&gt;str&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"""
This goes
over multiple
lines
"""&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Another example is that we can split big integers using underscores, for better readability.  This came really out of nowhere! 😅 &lt;/p&gt;

&lt;p&gt;Am I the only one who finds this cool?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="nv"&gt;billion&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1_000_000_000&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;em&gt;Complex types&lt;/em&gt;
&lt;/h3&gt;

&lt;p&gt;Coming from a Javascript background it was easy enough for me to understand arrays, sets, and tuples, but I found out a new interesting feature that I did not know about.&lt;/p&gt;

&lt;p&gt;When creating an empty collection we can use the pretty common syntax below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="c1"&gt;//Empty Dictionary&lt;/span&gt;
&lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="nv"&gt;person&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="kt"&gt;String&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;String&lt;/span&gt;&lt;span class="p"&gt;]()&lt;/span&gt;

&lt;span class="c1"&gt;//Empty Array&lt;/span&gt;
&lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="nv"&gt;age&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="kt"&gt;Int&lt;/span&gt;&lt;span class="p"&gt;]()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;But this is not possible when creating a Set instead, where we need to use angle brackets:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="nv"&gt;random&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kt"&gt;Set&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;String&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Fun fact, we can use angle brackets everywhere if we want, also in Dictionaries and Arrays, maybe this would look good and give consistency, don't you think?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="nv"&gt;person&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kt"&gt;Dictionary&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;String&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;String&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="nv"&gt;age&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kt"&gt;Array&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;Int&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="nv"&gt;random&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kt"&gt;Set&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;String&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;As promised a little &lt;strong&gt;&lt;em&gt;BONUS&lt;/em&gt;&lt;/strong&gt; that might be nothing, but it was so cool for me to find out!&lt;/p&gt;

&lt;p&gt;While going through the #100DaysOfSwiftUI, I am doing another course on &lt;a href="%5Bhttps://www.udemy.com/course/swiftui-masterclass-course-ios-development-with-swift/%5D(https://www.udemy.com/course/swiftui-masterclass-course-ios-development-with-swift/)"&gt;Udemy&lt;/a&gt; taught by &lt;a href="%5Bhttps://twitter.com/RobertPetras%5D(https://twitter.com/RobertPetras)"&gt;Robert Petras(@RobertPetras)&lt;/a&gt; for fun and to learn some little tricks to add on my new and first iOS app.&lt;/p&gt;

&lt;p&gt;At the and of a section, Robert explains how to create custom Stickers to send in Messages, and I was really excited about how easy it is.&lt;/p&gt;

&lt;p&gt;All you need to do is to go to the root folder in Xcode, and in the general panel on the bottom-left click on the plus button inside the "Project" sidebar.&lt;/p&gt;

&lt;p&gt;Here you can type sticker and select "Sticker Pack Extension", click next and create the new Sticker folder.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XOXEL7h5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/jigygvvt3xz1llx5r3q8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XOXEL7h5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/jigygvvt3xz1llx5r3q8.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And easy enough, inside that folder created: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Navigate to the .xcassets folder&lt;/li&gt;
&lt;li&gt;Add the correct icon sizes that will show in the Messages app as an option to attach the stickers inside the App icon&lt;/li&gt;
&lt;li&gt;Add the stickers images inside the Sticker Pack folder&lt;/li&gt;
&lt;li&gt;Build your app and when opening the Messages app in the options to attach your new Sticker pack will appear!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I was more excited than when I first created a form in Javascript 😂&lt;/p&gt;

&lt;p&gt;Any feedback, comment or advice is super appreciated, in fact, it is encouraged.&lt;/p&gt;

&lt;p&gt;Let's connect!&lt;br&gt;
Website: &lt;a href="https://jonathangiardino.com"&gt;jonathangiardino.com&lt;/a&gt;&lt;br&gt;
Twitter: &lt;a href="https://twitter.com/jonathan_gardn"&gt;@jonathan_gardn&lt;/a&gt;&lt;br&gt;
Medium: &lt;a href="https://medium.com/@jonathangiardino"&gt;@jonathangiardino&lt;/a&gt;&lt;/p&gt;

</description>
      <category>swift</category>
      <category>beginners</category>
      <category>ios</category>
      <category>programming</category>
    </item>
    <item>
      <title>My 100 Days of SwiftUI begin here</title>
      <dc:creator>Jonathan Giardino</dc:creator>
      <pubDate>Tue, 02 Jun 2020 06:57:10 +0000</pubDate>
      <link>https://dev.to/jonathan_gardn/my-100-days-of-swiftui-begin-here-3mcf</link>
      <guid>https://dev.to/jonathan_gardn/my-100-days-of-swiftui-begin-here-3mcf</guid>
      <description>&lt;p&gt;Here I am, writing my first blog post ever. &lt;/p&gt;

&lt;p&gt;I will write a journal about switching from web and front-end development to iOS development sharing the topics and my learning process, as well as my understanding and point of view.&lt;/p&gt;

&lt;p&gt;Why am I doing this? Why would one start to blog?&lt;br&gt;
I googled and searched for this as well and tons of answers came up:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fame or creating a personal brand&lt;/li&gt;
&lt;li&gt;Making a side income&lt;/li&gt;
&lt;li&gt;Having an online presence &lt;/li&gt;
&lt;li&gt;Share Your Knowledge&lt;/li&gt;
&lt;li&gt;Become an authority in your industry&lt;/li&gt;
&lt;li&gt;the list goes on and on...&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then, a few days ago I was running and listening to &lt;a href="https://syntax.fm/"&gt;Syntax&lt;/a&gt;, a podcast about Web development hosted by &lt;a href="https://twitter.com/wesbos"&gt;Wes Bos(@wesbos)&lt;/a&gt; and &lt;a href="https://twitter.com/stolinski"&gt;Scott Tolinski(@stolinski)&lt;/a&gt;, and they were talking exactly about it.&lt;/p&gt;

&lt;p&gt;To sum up, if you want to start blogging, YouTubing or podcasting about something you need to ask yourself "why?", otherwise it can get really tough to keep up with it. &lt;/p&gt;

&lt;p&gt;So I did, and the answer is that I want to document each step of my journey, to strengthen my learning process and knowledge about the topic, but also to inspire other fellow beginners to feel proud and happy about learning new things.&lt;/p&gt;

&lt;p&gt;It is easy to feel frustrated in this field, especially when watching tutorials or taking courses. It's easy to compare ourselves to the major experts in the fields, or feeling "not capable" when after watching a tutorial we open the editor and we don't know where to start. &lt;/p&gt;

&lt;p&gt;The truth is that each little step we take, it's a huge chunk of knowledge we did not have yesterday, and that is a success. &lt;/p&gt;

&lt;p&gt;That's my reason, that's why I started blogging about my journey.&lt;br&gt;
To strengthen my knowledge and to literally visualize my progress at each blog post.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Now, why iOS, why Swift?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Apple has been in my life forever, in different shapes and colors.&lt;br&gt;
I have been working in Apple Premium Resellers, Apple Store, in Corporate and I have been an Apple enthusiast for most of my adult life. &lt;/p&gt;

&lt;p&gt;About one month and half ago, I decided to look into Swift for the first time and fell in love with it. I bought a great course by &lt;a href="https://twitter.com/yu_angela"&gt;Angela Yu(@yu_angela)&lt;/a&gt; on &lt;a href="https://www.udemy.com/course/ios-13-app-development-bootcamp/"&gt;Udemy&lt;/a&gt; and studied every day until I reached half the course.&lt;/p&gt;

&lt;p&gt;I felt that I was grasping the fundamentals but I was doing nothing to retain and make this language mine.&lt;/p&gt;

&lt;p&gt;There I decided that I needed to build an app from scratch, because in the course I came across so many concepts that it felt overwhelming to keep up with.&lt;/p&gt;

&lt;p&gt;(I am currently designing the app and will start building once I complete the wireframes!)&lt;/p&gt;

&lt;p&gt;I put that course on pending for the time being and embarked on the &lt;a href="https://www.hackingwithswift.com/100/swiftui/"&gt;#100DaysOfSwiftUI&lt;/a&gt;, a 100 days journey/commitment created by &lt;a href="https://twitter.com/twostraws"&gt;Paul Hudson(@twostraws)&lt;/a&gt; to study and practice Swift and SwiftUI 1 hour a day, starting over from the basics.&lt;/p&gt;

&lt;p&gt;And this is what I will be doing while building my first app!&lt;/p&gt;

&lt;p&gt;Any feedback, comment or advice is super appreciated, in fact it is encouraged.&lt;/p&gt;

&lt;p&gt;Let's connect!&lt;br&gt;
Website: &lt;a href="https://jonathangiardino.com/"&gt;jonathangiardino.com&lt;/a&gt;&lt;br&gt;
Twitter: &lt;a href="https://twitter.com/jonathan_gardn"&gt;@jonathan_gardn&lt;/a&gt;&lt;br&gt;
Medium: &lt;a href="https://medium.com/@jonathangiardino"&gt;@jonathangiardino&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Photo by Dmitry Chernyshov on &lt;a href="https://unsplash.com/photos/SyYmXSDnJ54"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

</description>
      <category>swift</category>
      <category>beginners</category>
      <category>ios</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
