<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Kelsey Harrison]]></title><description><![CDATA[Kelsey Harrison]]></description><link>https://kelseyharrison.me</link><generator>RSS for Node</generator><lastBuildDate>Tue, 12 May 2026 02:00:08 GMT</lastBuildDate><atom:link href="https://kelseyharrison.me/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Beginner Guide To Your First Apple Watch App (part 2)]]></title><description><![CDATA[In my last post we created a simple counter app where users can increment or decrement the number displayed. In this tutorial we will be adding timer functionality. 
If you haven't read my previous tutorial I would suggest starting with my last post ...]]></description><link>https://kelseyharrison.me/beginner-guide-to-your-first-apple-watch-app-part-2</link><guid isPermaLink="true">https://kelseyharrison.me/beginner-guide-to-your-first-apple-watch-app-part-2</guid><dc:creator><![CDATA[Kelsey Harrison]]></dc:creator><pubDate>Sun, 06 Mar 2022 14:37:12 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1646577411118/POhBEX7rb.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In my last post we created a simple counter app where users can increment or decrement the number displayed. In this tutorial we will be adding timer functionality. </p>
<p>If you haven't read my previous tutorial I would suggest starting with my last post as we will be building off of that. </p>
<h2 id="heading-step-1">Step 1</h2>
<p>Add the three additional buttons</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1646575722859/rt2rSM8aS.png" alt="Screen Shot 2022-03-06 at 9.08.26 AM.png" /></p>
<p>we will add the start, pause and clear buttons inside a new HStack below the HStack that holds our current buttons.</p>
<h2 id="heading-step-2">Step 2</h2>
<p>Add additional State variable and import</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1646519206452/YW0nkKxow.png" alt="Screen Shot 2022-03-05 at 5.26.15 PM.png" /></p>
<p>First we need to import <strong>Combine</strong>. Combine declares publishers to allow values to change over time. For further information about Combine you can check out the <a target="_blank" href="https://developer.apple.com/documentation/combine">Documentation</a>.</p>
<p>We will add a State variable for our timer.</p>
<pre><code>@State <span class="hljs-keyword">private</span> <span class="hljs-keyword">var</span> timer <span class="hljs-operator">=</span> Timer.publish(every: <span class="hljs-number">1</span>, on: .main, in: .common).autoconnect()
</code></pre><p>For the timer we are setting it to Timer.publish, we will set <strong>every</strong> to 1, this will update the  time interval on which to publish events every 1 second. We will set <strong>on</strong> to .main, which will tell the timer to run on the main thread. We will set <strong>in</strong> to .common, which will tell the timer it should run on the common run loop.</p>
<p>You must explicitly connect to the Timer publisher to begin publishing events you can use .connect() but we will use .autoconnect() to automatically connect when a subscriber attaches.</p>
<h2 id="heading-step-3">Step 3</h2>
<p>Connect timer to count</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1646518382548/I_zSNPoUc.png" alt="Screen Shot 2022-03-05 at 5.12.22 PM.png" /></p>
<p>The first thing to think about is, what do we want to happen on our timer. Every second it runs we will decrement our count. To do this we will add onReceive and pass it our timer. Since the return type will be unused we can say <em>_ in</em>. we will write an if statement so that when count == 0 we are going to stop the counter. This will achieve two things, when we start the application the timer wont start counting down but it will also stop when it hits 0 so we wont be going into negative numbers. You will notice we used a ternary operator which achieves the same as an if else. We are saying set count to = count - 1 or 0 depending on if count is &gt; 0. </p>
<pre><code>  .onReceive(timer){ <span class="hljs-keyword">_</span> in
                    <span class="hljs-keyword">if</span> count <span class="hljs-operator">=</span><span class="hljs-operator">=</span> <span class="hljs-number">0</span> {
                        timer.upstream.connect().cancel()
                    }
                   count <span class="hljs-operator">=</span> count <span class="hljs-operator">&gt;</span> <span class="hljs-number">0</span> ? count <span class="hljs-operator">-</span> <span class="hljs-number">1</span> : <span class="hljs-number">0</span>
                }
</code></pre><h2 id="heading-step-4">Step 4</h2>
<p>Add timer to the play button</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1646518995743/JC6lbqBjO.png" alt="Screen Shot 2022-03-05 at 5.22.07 PM.png" /></p>
<p>When the application is started, because of the logic we just added, the timer will be stopped. We will add the following line of code to our play button to start the timer. </p>
<pre><code>timer <span class="hljs-operator">=</span> Timer.publish(every: <span class="hljs-number">1</span>, on: .main, in: .common).autoconnect()
</code></pre><h2 id="heading-step-5">Step 5</h2>
<p>Add pause functionality</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1646519319527/wTflcD3iz.png" alt="Screen Shot 2022-03-05 at 5.27.59 PM.png" /></p>
<p>To add the pause functionality we just need to stop the timer. We have done this before when we wrote conditional logic for when the timer reaches 0.  We just need to add the following line to our pause button. Additionally when we increment or decrement we also want to pause or stop the timer so we will add it to those buttons as well.</p>
<pre><code> timer.upstream.connect().cancel()
</code></pre><h2 id="heading-step-6">Step 6</h2>
<p>Add clear functionality</p>
<p>In this last step we will add the functionality for our <strong>Clear </strong> button. </p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1646519641847/VCx8NExze.png" alt="Screen Shot 2022-03-05 at 5.33.40 PM.png" /></p>
<p>we will add the following two lines of code. First we will stop the timer and then set count back to 0. </p>
<pre><code>timer.upstream.connect().cancel()
count <span class="hljs-operator">=</span> <span class="hljs-number">0</span>
</code></pre><h2 id="heading-you-did-it">You did it</h2>
<p>Once again you completed the tutorial. I hope you enjoyed this brief look at swiftUI. Start up your application and make it your own.</p>
<p>Thank you for reading.</p>
]]></content:encoded></item><item><title><![CDATA[Beginner Guide To Your First Apple Watch App]]></title><description><![CDATA[This will be a quick tutorial where I show you how to code a simple counter app. If you are new to iOS development you will have to install Xcode version 13 or higher.
Step 1
Install Xcode and create a new project

For this example we will be creatin...]]></description><link>https://kelseyharrison.me/beginner-guide-to-your-first-apple-watch-app</link><guid isPermaLink="true">https://kelseyharrison.me/beginner-guide-to-your-first-apple-watch-app</guid><category><![CDATA[Swift]]></category><category><![CDATA[Apple]]></category><dc:creator><![CDATA[Kelsey Harrison]]></dc:creator><pubDate>Fri, 25 Feb 2022 03:03:08 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1645757101561/g8fOzbGes.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>This will be a quick tutorial where I show you how to code a simple counter app. If you are new to iOS development you will have to install <strong>Xcode</strong> version 13 or higher.</p>
<h2 id="heading-step-1">Step 1</h2>
<p>Install Xcode and create a new project
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1645746775096/ilL31KVMT.png" alt="Screen Shot 2022-02-24 at 6.51.58 PM.png" /></p>
<p>For this example we will be creating a stand alone <strong>Watch App</strong> opposed to a iOS App with Watch App
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1645747372530/Zgsu0Ayvd.png" alt="Screen Shot 2022-02-24 at 6.00.17 PM.png" /></p>
<p>To finish setting up your project you will need add a Product Name, Team and Organization Identifier. The product name would be the name of your app. If this is your first time using Xcode you will have to sign in with an Apple ID to populate the Team. Organization Identifier usually starts with com.(your organization name). 
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1645747630998/Ve-dTs_4E.png" alt="Screen Shot 2022-02-24 at 6.04.26 PM.png" /></p>
<p>It might take a few minutes for Xcode to set up your project. Once complete you will be left with a basic Hello World App. 
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1645748102851/LMtbVihHY.png" alt="Screen Shot 2022-02-24 at 6.07.12 PM.png" /></p>
<h2 id="heading-step-2">Step 2</h2>
<p>Erase the Hello World code and set up our main VStack with an HStack inside it.</p>
<p>Inside the body view, we will add a VStack (vertical stack) which will hold our text of the count and a HStack (horizontal stack) which holds our buttons. In my example I added some alignment and spacing but feel free to play around and make this your own.
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1645748594325/Y4ZTa4fN2.png" alt="Screen Shot 2022-02-24 at 6.10.55 PM.png" /></p>
<h2 id="heading-step-3">Step 3</h2>
<p>Add the text for number</p>
<p>I added Text with value of "0" to the VStack. I also added some font styling to achieve the size, font weight and alignment I was looking for. 
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1645748919705/9WSde695A.png" alt="Screen Shot 2022-02-24 at 6.12.30 PM.png" /></p>
<h2 id="heading-step-4">Step 4</h2>
<p>Add our buttons</p>
<p>We want to add buttons that will increment and decrement our counter. Here I added a print statements to each button which will print to the console based on which button is pressed. If you build the app by pressing the play button in the top left you will notice the print statements however the number isn't changing. Why? We haven't told the button to control that variable. On to the next step.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1645749489690/im9AH_31U.png" alt="Screen Shot 2022-02-24 at 6.26.49 PM.png" /></p>
<h2 id="heading-step-5">Step 5</h2>
<p>In our final step we will be adding functionality to our buttons using a state variable</p>
<p>The reason we must use a state variable is because SwiftUI will reload any component that depends on that state variable as it changes. After adding the State variable there are a couple lines that we will add and one we will change as depicted below. We change our <strong>Text </strong> to use count, now our view will update as count changes. we increment count by setting count = count +1 when the positive button is clicked and decrement by setting count = count -1 on the minus button. </p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1645750581799/8t3gG1mCf.png" alt="Screen Shot 2022-02-24 at 7.55.37 PM.png" /></p>
<h2 id="heading-you-did-it">You did it!</h2>
<p>Now you can build your app and test it out. This is your app so feel free to play around with colours, fonts and features. This is the first of a two part tutorial so keep an eye for my next post. </p>
<p>Cheers.</p>
]]></content:encoded></item><item><title><![CDATA[Web Development or Native Development which is the "best"?]]></title><description><![CDATA[There might be a variety of reasons you are looking at comparing web development and native development. You could be looking at learning a new technology or deciding what technology to use in your latest project. Unfortunately this article will not ...]]></description><link>https://kelseyharrison.me/web-development-or-native-development-which-is-the-best</link><guid isPermaLink="true">https://kelseyharrison.me/web-development-or-native-development-which-is-the-best</guid><category><![CDATA[Web Development]]></category><category><![CDATA[native]]></category><dc:creator><![CDATA[Kelsey Harrison]]></dc:creator><pubDate>Thu, 10 Feb 2022 18:12:34 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/unsplash/cckf4TsHAuw/upload/v1644457538729/SWMBJbYvz.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>There might be a variety of reasons you are looking at comparing web development and native development. You could be looking at learning a new technology or deciding what technology to use in your latest project. Unfortunately this article will not tell you which is "better" or "worse". However I do hope you can take away which one is best for your use case. </p>
<h2 id="heading-what-is-the-difference">What is the difference?</h2>
<p>First, I think it is important to discuss what web and native development are. Web development like the name refers to anything that is viewed on a browser...kind of. 
web development from a high level can be a web page or progressive web app (PWA). native development for the most part is something developed for one specific platform such as an app in the Apple App Store or Google Play Store. </p>
<p>In addition to web and native development there is another layer of hybrid development which is the idea of building once to deploy multiple places. Popular solutions include <a target="_blank" href="https://reactnative.dev/">React Native</a> and <a target="_blank" href="https://flutter.dev/">Flutter</a>.</p>
<h2 id="heading-web-development">Web Development</h2>
<p>Web development for the most part consists of HTML, CSS and JavaScript. There are tons of libraries to choose from for design alone there are many including <a target="_blank" href="https://tailwindcss.com/">Tailwind CSS</a>, <a target="_blank" href="https://getbootstrap.com/">BootStrap</a> and <a target="_blank" href="https://materializecss.com/">Materialize</a>. When we talk about functionality there are plenty libraries such as <a target="_blank" href="https://reactjs.org/">React</a>, <a target="_blank" href="https://vuejs.org/">Vue</a> and <a target="_blank" href="https://angular.io/">Angular</a>. </p>
<h3 id="heading-pros">Pros</h3>
<h4 id="heading-documentation">Documentation</h4>
<p>Documentation and resources are endless. With the libraries and frameworks mentioned above the development process can be shorted and when roadblocks come, they can be dealt with quickly.</p>
<h4 id="heading-reachability">Reachability</h4>
<p>One of the biggest pros to web development is the audience you can reach with a web app. Anyone with a device and internet connection can interact with your content. With this being said there is a lot of content out there so standing out might be difficult. </p>
<h4 id="heading-quick-to-market">Quick to Market</h4>
<p>Another enticing reason a developer or team might pick a web App is ease and speed of delivery. When you take into consideration the multiple hosting options and how quickly you can register a domain the actual launching process of the application is smooth and quick. You can have it running in minutes and make updates just as fast. </p>
<h4 id="heading-cost">Cost</h4>
<p>Web apps on average cost less to develop and deploy. You also do not have to worry about creating and paying for a developer account with <a target="_blank" href="https://developer.apple.com/programs/">Apple</a> or <a target="_blank" href="https://developer.android.com/">Google</a>. With web apps you will have to acquire a domain and pay hosting.</p>
<h3 id="heading-cons">Cons</h3>
<h4 id="heading-limited-access-to-hardware">Limited Access to Hardware</h4>
<p>There are limitations to accessing features of your device such as file system, camera and GPS.  </p>
<h4 id="heading-user-time">User Time</h4>
<p>On average users spend less time on websites than apps. Having an app on the user's phone might encourage them to visit more (seeing the logo on their phone everyday) vs relying on the user to search your website. If a web app is what you choose but the user will visit often consider a PWA (progressive web app) so that the user is able to download it for easier access. </p>
<h4 id="heading-security">Security</h4>
<p>Security is up to the development team with both web and native apps however native applications offer additional security.</p>
<h2 id="heading-native-development">Native Development</h2>
<p>Native development is when you develop an app for a specific operating system. For iOS typically <a target="_blank" href="https://developer.apple.com/swift/">Swift</a> and for android its typically <a target="_blank" href="https://developer.android.com/kotlin">Kotlin</a> although there are other languages to write native applications in. </p>
<h3 id="heading-pros">Pros</h3>
<h4 id="heading-performance">Performance</h4>
<p>Depending on the functionality of your app you will see an increased performance</p>
<h4 id="heading-access-to-hardware">Access to Hardware</h4>
<p>Implementing features that utilize file system, GPS camera etc. that come with native development offer more full device access than solutions web development offers.</p>
<h4 id="heading-offline-use">Offline use</h4>
<p>There are options to implement offline capabilities. Maybe the apps content doesn't rely heavily on changing data, or the user can download information for later. </p>
<h3 id="heading-cons">Cons</h3>
<h4 id="heading-reachability">Reachability</h4>
<p>To allow users on different platforms to use your app every part of the process is doubled. You have to consider learning multiple programming languages, developing two apps, UX guidelines for each App Store and the developer accounts and costs along with that. </p>
<h4 id="heading-submission-process">Submission Process</h4>
<p>Submitting your application to the App Store or Google Play Store can be costly and timely. Depending on their guidelines you might have to make multiple revisions to your code and resubmit </p>
<h4 id="heading-updates">Updates</h4>
<p>Not only do updates take longer to implement because you are going through the respective app stores, but you also rely heavily on the user updating your application. There are many reasons a user might not update an app; they might not know there is an update, they might not have auto updates on, they might not have room on their device to update or their device could not be eligible for the update. This can be an issue when an update is addressing bug fixes or glitches. </p>
<h2 id="heading-conclusion">Conclusion</h2>
<p>In conclusion, there are use cases for both web applications and native applications. Every website does not need to be converted to a native app and every App does not need a web version. When choosing how you want to deliver your project it is important to take into consideration what you will be delivering and the limitations you will face with each option. This will help you make the best decision for your project.</p>
<p>Thank you for reading</p>
]]></content:encoded></item><item><title><![CDATA[Why blogging is a great way to start a career in software development?]]></title><description><![CDATA[Blogging is a great idea when starting your career in software development. Writing about the technologies you are working with will help solidify complex and new concepts.
Writing code and explaining how it works as a form of teaching others forces ...]]></description><link>https://kelseyharrison.me/why-blogging-is-a-great-way-to-start-a-career-in-software-development</link><guid isPermaLink="true">https://kelseyharrison.me/why-blogging-is-a-great-way-to-start-a-career-in-software-development</guid><dc:creator><![CDATA[Kelsey Harrison]]></dc:creator><pubDate>Sat, 22 Jan 2022 18:11:56 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/unsplash/npxXWgQ33ZQ/upload/v1644517704392/wdCV5KlxL.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Blogging is a great idea when starting your career in software development. Writing about the technologies you are working with will help solidify complex and new concepts.</p>
<p>Writing code and explaining how it works as a form of teaching others forces you to think about the bigger picture regarding your code and how it might work with other use cases. This might also help you find a better solution to solve the problem or a refactoring that offers better code reuse and readability.</p>
<p>Blogging in general will increase your written communication skills and talking about topics you are interested in might lead to additional research regarding new topics and industry trends.</p>
<p>Additionally writing about how you work through roadblocks shows readers how you think about code and the process you use to solve problems. This gives readers a better understanding of who you are as a developer.</p>
]]></content:encoded></item></channel></rss>