<?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: Cal</title>
    <description>The latest articles on DEV Community by Cal (@cal_woolgar).</description>
    <link>https://dev.to/cal_woolgar</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%2F116073%2Fb667e42d-3576-4db1-81fc-9ded2a17df60.jpg</url>
      <title>DEV Community: Cal</title>
      <link>https://dev.to/cal_woolgar</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/cal_woolgar"/>
    <language>en</language>
    <item>
      <title>What I've learnt the first day with Unity</title>
      <dc:creator>Cal</dc:creator>
      <pubDate>Wed, 24 Jun 2020 00:00:00 +0000</pubDate>
      <link>https://dev.to/cal_woolgar/what-i-ve-learnt-the-first-day-with-unity-4dbg</link>
      <guid>https://dev.to/cal_woolgar/what-i-ve-learnt-the-first-day-with-unity-4dbg</guid>
      <description>&lt;p&gt;I've decided to delve into the wonders of game development so that I can nurture my passion for video games alongside my passion for coding. I've taken a look into game development before but my coding skills weren't that good and so creating a game seemed almost impossible back then. Fast forward 3 years and my knowledge of C#, and coding in general, has improved massively, to the point where I think I can definitely give this another shot! &lt;/p&gt;

&lt;p&gt;Before I talk about what I've learnt on the first day, I want to give a massive shoutout to &lt;a href="https://twitter.com/Tyler_Potts_"&gt;@Tyler_Potts_&lt;/a&gt; and &lt;a href="https://twitter.com/BrackeysTweet"&gt;@BrackeysTweet&lt;/a&gt; as their game dev tutorials are awesome and have helped a lot! &lt;/p&gt;

&lt;h2&gt;
  
  
  Game Engine
&lt;/h2&gt;

&lt;p&gt;A game engine is the foundation for building a video game. It can provide features ranging from animation to artificial intelligence and they're responsible for all of the physics, rendering, memory management and more! The 2 main game engines that I looked into were Unity and UnrealEngine.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Unreal engine allows you to create higher quality assets straight out of the box, whereas it takes longer to create the same affect in Unity.&lt;/li&gt;
&lt;li&gt;Unity can work on any machine. Unreal is designed more for powerful computers.&lt;/li&gt;
&lt;li&gt;Unity is easier for smaller or 1 man teams. Unreal requires different teams for things such as particles, shaders, assets etc.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;From these points, I decided to download Unity and make a start by following the "&lt;em&gt;How to make a video game&lt;/em&gt;" series on YouTube.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=j48LtUkZRjU&amp;amp;list=PLPV2KyIb3jR53Jce9hP7G5xC4O9AgnOuL"&gt;How to make a Video Game - Getting Started&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Adding Assets
&lt;/h2&gt;

&lt;p&gt;This can be done from the Hierarchy panel, mine is located on the left-hand side, all you need to do is right-click and pick the object you want. For me, I was using 3D Objects such as cubes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--AGhlrEGp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/XGdoxKR.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--AGhlrEGp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/XGdoxKR.png" alt="https://i.imgur.com/XGdoxKR.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Adding Materials
&lt;/h2&gt;

&lt;p&gt;Once I had the asset in place, I needed to make it look a bit prettier. To do this, you need to right-click on the Projects panel, go to Create, and then Material.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--kNRI-pjL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/1IHK9ZD.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kNRI-pjL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/1IHK9ZD.png" alt="https://i.imgur.com/1IHK9ZD.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you have that up, you can then go to the Inspector window and change the values for the material to make it whatever colour and texture you'd like. When you're happy with it, just drag it onto the asset that you want to use it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Box Collider
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://docs.unity3d.com/Manual/class-BoxCollider.html"&gt;Box Collider&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The box collider is something which you can add to an asset so that once it comes into contact or overlaps with another GameObject, it will detect that and trigger something. These are the properties for it: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qRe24TYs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/P7hgZU8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qRe24TYs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/P7hgZU8.png" alt="https://i.imgur.com/P7hgZU8.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Rigidbody
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://docs.unity3d.com/Manual/class-Rigidbody.html"&gt;Rigidbody&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This will allow for GameObjects to act under the control of physics. It allows for force and torque to be added and make objects move in a realistic way.&lt;/p&gt;

&lt;h2&gt;
  
  
  Start and Update Methods
&lt;/h2&gt;

&lt;p&gt;These are 2 methods that are created when you create a new script. The start method runs when the program starts and the update method runs for every frame that is rendered.&lt;/p&gt;

&lt;h2&gt;
  
  
  OnCollisionEnter Method
&lt;/h2&gt;

&lt;p&gt;This method runs when a collision happens and allows you to do things like reset a score, destroy something, reset the level etc.&lt;/p&gt;

&lt;h2&gt;
  
  
  Adding a Force to a Rigidbody
&lt;/h2&gt;

&lt;p&gt;Adding a force should be done in the FixedUpdate method as Unity works better like this than doing it in the Update method. The AddForce method has 3 params in this overload, one for each axis, x, y and z. We have to times the force by the deltaTime so that it syncs up correctly, otherwise the force will be different depending on how many frames your pc can render.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;FixedUpdate&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// Add a forward force.&lt;/span&gt;
        &lt;span class="n"&gt;rb&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;AddForce&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;forwardForce&lt;/span&gt; &lt;span class="p"&gt;*&lt;/span&gt; &lt;span class="n"&gt;Time&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;deltaTime&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Add a force of 2000 on the z-axis.&lt;/span&gt;

        &lt;span class="c1"&gt;// This is not a brilliant way of getting the input, especially if we want to do smoothing&lt;/span&gt;
        &lt;span class="c1"&gt;// or use a controller.&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Input&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;GetKey&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"d"&lt;/span&gt;&lt;span class="p"&gt;)){&lt;/span&gt;
            &lt;span class="n"&gt;rb&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;AddForce&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sidewaysForce&lt;/span&gt; &lt;span class="p"&gt;*&lt;/span&gt; &lt;span class="n"&gt;Time&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;deltaTime&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;

        &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Input&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;GetKey&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"a"&lt;/span&gt;&lt;span class="p"&gt;)){&lt;/span&gt;
            &lt;span class="n"&gt;rb&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;AddForce&lt;/span&gt;&lt;span class="p"&gt;(-&lt;/span&gt;&lt;span class="n"&gt;sidewaysForce&lt;/span&gt; &lt;span class="p"&gt;*&lt;/span&gt; &lt;span class="n"&gt;Time&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;deltaTime&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;0&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;h2&gt;
  
  
  Making a Camera Follow a Player
&lt;/h2&gt;

&lt;p&gt;Here's the script for a camera that is just behind a player:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;FollowPlayer&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;MonoBehaviour&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="n"&gt;Transform&lt;/span&gt; &lt;span class="n"&gt;player&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="c1"&gt;// stores 3 floats which makes it good for position (x, y, z);&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="n"&gt;Vector3&lt;/span&gt; &lt;span class="n"&gt;Offset&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="c1"&gt;// Update is called once per frame&lt;/span&gt;
    &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;Update&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;position&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;player&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;position&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt; &lt;span class="n"&gt;Offset&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;You need to make sure to set the offset on Unity so that the camera isn't directly on top of the player, unless you want a 1st person view.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting User Input
&lt;/h2&gt;

&lt;p&gt;This just requires you to use the &lt;em&gt;Input.GetKey&lt;/em&gt; method, and specify which key to use. This isn't the best way of doing it, especially if you want to handle controller input, but for now it works.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;FixedUpdate&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// Add a forward force.&lt;/span&gt;
        &lt;span class="n"&gt;rb&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;AddForce&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;forwardForce&lt;/span&gt; &lt;span class="p"&gt;*&lt;/span&gt; &lt;span class="n"&gt;Time&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;deltaTime&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Add a force of 2000 on the z-axis.&lt;/span&gt;

        &lt;span class="c1"&gt;// This is not a brilliant way of getting the input, especially if we want to do smoothing&lt;/span&gt;
        &lt;span class="c1"&gt;// or use a controller.&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Input&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;GetKey&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"d"&lt;/span&gt;&lt;span class="p"&gt;)){&lt;/span&gt;
            &lt;span class="n"&gt;rb&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;AddForce&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sidewaysForce&lt;/span&gt; &lt;span class="p"&gt;*&lt;/span&gt; &lt;span class="n"&gt;Time&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;deltaTime&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;

        &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Input&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;GetKey&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"a"&lt;/span&gt;&lt;span class="p"&gt;)){&lt;/span&gt;
            &lt;span class="n"&gt;rb&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;AddForce&lt;/span&gt;&lt;span class="p"&gt;(-&lt;/span&gt;&lt;span class="n"&gt;sidewaysForce&lt;/span&gt; &lt;span class="p"&gt;*&lt;/span&gt; &lt;span class="n"&gt;Time&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;deltaTime&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;0&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;h2&gt;
  
  
  Tagging Objects
&lt;/h2&gt;

&lt;p&gt;This can be good for applying the same logic to a group of objects, in my case, some collision objects.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;PlayerCollision&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;MonoBehaviour&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="n"&gt;PlayerMovement&lt;/span&gt; &lt;span class="n"&gt;playerMovement&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;obstacleTag&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"Obstacle"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="c1"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
    &lt;span class="c1"&gt;/// OnCollisionEnter is called when this collider/rigidbody has begun&lt;/span&gt;
    &lt;span class="c1"&gt;/// touching another rigidbody/collider.&lt;/span&gt;
    &lt;span class="c1"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
    &lt;span class="c1"&gt;/// &amp;lt;param name="collisionInfo"&amp;gt;The Collision data associated with this collision.&amp;lt;/param&amp;gt;&lt;/span&gt;
    &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;OnCollisionEnter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Collision&lt;/span&gt; &lt;span class="n"&gt;collisionInfo&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;collisionInfo&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;collider&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tag&lt;/span&gt; &lt;span class="p"&gt;==&lt;/span&gt; &lt;span class="n"&gt;obstacleTag&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
            &lt;span class="n"&gt;Debug&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;collisionInfo&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;collider&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="n"&gt;playerMovement&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;enabled&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;false&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--VPmUz3aS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/Bim6lHy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VPmUz3aS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/Bim6lHy.png" alt="https://i.imgur.com/Bim6lHy.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  YouTube
&lt;/h2&gt;

&lt;p&gt;Thanks for getting to the end of this blog post, I hope that you've learnt a thing or two. If you learn better in video form, then make sure to subscribe to my Gaming channel, Cal Plays. I'm going to be playing as well as learning to make video games on there.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/channel/UClbKDkIl8Ke-E3FoEKJgyIA"&gt;Cal Plays&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Happy coding! &lt;/p&gt;

&lt;p&gt;Cal&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Advice on dealing with anxiety at the workplace</title>
      <dc:creator>Cal</dc:creator>
      <pubDate>Mon, 15 Jun 2020 07:54:21 +0000</pubDate>
      <link>https://dev.to/cal_woolgar/advice-on-dealing-with-anxiety-at-the-workplace-16b1</link>
      <guid>https://dev.to/cal_woolgar/advice-on-dealing-with-anxiety-at-the-workplace-16b1</guid>
      <description>&lt;h1&gt;
  
  
  Anxiety
&lt;/h1&gt;

&lt;p&gt;Picture this, we're in June 2021, the world has defeated COVID-19 and the workplace is starting to feel a bit more normal again. You're sat in a meeting room with the head of development, the marketing manager, and the managing director of the company, all discussing changes for the company website. You know that this is a big opportunity for yourself, a chance to show off the skills that you've been working on for the past 6 months in your spare-time. A chance to give your opinion and make an impact on the company that has given you so much. A chance for you to give back. There's only one issue though and it's lingering in the pit of your stomach, making you feel uneasy and worried about sharing your thoughts. You know realistically that there's nothing to worry about, nothing that you're going to come out with is going to be so wild that they could fire you for it. But it's still there. It's still there up until you get asked a question and need to voice an opinion to the group, then it really hits.&lt;/p&gt;

&lt;p&gt;I want to make it clear that I'm not a neurologist or psychologist, even thought they sound like fascinating jobs, these are just my thoughts and opinions mixed in with some of my own and others experiences.&lt;/p&gt;

&lt;h3&gt;
  
  
  But why do you feel like this?
&lt;/h3&gt;

&lt;p&gt;No one really knows the answer to this question, we can take a wild guess as to things that are related and can make anxiety problems more likely to happen such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;past or childhood experiences&lt;/li&gt;
&lt;li&gt;your current life situation&lt;/li&gt;
&lt;li&gt;physical and mental health problems&lt;/li&gt;
&lt;li&gt;drugs and medication&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As I said, it could be any number of these things, or none of them at all, it's completely down to the individual, the good thing is that there are some things that can help when you feel that rush of anxiety.&lt;/p&gt;

&lt;h3&gt;
  
  
  How can I feel slightly better?
&lt;/h3&gt;

&lt;p&gt;I personally, don't suffer from anxiety attacks but I do know what that horrible feeling is like in the pit of your stomach that almost makes you want to cry and freak out even though nothing in the situation is wrong. There are ways that have been tried and tested to help with the situations, and again, it's completely down to the individual. Please make sure to take a look at the link at the bottom for the resource I used to back up my points if you want proper advice. But with that being said, here's my advice.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Take a deep breath and have some gratitude for the situation that you've been given. Make sure that you grasp the moment with your fist and don't let it slip, make the most of it.&lt;/li&gt;
&lt;li&gt;There will be someone out there in a much worse situation than you right now. Take the meeting situation from above, where unless you shout something racist, or tell your boss to f*&amp;amp;k off, then whats to worry about? You're going to still have your job and people will probably appreciate and respect you more for giving your opinion. The situation is a lot simpler than what your head is making it out to be. &lt;/li&gt;
&lt;li&gt;Look after yourself! This is probably the piece of advice that has helped me in every way possible. Working out, eating healthy and quitting smoking are 3 things that I'm doing and I can't put into words how much better I feel than this time 6 months ago. I admit, I haven't fully quit smoking yet but I am having multiple days at a time where I don't smoke, so I'm getting there. And I don't have a super healthy diet plan either, but I do eat a lot healthier than I did 6 months ago. Not only have I lost weight from working out, I have gained more confidence, have more energy and fee more confident. These 3 things have meant that the pit in the stomach feeling doesn't come along as often because either I don't care about the situation, or I've got something better on my mind to think about.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I could write more but I'm not qualified enough to be spouting to much random nonsense on the internet. I'm not aiming to change a life with this post, but making the outcome better for a single person's day from reading this would be awesome.&lt;/p&gt;

&lt;p&gt;Stay safe and happy coding,&lt;/p&gt;

&lt;p&gt;Cal&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.mind.org.uk/information-support/types-of-mental-health-problems/anxiety-and-panic-attacks/causes-of-anxiety/"&gt;https://www.mind.org.uk/information-support/types-of-mental-health-problems/anxiety-and-panic-attacks/causes-of-anxiety/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>Using Slick Carousel in Ember application</title>
      <dc:creator>Cal</dc:creator>
      <pubDate>Thu, 11 Jun 2020 18:00:50 +0000</pubDate>
      <link>https://dev.to/cal_woolgar/using-slick-carousel-in-ember-application-kah</link>
      <guid>https://dev.to/cal_woolgar/using-slick-carousel-in-ember-application-kah</guid>
      <description>&lt;p&gt;I want to create good looking applications, so today I decided to implement a carousel into an application I'm working on, and so I went and looked on &lt;a href="http://kenwheeler.github.io/slick/"&gt;http://kenwheeler.github.io/slick/&lt;/a&gt;. &lt;/p&gt;

&lt;h3&gt;
  
  
  Slick Carousel
&lt;/h3&gt;

&lt;p&gt;Slick is a brilliant carousel that has many options to customise the carousel to your needs, autoplay, arrows, dots, responsiveness and more. I did try to use &lt;em&gt;ember-cli-slick&lt;/em&gt; package, however, the responsive feature didn't work and so I decided to use the cdn link and do it the old fashioned way.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1
&lt;/h3&gt;

&lt;p&gt;Add this script onto your index.html, just before the closing body tag. This will allow you to use slick carousel.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;script&lt;/span&gt; &lt;span class="nx"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;text/javascript&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="nx"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://cdn.jsdelivr.net/gh/kenwheeler/slick@1.8.1/slick/slick.min.js&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;script&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 2
&lt;/h3&gt;

&lt;p&gt;Implement jquery onto your application so that you can grab the element on the screen. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.npmjs.com/package/@ember/jquery"&gt;@ember/jquery&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Also install @ember/render-modifers so that you can access certain lifehooks such as &lt;em&gt;did-insert.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/emberjs/ember-render-modifiers"&gt;emberjs/ember-render-modifiers&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3
&lt;/h3&gt;

&lt;p&gt;Add a div for the carousel and your item that you want to display.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"projects-grid"&lt;/span&gt; &lt;span class="err"&gt;{{&lt;/span&gt;&lt;span class="na"&gt;did-insert&lt;/span&gt; &lt;span class="na"&gt;this&lt;/span&gt;&lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="na"&gt;renderCarousel&lt;/span&gt;&lt;span class="err"&gt;}}&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"carousel"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
            {{#each projects as |project| }}
                &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"item"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"project-background"&lt;/span&gt; &lt;span class="na"&gt;style=&lt;/span&gt;&lt;span class="s"&gt;"background-image: url('{{project.attributes.image-url}}')"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"overlay"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
                            &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"project-title"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
                                &lt;span class="nt"&gt;&amp;lt;h4&amp;gt;&lt;/span&gt;{{project.attributes.name}}&lt;span class="nt"&gt;&amp;lt;/h4&amp;gt;&lt;/span&gt;
                            &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
                            {{!-- Button to link to specific project --}}
                            &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"projects-btn"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
                                &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"/projects/{{project.id}}"&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"button-link"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;More Info&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
                            &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
                        &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
                    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
                &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
            {{/each}}
        &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 4
&lt;/h3&gt;

&lt;p&gt;Create the method inside of your component class to render the carousel.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="nx"&gt;renderCarousel&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;.carousel&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;slick&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
        &lt;span class="na"&gt;adaptiveHeight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;autoplay&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;dots&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;mobileFirst&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;responsive&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="na"&gt;breakpoint&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1024&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="na"&gt;settings&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
              &lt;span class="na"&gt;slidesToShow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
              &lt;span class="na"&gt;slidesToScroll&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;2&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="na"&gt;breakpoint&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;768&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="na"&gt;settings&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
              &lt;span class="na"&gt;slidesToShow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
              &lt;span class="na"&gt;slidesToScroll&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;2&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="na"&gt;breakpoint&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;480&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="na"&gt;settings&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
              &lt;span class="na"&gt;slidesToShow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
              &lt;span class="na"&gt;slidesToScroll&lt;/span&gt;&lt;span class="p"&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;span class="c1"&gt;// You can unslick at a given breakpoint now by adding:&lt;/span&gt;
          &lt;span class="c1"&gt;// settings: "unslick"&lt;/span&gt;
          &lt;span class="c1"&gt;// instead of a settings object&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;I've added breakpoints onto this so that it will look better on larger devices. You can find all of the settings on the slick website. &lt;/p&gt;

&lt;p&gt;If you encounter any problems, please make sure to drop me a comment.&lt;/p&gt;

&lt;p&gt;Happy coding.&lt;/p&gt;

</description>
      <category>ember</category>
      <category>frontend</category>
    </item>
    <item>
      <title>Using the Bing API in a Java Application</title>
      <dc:creator>Cal</dc:creator>
      <pubDate>Wed, 10 Jun 2020 18:48:06 +0000</pubDate>
      <link>https://dev.to/cal_woolgar/using-the-bing-api-in-a-java-application-7ib</link>
      <guid>https://dev.to/cal_woolgar/using-the-bing-api-in-a-java-application-7ib</guid>
      <description>&lt;h3&gt;
  
  
  Setting Up
&lt;/h3&gt;

&lt;p&gt;My main task today has been to integrate Bing locations API within our platforms JAVA API so that we can do location lookups from the front-end. &lt;/p&gt;

&lt;p&gt;To do this I first went and had a read of the documentation from Microsoft, giving myself a good overview of what the task would take, what I'd need to pass as parameters, and then what the response would be.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.microsoft.com/en-us/bingmaps/rest-services/locations/"&gt;Locations API - Bing Maps&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These are the 2 calls from the above link that I needed, the first being &lt;em&gt;Find a Location by Query&lt;/em&gt;, and the second was &lt;em&gt;Find a Location by Point.&lt;/em&gt; By using these 2 calls, they would allow me to search for an address using either a search term, like "London" or latitude and longitude values. I went ahead and took a look through these 2 calls to make sure I understood what they did and what was returned, I then copied the URL into my code so that I had it ready.&lt;/p&gt;

&lt;p&gt;I then needed to make sure that I have an API key to actually authorize the API. This link showed me how to get that: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.microsoft.com/en-us/bingmaps/getting-started/bing-maps-dev-center-help/getting-a-bing-maps-key"&gt;Getting a Bing Maps Key - Bing Maps&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Calling API using RestTemplate
&lt;/h3&gt;

&lt;p&gt;Then came the part of using the java restTemplate to call the API, this is quite simple and just requires some parameters, here's my code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;locationUrl&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"http://dev.virtualearth.net/REST/v1/Locations/"&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;point&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="s"&gt;"?key="&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="nc"&gt;ResponseEntity&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;restTemplate&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getForEntity&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;locationUrl&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getBody&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;This then returns the response that is specified on the URL, from there I created an object which had all of the JSON properties so that I could use GSON, and convert the JSON to an object. With that object, I then just picked out the properties I needed and put them in my response object which gets sent to the front-end.&lt;/p&gt;

</description>
      <category>java</category>
      <category>api</category>
    </item>
    <item>
      <title>Always remember that you have more time.</title>
      <dc:creator>Cal</dc:creator>
      <pubDate>Mon, 30 Mar 2020 11:52:41 +0000</pubDate>
      <link>https://dev.to/cal_woolgar/always-remember-that-you-have-more-time-234e</link>
      <guid>https://dev.to/cal_woolgar/always-remember-that-you-have-more-time-234e</guid>
      <description>&lt;p&gt;The world is in a situation that no one ever predicted. The majority of countries are on some form of lockdown, job security is non-existent, and the economy is taking a massive hit! I, like many others, am trying to make the most out of a bad situation by improving on my skills and knowledge while isolating, but you can also take this time to reset.&lt;/p&gt;

&lt;p&gt;I have a constant battle with myself whenever I decide to take some time to relax as I feel like I could be doing something so much more productive with my time. I love to play video games, watch movies, exercise and socialise, but all of these take up time which I feel like I should either be improving my skills or just generally being more productive. I feel like this because I constantly see other developers on social media creating amazing applications, fantastic front-end designs and well thought out code snippets, and I feel like I should be doing the same. This isn't true though! &lt;/p&gt;

&lt;p&gt;This is why my thoughts come back to the pandemic that is happening across the world right now and the fact that with time, we will all get through this! We all need to remember that we still have so much time to do things in life and that each and every person will be at different points of the journey. It's okay if you want to spend a day relaxing and playing video games. It's okay if you want to binge Netflix. It's okay if you want to spend the day outside with friends (when we are out of isolation). If that makes you happy then just do it, you'll always have other time to work on yourself. We are people, not machines, and people do burnout.&lt;/p&gt;

&lt;p&gt;Take the time that you've been given to reflect on where your life is going, what makes you happy and what you can do to be even happier, and focus on that! &lt;/p&gt;

&lt;p&gt;I hope you enjoyed reading the thought process that I turned into a blog post, I'm off to play video games so if you want to hear more from me make sure to hit me up on Twitter @callam_woolgar.&lt;/p&gt;

&lt;p&gt;Stay safe, happy coding!&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>relax</category>
    </item>
    <item>
      <title>My Career as a Software Developer</title>
      <dc:creator>Cal</dc:creator>
      <pubDate>Sat, 28 Mar 2020 15:23:34 +0000</pubDate>
      <link>https://dev.to/cal_woolgar/my-career-as-a-software-developer-d4n</link>
      <guid>https://dev.to/cal_woolgar/my-career-as-a-software-developer-d4n</guid>
      <description>&lt;p&gt;For my first post on Dev.to, I want to talk about my experience over the last 4 years and how I came to be the developer that I am today. I'm going to leave out the boring school years as I doesn't matter what you did back then, ANYONE can learn to code! &lt;/p&gt;

&lt;h1&gt;
  
  
  Year 0
&lt;/h1&gt;

&lt;p&gt;My software career started while I was working for Costa Coffee, making some pretty good latte art and a decent amount of money at 18! The good thing about this job was that it helped me pickup a lot of people skills, which now allows to have better conversations with clients and senior members of the company.&lt;/p&gt;

&lt;p&gt;I always knew that working at Costa would be a stop gap job and that I didn't want to do it forever, so while working I searched for an IT job. A month after searching, I hit the jackpot! I found a level 3 apprenticeship for a software company in the town that I live. The money wasn't great, but who cares, I'd get my foot in the door and they were going to teach me everything! After multiple phone calls, interviews and meetings, I got the apprenticeship!! 🎈&lt;/p&gt;

&lt;h1&gt;
  
  
  Year 1
&lt;/h1&gt;

&lt;p&gt;The first year of working for the company involved me doing a level 3 apprenticeship in software development, and considering that I knew nothing about development before starting the course I think I did pretty well! The course involved me going to a workshop for 2 weeks, every 2 months or so. Within each workshop we would learn a different topic, either SQL databases, building web applications, mobile applications etc. While I wasn't on the course though I was at work and for the first couple of months I did nothing but studying. I learnt everything I could about any programming concept I could find! Once the year was up I managed to pass the level 3 programme and was working on billable client work at my job.&lt;/p&gt;

&lt;h1&gt;
  
  
  Year 2
&lt;/h1&gt;

&lt;p&gt;In second year things were upped a notch. As I'd completed the level 3 course, the company offered me to go onto the next level and do a degree apprenticeship. This would involve completing level 4, 5 &amp;amp; 6, with each level taking between 12-15 months to complete and getting progressively harder each time! &lt;/p&gt;

&lt;p&gt;Level 4 was where I really started to get my head stuck into code and starting learning a lot more! I got a lot more stuck into the backend C# code for various projects, and with the help of colleagues I managed to pick things up quite quickly. By doing this, it meant that when I went to my courses I would breeze through them as I already knew the basics of the language! This allowed me to easily pass level 4 and get enough credits to move onto level 5.&lt;/p&gt;

&lt;h1&gt;
  
  
  Year 3
&lt;/h1&gt;

&lt;p&gt;Level 5 modules started to push me a lot harder, learning to write academic assignments and do more thorough research. Not only did the degree push me harder but I had to pick up 2 new skills within work as I got moved onto another project. I started to learn Java and Ember.js.&lt;/p&gt;

&lt;p&gt;Learning Java wasn't too difficult as a lot of the syntax is similar to C#, however, Ember.js was a lot harder to pickup! Ember is a JavaScript framework which uses reusable components and their own APIs to make the experience easier. Apart from very minor code, I had never really worked with JavaScript that much so the learning curve here was massive, luckily the documentation is up to date and stack overflow has LOTS of answers!&lt;/p&gt;

&lt;h1&gt;
  
  
  Year 4
&lt;/h1&gt;

&lt;p&gt;Year 4 has tested me the most, pushed me the hardest and made me a much better developer! This year I started the final level of my degree and also took on the Ember.js project on my own at work. Both of these were massive things for me as it meant that I was that much closer to getting a degree and I had my own code base to work on. The level 6 work so far has been difficult because it has all been based on strategies and business models, which I'm not very good at, but with the help of the people in my group I am slowly getting better! The Ember project is continuing to evolve and as it grows, I'm learning more as well! &lt;/p&gt;

&lt;p&gt;If you want to keep up-to-date with what I'm getting up to then make sure to follow me on twitter &lt;a href="https://twitter.com/callam_woolgar"&gt;https://twitter.com/callam_woolgar&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Happy coding!&lt;/p&gt;

</description>
      <category>career</category>
      <category>c</category>
      <category>java</category>
      <category>ember</category>
    </item>
  </channel>
</rss>
