<?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>Forem: Allison Day</title>
    <description>The latest articles on Forem by Allison Day (@sushicodes).</description>
    <link>https://forem.com/sushicodes</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%2F240762%2Ff9439cde-3678-4ea0-b78b-3bef15e4e118.png</url>
      <title>Forem: Allison Day</title>
      <link>https://forem.com/sushicodes</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/sushicodes"/>
    <language>en</language>
    <item>
      <title>Unity - tint your editor while in playmode</title>
      <dc:creator>Allison Day</dc:creator>
      <pubDate>Tue, 23 Jun 2020 07:35:18 +0000</pubDate>
      <link>https://forem.com/sushicodes/unity-tint-your-editor-while-in-playmode-1hb3</link>
      <guid>https://forem.com/sushicodes/unity-tint-your-editor-while-in-playmode-1hb3</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/u6Yb06Utl9A"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;A really quick tip for those of you using Unity...&lt;/p&gt;

&lt;p&gt;How many times have you forgotten to stop your game when you're in the middle of developing, or wonder why nothing's working then realize it's not in play mode?&lt;/p&gt;

&lt;p&gt;Well there's an easy fix for this!&lt;/p&gt;

&lt;p&gt;You can change your settings so your Unity editor will change to a different color when you're in play mode, and then go back to the usual grey when you're in edit mode!&lt;/p&gt;

&lt;p&gt;To set a color:&lt;/p&gt;

&lt;p&gt;If you're on a Mac, go to Unity &amp;gt; Preferences&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nXF7K60D--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.sushicodes.com/assets/20200619004241/Screen-Shot-2020-06-19-at-12.34.56-AM-1024x647.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nXF7K60D--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.sushicodes.com/assets/20200619004241/Screen-Shot-2020-06-19-at-12.34.56-AM-1024x647.png" alt="" width="880" height="556"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you're on Windows, go to Edit &amp;gt; Preferences&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--iy8zPXaX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.sushicodes.com/assets/20200619163742/windows-unity-edit-1024x576.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--iy8zPXaX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.sushicodes.com/assets/20200619163742/windows-unity-edit-1024x576.jpg" alt="" width="880" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Select Colors in the sidebar&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Ag2an9yh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.sushicodes.com/assets/20200619004254/Screen-Shot-2020-06-19-at-12.36.07-AM-1024x647.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Ag2an9yh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.sushicodes.com/assets/20200619004254/Screen-Shot-2020-06-19-at-12.36.07-AM-1024x647.png" alt="" width="880" height="556"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Find General &amp;gt; Playmode Tint and click the bar or color dropper to choose the color you prefer. (Personally, I go with #D796FF!)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QZZpOM7K--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.sushicodes.com/assets/20200619004303/Screen-Shot-2020-06-19-at-12.37.35-AM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QZZpOM7K--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.sushicodes.com/assets/20200619004303/Screen-Shot-2020-06-19-at-12.37.35-AM.png" alt="" width="880" height="558"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Go back to your editor, click the Play button, and see your new Playmode color in action!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Es_F6gvP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.sushicodes.com/assets/20200619004313/Screen-Shot-2020-06-19-at-12.37.54-AM-1024x664.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Es_F6gvP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.sushicodes.com/assets/20200619004313/Screen-Shot-2020-06-19-at-12.37.54-AM-1024x664.png" alt="" width="880" height="571"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And there you have it! Now you'll more easily know when you're in play mode, and when you're in edit mode. Happy developing!&lt;/p&gt;

</description>
      <category>gamedev</category>
      <category>unity3d</category>
      <category>tutorial</category>
      <category>beginners</category>
    </item>
    <item>
      <title>0 to 100 YouTube Subs: The First Three Months</title>
      <dc:creator>Allison Day</dc:creator>
      <pubDate>Fri, 29 May 2020 19:46:56 +0000</pubDate>
      <link>https://forem.com/sushicodes/0-to-100-youtube-subs-the-first-three-months-1j0h</link>
      <guid>https://forem.com/sushicodes/0-to-100-youtube-subs-the-first-three-months-1j0h</guid>
      <description>&lt;p&gt;We're just over three months into our &lt;a rel="noreferrer noopener" href="https://www.youtube.com/sushicodes"&gt;YouTube channel&lt;/a&gt;, and have just barely clawed our way past 100 subs (at the time of writing, we're currently at 119). This has been simultaneously easier, but also more difficult, than we went into this expecting it to be.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.sushicodes.com%2Fassets%2F20200527070802%2Fbanner-1-1024x576.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.sushicodes.com%2Fassets%2F20200527070802%2Fbanner-1-1024x576.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the three months (and 13 days) since &lt;a href="https://www.youtube.com/watch?v=YaVcHDdOgMk&amp;amp;t=75s" rel="noreferrer noopener"&gt;our first video&lt;/a&gt; was posted on Feb 15th, we've gotten:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;119 subs&lt;br&gt;2,597 views&lt;br&gt;304.5 watch hours&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.sushicodes.com%2Fassets%2F20200527200916%2FScreen-Shot-2018-07-24-at-2.06.46-PM-1-1024x575.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.sushicodes.com%2Fassets%2F20200527200916%2FScreen-Shot-2018-07-24-at-2.06.46-PM-1-1024x575.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;&lt;strong&gt;It helps to have an existing community.&lt;/strong&gt;&lt;/h2&gt;

&lt;p&gt;We've spent the last two and a half years building up &lt;a rel="noreferrer noopener" href="https://www.twitch.tv/sushiday"&gt;a community on Twitch&lt;/a&gt; - and a lot of our viewers are super loyal, and will follow us anywhere. They were a huge part of our initial boost in numbers! Combine that with a (not amazing but definitely decent) pre-existing &lt;a rel="noreferrer noopener" href="https://twitter.com/sushiday"&gt;Twitter&lt;/a&gt; and &lt;a rel="noreferrer noopener" href="https://instagram.com/sushiday"&gt;Instagram&lt;/a&gt; following, and I can definitely say that the fan base we've built up over the years helped - at least a little bit.&lt;/p&gt;

&lt;h2&gt;&lt;strong&gt;People have to be convinced that they'll enjoy your content.&lt;/strong&gt;&lt;/h2&gt;

&lt;p&gt;I'll likely write some articles about &lt;a href="https://www.twitch.tv/sushiday" rel="noreferrer noopener"&gt;Twitch&lt;/a&gt; and our ongoing journey there at some future point, but one thing we've noticed there is that people really have to be convinced that they'll enjoy your content. This takes time, and repeated exposure.&lt;/p&gt;

&lt;p&gt;We have so many people who are solid community members and even close friends, who found &lt;a href="https://www.twitch.tv/sushiday" rel="noreferrer noopener"&gt;our channel&lt;/a&gt; through a raid or browsing on Twitch, and didn't really stick the first time around. It wasn't until the third or fourth time that they ended up on &lt;a href="https://www.twitch.tv/sushiday" rel="noreferrer noopener"&gt;our channel&lt;/a&gt; that they realized, "Hey, I actually like it here," and became a more solid part of our community.&lt;/p&gt;

&lt;p&gt;The same goes for &lt;a href="https://www.youtube.com/sushicodes" rel="noreferrer noopener"&gt;our YouTube videos&lt;/a&gt;. We've gotten a ton of subs from our Twitch community, but since the content is completely different (&lt;a href="https://www.twitch.tv/sushiday" rel="noreferrer noopener"&gt;cooking on Twitch&lt;/a&gt; vs. &lt;a href="https://www.youtube.com/sushicodes" rel="noreferrer noopener"&gt;gaming and programming on YouTube&lt;/a&gt;), the majority of them didn't really watch more than one or two videos. But we continued being consistent and uploading every day, and three months in, we're starting to see people get into a habit of watching our videos, and even get hooked on the different series of games we're putting up.&lt;/p&gt;

&lt;p&gt;Long-term consistency is key.&lt;/p&gt;

&lt;h2&gt;&lt;strong&gt;About that consistency…&lt;/strong&gt;&lt;/h2&gt;

&lt;p&gt;For the last month or so, we've posted a video to &lt;a href="https://www.youtube.com/sushicodes" rel="noreferrer noopener"&gt;our YouTube channel&lt;/a&gt; every. single. day.&lt;/p&gt;

&lt;p&gt;We're a little nuts.&lt;/p&gt;

&lt;p&gt;You definitely don't need our posting schedule (although it is VERY manageable for us - I'll write more about our filming and editing processes in a future post!), but consistency is very important, no matter what sort of content you're creating.&lt;/p&gt;

&lt;p&gt;You want to become a habit for people. If you can have a consistent time and place that you post things, people will get used to that and start to show up before you do.&lt;/p&gt;

&lt;p&gt;People are always asking, "what time should I post/stream/tweet?" And while I don't doubt that there's all sorts of data and such that will tell you exactly what you want to know… I will still insist that it doesn't matter as much as you think it does.&lt;/p&gt;

&lt;p&gt;Post once every few weeks or so during PRIME TIME? Cool. You might get lucky and get a little attention. You might not.&lt;/p&gt;

&lt;p&gt;Post every single week at a consistent day and time, even if it's not the "perfect" hour? Even better. Now people can make you a habit.&lt;/p&gt;

&lt;h2&gt;&lt;strong&gt;Have fun!&lt;/strong&gt;&lt;/h2&gt;

&lt;p&gt;You know what makes it easy to be consistent? When you're having tons of fun doing something!&lt;/p&gt;

&lt;p&gt;Gaming on YouTube may be SUPER FREAKING SATURATED and totally not our path to success. And that's okay. Even if our programming videos take off and our gaming videos keep getting meh numbers… we'll keep doing it, because we have so much fun.&lt;/p&gt;

&lt;p&gt;But part of fun, for us, is making sure that it's fun for our viewers as well. So a few things we've learned:&lt;/p&gt;

&lt;p&gt;• Don't take the games too seriously. We're not amazing gamers. Nobody should be watching us for speedruns, or perfect playthroughs of new games, or game tutorials, or anything like that. So do things "wrong," play the game weird, try out things that make absolutely no sense!&lt;/p&gt;

&lt;p&gt;• Don't take yourself too seriously. I credit &lt;a href="https://www.twitch.tv/sushiday" rel="noreferrer noopener"&gt;our Twitch streaming experience&lt;/a&gt; for teaching us how to be goofballs. Both of us used to be afraid of looking ridiculous, or doing something wrong. Two years later, we've learned to give no shits! (But in a non-asshole sort of way.) We've both sung horribly, &lt;a href="https://www.youtube.com/watch?v=xj1SX8xntsw&amp;amp;t=3s" rel="noreferrer noopener"&gt;ugly laugh-cried&lt;/a&gt;, said the most off-the-wall things, and it will all be on the internet FOREVER… and we're hardly ever self-conscious about any of that any more. I'd like to think we're funnier, or at least more entertaining for it!&lt;/p&gt;

&lt;p&gt;• "Yes, and…" This common phrase from improv classes means, don't shut the other person down. If you react negatively to a bad joke, or close off, it makes the video uncomfortable and awkward to watch. If one person does something completely ridiculous, go along with it and see where it takes you… and you'll have more fun!&lt;/p&gt;

&lt;h2&gt;&lt;strong&gt;The best games for our YouTube channel ended up being the ones we didn't expect.&lt;/strong&gt;&lt;/h2&gt;

&lt;p&gt;We FOR SURE thought &lt;a rel="noreferrer noopener" href="https://www.youtube.com/playlist?list=PL7K1W9IVUcMW-Mw2GHTdusHOMgZIRjWac"&gt;Overcooked 2&lt;/a&gt; was going to be a hit. It's a hugely fun game, there's constant chaos, it's colorful and entertaining to watch, and we can both play… an easy win, right?&lt;/p&gt;



&lt;p&gt;Turns out, while it wasn't terrible, it also wasn't the game where we shined the most in our videos.&lt;/p&gt;

&lt;p&gt;On the other hand, &lt;a rel="noreferrer noopener" href="https://www.youtube.com/playlist?list=PL7K1W9IVUcMVNKsd-u977_G7XIYCYSrwS"&gt;Last of Us&lt;/a&gt; is dark and depressing and only a single-player game. We figured we'd try it since we already owned it and Son's been wanting to play, but we weren't expecting much from it.&lt;/p&gt;



&lt;p&gt;It ended up being the sleeper hit of the year for &lt;a rel="noreferrer noopener" href="https://www.youtube.com/sushicodes"&gt;our YouTube&lt;/a&gt;. It may be an old game that tons of people are already familiar with, but the combination of a great story, Son's frenetic playing, and my irreverent commentary (who knew &lt;a rel="noreferrer noopener" href="https://www.youtube.com/playlist?list=PL7K1W9IVUcMVNKsd-u977_G7XIYCYSrwS"&gt;Last of Us&lt;/a&gt; was a comedy?) is not only super enjoyable for us to play, but our viewers are also loving it.&lt;/p&gt;

&lt;p&gt;There have been some games we've really wanted to play that ended up being total disappointments, and others that we had low expectations for that turned into a whole series (&lt;a rel="noreferrer noopener" href="https://www.youtube.com/playlist?list=PL7K1W9IVUcMW4BkZrvgWOh1lrxKM9hBZC"&gt;A Short Hike&lt;/a&gt; and &lt;a rel="noreferrer noopener" href="https://www.youtube.com/playlist?list=PL7K1W9IVUcMXdoL5gk7U02O7JMF9deh1b"&gt;Aegis Defenders&lt;/a&gt; were two games that we didn't realize we'd love!)&lt;/p&gt;



&lt;p&gt;A few weeks ago, we decided to add in the &lt;a rel="noreferrer noopener" href="https://www.youtube.com/playlist?list=PL7K1W9IVUcMWYnfxyMVlD0kSFvr9-pRmv"&gt;Epic (and occasionally Humble Bundle or Steam) free games that are out every week&lt;/a&gt;, and post them on the weekends. While we do skip games if they don't seem great for &lt;a rel="noreferrer noopener" href="https://www.youtube.com/sushicodes"&gt;our YouTube channel&lt;/a&gt; (GTA V would be a great game, but would need to be a long-term series, not a single episode. Civilization VI seemed like it would be a bit too slow, and we've skipped horror games as well), viewers seem to LOVE it when we try out a new game (and who doesn't love free shit?)&lt;/p&gt;



&lt;p&gt;We've definitely noticed that single episode games or the first episode of a playthrough tends to get the highest viewership numbers. But we also really do love playing through a whole game, and some of our viewers are really into that as well. So our plan lately has been to try to find a good balance between the two - longer series on the weekdays, and shorter or single-video games on the weekends.&lt;/p&gt;



&lt;p&gt;We also went into this expecting that multiplayer games where we could both play together would make the most sense. However, we've found that single-player games tend to work better for us! If we're both focused on the game, it's more difficult to perform for the video at the same time. But if only one person is playing, then the observer can commentate, guide the player, make jokes, and generally make the video more entertaining!&lt;/p&gt;

&lt;p&gt;We've also discovered that I'm the better commentator - which is a total surprise, since usually Son's the talkative one in this relationship! And while we're about equivalent in gameplay skills, I tend to get super focused when I'm playing, while Son is better at joking around and doing silly stuff. This is why you'll more often see him playing single-player games than me, for now at least… but we're consciously working on this! I WILL GET MY TIME TO SHINE AS A GAMER… eventually.&lt;/p&gt;

&lt;h2&gt;&lt;strong&gt;But we're a programming channel too!&lt;/strong&gt;&lt;/h2&gt;

&lt;p&gt;… not that you'd know it from our current video list. 😅&lt;/p&gt;

&lt;p&gt;The one &lt;a href="https://www.youtube.com/watch?v=fa2Jm3PzBd8&amp;amp;t=17s" rel="noreferrer noopener"&gt;devlog&lt;/a&gt; we've posted is our most-viewed video, and the most popular with comments as well. (Not to mention, the video I'm proudest of!)&lt;/p&gt;

&lt;p&gt;We've always intended to do more programming content, partially because it performs WAY better than our gaming content, but also because I've always loved creating educational/informational content (and, obviously, showing off the cool shit we've done!)&lt;/p&gt;

&lt;p&gt;We actually did record a second devlog MONTHS ago, but those are a ton of work to edit, so we haven't quite finished it yet. (Don't worry - it's on the todo list!)&lt;/p&gt;

&lt;p&gt;Instead, we're turning our focus to more manageable content (because as we learned from our &lt;a rel="noreferrer noopener" href="https://www.youtube.com/sushidaytv"&gt;SushiDay YouTube&lt;/a&gt;, if the content is TOO much work to make, then it's impossible to be at all consistent!)&lt;/p&gt;



&lt;p&gt;Our new &lt;a rel="noreferrer noopener" href="https://www.youtube.com/playlist?list=PL7K1W9IVUcMU4k19yw9TKhyek5kmmAqyc"&gt;eXcess Reality podcast&lt;/a&gt; is super easy to make (although MAN were we both nervous going into it). Too soon to say if people are into it yet, since as I'm writing this we've only posted the intro and first episode! But hopefully next time I write a post like this, I'll actually have something more to share.&lt;/p&gt;

&lt;p&gt;We're also brainstorming ideas for super simple, really short "programming tip" videos we can make. 5-10 minutes max, just a quick tip that's easy to record, and quick to watch. Longer-form tutorials are definitely on the todo list as well, but really, how many of us have a whole list of hour-long tutorials that we &lt;em&gt;mean&lt;/em&gt; to watch, but never quite get around to… so I'm hoping these little programming bytes (heh) will be easier for people to watch as well!&lt;/p&gt;

&lt;h2&gt;&lt;strong&gt;What's next?&lt;/strong&gt;&lt;/h2&gt;

&lt;p&gt;We've only just made it past 100 subs, 2000 views, and 50 videos. 1000 subs HERE WE COME. (Heck, let's shoot for the stars. 10k by the end of the year? LET'S DO THIS.)&lt;/p&gt;

&lt;p&gt;More gaming videos, absolutely - they're the easiest for us to film, and so much fun. (We actually have an excuse to game now!) We're doing our darndest to finish up &lt;a rel="noreferrer noopener" href="https://www.youtube.com/playlist?list=PL7K1W9IVUcMVNKsd-u977_G7XIYCYSrwS"&gt;Last of Us&lt;/a&gt; (heh) before Last of Us 2 comes out (which we've already pre-ordered). Son's suggested that we try out Minecraft Dungeon (although so far it's a total fail, because everyone's getting locked out of the game!), and he's SUPER excited about Ghost of Tsushima. We bought Table Manners a while ago, and Totally Accurate Battle Simulator is on our todo list as well. And of course, if Epic keeps giving out free games, then we'll keep trying them out (along with our HUGE backlog of all the &lt;a rel="noreferrer noopener" href="https://www.youtube.com/playlist?list=PL7K1W9IVUcMWYnfxyMVlD0kSFvr9-pRmv"&gt;Epic Free Games&lt;/a&gt; we got before we started filming them!)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.sushicodes.com%2Fassets%2F20200527073149%2FEY-oZ9rVAAAhp73-768x1024.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.sushicodes.com%2Fassets%2F20200527073149%2FEY-oZ9rVAAAhp73-768x1024.jpeg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a rel="noreferrer noopener" href="https://www.youtube.com/playlist?list=PL7K1W9IVUcMU4k19yw9TKhyek5kmmAqyc"&gt;The podcast&lt;/a&gt; is a wee baby right now, so we'll be continuing to film/record episodes of that, and see where it goes! We've been wanting to get into AR/VR forever, so this has been really interesting, enlightening, and fulfilling for us.&lt;/p&gt;

&lt;p&gt;More &lt;a href="https://www.youtube.com/watch?v=fa2Jm3PzBd8&amp;amp;t=17s" rel="noreferrer noopener"&gt;devlogs&lt;/a&gt;! Now that we're funemployed, we (hypothetically - LULZ) have more time for game dev. We started prototype #2 way back in Feb, and then never had the chance to get past modeling. But we definitely want to finish our second prototype, so expect to see some devlogs… hopefully soon. Oof.&lt;/p&gt;

&lt;p&gt;And lastly, educational programming content! We're trying to start small - tips, advice, retrospectives about things we've already created (like the article you're reading right now!) As I mentioned, eventually I'd love to do more in-depth tutorials as well… because as you can see, I don't have nearly enough on my plate as it is. 🤪 We'll get there.&lt;/p&gt;

&lt;h2&gt;&lt;strong&gt;What do you want to see?&lt;/strong&gt;&lt;/h2&gt;

&lt;p&gt;Is there a game you want to see us play? A programming or dev-related question you're curious about? Let us know! We may not get to everything right away, but we always love to hear what you want to see from us.&lt;/p&gt;

</description>
      <category>youtube</category>
      <category>video</category>
    </item>
    <item>
      <title>eXcess Reality Podcast, Ep. 1: Hand tracking, hardware rumors, and an upcoming VR jam!</title>
      <dc:creator>Allison Day</dc:creator>
      <pubDate>Tue, 26 May 2020 20:17:26 +0000</pubDate>
      <link>https://forem.com/sushicodes/excess-reality-podcast-ep-1-hand-tracking-hardware-rumors-and-an-upcoming-vr-jam-a02</link>
      <guid>https://forem.com/sushicodes/excess-reality-podcast-ep-1-hand-tracking-hardware-rumors-and-an-upcoming-vr-jam-a02</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/ql0PKdqUG9Y"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Welcome to the very first episode of the eXcess Reality podcast!&lt;/p&gt;

&lt;p&gt;You can subscribe to our podcast on: &lt;a href="https://podcasts.apple.com/us/podcast/excess-reality-podcast/id1514723130" title="iTunes" class="podcast-meta-itunes"&gt;iTunes&lt;/a&gt; | &lt;a href="https://open.spotify.com/show/0X2dQi2zEXvuVMx8OIb82H" title="Spotify" class="podcast-meta-itunes"&gt;Spotify&lt;/a&gt; | &lt;a href="https://www.breaker.audio/excess-reality-podcast" title="Breaker" class="podcast-meta-itunes"&gt;Breaker&lt;/a&gt; | &lt;a href="https://soundcloud.com/sushicodes" title="SoundCloud" class="podcast-meta-itunes"&gt;SoundCloud&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To start off with some exciting news… we were finally able to order an Oculus Quest!&lt;/p&gt;

&lt;p&gt;We've just passed the one year anniversary of the release of the Oculus Quest and Rift S - &lt;a href="https://www.oculus.com/blog/celebrating-the-one-year-anniversary-of-oculus-quest-and-rift-s" rel="noreferrer noopener"&gt;https://www.oculus.com/blog/celebrating-the-one-year-anniversary-of-oculus-quest-and-rift-s&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And Facebook is reporting that they've sold $100m worth of VR apps - &lt;a href="https://uploadvr.com/facebook-100-million-dollars/" rel="noreferrer noopener"&gt;https://uploadvr.com/facebook-100-million-dollars/&lt;/a&gt;&lt;br&gt;(Sounds like it's time to get in on app-making!)&lt;/p&gt;

&lt;p&gt;There are reports that the popularity of VR has gone up since quarantine - &lt;a href="https://abc7news.com/spatial-vr-meeting-spacial-virtual-reality-how-does-work/6183856/" rel="noreferrer noopener"&gt;https://abc7news.com/spatial-vr-meeting-spacial-virtual-reality-how-does-work/6183856/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hand tracking is coming out of beta - &lt;a href="https://www.oculus.com/blog/celebrating-the-one-year-anniversary-of-oculus-quest-and-rift-s" rel="noreferrer noopener"&gt;https://www.oculus.com/blog/celebrating-the-one-year-anniversary-of-oculus-quest-and-rift-s&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Have you seen this mini beat saber? - &lt;a rel="noreferrer noopener" href="https://twitter.com/pushmatrix/status/1260209543864356865"&gt;https://twitter.com/pushmatrix/status/1260209543864356865&lt;/a&gt;&lt;br&gt;I SO want to play it! - &lt;a rel="noreferrer noopener" href="https://www.roadtovr.com/miniature-beat-saber-concept-ar-daniel-beauchamp/"&gt;https://www.roadtovr.com/miniature-beat-saber-concept-ar-daniel-beauchamp/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you think that's cool, there's a VR Jam coming up in August, and we're planning to participate! - &lt;a rel="noreferrer noopener" href="https://itch.io/jam/tray-table-vr-jam"&gt;https://itch.io/jam/tray-table-vr-jam&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Some of the ideas we've had:&lt;br&gt;• hand-tracking orchestra app&lt;br&gt;• claw machine game&lt;br&gt;• plane route experience&lt;br&gt;• horror game - plane crash&lt;br&gt;• jenga with turbulence&lt;/p&gt;

&lt;p&gt;We discuss rumors about the Apple Glass - &lt;a href="https://bgr.com/2020/03/24/apple-glasses-ar-leak-features-2022-release/" rel="noreferrer noopener"&gt;https://bgr.com/2020/03/24/apple-glasses-ar-leak-features-2022-release/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And the troubles/pivoting that Magic Leap has been facing - &lt;a href="https://www.businessinsider.com/magic-leap-could-pivot-to-healthcare-ar-with-new-funding-2020-5?op=1" rel="noreferrer noopener"&gt;https://www.businessinsider.com/magic-leap-could-pivot-to-healthcare-ar-with-new-funding-2020-5?op=1&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'm really excited that companies are addressing motion sickness, since that's a huge problem for me - &lt;a href="https://www.thegamepost.com/2020/05/08/next-gen-playstation-vr-patents/" rel="noreferrer noopener"&gt;https://www.thegamepost.com/2020/05/08/next-gen-playstation-vr-patents/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And related to that, this video about the movement decisions made by the Half-Life Alyx dev team is fascinating - &lt;a href="https://www.youtube.com/watch?v=TX58AbJq-xo" rel="noreferrer noopener"&gt;https://www.youtube.com/watch?v=TX58AbJq-xo&lt;/a&gt;&lt;br&gt;Who wants to send me headsets to test for motion sickness?&lt;/p&gt;

&lt;p&gt;There's allegedly a new, lighter Oculus Quest coming out next year - &lt;a href="https://www.bloomberg.com/news/articles/2020-05-05/facebook-s-oculus-developing-smaller-lighter-quest-vr-headset" rel="noreferrer noopener"&gt;https://www.bloomberg.com/news/articles/2020-05-05/facebook-s-oculus-developing-smaller-lighter-quest-vr-headset&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And our App of the Week is this nifty Size.Link app, that works right in the web browser on your phone: &lt;a href="https://size.link/" rel="noreferrer noopener"&gt;https://size.link/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let us know what you think, and we'll see you next week for episode 2!&lt;/p&gt;

</description>
      <category>podcast</category>
      <category>vr</category>
      <category>ar</category>
      <category>xr</category>
    </item>
    <item>
      <title>eXcess Reality – Our New Podcast!</title>
      <dc:creator>Allison Day</dc:creator>
      <pubDate>Sat, 16 May 2020 04:10:24 +0000</pubDate>
      <link>https://forem.com/sushicodes/excess-reality-our-new-podcast-5gol</link>
      <guid>https://forem.com/sushicodes/excess-reality-our-new-podcast-5gol</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/pMWeIv5pgxA"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Welcome to the first episode of our new podcast and video series, Xcess Reality!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5gjgCYHh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.sushicodes.com/assets/20200516080214/excess-reality-podcast-1024x1024.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5gjgCYHh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.sushicodes.com/assets/20200516080214/excess-reality-podcast-1024x1024.jpg" alt="the podcast art for our new eXcess Reality podcast"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;First things first – who are we, and why are we doing this?&lt;/p&gt;

&lt;p&gt;My name is Allison, and I’m joined by Son, my husband. (No he’s not my son, his name is “Son”. We have no kids, although I’m sure you’ll soon see that at times he acts like a kid.)&lt;/p&gt;

&lt;p&gt;We’ve both been in tech for quite some time (almost 15 years for me, more than 20 for him) and for the last decade and a half, we’ve been creating things together.&lt;/p&gt;

&lt;p&gt;Our projects have mostly leaned towards web dev (&lt;a href="https://fridgg.com/"&gt;Fridgg&lt;/a&gt; was one of the first big things we released together that wasn’t a client job), but of late we’ve also gotten into game dev (we released our first game, &lt;a href="https://bifo.co/games/bobber-bop"&gt;Bobber Bop&lt;/a&gt;, last year – as well as &lt;a href="https://sushicodes.itch.io/armpg"&gt;ArmPG&lt;/a&gt;, a prototype, earlier this year).&lt;/p&gt;

&lt;p&gt;But in the last few years, we’ve explored our entertainer side a little more as well. From streaming &lt;a href="https://www.twitch.tv/sushiday"&gt;cooking&lt;/a&gt; and &lt;a href="https://www.twitch.tv/sushicodes"&gt;coding&lt;/a&gt;, to &lt;a href="https://www.youtube.com/sushicodes"&gt;gaming and devlogs on YouTube&lt;/a&gt;, we’ve enjoyed the process of becoming better performers (and geeking out about cameras and editing!)&lt;/p&gt;

&lt;p&gt;But all this time, even though it was never something we’ve discussed much publicly, we’ve always been looking to the future. What will the world look like five, ten years from now? How will our lives look as programmers? What skills will be most relevant?&lt;/p&gt;

&lt;p&gt;Over and over, we’ve come back to the idea of XR – augmented reality, virtual reality, and everything in-between.&lt;/p&gt;

&lt;p&gt;While we got into game dev as a way to develop the skills that will be useful for XR, we haven’t done much beyond that. Heck, we don’t even have a headset. (We are on the waitlist! …but if anyone randomly wants to send us one, hit me up yo.) But, while we’ve been happy to be able to make money with client web dev work in the recent past, lack of time and other commitments meant that our XR-related progress had kind of stagnated.&lt;/p&gt;

&lt;p&gt;Then a week ago, as we were discussing how to progress now that our most recent client job has ended, the topic of XR came up again.&lt;/p&gt;

&lt;p&gt;“You know what we really need to do,” I insisted, “is start having regular discussions about the industry as a whole. Not even necessarily the technical stuff, but just familiarize ourselves with who’s who, what’s going on, what games are out there, all that. How can we get into XR if we barely even know the industry?”&lt;/p&gt;

&lt;p&gt;Son nodded. “We should do a podcast.”&lt;/p&gt;

&lt;p&gt;I screamed and burst out laughing at that, because we had said we’d never do a podcast. It makes no sense for us to do a podcast. Seriously, why on earth would we do a podcast when we’re already streaming/youtubing/blogging?!&lt;/p&gt;

&lt;p&gt;So… we’re doing a podcast.&lt;/p&gt;

&lt;p&gt;We’ll be discussing what’s going on in the industry, brainstorming ideas for cool projects, and injecting a large dose of our signature goofiness. Are we experts? Absolutely not! – although our decades of tech industry experience certainly counts for something. But we hope that you’ll tune in for our XR journey, and let us know what you think.&lt;/p&gt;

&lt;p&gt;And a note about the name – eXcess Reality. Its initials are XR, it’s a nod to the fact that sometimes we can be a bit much (and rarely ever take ourselves seriously), and it also just tickles me that when you say the name out loud, it sounds like we’re talking about the itsiest, bitsiest, extra-small reality.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Want to stay up to date with eXcess Reality?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you’re a listener, we have a podcast – just search for &lt;strong&gt;eXcess Reality&lt;/strong&gt; on your favorite podcast provider (if we’re missing your preferred platform, let us know!)&lt;/p&gt;

&lt;p&gt;If you’re a watcher, we have… a vodcast(?) – find our eXcess Reality videos on our &lt;a href="https://www.youtube.com/sushicodes"&gt;SushiCodes YouTube&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;And if you’re a reader, or just want more information, all our show notes are available on &lt;a href="https://sushicodes.com/"&gt;SushiCodes.com&lt;/a&gt;!&lt;/p&gt;

</description>
      <category>podcast</category>
      <category>vr</category>
      <category>ar</category>
      <category>xr</category>
    </item>
    <item>
      <title>Sushi Game Jam: ArmPG Devlog Video!</title>
      <dc:creator>Allison Day</dc:creator>
      <pubDate>Tue, 10 Mar 2020 17:14:46 +0000</pubDate>
      <link>https://forem.com/sushicodes/sushi-game-jam-armpg-devlog-video-4j7f</link>
      <guid>https://forem.com/sushicodes/sushi-game-jam-armpg-devlog-video-4j7f</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/fa2Jm3PzBd8"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;In January, we made a &lt;a href="https://sushicodes.itch.io/armpg"&gt;game prototype&lt;/a&gt; on our &lt;a href="https://www.twitch.tv/sushicodes"&gt;Twitch stream&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In February, I wrote a &lt;a href="https://dev.to/sushicodes/sushi-game-jam-armpg-2oon"&gt;devlog about our game&lt;/a&gt; here on dev.to.&lt;/p&gt;

&lt;p&gt;In March, we finally finished the video for the devlog!  If you haven't yet, check out all three - and let me know what you think!&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>gamedev</category>
      <category>learning</category>
      <category>video</category>
    </item>
    <item>
      <title>Sushi Game Jam: ArmPG!</title>
      <dc:creator>Allison Day</dc:creator>
      <pubDate>Wed, 19 Feb 2020 23:36:51 +0000</pubDate>
      <link>https://forem.com/sushicodes/sushi-game-jam-armpg-2oon</link>
      <guid>https://forem.com/sushicodes/sushi-game-jam-armpg-2oon</guid>
      <description>&lt;p&gt;In January, &lt;a class="mentioned-user" href="https://dev.to/phuson"&gt;@phuson&lt;/a&gt; and I set out to make a game about an arm.&lt;/p&gt;

&lt;p&gt;An &lt;a href="https://sushicodes.itch.io/armpg"&gt;ArmPG&lt;/a&gt;, if you will.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rpkrVNxc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://live.staticflickr.com/65535/49486754512_be6d941929_o.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rpkrVNxc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://live.staticflickr.com/65535/49486754512_be6d941929_o.gif" alt="gif of arm movement" width="880" height="773"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Game&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Imagine that you are an arm.&lt;/p&gt;

&lt;p&gt;A disembodied arm.&lt;/p&gt;

&lt;p&gt;(The game isn't nearly so gory as it sounds, I promise.)&lt;/p&gt;

&lt;p&gt;You're an arm, trying to find the rest of your body.&lt;/p&gt;

&lt;p&gt;In your search, you've happened upon a dungeon filled with spiders.&lt;/p&gt;

&lt;p&gt;Anybody with half a mind would either run for their life, or burn it all down... but you're an arm.  You have no mind, it got lost with the rest of your body.&lt;/p&gt;

&lt;p&gt;So you decide to fight the spiders, and lo and behold!  These spiders just happened to be hiding all the rest of your body parts, and you must do battle in order to find yourself and put yourself back together.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Modeling&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The most obvious model we needed for an ArmPG is... the arm.  So that's what Son started out with.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XCtcLm4W--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49549692078_107086d1d8_b.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XCtcLm4W--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49549692078_107086d1d8_b.jpg" alt="arm model" width="880" height="880"&gt;&lt;/a&gt;&lt;/p&gt;
Is it a worm?  A plunger?  Ohhhh it's a turkey baster.



&lt;p&gt;If this is a fighting game, then our arm needs a weapon!  Someone in our &lt;a href="https://www.twitch.tv/sushicodes"&gt;Twitch stream&lt;/a&gt; chat suggested a buster sword, so FF-style it was.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--x2XpYECc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49550193606_8952b6bbe1_b.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--x2XpYECc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49550193606_8952b6bbe1_b.jpg" alt="sword model" width="880" height="880"&gt;&lt;/a&gt;&lt;/p&gt;
Because what every arm needs is a MASSIVE FREAKING SWORD.



&lt;p&gt;Next up, environment!&lt;/p&gt;

&lt;p&gt;For inexplicable reasons, Son decided to start with a scone.&lt;/p&gt;

&lt;p&gt;Er... sconce.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--J0Arm74e--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49550193726_afdf85c08b_b.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--J0Arm74e--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49550193726_afdf85c08b_b.jpg" alt="sconce model" width="880" height="880"&gt;&lt;/a&gt;&lt;/p&gt;
Now I want scones.



&lt;p&gt;... and after all that, he didn't even use it.&lt;/p&gt;

&lt;p&gt;He claimed he was making a dungeon wall, but we're still not fully convinced he wasn't tiling a shower.&lt;/p&gt;

&lt;p&gt;Or maybe it's a bookshelf?&lt;/p&gt;

&lt;p&gt;Every dungeon needs a library, you know.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8eG-T9UV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49550422132_3818018ebf_b.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8eG-T9UV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49550422132_3818018ebf_b.jpg" alt="wall with pillars" width="880" height="880"&gt;&lt;/a&gt;&lt;/p&gt;
Pillars?! We fancy.



&lt;p&gt;If your goal is to find your body, you need the rest of your body to find, right?&lt;/p&gt;

&lt;p&gt;He made the body parts...&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Hbgzy6RC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49527569901_f530a93bc1_b.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Hbgzy6RC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49527569901_f530a93bc1_b.jpg" alt="body parts" width="880" height="776"&gt;&lt;/a&gt;&lt;/p&gt;
No such thing as too many swords.



&lt;p&gt;He imported the body parts into Unity...&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mZ8yULuU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49486754292_64c65dfdfe_b.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mZ8yULuU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49486754292_64c65dfdfe_b.jpg" alt="body parts with arm crawling by" width="880" height="509"&gt;&lt;/a&gt;&lt;/p&gt;
Well if you're just gonna leave your body parts laying around, it's no wonder you lost them!



&lt;p&gt;&lt;a href="https://i.giphy.com/media/eJvZA5qZefYnHFLFNz/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/eJvZA5qZefYnHFLFNz/giphy.gif" alt="gif of body parts and arm" width="480" height="318"&gt;&lt;/a&gt;&lt;/p&gt;
Body parts. Everywhere.



&lt;p&gt;And then spent the week distracted, playing Socket League.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/gjmRVSvj0CG75c6tuY/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/gjmRVSvj0CG75c6tuY/giphy.gif" alt='gif of the arm "kicking" the head around the dungeon' width="480" height="320"&gt;&lt;/a&gt;&lt;/p&gt;
We're pivoting - this is way too much fun.



&lt;p&gt;Luckily (or perhaps unluckily) for everyone involved, I finally managed to convince Son &lt;em&gt;not&lt;/em&gt; to pivot or abandon the prototype-a-month project in order to develop Socket League.&lt;/p&gt;

&lt;p&gt;Last thing we needed was some sort of enemy!&lt;/p&gt;

&lt;p&gt;Son decided to go with spiders...&lt;/p&gt;

&lt;p&gt;... and very stubbornly decided that spiders are completely fine with only 6 legs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VPy-u2wr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49528416766_b63f6117ba_b.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VPy-u2wr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49528416766_b63f6117ba_b.jpg" alt="arachnot" width="880" height="492"&gt;&lt;/a&gt;&lt;/p&gt;
Unspider.



&lt;p&gt;#arachnot&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XnSqLHEC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49527062593_a26a93fd7c_o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XnSqLHEC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49527062593_a26a93fd7c_o.png" alt="spider with human legs" width="634" height="414"&gt;&lt;/a&gt;&lt;/p&gt;
There we go. Eight legs!



&lt;p&gt;Pro tip: if something has a lot of the same part (such as, ahem, eight legs), you can create it once and then duplicate it!  For our spider, Son created the body and one leg separately, imported them both, and then in Unity added all of the legs to the body.&lt;/p&gt;

&lt;p&gt;(Since we are decidedly NOT pros, since this is our first prototype and we've only made &lt;a href="https://bifo.co/games/bobber-bop"&gt;one other game&lt;/a&gt;, we originally created one mesh with all the legs, until someone in chat suggested we do it with just one leg.  OH RIGHT THAT'S HOW THIS WORKS.)&lt;/p&gt;

&lt;p&gt;Once one spider was done, Son made a few different textures so we could have different color spiders, and then resized them in Unity.  We have a variety of spiders, every type you could possibly want!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ObSOznta--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49551781207_1edb3f1621_b.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ObSOznta--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49551781207_1edb3f1621_b.jpg" alt="different spiders" width="880" height="486"&gt;&lt;/a&gt;&lt;/p&gt;
SO MANY SPIDERS



&lt;p&gt;And to finish it all off, the one feature every game spider needs - boobly eyes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/PnrwIvo4zzp3rQGv9v/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/PnrwIvo4zzp3rQGv9v/giphy.gif" alt="spider with boobily eyes" width="480" height="320"&gt;&lt;/a&gt;&lt;/p&gt;
googly eyes + boob physics = boobly eyes



&lt;p&gt;From a performance point of view, the spider and legs were baked into one mesh to optimize draw calls, which helped with performance dramatically.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Dev&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Let's get some models moving!&lt;/p&gt;

&lt;p&gt;First thing we worked on was the arm movement.  We've been using the &lt;a href="https://assetstore.unity.com/packages/tools/animation/final-ik-14290"&gt;Final IK Unity asset&lt;/a&gt; for procedural animation.  Understanding inverse kinematics and procedural animation was one of our main goals for this month's prototype.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FtLm4uR8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49558829922_344a28d9a0_b.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FtLm4uR8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49558829922_344a28d9a0_b.jpg" alt="screenshot of arm hooked up with ik" width="880" height="644"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We tried out a few different solvers (different algorithms to calculate the arm/joint movement) - FabrikIK, CCDIK, and finally settled on LimbIK.  (LimbIK is the obvious solution for arm movement - after all, the arm is a limb! - but we wanted to try out the different solvers to understand the difference between them.)  If you don't use the right solver for your intended type of movement... things get weird.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rpkrVNxc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://live.staticflickr.com/65535/49486754512_be6d941929_o.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rpkrVNxc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://live.staticflickr.com/65535/49486754512_be6d941929_o.gif" alt="gif of arm movement" width="880" height="773"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next, we needed some movement controls.  The arm will work if you drag around the control target in the scene, but in order to play, you need to be able to use the keyboard or a gamepad to control the movement.&lt;/p&gt;

&lt;p&gt;For this, we used another Unity asset called &lt;a href="https://assetstore.unity.com/packages/tools/utilities/rewired-21676"&gt;Rewired&lt;/a&gt;.  We use Rewired to control the position of a control target, and then created a loop in our code to control the crawling motion of the arm.  The arm will now always move in the direction of the target.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/SsOBJU1VhLJ4DqHC1q/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/SsOBJU1VhLJ4DqHC1q/giphy.gif" alt="gif of arm crawling in different directions, with sword clipping" width="480" height="338"&gt;&lt;/a&gt;&lt;/p&gt;
The sword cuts through the ground like buttah! Wait... that's not right...



&lt;p&gt;Just one problem - we're dragging the sword through the ground!  Just a little vector magic and voila - the sword now faces in the right direction no matter where you're going.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/jSDURMH1mxoOJ04E2i/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/jSDURMH1mxoOJ04E2i/giphy.gif" alt="gif of arm with sword in the correct position" width="480" height="320"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We implemented jumping, dashing, swiping... TADA!  Our player character is done!&lt;/p&gt;

&lt;p&gt;Next we imported the environment (the backsplash bookshelf wall looks so much better with proper lighting!), and baked the wall assets as long walls to keep draw calls down.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--n0ViD_6F--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49527982963_f4e8ab353c_o.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--n0ViD_6F--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49527982963_f4e8ab353c_o.jpg" alt="screenshot of wall in unity" width="680" height="509"&gt;&lt;/a&gt;&lt;/p&gt;
Hey, it's a wall!



&lt;p&gt;... and discovered that the arm can go through walls.&lt;/p&gt;

&lt;p&gt;Unity colliders, WHYYYYYYY.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/dxg3mH7QKrxgbD2KyJ/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/dxg3mH7QKrxgbD2KyJ/giphy.gif" alt="gif of arm walking through walls" width="480" height="320"&gt;&lt;/a&gt;&lt;/p&gt;
Welp.



&lt;p&gt;Okay, we can fix this.  Instead of directly changing &lt;code&gt;transform.position&lt;/code&gt;, we changed that to use &lt;code&gt;rigidbody.MovePosition()&lt;/code&gt; to move the arm.  This respects the colliders, and now you can't just push right through the wall.  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/SvXfhK3UkVZ7hcetNU/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/SvXfhK3UkVZ7hcetNU/giphy.gif" alt="gif of arm getting stuck at walls" width="480" height="320"&gt;&lt;/a&gt;&lt;/p&gt;
Stuck.



&lt;p&gt;Let's add some monsters!  Son's model allows us to have eight-legged spiders... but how do we move all the legs?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/hsmXeMSKJyHPtNiJ6w/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/hsmXeMSKJyHPtNiJ6w/giphy.gif" alt="spider dance gif" width="480" height="286"&gt;&lt;/a&gt;&lt;/p&gt;
*boogies*



&lt;p&gt;Just as with the arms, each leg is controlled by inverse kinematics, using the LimbIK solver from Final IK.  I added a loop to alternate between legs, so rather than all the legs moving towards their goals at once, only the even or odd legs can move at any one moment, and then they switch.  This gets real creepy crawly.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/WtOlpN6bvdo5yNBkmG/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/WtOlpN6bvdo5yNBkmG/giphy.gif" alt="gif of spider walking" width="442" height="480"&gt;&lt;/a&gt;&lt;/p&gt;
Run awaaaaayyyy!



&lt;p&gt;Then, we used the &lt;a href="https://assetstore.unity.com/packages/tools/ai/a-pathfinding-project-pro-87744"&gt;A* Pathfinding Project Pro&lt;/a&gt; Unity asset to tell the spiders where to go.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/d9Te2MBZl3rPmSNIM4/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/d9Te2MBZl3rPmSNIM4/giphy.gif" alt="gif of spiders converging on arm" width="480" height="270"&gt;&lt;/a&gt;&lt;/p&gt;
help.



&lt;p&gt;Time to fight!  The sword has a trigger collider, so we used &lt;code&gt;OnTriggerEnter&lt;/code&gt; to check if the sword collides with anything on the &lt;code&gt;Enemy&lt;/code&gt; layer in the game.  If so, then that spider will take damage, and we &lt;code&gt;AddForce&lt;/code&gt; to throw the spider back!&lt;/p&gt;

&lt;p&gt;On the other hand, if &lt;code&gt;OnCollisionEnter&lt;/code&gt; is triggered on the arm collider by anything with the &lt;code&gt;Enemy&lt;/code&gt; layer, then the arm takes damage and is thrown away from the spider.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/Jqy8BwuvgD2pL0oJLW/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/Jqy8BwuvgD2pL0oJLW/giphy.gif" alt="gif of combat" width="480" height="310"&gt;&lt;/a&gt;&lt;/p&gt;
DIE SPIDER DIE



&lt;p&gt;... and then we realized we needed to lock the rotation on the spiders.  Otherwise, one hit and you get some very, very drunk spiders.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/cJT5rfahuAkIWjAX8z/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/cJT5rfahuAkIWjAX8z/giphy.gif" alt="gif of drunken spider" width="480" height="310"&gt;&lt;/a&gt;&lt;/p&gt;
Go home spider...



&lt;p&gt;From there, just a few more things to complete the game.&lt;/p&gt;

&lt;p&gt;Lighting is &lt;strong&gt;everything&lt;/strong&gt;.  We added some light balls, baked the lighting, and then got rid of the balls... AND LOOK HOW PRETTY IT LOOKS.  It's almost like it's a real game now.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ALYcYLgd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49558749611_fcfaee0fd7_b.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ALYcYLgd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49558749611_fcfaee0fd7_b.jpg" alt="image of game lighting" width="880" height="568"&gt;&lt;/a&gt;&lt;/p&gt;
Great balls of lighting!



&lt;p&gt;Levels!  We added some ScriptableObjects for each level, that hold all the information about the waves of spiders, and the reward for each level.  Now it's super easy to add more levels or change existing levels on the fly.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/YOjyo8nV5SaS1Q8HdS/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/YOjyo8nV5SaS1Q8HdS/giphy.gif" alt="gif of spiders falling from the sky" width="480" height="270"&gt;&lt;/a&gt;&lt;/p&gt;
This is exactly how things are supposed to work, why do you ask



&lt;p&gt;We added Cinemachine (which comes with Unity) for camera work, so the camera follows the player nice and smoothly.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hqRQVuLC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49528518251_b83a62651b_b.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hqRQVuLC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49528518251_b83a62651b_b.jpg" alt="screenshot of arm getting chased by spiders, with proper lighting, some ui, and swoosh effects" width="880" height="502"&gt;&lt;/a&gt;&lt;/p&gt;
Uh oh.  But look how pretty the game looks!!!



&lt;p&gt;A little UI, a few simple movement swoosh effects, and voila!  We've got a game!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--V_i8L3Ow--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49528518156_8ac2f57158_b.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--V_i8L3Ow--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49528518156_8ac2f57158_b.jpg" alt="image of game progress" width="880" height="496"&gt;&lt;/a&gt;&lt;/p&gt;
Fight!



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qwBO9nWs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49528518126_dc3d40ddee_b.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qwBO9nWs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49528518126_dc3d40ddee_b.jpg" alt="image of game progress" width="880" height="496"&gt;&lt;/a&gt;&lt;/p&gt;
Fight!!!



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pzDDyNKW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49528518141_0875e1a4a6_b.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pzDDyNKW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49528518141_0875e1a4a6_b.jpg" alt="image of game progress" width="880" height="496"&gt;&lt;/a&gt;&lt;/p&gt;
FIGHT!!!



&lt;p&gt;&lt;strong&gt;The Future&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Since we only had a month for this prototype, there were a lot of wishlist items we didn't have time for.  We're hoping we'll be able to sneak these into future prototypes, or we might someday decide to come back and finish this ArmPG.&lt;/p&gt;

&lt;p&gt;ArmPG Bucket List:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;invulnerable state for player&lt;/li&gt;
&lt;li&gt;more of an RPG-type of story&lt;/li&gt;
&lt;li&gt;finite state machine (chase/attack, idle, roam) with procedural animation for each state&lt;/li&gt;
&lt;li&gt;be able to chop off spider legs&lt;/li&gt;
&lt;li&gt;add blood trail&lt;/li&gt;
&lt;li&gt;particle effects&lt;/li&gt;
&lt;li&gt;raycast for spiders' feet to check where we're moving feet to&lt;/li&gt;
&lt;li&gt;procedural environment (at least randomized drops)&lt;/li&gt;
&lt;li&gt;treasure chest for body parts&lt;/li&gt;
&lt;li&gt;armor/other pickups&lt;/li&gt;
&lt;li&gt;sound effects/music&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/d8zgb1rRh5KpNcabdi/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/d8zgb1rRh5KpNcabdi/giphy.gif" alt="gif of gameplay" width="480" height="269"&gt;&lt;/a&gt;&lt;/p&gt;
WOOOOOO!



&lt;p&gt;Our game prototype is available to play!  Download it at &lt;a href="https://sushicodes.itch.io/armpg"&gt;itch.io&lt;/a&gt;, and let us know what you think in the comments!&lt;/p&gt;

&lt;p&gt;Enjoy this post?  Consider sharing it on social media - every tweet helps, and you'll have my eternal appreciation!&lt;/p&gt;

&lt;p&gt;For more, follow me on &lt;a href="https://twitter.com/sushiday"&gt;Twitter&lt;/a&gt; or check out my &lt;a href="https://www.twitch.tv/sushicodes"&gt;Twitch&lt;/a&gt; &lt;a href="https://www.twitch.tv/sushiday"&gt;streams&lt;/a&gt;!&lt;/p&gt;

</description>
      <category>gamedev</category>
      <category>unity3d</category>
      <category>games</category>
      <category>writing</category>
    </item>
    <item>
      <title>12 Days of Gitmas: Merge conflicts and PRs!</title>
      <dc:creator>Allison Day</dc:creator>
      <pubDate>Wed, 05 Feb 2020 19:05:47 +0000</pubDate>
      <link>https://forem.com/sushicodes/12-days-of-gitmas-merge-conflicts-and-prs-61j</link>
      <guid>https://forem.com/sushicodes/12-days-of-gitmas-merge-conflicts-and-prs-61j</guid>
      <description>&lt;p&gt;&lt;em&gt;On the tenth day of Gitmas, my mentee asked of me...&lt;br&gt;
&lt;strong&gt;what does "PR" mean?&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://dev.to/sushicodes/12-days-of-gitmas-git-branches-43gi"&gt;what a branching strategy&lt;/a&gt;,&lt;br&gt;
&lt;a href="https://dev.to/sushicodes/12-days-of-gitmas-gitignore-2ll0"&gt;what's this gitignore thing&lt;/a&gt;,&lt;br&gt;
&lt;a href="https://dev.to/sushicodes/12-days-of-gitmas-committing-your-changes-in-git-53nk"&gt;push-ing, pull-ing, diff-ing&lt;/a&gt;,&lt;br&gt;
&lt;a href="https://dev.to/sushicodes/12-days-of-gitmas-ssh-vs-https-19bp"&gt;what is SSH-ing&lt;/a&gt;,&lt;br&gt;
&lt;a href="https://dev.to/sushicodes/12-days-of-gitmas-connecting-your-local-repository-to-github-1d9h"&gt;how do I connect these&lt;/a&gt;,&lt;br&gt;
&lt;a href="https://dev.to/sushicodes/12-days-of-gitmas-what-is-github-11po"&gt;what's this "GitHub" of which I've heard&lt;/a&gt;,&lt;br&gt;
&lt;a href="https://dev.to/sushicodes/12-days-of-gitmas-your-first-git-project-g3m"&gt;Git's ready - what then&lt;/a&gt;,&lt;br&gt;
&lt;a href="https://dev.to/sushicodes/12-days-of-gitmas-setting-up-git-39i8"&gt;how do I get Git set up&lt;/a&gt;,&lt;br&gt;
&lt;a href="https://dev.to/sushicodes/12-days-of-Gitmas-intro-to-Git-4l26"&gt;and could you explain Git, pretty please?&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Now that we know how to branch &lt;em&gt;out&lt;/em&gt; of the main branch, we need to know how to merge your branch back in!&lt;/p&gt;

&lt;p&gt;There are a couple of ways to go about this.  If you're working on a smaller personal project, you can technically just directly merge your branch back into the master branch.  But if you're working on a project for a company, or an open source project, or pretty much any time you're working with other people, you should create a pull request.&lt;/p&gt;

&lt;p&gt;What is a pull request?&lt;/p&gt;

&lt;p&gt;A pull request (aka PR) is essentially a request to merge the changes you made in one branch into another branch.  This allows the repository owner or other designated reviewers to look over your code, make sure things are working, and confirm that this is a change that should be merged in.  They may ask you to make changes, or leave comments asking you to explain something in your code.  Once everyone approves the PR, it can then be merged into the target repository.&lt;/p&gt;

&lt;p&gt;It's a good idea to always check the README, any other documentation, previously-merged PRs, or to talk to the rest of the team to make sure you know how they want PRs to be done.  This process can often be different from project to project!&lt;/p&gt;

&lt;p&gt;So how do you create a PR?&lt;/p&gt;

&lt;p&gt;First things first, make sure you &lt;a href="https://dev.to/sushicodes/12-days-of-gitmas-committing-your-changes-in-git-53nk"&gt;&lt;code&gt;git commit&lt;/code&gt;&lt;/a&gt; all the changes you've made in your branch.&lt;/p&gt;

&lt;p&gt;Then, &lt;code&gt;git pull&lt;/code&gt; down any updates that have been made to the branch you're intending to merge into (we'll refer to this as the target branch).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git checkout [target branch]
git pull
git checkout [your working branch]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Merge the target branch into your working branch, so your working branch is up to date and won't have any merge conflicts once the PR is approved.  (If it takes a while to get approval, you may have to do this several times in order to make sure your working branch stays up to date.  PRs with merge conflicts can't be merged in!)&lt;/p&gt;

&lt;p&gt;Make sure you're on your working branch and run:&lt;br&gt;
&lt;code&gt;git merge [target branch]&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;If there are merge conflicts, Git will yell at you, and now is when you deal with them.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flive.staticflickr.com%2F65535%2F49479146836_e62e2276b2_o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flive.staticflickr.com%2F65535%2F49479146836_e62e2276b2_o.png" alt="screenshot of merge conflicts in the terminal"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Go into the file(s) that have the merge conflicts, and search for &lt;code&gt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&lt;/code&gt;.  The file will show the changes you made, and the incoming changes from the other branch.  &lt;/p&gt;

&lt;p&gt;Edit as needed - you can choose to keep your changes, keep the incoming changes, or make any necessary changes needed to keep both changes.  (If you're unfamiliar with the incoming changes, talk to the developer who made them, or the person in charge!  You definitely don't want to be accidentally deleting someone else's work that's supposed to be in the codebase.)  &lt;/p&gt;

&lt;p&gt;Once you've fixed all the merge conflicts (there can be multiple instances in a single file, or multiple files involved - make sure you get all of them!), I &lt;em&gt;HIGHLY&lt;/em&gt; recommend re-running and re-testing your code to make sure everything works as expected.  Sometimes merge conflicts can be tricky, so you want to make sure you're not trying to merge broken code once you submit your PR.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flive.staticflickr.com%2F65535%2F49478664518_3dd33a9a16_o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flive.staticflickr.com%2F65535%2F49478664518_3dd33a9a16_o.png" alt="screenshot of merge conflicts in a file"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you're using VS Code, things are a little easier.  In the sidebar, the little symbol with the three circles and lines is your source control tab.  Click on that, and you'll see the files that are currently staged for commit ("&lt;strong&gt;Staged Changes&lt;/strong&gt;"), the files that aren't staged ("&lt;strong&gt;Changes&lt;/strong&gt;"), and the files that have merge conflicts ("&lt;strong&gt;Merge Changes&lt;/strong&gt;").&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flive.staticflickr.com%2F65535%2F49484984218_f291465fc9_o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flive.staticflickr.com%2F65535%2F49484984218_f291465fc9_o.png" alt="screenshot of merge conflicts in VS Code sidebar"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If there's nothing under &lt;strong&gt;Merge Changes&lt;/strong&gt;, then you have no merge conflicts.  But if you do, then click on one of the files.  Somewhere in the file, you'll see a section that looks like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flive.staticflickr.com%2F65535%2F49485687482_8e76d4bf10_o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flive.staticflickr.com%2F65535%2F49485687482_8e76d4bf10_o.png" alt="screenshot of merge conflicts in VS Code"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This shows the two versions of that portion of the file that are conflicting with each other.  Right above it is a list of links you can click for different actions:&lt;br&gt;
If you want to keep your changes only, click "&lt;strong&gt;Accept current change&lt;/strong&gt;".&lt;br&gt;
If you want to keep the changes from the target branch and discard your changes, click "&lt;strong&gt;Accept incoming change&lt;/strong&gt;".&lt;br&gt;
If you want to keep both, click "&lt;strong&gt;Accept both changes&lt;/strong&gt;" (but keep in mind that sometimes this may leave out things that existed in both versions, such as a closing brace, so make sure to check that the code looks and works right after doing this!)&lt;br&gt;
"&lt;strong&gt;Compare changes&lt;/strong&gt;" opens the two versions of the file side by side so you can see in a different format how things have changed.&lt;/p&gt;

&lt;p&gt;Once you've fixed any merge conflicts and are certain everything works correctly, &lt;code&gt;git commit&lt;/code&gt; your changes again.  Git will automatically fill in the commit message for you, so you can just accept this message and continue.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flive.staticflickr.com%2F65535%2F49484342443_39706c2389_o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flive.staticflickr.com%2F65535%2F49484342443_39706c2389_o.png" alt="screenshot of merge commit message"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;git push&lt;/code&gt; your working branch, then go to GitHub to create your PR.&lt;/p&gt;

&lt;p&gt;On GitHub, if you've recently pushed a branch, then you may have a light yellow bar with a green "&lt;strong&gt;Compare &amp;amp; pull request&lt;/strong&gt;" button.  If you have that, then click it; if not, click the "&lt;strong&gt;New pull request&lt;/strong&gt;" button next to the branch dropdown on the left.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flive.staticflickr.com%2F65535%2F49484363023_b74c46e9d6_b.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flive.staticflickr.com%2F65535%2F49484363023_b74c46e9d6_b.jpg" alt="screenshot of New pull request button"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you're manually creating a PR, then on the next page, make sure the "base" branch is your target branch (the one you want to merge your changes IN to), and the "compare" branch is the new branch you've been working on.  (If GitHub already knew which branch you're merging, and you clicked the "&lt;strong&gt;Compare &amp;amp; pull request&lt;/strong&gt;" button, then you'll skip this page.)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flive.staticflickr.com%2F65535%2F49485050567_543b279e26_b.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flive.staticflickr.com%2F65535%2F49485050567_543b279e26_b.jpg" alt="screenshot of choosing which branches to merge"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you've chosen your branches, you'll see a form.  Here you can write a title and description for your PR, as well as choose reviewers or add any other appropriate information.  A lot of this will depend on the preferences of the people or team who own the repository - they may require certain information be in your PR, or that things are formatted in a specific way, or that you label your PR correctly.&lt;/p&gt;

&lt;p&gt;Regardless, it's always a good idea to be descriptive when submitting a PR.  Explain the issue you're solving, and link to any relevant tasks or issues.  Include screenshots showing the before and after of what you fixed, or a gif showing the new feature in action.  Include instructions for how to test the fix or view the new feature - assume you're writing for someone who's completely unfamiliar with the project, and be as clear as possible with your instructions.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flive.staticflickr.com%2F65535%2F49484353238_d7b55f765c_b.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flive.staticflickr.com%2F65535%2F49484353238_d7b55f765c_b.jpg" alt="screenshot of PR form"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you're happy with your PR, click the big green "&lt;strong&gt;Create pull request&lt;/strong&gt;" button at the bottom of the form - and there's your PR!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flive.staticflickr.com%2F65535%2F49484878206_ea24a4f879_b.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flive.staticflickr.com%2F65535%2F49484878206_ea24a4f879_b.jpg" alt="screenshot of a PR"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;From here, keep an eye on your PR.  Remember to merge in your target branch regularly, so your branch stays up to date.  If your reviewers leave comments about changes they would like to see or issues they've found, you can make any necessary changes locally, and then &lt;code&gt;git commit&lt;/code&gt; and &lt;code&gt;git push&lt;/code&gt; as usual - once you push, your new changes will show up in your PR.  Sometimes reviewers will leave comments asking questions about your code, or suggesting a different way of doing things, in which case you can reply to their comments directly on GitHub.&lt;/p&gt;

&lt;p&gt;Depending on the team, you may have to wait for build processes to pass before merging.  If you're unfamiliar with this, talk to your team!  There's often someone who will be happy to explain all their processes to you.&lt;/p&gt;

&lt;p&gt;Once your PR has been approved by the reviewers, now it's time to merge!  Make sure you know what the process is for the project you're working on - sometimes, someone specific will do the merge; other times, you can merge your own PR once you have the required number of approvals.  As soon as your PR is merged, congratulations!  Your code is now part of the main codebase.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Have you tried creating a PR yet?  What was the first project you contributed to?  I'd love to hear from you in the comments!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you have any other questions about Git or requests for other topics you'd like to see me blog about, please leave a comment!  And if you're enjoying this series, consider supporting me on &lt;a href="https://www.patreon.com/sushiday" rel="noopener noreferrer"&gt;Patreon&lt;/a&gt;, following me on &lt;a href="https://twitter.com/sushiday" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; or checking out my &lt;a href="https://www.twitch.tv/sushicodes" rel="noopener noreferrer"&gt;coding&lt;/a&gt; or &lt;a href="https://www.twitch.tv/sushiday" rel="noopener noreferrer"&gt;cooking&lt;/a&gt; Twitch streams!&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>tutorial</category>
      <category>git</category>
      <category>github</category>
    </item>
    <item>
      <title>Our Personal Game Jam</title>
      <dc:creator>Allison Day</dc:creator>
      <pubDate>Mon, 03 Feb 2020 07:43:31 +0000</pubDate>
      <link>https://forem.com/sushicodes/our-personal-game-jam-2932</link>
      <guid>https://forem.com/sushicodes/our-personal-game-jam-2932</guid>
      <description>&lt;p&gt;&lt;em&gt;A game prototype a month, every month, for a year.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Depending on how much you've worked on games, this either sounds totally doable, or completely impossible.&lt;/p&gt;

&lt;p&gt;It's practically our very own game jam!&lt;/p&gt;

&lt;p&gt;Are we absolutely nuts?&lt;/p&gt;

&lt;p&gt;Yes, yes we are.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The first question is... who are we?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;My husband (who shall henceforth be referred to as "Son" - yes, that's actually his name; no, he's not my kid) and I are traditionally web devs, as you may have guessed if you found me though my &lt;a href="https://dev.to/sushicodes/12-days-of-gitmas-intro-to-git-4l26"&gt;Gitmas series&lt;/a&gt;.  He has his master's degree in computer science, and worked at Yahoo! for a while before turning to consulting work; I was a dancer when we met (15 years ago!) but always loved math and science - he quickly turned me on to programming, and we've been working together (both on client work and on our own projects) ever since.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yJAQSVyf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/4214/34431222243_a2c2fcd9e6_b.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yJAQSVyf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/4214/34431222243_a2c2fcd9e6_b.jpg" alt="photo of me and my husband"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;While we still do plenty of React work for clients (and you'll continue to see plenty of web dev-related posts here), in the past few years we've begun to delve into the world of game dev.  In our free time, we stream &lt;a href="https://www.twitch.tv/sushicodes"&gt;coding&lt;/a&gt;, &lt;a href="https://www.twitch.tv/sushiday"&gt;cooking&lt;/a&gt;, and &lt;a href="https://www.twitch.tv/sausagecam"&gt;occasional gaming&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Okay, but... why are we doing this?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Games are a ton of fun to make, and we actually released a free mobile fishing game called &lt;a href="https://bifo.co/games/bobber-bop"&gt;Bobber Bop&lt;/a&gt; last year.  It was an amazing experience (and we're so proud to have actually launched a game!), but when you're focusing on getting a single game to launch, you don't have the opportunity to play with other game dev techniques and learn other skills.&lt;/p&gt;

&lt;p&gt;Ultimately, Son and I want to be developing for AR and VR, and to be versatile devs.  (There's a lot of overlap between games and mixed reality - creating 3D objects and effects, and being able to move around within and affect a 3D space are a necessity for both.)  But the way we see it, being bogged down working on a single game with a limited scope for months or years... can be great if you want to be focused on releasing one big game, but doesn't quite align with what our goals are.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--p60KQm0U--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/4181/34461654225_755b174912_b.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--p60KQm0U--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/4181/34461654225_755b174912_b.jpg" alt="photo of me using a cardboard VR headset"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thus the prototype-a-month project.  Working on a bunch of different prototypes achieves some specific goals for us:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;we get to try out lots of game ideas in a short period of time, and decide which are worth pursuing, and which aren't great&lt;/li&gt;
&lt;li&gt;each prototype has a different focus - so we learn a wide variety of techniques and can play with different art styles&lt;/li&gt;
&lt;li&gt;lots of practice brainstorming game ideas&lt;/li&gt;
&lt;li&gt;impossible to get hyper-focused on one game or technique, to the detriment of all others&lt;/li&gt;
&lt;li&gt;forces us to jump off the deep end - it's a lot easier to mess around and try out new things (like, ahem, Blender - we were definitely tempted to stick with Voxels, since we were already comfortable with that from Bobber Bop) since "who cares, it's just a prototype, it doesn't need to actually look good"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Did I mention we're doing a good bit of the development live on our &lt;a href="https://www.twitch.tv/sushicodes"&gt;Twitch stream&lt;/a&gt;?  We're only a month in, and we've already been tempted to abandon the entire project and continue developing our first game - so it's helpful that chat keeps us honest!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What are we using?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;At the moment, all of our development is using C# and Unity.  Most of our 3D modeling uses Blender, although &lt;a href="https://bifo.co/games/bobber-bop"&gt;Bobber Bop&lt;/a&gt; was made with &lt;a href="https://ephtracy.github.io/"&gt;MagicaVoxel&lt;/a&gt; and it's very possible we may occasionally do some voxel art again.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yy3-PHtW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://bifo.co/wp/wp-content/uploads/2019/09/fishies.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yy3-PHtW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://bifo.co/wp/wp-content/uploads/2019/09/fishies.png" alt="so many voxel fishes"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's next?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We just finished the prototype for January (there will be a post all about our first game soon!)  We're super hype about the first game, and as much as we don't want to stop working on it, we know the whole point of this prototype-a-mont project is a prototype... every... month.&lt;/p&gt;

&lt;p&gt;We're definitely not saying goodbye to January's prototype for good, though.  If we have time outside of streaming/work/blog post writing/video filming (free time?  what's that?) we may continue development here and there, but more likely, we'll be picking it back up again either as another one-month project this year, or sometime next year.&lt;/p&gt;

&lt;p&gt;I'll be continuing to blog about both web and game dev, so let me know what you want to see me write about.  (Don't worry - I'm still working on finishing out the &lt;a href="https://dev.to/sushicodes/12-days-of-gitmas-intro-to-git-4l26"&gt;Gitmas series&lt;/a&gt;... and yes of course Christmas season continues into February, why do you ask?  Next Gitmas post is just about ready!)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Before I wrap this up, I want to know - what are you working on right now?  What do you want to learn?  Leave a comment below and let me know!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you have any other questions about game dev or requests for other topics you'd like to see me blog about, please leave a comment!  And if you're enjoying my writing, consider supporting me on &lt;a href="https://www.patreon.com/sushiday"&gt;Patreon&lt;/a&gt;, following me on &lt;a href="https://twitter.com/sushiday"&gt;Twitter&lt;/a&gt; or checking out my &lt;a href="https://www.twitch.tv/sushicodes"&gt;coding&lt;/a&gt; or &lt;a href="https://www.twitch.tv/sushiday"&gt;cooking&lt;/a&gt; Twitch streams.&lt;/p&gt;

</description>
      <category>unity3d</category>
      <category>gamedev</category>
      <category>games</category>
      <category>writing</category>
    </item>
    <item>
      <title>12 Days of Gitmas: Git Branches</title>
      <dc:creator>Allison Day</dc:creator>
      <pubDate>Fri, 24 Jan 2020 21:24:51 +0000</pubDate>
      <link>https://forem.com/sushicodes/12-days-of-gitmas-git-branches-43gi</link>
      <guid>https://forem.com/sushicodes/12-days-of-gitmas-git-branches-43gi</guid>
      <description>&lt;p&gt;&lt;em&gt;On the ninth day of Gitmas, my mentee asked of me...&lt;br&gt;
&lt;strong&gt;what a branching strategy?&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://dev.to/sushicodes/12-days-of-gitmas-gitignore-2ll0"&gt;what's this gitignore thing&lt;/a&gt;,&lt;br&gt;
&lt;a href="https://dev.to/sushicodes/12-days-of-gitmas-committing-your-changes-in-git-53nk"&gt;push-ing, pull-ing, diff-ing&lt;/a&gt;,&lt;br&gt;
&lt;a href="https://dev.to/sushicodes/12-days-of-gitmas-ssh-vs-https-19bp"&gt;what is SSH-ing&lt;/a&gt;,&lt;br&gt;
&lt;a href="https://dev.to/sushicodes/12-days-of-gitmas-connecting-your-local-repository-to-github-1d9h"&gt;how do I connect these&lt;/a&gt;,&lt;br&gt;
&lt;a href="https://dev.to/sushicodes/12-days-of-gitmas-what-is-github-11po"&gt;what's this "GitHub" of which I've heard&lt;/a&gt;,&lt;br&gt;
&lt;a href="https://dev.to/sushicodes/12-days-of-gitmas-your-first-git-project-g3m"&gt;Git's ready - what then&lt;/a&gt;,&lt;br&gt;
&lt;a href="https://dev.to/sushicodes/12-days-of-gitmas-setting-up-git-39i8"&gt;how do I get Git set up&lt;/a&gt;,&lt;br&gt;
&lt;a href="https://dev.to/sushicodes/12-days-of-Gitmas-intro-to-Git-4l26"&gt;and could you explain Git, pretty please?&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We've reached Day 9 of the 12 Days of Gitmas, and today we're going out on a limb... and talking branches!&lt;/p&gt;

&lt;p&gt;If you're working on a very small project by yourself, you may not need branches.  But for the majority of projects - if you're working on a team, or if you want to work on features that won't go to production yet - branches will be an important part of your Git experience!&lt;/p&gt;

&lt;p&gt;When we introduced how to &lt;a href="https://dev.to/sushicodes/12-days-of-gitmas-committing-your-changes-in-git-53nk"&gt;check in your changes&lt;/a&gt;, I mentioned that you should do &lt;code&gt;git push origin master&lt;/code&gt;, and that I'd explain what that meant more in the future.  Well, the future is now!&lt;/p&gt;

&lt;p&gt;&lt;code&gt;git push&lt;/code&gt; &lt;a href="https://dev.to/sushicodes/12-days-of-gitmas-committing-your-changes-in-git-53nk"&gt;you already know&lt;/a&gt; - &lt;code&gt;git&lt;/code&gt; is to signify that the command should use Git, and &lt;code&gt;push&lt;/code&gt; means you're pushing your changes to the remote repository.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;origin&lt;/code&gt; is a shorthand that refers to the remote repository that the project was originally cloned from.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;master&lt;/code&gt; is the branch you're on.  By default, when you initialize a Git repository, it will have a single branch - the &lt;code&gt;master&lt;/code&gt; branch.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--JRLdDLde--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49223160578_190b1ce094_o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--JRLdDLde--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49223160578_190b1ce094_o.png" alt="screenshot of git init showing master branch" title="when you git init, you start with the master branch"&gt;&lt;/a&gt;&lt;/p&gt;
When you run &lt;code&gt;git init&lt;/code&gt;, you start on the &lt;code&gt;master&lt;/code&gt; branch.



&lt;p&gt;&lt;strong&gt;What is a branch&lt;/strong&gt;&lt;br&gt;
When you're working on a project, you want to be able to check in your changes and "save your work" on a regular basis.  But what if you're not ready for your changes to be in production?  What if you're working with other people, and need approval before your changes get into the main codebase?  What if your team wants to have one version of the codebase on production, and develop and QA the next version before it goes to production?&lt;/p&gt;

&lt;p&gt;This is where branches come in.&lt;/p&gt;

&lt;p&gt;Think of your repository like a river.  Every repository starts with a single branch, called &lt;code&gt;master&lt;/code&gt;.  &lt;/p&gt;

&lt;p&gt;The river can branch off into smaller streams, which could, at some future point, merge back into the main river.  This is essentially how branches work in Git.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/XAe9aDBIv3arS/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/XAe9aDBIv3arS/giphy.gif" alt="gif of a river splitting into smaller streams and merging back together again"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can create a branch off of &lt;code&gt;master&lt;/code&gt;, at which point the code in the &lt;code&gt;master&lt;/code&gt; branch and your new branch will be exactly the same.  But from there, the original branch will carry on as it is, but any new changes you make in the new branch will live independently from &lt;code&gt;master&lt;/code&gt;.  At a future point, you can merge your new branch back into &lt;code&gt;master&lt;/code&gt;, which will bring your new code into &lt;code&gt;master&lt;/code&gt;, but up until then, the &lt;code&gt;master&lt;/code&gt; branch won't know anything about the new changes you've made on a different branch.  (We'll talk about merging and PRs in the next post!)&lt;/p&gt;

&lt;p&gt;Many projects will have a &lt;code&gt;master&lt;/code&gt; branch for what goes to production, and then a &lt;code&gt;develop&lt;/code&gt; branch (or something similarly named) that all the developers will work off of.  In this case, the developers will branch off of &lt;code&gt;develop&lt;/code&gt;, since that is the branch with the most up-to-date code.  Once the codebase on &lt;code&gt;develop&lt;/code&gt; is deemed ready for production, then they'll merge &lt;code&gt;develop&lt;/code&gt; back into &lt;code&gt;master&lt;/code&gt; in the process of pushing the new changes to production.&lt;/p&gt;

&lt;p&gt;Okay - so we've got the theory, now how do we make this all work in practice?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Creating your own branch&lt;/strong&gt;&lt;br&gt;
To create a new branch, run:&lt;br&gt;
&lt;code&gt;git checkout -b [branch name]&lt;/code&gt;&lt;br&gt;
Make sure the branch name is a string with no spaces: &lt;code&gt;new-branch&lt;/code&gt;, rather than &lt;code&gt;new branch&lt;/code&gt;  (This should be the case for all naming in Git - branches, repositories, file names, etc.)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pulling down new branches&lt;/strong&gt;&lt;br&gt;
Sometimes, you'll want to work on a branch that somebody else created, or run the code on their branch while code reviewing a PR.  In order to do that, you'll first have to make sure their branch exists on your local machine.  To pull down all the new branches that exist remotely, run:&lt;br&gt;
&lt;code&gt;git fetch origin&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Checking out someone else's branch&lt;/strong&gt;&lt;br&gt;
Once you've fetched all the remote branches, you can checkout the branch you want.  This command is similar to the one you ran to create your own branch, but note that this time, you won't have the &lt;code&gt;-b&lt;/code&gt; in the command:&lt;br&gt;
&lt;code&gt;git checkout [branch name]&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;From there, you can &lt;code&gt;git pull&lt;/code&gt; to pull down their latest changes, or &lt;code&gt;git commit&lt;/code&gt; and &lt;code&gt;git push&lt;/code&gt; to add your own changes to their branch.  Always make sure you have permission to be working on someone else's branch!  &lt;/p&gt;

&lt;p&gt;Now you know all about Git branches and how to use them.  In the next post, we'll be talking about merging branches and PRs!&lt;/p&gt;

&lt;p&gt;If you have any other questions about Git or requests for other topics you'd like to see me blog about, please leave a comment!  And if you're enjoying this series, consider supporting me on &lt;a href="https://www.patreon.com/sushiday"&gt;Patreon&lt;/a&gt;, following me on &lt;a href="https://twitter.com/sushiday"&gt;Twitter&lt;/a&gt; or checking out my &lt;a href="https://www.twitch.tv/sushicodes"&gt;coding&lt;/a&gt; or &lt;a href="https://www.twitch.tv/sushiday"&gt;cooking&lt;/a&gt; Twitch streams!&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>git</category>
      <category>github</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>12 Days of Gitmas: .gitignore</title>
      <dc:creator>Allison Day</dc:creator>
      <pubDate>Thu, 09 Jan 2020 07:06:14 +0000</pubDate>
      <link>https://forem.com/sushicodes/12-days-of-gitmas-gitignore-2ll0</link>
      <guid>https://forem.com/sushicodes/12-days-of-gitmas-gitignore-2ll0</guid>
      <description>&lt;p&gt;&lt;em&gt;On the eigth day of Gitmas, my mentee asked of me...&lt;br&gt;
&lt;strong&gt;what's this gitignore thing?&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://dev.to/sushicodes/12-days-of-gitmas-committing-your-changes-in-git-53nk"&gt;push-ing, pull-ing, diff-ing&lt;/a&gt;,&lt;br&gt;
&lt;a href="https://dev.to/sushicodes/12-days-of-gitmas-ssh-vs-https-19bp"&gt;what is SSH-ing&lt;/a&gt;,&lt;br&gt;
&lt;a href="https://dev.to/sushicodes/12-days-of-gitmas-connecting-your-local-repository-to-github-1d9h"&gt;how do I connect these&lt;/a&gt;,&lt;br&gt;
&lt;a href="https://dev.to/sushicodes/12-days-of-gitmas-what-is-github-11po"&gt;what's this "GitHub" of which I've heard&lt;/a&gt;,&lt;br&gt;
&lt;a href="https://dev.to/sushicodes/12-days-of-gitmas-your-first-git-project-g3m"&gt;Git's ready - what then&lt;/a&gt;,&lt;br&gt;
&lt;a href="https://dev.to/sushicodes/12-days-of-gitmas-setting-up-git-39i8"&gt;how do I get Git set up&lt;/a&gt;,&lt;br&gt;
&lt;a href="https://dev.to/sushicodes/12-days-of-Gitmas-intro-to-Git-4l26"&gt;and could you explain Git, pretty please?&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Today's Day 8 of the 12 Days of Gitmas, and today we're talking about &lt;code&gt;.gitignore&lt;/code&gt; - what is it, and when should you use it?&lt;/p&gt;

&lt;p&gt;Right now, if you &lt;code&gt;git add .&lt;/code&gt;, it will add every single file within your project to Git, and track all of them.&lt;/p&gt;

&lt;p&gt;But sometimes, that's not what you want.  Say you have a huge log folder that's generated when you run your project.  Or, if you're familiar with Node.js at all, that huuuuuge &lt;code&gt;node_modules&lt;/code&gt; folder that's created when you &lt;code&gt;npm install&lt;/code&gt;.  (If you have no idea what this means, no worries!  This Git series is for absolute beginners, and Node.js is a bit more advanced.)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/3o7522WMYYkseyBo1G/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/3o7522WMYYkseyBo1G/giphy.gif" alt="gif of santa being buried in letters" title="Too many files!"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Suffice to say, there are a lot of cases where there are files that are created within your project that you won't necessarily want to check in.  But if you have a big project, it quickly becomes a huge pain to have to cherrypick which files you do want, and individually &lt;code&gt;git add&lt;/code&gt; every single file.&lt;/p&gt;

&lt;p&gt;This is where the &lt;code&gt;.gitignore&lt;/code&gt; file comes in.&lt;/p&gt;

&lt;p&gt;As you might guess from the name, &lt;code&gt;.gitignore&lt;/code&gt; is a file that tells Git which files or folders to ignore.&lt;/p&gt;

&lt;p&gt;This way, when you type &lt;code&gt;git status&lt;/code&gt; in the command line, none of your ignored files will show up, or get added if you do &lt;code&gt;git add .&lt;/code&gt;  It's a super easy way to tell Git what to pay attention to, and what to ignore.&lt;/p&gt;

&lt;p&gt;What do you put in &lt;code&gt;.gitignore&lt;/code&gt;?  It's just a text list of files, folders, and file extensions that you want to ignore.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rBtyYikF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49354784751_148860b489_o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rBtyYikF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49354784751_148860b489_o.png" alt="screenshot of a sample .gitignore file" title="Here are the files you want ignored!"&gt;&lt;/a&gt;&lt;/p&gt;
In my .gitignore file, I want the &lt;code&gt;.DS_Store&lt;/code&gt; and &lt;code&gt;ignoreme.txt&lt;/code&gt; files to stay out of my GitHub repository.



&lt;p&gt;For example, if you're working on a Node.js project, then you should probably add &lt;code&gt;node_modules/&lt;/code&gt; so it ignores the entire node_modules folder (which gets regenerated every time you &lt;code&gt;npm install&lt;/code&gt;, so there's no point in checking it in).&lt;/p&gt;

&lt;p&gt;You can even ignore everything of a specific file type - so, if for some odd reason, you never ever want a JPEG image file to get checked in, you can add &lt;code&gt;*.jpeg&lt;/code&gt; to your &lt;code&gt;.gitignore&lt;/code&gt; file.&lt;/p&gt;

&lt;p&gt;Now, when you type &lt;code&gt;git status&lt;/code&gt; in your command line, the files or folders that you've ignored won't show up - you won't even have the option to add them or check them in, which is exactly what you want here!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oRwBOtqZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49354334573_09fb1d2d2d_b.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oRwBOtqZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49354334573_09fb1d2d2d_b.jpg" alt="screenshot of terminal showing that ignored files don't show up when you git status" title="No ignoreme.txt file!"&gt;&lt;/a&gt;&lt;/p&gt;
You may notice that I typed &lt;code&gt;gst&lt;/code&gt; instead of &lt;code&gt;git status&lt;/code&gt;.  That's because I'm using aliased commands to make it easier when I'm using Git a lot!  We'll go over this in an upcoming post.  The &lt;code&gt;cat&lt;/code&gt; command just outputs the contents of the text file into the terminal.



&lt;p&gt;And now, when you commit your changes and push them to GitHub, the ignored files won't be there.&lt;/p&gt;

&lt;p&gt;However!  &lt;code&gt;.gitignore&lt;/code&gt; only works for files or folders that haven't been checked into your repository.  If you created a README.md file and checked it into your repository, for example, and then added either &lt;code&gt;README.md&lt;/code&gt; or &lt;code&gt;*.md&lt;/code&gt; to your &lt;code&gt;.gitignore&lt;/code&gt; file, &lt;strong&gt;future changes will still be tracked.&lt;/strong&gt;  If you want a file or folder to NOT be tracked, you'll have to manually remove it from the repository and check the repository in without that file or folder.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dPw6oWia--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49354336158_b40e4e98b7_b.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dPw6oWia--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49354336158_b40e4e98b7_b.jpg" alt="screenshot of github after checking in the .gitignore file" title="GitHub after .gitignore"&gt;&lt;/a&gt;&lt;/p&gt;
New files won't show up here if they're supposed to be ignored.



&lt;p&gt;Now you know all about &lt;code&gt;.gitignore&lt;/code&gt;!&lt;/p&gt;

&lt;p&gt;If you have any other questions about Git or requests for other topics you'd like to see me blog about, please leave a comment!  And if you're enjoying this series, consider supporting me on &lt;a href="https://www.patreon.com/sushiday"&gt;Patreon&lt;/a&gt;, following me on &lt;a href="https://twitter.com/sushiday"&gt;Twitter&lt;/a&gt; or checking out my &lt;a href="https://www.twitch.tv/sushicodes"&gt;coding&lt;/a&gt; or &lt;a href="https://www.twitch.tv/sushiday"&gt;cooking&lt;/a&gt; Twitch streams!&lt;/p&gt;

</description>
      <category>git</category>
      <category>github</category>
      <category>beginners</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>12 Days of Gitmas: Committing your changes in Git</title>
      <dc:creator>Allison Day</dc:creator>
      <pubDate>Mon, 06 Jan 2020 20:00:50 +0000</pubDate>
      <link>https://forem.com/sushicodes/12-days-of-gitmas-committing-your-changes-in-git-53nk</link>
      <guid>https://forem.com/sushicodes/12-days-of-gitmas-committing-your-changes-in-git-53nk</guid>
      <description>&lt;p&gt;&lt;em&gt;On the seventh day of Gitmas, my mentee asked of me...&lt;br&gt;
&lt;strong&gt;push-ing, pull-ing, diff-ing?&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://dev.to/sushicodes/12-days-of-gitmas-ssh-vs-https-19bp"&gt;what is SSH-ing&lt;/a&gt;,&lt;br&gt;
&lt;a href="https://dev.to/sushicodes/12-days-of-gitmas-connecting-your-local-repository-to-github-1d9h"&gt;how do I connect these&lt;/a&gt;,&lt;br&gt;
&lt;a href="https://dev.to/sushicodes/12-days-of-gitmas-what-is-github-11po"&gt;what's this "GitHub" of which I've heard&lt;/a&gt;,&lt;br&gt;
&lt;a href="https://dev.to/sushicodes/12-days-of-gitmas-your-first-git-project-g3m"&gt;Git's ready - what then&lt;/a&gt;,&lt;br&gt;
&lt;a href="https://dev.to/sushicodes/12-days-of-gitmas-setting-up-git-39i8"&gt;how do I get Git set up&lt;/a&gt;,&lt;br&gt;
&lt;a href="https://dev.to/sushicodes/12-days-of-Gitmas-intro-to-Git-4l26"&gt;and could you explain Git, pretty please?&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Today's Day 7 of the 12 Days of Gitmas, and today we'll be talking about how you actually track and commit your changes in Git.&lt;/p&gt;

&lt;p&gt;If you've been following along, by now you know how to &lt;a href="https://dev.to/sushicodes/12-days-of-gitmas-your-first-git-project-g3m"&gt;create your own Git project&lt;/a&gt;, and &lt;a href="https://dev.to/sushicodes/12-days-of-gitmas-connecting-your-local-repository-to-github-1d9h"&gt;connect it to GitHub&lt;/a&gt;.  Now you can work on your project locally!&lt;/p&gt;

&lt;p&gt;But... how do you actually &lt;em&gt;use&lt;/em&gt; the version control aspect of Git?  And how do you get your changes onto GitHub?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;(For this post, make sure you're working on your own repository!  The concepts will be the same if you're working with someone else's project, however there's some additional information you'll need to know first that we'll go over when we discuss branches and PRs, in an upcoming post.)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;First thing first, go ahead and make some changes in your project.  For example, add some information to your README, and add a new file within your project.&lt;/p&gt;

&lt;p&gt;Now go to your console, and type:&lt;br&gt;
&lt;code&gt;git status&lt;/code&gt;&lt;br&gt;
You'll see a list of all the files in your project that have been added or changed since the last commit.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ggA55cTQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49340725516_c9b2de3193_o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ggA55cTQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49340725516_c9b2de3193_o.png" alt="screenshot of my terminal with the results of the git status command" title="git status"&gt;&lt;/a&gt;&lt;/p&gt;
Here you can see that I deleted a file called &lt;code&gt;.DS_Store&lt;/code&gt;, made some changes to the &lt;code&gt;README.md&lt;/code&gt; file, and added a new file called &lt;code&gt;index.html&lt;/code&gt;.



&lt;p&gt;If you want to see more details about exactly what has been changed, type:&lt;br&gt;
&lt;code&gt;git diff&lt;/code&gt;&lt;br&gt;
This will show you a "diff" of the files (the difference between the previous version of each file and the new version).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4YcmQ6Rr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49340739736_176203c310_b.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4YcmQ6Rr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49340739736_176203c310_b.jpg" alt="screenshot of my terminal with the results of the git diff command" title="git diff"&gt;&lt;/a&gt;&lt;/p&gt;
This screenshot shows the diff of my changes.  As you can see, it's only showing the changes in the &lt;code&gt;README.md&lt;/code&gt; file, because &lt;code&gt;index.html&lt;/code&gt; isn't being tracked yet.  Type &lt;code&gt;q&lt;/code&gt; to get out of this view.



&lt;p&gt;If you're happy with the changes, then you can&lt;br&gt;
&lt;code&gt;git add [filename]&lt;/code&gt;&lt;br&gt;
to add all the changes associated with a specific file, or&lt;br&gt;
&lt;code&gt;git add .&lt;/code&gt;&lt;br&gt;
to add all the changed files.  This tells Git which files you want to add to your commit, to record them to your version control history.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3bBkV7TW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49340977107_4771df8d1e_o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3bBkV7TW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49340977107_4771df8d1e_o.png" alt="screenshot of git add and subsequent git status" title="git add"&gt;&lt;/a&gt;&lt;/p&gt;
Once you run &lt;code&gt;git add .&lt;/code&gt;, you can do &lt;code&gt;git status&lt;/code&gt; again to see that your files have been added.  The files with changes that are staged to be committed will be in green.  If there are any files left that you haven't added, they will still be red.



&lt;p&gt;Lastly, you need to run&lt;br&gt;
&lt;code&gt;git commit&lt;/code&gt;&lt;br&gt;
in order to commit your changes.  This will open your default editor to write your commit message.  If another text editor opens when you type this, you can write your commit message at the top, save, then quit the application, and Git will commit your changes.&lt;/p&gt;

&lt;p&gt;Otherwise, it's likely the default editor is vim.  Vim is notoriously difficult to exit once opened if you're not familiar with it, so there are a few other options.&lt;/p&gt;

&lt;p&gt;You can do &lt;br&gt;
&lt;code&gt;git commit -m "Write your commit message here"&lt;/code&gt;&lt;br&gt;
to just take care of it entirely in the command line.&lt;/p&gt;

&lt;p&gt;Or, you can change your editor.  I prefer to use nano, so whenever I set up a new computer, I run&lt;br&gt;
&lt;code&gt;git config --global core.editor "nano"&lt;/code&gt;&lt;br&gt;
to set nano as my default editor.  You can get more information about setting different text editors as your default &lt;a href="https://help.github.com/en/github/using-git/associating-text-editors-with-git"&gt;in this GitHub article&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fJK0hULv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49340995732_f905c4c631_o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fJK0hULv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49340995732_f905c4c631_o.png" alt="screenshot of git commit in nano" title="git commit"&gt;&lt;/a&gt;&lt;/p&gt;
If you change to nano, your commit will look something like this.  &lt;code&gt;^x&lt;/code&gt; to exit, then &lt;code&gt;y&lt;/code&gt; to save your commit message.  If you &lt;code&gt;n&lt;/code&gt;, it will just cancel the commit.



&lt;p&gt;You may be wondering, what should you write as your commit message?  Different companies or projects have different standards, so depending on what you're working on, you may have to format your message a specific way or include certain information - like an issue ID, task name, change type (bug, feature, etc.), and so on.&lt;/p&gt;

&lt;p&gt;Regardless, you'll want your commit message to be short and concise, yet descriptive.  "bug fix" or "asdf" are terrible commit messages (that, let's be honest, we're all probably guilty of - but it's still a bad practice!), while "adjusted spacing on homepage banner" or "created API for scheduler" are much better.  Ultimately, you'll want to be able to look at your commits from a day ago or a year ago (or have someone else look at your commits!) and be able to have a pretty good idea of what changed in that commit, in case you need to revert your code, or see how something used to be done.&lt;/p&gt;

&lt;p&gt;As far as Git is concerned, you've now successfully committed your changes to the version control system.  But wait - your changes aren't in GitHub yet, so nobody else can see or use them!&lt;/p&gt;

&lt;p&gt;In order to update GitHub with your changes, there are two more commands you need to know.&lt;/p&gt;

&lt;p&gt;First,&lt;br&gt;
&lt;code&gt;git pull origin master&lt;/code&gt;&lt;br&gt;
If someone else is working on the project with you, then they may have made changes as well!  You need to pull down their changes to your local machine regularly, so your repository is up to date.  (We'll talk about what &lt;code&gt;origin master&lt;/code&gt; means when we discuss branches in a couple of posts.)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VmGCLouJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49341016847_8f4fae4c4b_o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VmGCLouJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49341016847_8f4fae4c4b_o.png" alt="screenshot of git pull" title="git pull origin master"&gt;&lt;/a&gt;&lt;/p&gt;
No one else has made changes to my repository, so when I pull, it's already up to date.



&lt;p&gt;Then,&lt;br&gt;
&lt;code&gt;git push origin master&lt;/code&gt;&lt;br&gt;
This pushes your changes to GitHub, so everyone else on the project can see them.  It's good practice to always make sure you &lt;code&gt;git pull&lt;/code&gt; first, because if there are changes on GitHub that you don't have locally, and you try to &lt;code&gt;git push&lt;/code&gt;, you'll get an error telling you to &lt;code&gt;git pull&lt;/code&gt; first.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--N2JLxFtf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49341016822_9c03b1b1d8_o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--N2JLxFtf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49341016822_9c03b1b1d8_o.png" alt="screenshot of git push" title="git push origin master"&gt;&lt;/a&gt;&lt;/p&gt;
Every time you push your code, it will look something like this.



&lt;p&gt;And that's that!  You now know how to make changes, commit them in Git, and push them to your GitHub repository.  But that's not all!  We still need to discuss what &lt;code&gt;.gitignore&lt;/code&gt; is, how to work with someone &lt;em&gt;else&lt;/em&gt;'s repository, and so much more!  If you're not following yet, make sure to click the Follow button so you'll get notified when the rest of this Git series is posted!&lt;/p&gt;

&lt;p&gt;And if you have any questions about Git or requests for other topics you'd like to see me blog about, please leave a comment!  And if you're enjoying this series, consider supporting me on &lt;a href="https://www.patreon.com/sushiday"&gt;Patreon&lt;/a&gt;, following me on &lt;a href="https://twitter.com/sushiday"&gt;Twitter&lt;/a&gt; or checking out my &lt;a href="https://www.twitch.tv/sushicodes"&gt;coding&lt;/a&gt; or &lt;a href="https://www.twitch.tv/sushiday"&gt;cooking&lt;/a&gt; Twitch streams!&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>git</category>
      <category>github</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>12 Days of Gitmas: SSH vs. HTTPS</title>
      <dc:creator>Allison Day</dc:creator>
      <pubDate>Sat, 04 Jan 2020 08:22:21 +0000</pubDate>
      <link>https://forem.com/sushicodes/12-days-of-gitmas-ssh-vs-https-19bp</link>
      <guid>https://forem.com/sushicodes/12-days-of-gitmas-ssh-vs-https-19bp</guid>
      <description>&lt;p&gt;&lt;em&gt;On the sixth day of Gitmas, my mentee asked of me...&lt;br&gt;
&lt;strong&gt;what is SSH-ing?&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://dev.to/sushicodes/12-days-of-gitmas-connecting-your-local-repository-to-github-1d9h"&gt;how do I connect these&lt;/a&gt;,&lt;br&gt;
&lt;a href="https://dev.to/sushicodes/12-days-of-gitmas-what-is-github-11po"&gt;what's this "GitHub" of which I've heard&lt;/a&gt;,&lt;br&gt;
&lt;a href="https://dev.to/sushicodes/12-days-of-gitmas-your-first-git-project-g3m"&gt;Git's ready - what then&lt;/a&gt;,&lt;br&gt;
&lt;a href="https://dev.to/sushicodes/12-days-of-gitmas-setting-up-git-39i8"&gt;how do I get Git set up&lt;/a&gt;,&lt;br&gt;
&lt;a href="https://dev.to/sushicodes/12-days-of-Gitmas-intro-to-Git-4l26"&gt;and could you explain Git, pretty please?&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Welcome to Day 6 of the 12 Days of Gitmas, where we're discussing how to &lt;code&gt;clone&lt;/code&gt; a repository that's not already on your computer, and what all the different options and terminology mean.&lt;/p&gt;

&lt;p&gt;In the last post, we discussed &lt;a href="https://dev.to/sushicodes/12-days-of-gitmas-connecting-your-local-repository-to-github-1d9h"&gt;connecting your GitHub repository to your local repository&lt;/a&gt;, and you may have noticed there was both an SSH and an HTTPS option for the link you use.  What do these mean, and why would you use one versus the other?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;HTTPS&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;HTTPS stands for HyperText Transfer Protocol Secure.  (That "Secure" bit is why you may have noticed a lot of websites changing from &lt;code&gt;http://&lt;/code&gt; to &lt;code&gt;https://&lt;/code&gt; in the last few years.)  &lt;/p&gt;

&lt;p&gt;HTTPS is a way to securely send information to websites.  This means that when you type in things like passwords, shipping addresses, or your credit card number, those are all encrypted when they're sent to the website.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ep2dLYrn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49326246031_4bd289ec2b_o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ep2dLYrn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49326246031_4bd289ec2b_o.png" alt="screenshot of clone with HTTPS on GitHub" title="This is the link to clone with HTTPS - that arrow is how to switch to SSH"&gt;&lt;/a&gt;&lt;/p&gt;
Click the little link in the corner of the popup to switch between SSH and HTTPS



&lt;p&gt;For GitHub, using HTTPS to connect to your GitHub repository means that you'll have to enter your GitHub username and password into the command line every time you want to connect to GitHub (such as when you &lt;code&gt;push&lt;/code&gt; a change).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/XXMYrK6C5yL16/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/XXMYrK6C5yL16/giphy.gif" alt="gif of hypertext" title="HYPERTEXT!"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SSH&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;SSH stands for Secure Shell.&lt;/p&gt;

&lt;p&gt;This is a secure way to remotely log into a server.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XU4saFfH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49326246061_a7ce6cba0b_o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XU4saFfH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49326246061_a7ce6cba0b_o.png" alt="screenshot of clone with ssh" title="arrow pointing to ssh"&gt;&lt;/a&gt;&lt;/p&gt;
Here we're using SSH



&lt;p&gt;When it comes to using GitHub, there ultimately isn't a huge difference between using HTTPS or SSH.  However, when you use SSH, you'll have to generate something called &lt;code&gt;keys&lt;/code&gt; to give yourself permission to connect to your GitHub repository - more setup up front, but you won't have to worry about entering your password over and over again.&lt;/p&gt;

&lt;p&gt;To do this, you'll create a set of keys that lives on your computer.  These keys are plain text files that you'll generate using the command line.&lt;/p&gt;

&lt;p&gt;Your &lt;code&gt;private key&lt;/code&gt; should never be shared with anybody - otherwise, they may be able to pretend that they're you and check things into GitHub with your account.&lt;/p&gt;

&lt;p&gt;Your &lt;code&gt;public key&lt;/code&gt;, on the other hand, can be shared.  You'll add your public key to GitHub, which will allow GitHub to confirm that the person trying to change things in the repository is the same person that has access to the repository on GitHub.  Each set of keys is unique, so if you want to push changes to the repository from another computer, you'll have to add the new computer's public key to your GitHub account as well.&lt;/p&gt;

&lt;p&gt;If you want to generate keys to use with your GitHub account, GitHub has &lt;a href="https://help.github.com/en/github/authenticating-to-github/connecting-to-github-with-ssh"&gt;articles about using SSH&lt;/a&gt; and &lt;a href="https://help.github.com/en/github/authenticating-to-github/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent"&gt;instructions for how to generate a new SSH key&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/BprOGmQsJvVQI/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/BprOGmQsJvVQI/giphy.gif" alt="gif of audrey hepburn shushing someone" title="Shh!"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SVN?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You may also notice that when you click the "Clone or download" button to get the link for your repository, it also mentions SVN.  SVN refers to Subversion, which is an alternative to Git.  Since this series of articles is focusing on Git, I won't be going over Subversion, but just be aware that Subversion is another type of version control system.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cloning a repository that you don't have locally&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We've discussed how to &lt;a href="https://dev.to/sushicodes/12-days-of-gitmas-connecting-your-local-repository-to-github-1d9h"&gt;connect your GitHub repository to your local repository&lt;/a&gt;, but what if you want to work on somebody else's repository - for example, if you're working on an open source project?&lt;/p&gt;

&lt;p&gt;Go to their repository on GitHub, and just as we did when you were connecting your own repositories, click the green &lt;code&gt;Clone or download&lt;/code&gt; button.  Copy the link (either the HTTPS or SSH version, depending on your personal preferences and whether you've set up your keys or not yet), then go to the folder you have all your repositories in (NOT inside another project!) and type in your command line:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;git clone [link]&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;After a moment, Git will create a new folder with the new repository name, and download all the project files into that project.  Now you can make your own changes, and contribute to the project - I'll go over how to do that in upcoming posts!&lt;/p&gt;

&lt;p&gt;You may also have heard of &lt;code&gt;fork&lt;/code&gt;ing GitHub repositories.  &lt;code&gt;clone&lt;/code&gt;ing and &lt;code&gt;fork&lt;/code&gt;ing are similar, in that they both allow you to work on the repository on your own.  However, cloning just "checks out" the repository (like a library book) to your computer, and you can make changes locally (on your computer) and &lt;code&gt;commit&lt;/code&gt; them back to the original remote (on GitHub) repository.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ctR3Vvb0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49325584623_0ca840f51b_b.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ctR3Vvb0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49325584623_0ca840f51b_b.jpg" alt="screenshot of github with an arrow pointing to the Fork button" title="Here's the Fork button"&gt;&lt;/a&gt;&lt;/p&gt;
Fork it!



&lt;p&gt;Forking a repository, on the other hand, creates your own version of that GitHub repository in your own GitHub account.  This is a remote repository, meaning it is on GitHub.  You can still make changes and check them back in, however the changes will go into your forked version of the repository, and not back into the original version.&lt;/p&gt;

&lt;p&gt;If you want to contribute to someone else's project, then you should &lt;code&gt;clone&lt;/code&gt; their repository using the command line.  However, if you want to start your own project off of an existing open source project, you can &lt;code&gt;fork&lt;/code&gt; it as a starting point for your own project.  Once you have a fork of someone's project, you can &lt;code&gt;clone&lt;/code&gt; your fork, so you can work on it locally.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/103R2H9RN2QZgc/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/103R2H9RN2QZgc/giphy.gif" alt="gif of little mermaid combing her hair with a fork" title="Fork it!"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;(As for the other two buttons - "Star" means you're bookmarking the repository to save for later; "Watch/Unwatch" means you're choosing if you want to get notifications or not when something happens in that repository)&lt;/p&gt;

&lt;p&gt;Now you know what SSH and HTTPS mean, and how to clone or fork someone else's project!  In the next posts, I'll be going over how to contribute work to a project, what PRs are, and more!&lt;/p&gt;

&lt;p&gt;If you have any questions about Git or requests for other topics you'd like to see me blog about, please leave a comment!  And if you're enjoying this series, consider supporting me on &lt;a href="https://www.patreon.com/sushiday"&gt;Patreon&lt;/a&gt;, following me on &lt;a href="https://twitter.com/sushiday"&gt;Twitter&lt;/a&gt; or checking out my &lt;a href="https://www.twitch.tv/sushicodes"&gt;Twitch&lt;/a&gt; &lt;a href="https://www.twitch.tv/sushiday"&gt;streams&lt;/a&gt;!&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>git</category>
      <category>github</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
