<?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: Gordon Bristow</title>
    <description>The latest articles on DEV Community by Gordon Bristow (@gordon_bristow_a0fbed4582).</description>
    <link>https://dev.to/gordon_bristow_a0fbed4582</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%2F578874%2F75a1be40-664c-477e-a7e5-620f789e0b5e.jpg</url>
      <title>DEV Community: Gordon Bristow</title>
      <link>https://dev.to/gordon_bristow_a0fbed4582</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/gordon_bristow_a0fbed4582"/>
    <language>en</language>
    <item>
      <title>Native Development vs React Native</title>
      <dc:creator>Gordon Bristow</dc:creator>
      <pubDate>Thu, 01 Apr 2021 03:34:43 +0000</pubDate>
      <link>https://dev.to/gordon_bristow_a0fbed4582/native-development-vs-react-native-784</link>
      <guid>https://dev.to/gordon_bristow_a0fbed4582/native-development-vs-react-native-784</guid>
      <description>&lt;p&gt;I often asked myself why developing apps for either iOS or Android had to be so different throughout my time at Algonquin College. It was no secret that I was much better at using Javascript, HTML, and CSS instead of OOP (Object Oriented Programming) or Swift. Then in the third term, we were introduced to React Native. React Native allows a developer to create one application and deploy it to both the Google Play Store and App Store, as long as they followed each store's respective rules and guidelines. &lt;/p&gt;

&lt;p&gt;So, is native app programming dead? To answer this question, let's list some pros and cons for both. Interestingly, the pros for one language are the con of another and vice versa.&lt;/p&gt;

&lt;h4&gt;
  
  
  Pro: Native Development (Android Studio and Swift)
&lt;/h4&gt;

&lt;h4&gt;
  
  
  Con: React Native (or similar programming languages)
&lt;/h4&gt;

&lt;h5&gt;
  
  
  1. Control
&lt;/h5&gt;

&lt;p&gt;While React Native allows you to create custom code for both platforms, it can become quite tedious as the same element on one platform and behave completely different on the other. Trying to pinpoint each one of those differences and coding them differently in different folders can create confusion. In some cases, it might be easier to develop them separately to keep a smooth workflow. &lt;/p&gt;

&lt;h5&gt;
  
  
  2. Features
&lt;/h5&gt;

&lt;p&gt;When coding for a platform natively, developers can take full advantage of a phone's technology and features. In many cases, platforms and devices vary in this respect. &lt;/p&gt;

&lt;h4&gt;
  
  
  Con: Native Development (Android Studio and Swift)
&lt;/h4&gt;

&lt;h4&gt;
  
  
  Pro: React Native (or similar programming languages)
&lt;/h4&gt;

&lt;h5&gt;
  
  
  4. Following Different Guidelines
&lt;/h5&gt;

&lt;p&gt;The biggest struggle of developing an app is following platform guidelines. When coding in React Native, you can keep all the same back-end of an app and change the front-end design to accommodate guidelines. Instead of having two sets of code like with Native development.&lt;/p&gt;

&lt;h5&gt;
  
  
  5. Different Experiences for Users
&lt;/h5&gt;

&lt;p&gt;Often overlooked is the hassle of explaining to an elderly relative how to use an app over the phone. Throw in different UX designs, and it gets worst. When developing with React Native, you can code to follow iOS standards and still deploy to the Google Play Store. Perhaps this is intentional to create user envy and drive conversion, but all in all, it's sometimes annoying.&lt;/p&gt;

&lt;h5&gt;
  
  
  6. Developing Two Versions
&lt;/h5&gt;

&lt;p&gt;I know that I am starting to sound like a broken record. Still, the natural appeal to using React Native or similar program languages is that these languages attempt to take away the hassle of developing an application twice. By having a single source code, developers can release new versions promptly and consistently.&lt;/p&gt;

&lt;h4&gt;
  
  
  Verdict
&lt;/h4&gt;

&lt;p&gt;All in all, both programming languages have their appeal. I prefer React Native for both front-end and back-end development and only run into trouble when an android device decides to render my design differently. With that said, you have to find what works best for you and your project.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.futuremind.com/blog/pros-and-cons-react-native-and-native-apps"&gt;Image Reference&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How to Add 3D Elements to iPhone AR Project</title>
      <dc:creator>Gordon Bristow</dc:creator>
      <pubDate>Sun, 07 Mar 2021 05:03:00 +0000</pubDate>
      <link>https://dev.to/gordon_bristow_a0fbed4582/how-to-add-3d-elements-to-iphone-ar-3735</link>
      <guid>https://dev.to/gordon_bristow_a0fbed4582/how-to-add-3d-elements-to-iphone-ar-3735</guid>
      <description>&lt;p&gt;It is no secret that my strength when it comes to mobile application design and development is, well, the design. Nevertheless, I am going to attempt to explain to you and myself, how to add 3D elements to your AR application. &lt;/p&gt;

&lt;p&gt;To start, we are going to open our project in Xcode. If you would like the starter code, you can find it &lt;a href="https://github.com/professorcezar/ar-tracker0"&gt;here&lt;/a&gt;. This project already has some basic AR functionality, but we are going to remove some of the existing content and update it with our own.&lt;/p&gt;

&lt;p&gt;First, we need to get our 3D object. If you don't have your own, you can download one from &lt;a href="https://developer.apple.com/augmented-reality/quick-look/"&gt;Apple&lt;/a&gt;. I chose the flower pot.  Once you have the file, drag it from the finder to the "art.sncassets" folder in the Xcode project editor's file explorer. &lt;/p&gt;

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

&lt;p&gt;Once you have added the file to the project, you need to open the file by double-clicking it. Then select the object.&lt;/p&gt;

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

&lt;p&gt;When you have the object selected, look in the inspector window and choose "Show the Scene inspector." By adjusting any of the values, you will be promoted with "Convert this document to SCN format?" You want to select "Convert."&lt;/p&gt;

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

&lt;p&gt;Once you have converted the document, it will allow you to change its name. We want to keep the name the same so remove "copy" from the end. The new file will end with .scn. You can now delete the original usdz file along with the "card.scn" file that was already there when we started. &lt;/p&gt;

&lt;p&gt;Navigate to the ViewController.swift file and locate the viewdidLoad function. On line 26, we will change the path of the object to the file we just added. Mine looks like  let scene = SCNScene(named: “art.scnassets/pot_plant.scn")!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;override func viewDidLoad() {
     super.viewDidLoad()

     // Set the view's delegate
     sceneView.delegate = self

    // Show statistics such as fps and    
timing information
    sceneView.showsStatistics = true

    // Create a new scene
   let scene = SCNScene(named: "art.scnassets/pot_plant.scn")!

    // Set the scene to the view
    sceneView.scene = scene
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Next, in the renderer function, we will change the word "card" to something related to our new file. In my case, I changed it to "pot." Then we will remove lines 63 - 77&lt;/p&gt;

&lt;p&gt;Your renderer function should look like this.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor) {
     guard anchor is ARImageAnchor else { return }

     guard let pot = sceneView.scene.rootNode.childNode(withName: "pot", recursively: false) else { return }
     pot.removeFromParentNode()
     node.addChildNode(pot)

     pot.isHidden = false 
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can run the app on your device and see the 3d object on the screen.&lt;/p&gt;

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

&lt;p&gt;If you would like to adjust its position on the screen, you can open the "pot_plant.scn" file and edit its position by clicking on the object and moving it using the X/Y/Z values. Although the object isn't stationary and does move, you can always expand the project by adding surface detection  to lock objects in place. &lt;/p&gt;

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

&lt;p&gt;In conclusion, AR is hard. Apple does provide many example projects that you can download and test; however, step-by-step instructions are limited. It will take time to get a full grasp on coding for AR, and finding some online "classes" like Pluralsight will undoubtedly help. &lt;/p&gt;

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

</description>
      <category>iphone</category>
      <category>ar</category>
    </item>
    <item>
      <title>Why blogging is a great way to start a career in software development.</title>
      <dc:creator>Gordon Bristow</dc:creator>
      <pubDate>Sat, 13 Feb 2021 23:41:09 +0000</pubDate>
      <link>https://dev.to/gordon_bristow_a0fbed4582/why-blogging-is-a-great-way-to-start-a-career-in-software-development-31j6</link>
      <guid>https://dev.to/gordon_bristow_a0fbed4582/why-blogging-is-a-great-way-to-start-a-career-in-software-development-31j6</guid>
      <description>&lt;p&gt;I was recently informed that starting a blog is a great way to start a software development career. With graduation a mere two months away, I am on the hunt for ways to help me stand out from the sea of graduates.&lt;/p&gt;

&lt;p&gt;It’s no secret that everyone has attempted to become a blogger at some point or another, many with little success. Many blogs lack success because they lack purpose. Within the career sphere, blogs are a great way to show off the skills and knowledge you’ve learned over the years. Posting regularly shows that you keep up today on new trends and are continuing to learn and explore.&lt;br&gt;
Although blogs aren’t for everyone, there are many other ways to accomplish the same thing. Creating and posting content on other social media platforms like LinkedIn or even your website regularly is just as important as posting on a blog.&lt;/p&gt;

&lt;p&gt;In summary, companies what to see your commitment, understanding, and knowledge of technology and the field you are attempting to work in.&lt;/p&gt;

</description>
      <category>career</category>
      <category>software</category>
      <category>ui</category>
      <category>student</category>
    </item>
  </channel>
</rss>
