<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Terry Nguyen</title>
    <description>The latest articles on DEV Community by Terry Nguyen (@terrehbyte).</description>
    <link>https://dev.to/terrehbyte</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%2F14736%2Fb520ce06-d350-42e0-9c4c-cb169d8d25af.png</url>
      <title>DEV Community: Terry Nguyen</title>
      <link>https://dev.to/terrehbyte</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/terrehbyte"/>
    <language>en</language>
    <item>
      <title>AIE's Minor Production Process</title>
      <dc:creator>Terry Nguyen</dc:creator>
      <pubDate>Wed, 18 Sep 2019 00:00:00 +0000</pubDate>
      <link>https://dev.to/terrehbyte/aie-s-minor-production-process-3c38</link>
      <guid>https://dev.to/terrehbyte/aie-s-minor-production-process-3c38</guid>
      <description>&lt;p&gt;&lt;em&gt;This was edited by &lt;a href="https://twitter.com/lizz0id"&gt;Lizz Rizzo (@lizz0id)&lt;/a&gt; and published for the &lt;a href="https://aie.edu/aie-minor-production-process/"&gt;Academy of Interactive Entertainment&lt;/a&gt; on its website&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;One of the most valuable parts of the course for our Game Development students is the opportunity to collaborate with their peers from other disciplines for their final project at the end of each school year.&lt;/p&gt;

&lt;p&gt;Internally, those projects are referred to as "&lt;a href="https://aie.edu/what-is-minor-production/"&gt;Minor Production&lt;/a&gt;" and "Major Production" respectively for our first year and second year game students. Every year, students fall prey to the same problems: communication issues, gaps in technical skill, unclear direction from faculty, or just interpersonal conflicts in general. This year's changes continue the trend of improving the process, which in turn creates a stronger student experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  Adopting Scrum for the Students
&lt;/h2&gt;

&lt;p&gt;Our efforts to introduce Scrum to students to posture healthy team habits have been successful in past Minor Production projects, which simulates a studio environment. Teams naturally find the transition to be rough at first, but many later report feeling comfortable with the process by the second or third sprint.&lt;/p&gt;

&lt;p&gt;We treat attendance as if the students were working full-time in a studio environment. Honoring the daily stand-up was difficult for students that had trouble getting to class on-time. Efforts from students to flex the schedule or conduct multiple scrums to mitigate issues were effectively trading attendance issues for communication or productivity issues. Any further issues are escalated to be monitored under administration.&lt;/p&gt;

&lt;p&gt;Faculty designates specific blocks of time to allow for Sprint Planning and Sprint Retrospective sessions. While students are always eager to criticize their work, teams were much more adept at identifying and resolving issues this time around. Rather than focusing on the problems with the product alone, teams were able to also address issues with their process. Pipeline problems like scale issues were non-existent in later cycles.&lt;/p&gt;

&lt;p&gt;In addition to the above rituals, we ask each team to present recent developments to the class as a whole. Public presentations not only reinforced the idea that their work should continue to create value for the player, but also provided faculty with an opportunity to review each team's work in a single sitting. If there were any issues with a team's priorities or progress, it would become immediately visible to all faculty members. This improved our response time and efficacy in resolving issues on teams.&lt;/p&gt;

&lt;p&gt;To facilitate project management, we use Hack n' Plan, a user-friendly service that models some common Scrum concepts like backlogs and user stories. Its categorized Kanban boards allowed students to track task progress by discipline to minimize clutter.&lt;/p&gt;

&lt;h2&gt;
  
  
  Switching to Perforce
&lt;/h2&gt;

&lt;p&gt;A major software change for this year was the transition away from Git as our preferred version control solution to Perforce in response to industry feedback. From the student perspective, Perforce allowed them the ability to lock down files to prevent others from making changes while they're working on it.&lt;/p&gt;

&lt;p&gt;Merging two sets of changes to code is doable, but reconcile concurrent changes to art assets often resulted in lost work. Removing the need to merge allowed us to eliminate a way for students to lose their work. Unfortunately, students still lost work from improper use of Perforce, as was the case with Git.&lt;/p&gt;

&lt;p&gt;A side-benefit of adopting Perforce was the reduced difficulty in training artists to work in-engine to improve their iteration time. Programmers were able to focus on bug-fixes and feature development rather than integrating art assets (at least, to a lesser degree). This also meant that artists could get more immediate feedback on their work rather than being blocked by busy programmers. In both cases, this led to better iteration times which allowed for more refined work from all departments.&lt;/p&gt;

&lt;h2&gt;
  
  
  Publishing for itch.io
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9zpKF8vd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/05xl0rtfzb4i3arvbqmb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9zpKF8vd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/05xl0rtfzb4i3arvbqmb.png" alt="A screenshot of Shakti Unlimited's itch.io page, featuring controls and copytext" width="800" height="406"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Minor Production had always been conducted strictly internally, which left students unprepared for when Major Production rolls around due to its inclusion of a public showcase. To address this, each team had to publish on itch.io in order to better inform the process of creating a public brand for the game.&lt;/p&gt;

&lt;p&gt;This was a double-win for us: students were able to publicly showcase their work online while also giving them an task with a very measurable outcome. Work on the page itself naturally led to questions about branding and messaging: how would a team describe its product to the public? It also promoted discussions around creating instructions for on-boarding players into the game, which often gets forgotten in the midst of the development.&lt;/p&gt;

&lt;p&gt;All of the Minor Production projects are publicly viewable on our &lt;a href="https://aieseattle.itch.io/"&gt;itch.io profile page&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Introducting the Game Design and Production Department
&lt;/h2&gt;

&lt;p&gt;Every AIE campus struggled with the integration of the Game Design and Production (GD&amp;amp;P) department, which is a new venture comparted to its Game Programming and Game Art counterparts. In our case, GD&amp;amp;P students found difficulty with finding parts of the production process to take ownership of.&lt;/p&gt;

&lt;p&gt;Documentation of design work on the game clearly fell on GD&amp;amp;P in the form of Word documents and project management tools. Some found themselves largely monitoring Hack n' Plan while others felt trapped under paperwork for weeks on end.&lt;/p&gt;

&lt;p&gt;The confusion only worsened with expectations around GD&amp;amp;P's direct contributions to the game itself. How programmers and artists should expect to collaborate with their designers was unclear, which led to numerous cases of miscommunication. Teams were left with levels they weren't sure how to build or game loops that needed more playtesting and refinement.&lt;/p&gt;

&lt;p&gt;Conflicting messaging also occurred internally around the responsibilities of the GD&amp;amp;P department leading to confusion even within faculty members, which then cascaded down to the students. We hope to better form next year's curriculum around a more well-defined set of expectations will benefit everyone.&lt;/p&gt;

&lt;h2&gt;
  
  
  Plans for Next Year
&lt;/h2&gt;

&lt;p&gt;As we plan for next year's production projects, the ultimate goal still rings clear: we must be training students on the skills that will help them most with navigating the challenges they'll face in the workplace.&lt;/p&gt;

&lt;p&gt;Making them effective at their craft is not enough by itself when students expect to work in an industry that needs collaboration from so many different fields and specialties. The production projects are a primary way for us to train and evaluate students on their job readiness.&lt;/p&gt;

&lt;p&gt;Areas for major improvement for us include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Better modeling the different roles that exist on game development teams&lt;/li&gt;
&lt;li&gt;Training students on the framework of Scrum and AIE Seattle's implementation&lt;/li&gt;
&lt;li&gt;Addressing common pipeline issues ahead of the production projects with prior lessons&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We poured a lot of effort into formalizing many of the "Scrum" or "pipeline" or any myriad of broad expectations that we had placed on the students in prior years. Now with the groundwork laid out, we can focus on how we can prepare and communicate with students during for future production processes. &lt;/p&gt;

</description>
      <category>production</category>
      <category>gamedev</category>
      <category>scrum</category>
      <category>academia</category>
    </item>
    <item>
      <title>Resolving File Paths to Tools on Different Workstations</title>
      <dc:creator>Terry Nguyen</dc:creator>
      <pubDate>Sun, 19 Aug 2018 21:37:00 +0000</pubDate>
      <link>https://dev.to/terrehbyte/resolving-file-paths-to-tools-on-different-workstations-4g55</link>
      <guid>https://dev.to/terrehbyte/resolving-file-paths-to-tools-on-different-workstations-4g55</guid>
      <description>&lt;p&gt;&lt;em&gt;Cross-posted from my &lt;a href="https://terrehbyte.com/resolving-differences-in-tool-paths/"&gt;blog&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Synchronizing settings between my desktop, laptop, and studio workspace has been amazing for letting me constantly iterate on my development environment setup. I can make one change anywhere and use it to evolve my tools no matter where I'm working.&lt;/p&gt;

&lt;p&gt;This is made possible by transferring information via GitHub Gists automatically with &lt;a href="https://twitter.com/itsShanKhan"&gt;Shan Khan&lt;/a&gt;'s &lt;a href="https://marketplace.visualstudio.com/items?itemName=Shan.code-settings-sync"&gt;Settings Sync extension&lt;/a&gt;. Unfortunately, support for the use of environment variables in VS Code's settings is but only a &lt;a href="https://github.com/Microsoft/vscode/issues/2809"&gt;requested feature&lt;/a&gt; for now. This means that while my settings will synchronize, I'll have to adjust the paths every time I download it on any workstation besides the one that uploaded it.&lt;/p&gt;

&lt;p&gt;Recently, I found a way to get around this issue: &lt;strong&gt;symbolic links&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is a Symbolic Link?
&lt;/h2&gt;

&lt;p&gt;As a concept, a symbolic link creates a soft link between point A and point B in your file system. Point A represents the "link" while point B provides the "destination". Anything that tries to access point A will work from point B for any subsequent references for directories or files.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--EL4G4INi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/i1urknn81jn9875bps08.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--EL4G4INi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/i1urknn81jn9875bps08.gif" alt="Creating a symlink from 'johnny' to 'terry'" width="800" height="378"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Creating one will depend on your operating system and available tools, but the general idea is that you'll use a command-line application. On &lt;a href="https://superuser.com/questions/1020821/how-to-create-a-symbolic-link-on-windows-10"&gt;Windows 10&lt;/a&gt;, this is easily accomplished using &lt;code&gt;mklink&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Be sure to be conscious of differences in jargon and terminology, such as the difference between an &lt;a href="https://stackoverflow.com/questions/9042542/what-is-the-difference-between-ntfs-junction-points-and-symbolic-links"&gt;NTFS junction and symbolic link&lt;/a&gt;!&lt;/p&gt;

&lt;h2&gt;
  
  
  Using the Symbolic Link
&lt;/h2&gt;

&lt;p&gt;I did not have the foresight to use the same username on both my desktop and laptop, leading to differences in paths that lead to my user folder. (Windows 10 doesn't help with this at all since it relies on the personal information you provide during first-time startup to create the first user account.) To resolve this, I ended up creating a symbolic link from &lt;code&gt;C:\Users\terryn\&lt;/code&gt; to &lt;code&gt;C:\Users\terry\&lt;/code&gt; which solved all of my problems.&lt;/p&gt;

</description>
      <category>vscode</category>
      <category>tools</category>
    </item>
    <item>
      <title>Visual Studio Code is My Favorite Text Editor</title>
      <dc:creator>Terry Nguyen</dc:creator>
      <pubDate>Sun, 04 Feb 2018 21:37:00 +0000</pubDate>
      <link>https://dev.to/terrehbyte/visual-studio-code-is-my-favorite-text-editor-5e0d</link>
      <guid>https://dev.to/terrehbyte/visual-studio-code-is-my-favorite-text-editor-5e0d</guid>
      <description>&lt;p&gt;&lt;em&gt;Cross-posted from my &lt;a href="https://terrehbyte.com/visual-studio-code-is-my-favorite-text-editor/" rel="noopener noreferrer"&gt;blog&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;For the longest time, I had always held that Visual Studio was the number one tool that I would recommend for development for the vast majority of use-cases. It was the first tool I used to program in C++ and C# and was also the very same tool that I missed when I started working with Python again.&lt;/p&gt;

&lt;p&gt;Lately, I've found myself asking whether I could be solving the same problems with VS Code. That's been ringing pretty true as of late. Since I was on the fence for a while, I thought I'd take some time to just list out some of the reasons why I'm growing more and more fond of VS Code as my daily driver.&lt;/p&gt;

&lt;h3&gt;
  
  
  Workspace-specific settings
&lt;/h3&gt;

&lt;p&gt;My co-workers and I spent a good deal of time arguing over some relatively harmless but important rules for our coding guidelines (spaces are better).&lt;/p&gt;

&lt;p&gt;After settling on eight-space wide indents, I quickly realized that I was going to run into an issue with Visual Studio: the text editor settings can only be set program-wide. I was going to have to switch back and forth or find a suitable extension to do so if I wanted to adhere to the conventions we had set.&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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fmjxe0iljn7jye9eg1pfo.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fmjxe0iljn7jye9eg1pfo.PNG" alt="workspace-specific"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In VS Code, the concept of a "workspace" allows you to define a set of settings that apply when a folder is opened. Creating an override for a specific workspace was pretty simple; I just had to create a new folder and specify some overrides. It follows the same format that's used when you define them at a user-wide level. This let me retain my settings for my personal projects while seamlessly adhering to our happily agreed-to conventions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Relatively fast startup time
&lt;/h3&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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F776plczjjhl5236v6bvp.gif" 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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F776plczjjhl5236v6bvp.gif" alt="start-up time"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Notepad is a great text-editor for all text things whose lines ending in CRLF, but what do you do for everything else? Editing everything without proper line-breaks sounds like a nightmare. Opening Visual Studio for a single file or &lt;a href="https://blogs.msdn.microsoft.com/vcblog/2016/10/05/bring-your-c-codebase-to-visual-studio-with-open-folder/" rel="noopener noreferrer"&gt;folder&lt;/a&gt; is definitely an option, but you'll be in for a bit of a wait. For me, the answer was VS Code.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Run&lt;/th&gt;
&lt;th&gt;VS 2017&lt;/th&gt;
&lt;th&gt;VS Code&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;3.5508&lt;/td&gt;
&lt;td&gt;1.1607&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;2.9868&lt;/td&gt;
&lt;td&gt;1.1258&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;3.4115&lt;/td&gt;
&lt;td&gt;1.1736&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;2.4786&lt;/td&gt;
&lt;td&gt;1.1928&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;3.3778&lt;/td&gt;
&lt;td&gt;1.0983&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;2.9395&lt;/td&gt;
&lt;td&gt;1.1373&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;3.1672&lt;/td&gt;
&lt;td&gt;1.1528&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;2.8437&lt;/td&gt;
&lt;td&gt;1.3238&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;3.4466&lt;/td&gt;
&lt;td&gt;1.1818&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;2.9016&lt;/td&gt;
&lt;td&gt;1.1408&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Result&lt;/th&gt;
&lt;th&gt;VS 2017&lt;/th&gt;
&lt;th&gt;VS Code&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Avg&lt;/td&gt;
&lt;td&gt;3.1104&lt;/td&gt;
&lt;td&gt;1.1688&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Min&lt;/td&gt;
&lt;td&gt;2.4786&lt;/td&gt;
&lt;td&gt;1.0983&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Max&lt;/td&gt;
&lt;td&gt;3.5508&lt;/td&gt;
&lt;td&gt;1.3238&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;The above times are given in seconds.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I decided to do some unprofessional profiling to see how long it takes to go from launch to the start page in both VS 2017 and VS Code. On average, VS Code is ready to go almost 2 seconds faster than VS 2017 is! That isn't a lot, but it can add up if I'm opening up a lot of files or find myself needing to restart my editor often.&lt;/p&gt;

&lt;p&gt;You can dig into the specifics behind the settings and configurations that I used for profiling in this &lt;a href="https://gist.github.com/terrehbyte/f7a375d0da08b98c3929f6811ce2cc15" rel="noopener noreferrer"&gt;Gist&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cross-platform support
&lt;/h3&gt;

&lt;p&gt;According to the &lt;a href="http://store.steampowered.com/hwsurvey/" rel="noopener noreferrer"&gt;Steam Hardware &amp;amp; Software Survey&lt;/a&gt;, the vast majority of PC gamers are gaming on some variant of Windows. (that's 98.33% at the time of writing) A similar statistic could be found amongst game developers, if only just for the ease of play testing on a configuration not too dissimilar to what most gamers would have.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I'm interested in using something else for the sake of control as well as &lt;a href="https://www.reddit.com/r/unixporn/wiki/themeing/dictionary#wiki_rice" rel="noopener noreferrer"&gt;ricing&lt;/a&gt;, but a number of my students use OS X or Ubuntu on their home machines.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Visual Studio is only officially supported on Windows, but a MonoDevelop-based iteration is &lt;a href="https://www.visualstudio.com/vs/visual-studio-mac/" rel="noopener noreferrer"&gt;available for Mac&lt;/a&gt;. While the two share the same branding, the two are really wholly distinct products which have only recently begun to share some logic after Microsoft's acquisition of its original maintainer, Xamarin.&lt;/p&gt;

&lt;p&gt;Windows, Mac, and Linux are all officially supported by the VS Code team. That makes for at least &lt;em&gt;one more tool&lt;/em&gt; that we can keep using we no longer feel obligated to use Windows as our daily driver! This also means that my Windows-free students have a tool that they can adopt as a part of their toolstack.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Most students aren't comfortable working with the terminal, so there's a lot of "WTF" looks on their face when they omit the &lt;code&gt;-m&lt;/code&gt; switch when committing with Git.&lt;/p&gt;

&lt;p&gt;I suppose that rules out something like Vim as an alternative for them. ;)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;While you'll be hard-pressed to find cross-platform support in older game development tools, it does seem to be a consideration that today's tools are devoting resources towards. I can only imagine that this was, in part, sparked by an increasing need to deploy on a variety of platforms as opposed to any one platform alone.&lt;/p&gt;

&lt;h3&gt;
  
  
  High versatility through extensions and settings
&lt;/h3&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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fptnwtp3tu8218nj6vboq.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fptnwtp3tu8218nj6vboq.PNG" alt="Screenshot of VS Code's extension panel"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Both &lt;a href="https://marketplace.visualstudio.com/vs" rel="noopener noreferrer"&gt;Visual Studio&lt;/a&gt; and &lt;a href="https://marketplace.visualstudio.com/vs" rel="noopener noreferrer"&gt;VS Code&lt;/a&gt; offer a plentiful extension gallery that is easy to browse from your preferred web browser as well as from within the app itself. This adds to the &lt;em&gt;extensibility&lt;/em&gt; (heh) of your editor, allowing you to customize it to your particular preference and usecases.&lt;/p&gt;

&lt;p&gt;VS Code has taken to more of a modular approach, building out support for major languages like &lt;a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools" rel="noopener noreferrer"&gt;C++&lt;/a&gt; and &lt;a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode.csharp" rel="noopener noreferrer"&gt;C#&lt;/a&gt; as individual packages, though TypeScript is included by default. These interface with a standard set of APIs to provide for common code completion and symbol lookup functionality that you would expect from any IDE with first-class support for your language of choice.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wishlist
&lt;/h2&gt;

&lt;h3&gt;
  
  
  A Better Windowing System
&lt;/h3&gt;

&lt;p&gt;I haven't quite found anything with as nice of a windowing system as Visual Studio itself, though both Atom and VS Code are making their way towards it. It's just so simple to be able to tear off any tab and dock it, snap it, or create a new window entirely.&lt;/p&gt;

&lt;p&gt;Right now, you can choose between a one, two, or three editor pane layout that stacks horizontally or vertically. That isn't as flexible, but gets the job done well enough.&lt;/p&gt;

&lt;h3&gt;
  
  
  Path Normalizing for Different File Systems
&lt;/h3&gt;

&lt;p&gt;The &lt;a href="https://github.com/Microsoft/vscode/issues/12448" rel="noopener noreferrer"&gt;lack of path canonicalization&lt;/a&gt; has been giving me a lot of grief when debugging my Unreal Engine 4 projects. Placing and managing breakpoints in my source code is super smooth, but it's what happens when a breakpoint is triggered that's the issue: two editors to the "same file" are opened.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Path Input&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Path Opened by User&lt;/td&gt;
&lt;td&gt;&lt;code&gt;C:\MyProject\Source\MyGameMode.cpp&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Path Provided by Debugger&lt;/td&gt;
&lt;td&gt;&lt;code&gt;C:\myproject\source\mygamemode.cpp&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Both of these will normally resolve to the same path when working in an NTFS file system, but the difference in casing causes VS Code to consider them as two different files, resulting in two different editors being opened, thus cluttering my editor. This is exacerbated when I step through logic spanning multiple source files, all of which will spawn a multitude of editors in the process.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You can store two distinct files in the same path that only differs by case, but you'll need to both read and write to that file using something that doesn't depend on the Win32 API.&lt;/p&gt;

&lt;p&gt;For more information, see this Stack Overflow post: &lt;a href="https://superuser.com/questions/364057/why-is-ntfs-case-sensitive" rel="noopener noreferrer"&gt;"Why is NTFS case sensitive?"&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Closing Thoughts
&lt;/h2&gt;

&lt;p&gt;With that all said, VS Code is definitely not for everyone. I'm a strong believer of finding solutions and tools that best meet &lt;em&gt;your objectives&lt;/em&gt; as opposed to working within the constraints of a single tool where possible. If you have the option of choosing your solutions, then it's important to evaluate whether there's something better out there that you should be moving towards.&lt;/p&gt;

&lt;p&gt;Even the &lt;a href="https://code.visualstudio.covs-communitym/docs/supporting/faq#_what-is-the-difference-between-vs-code-and-" rel="noopener noreferrer"&gt;VS Code FAQ&lt;/a&gt; notes that its goal is only to be a lightweight tool that's a solid alternative when you're just looking to code, build, and debug your project. Leveraging bigger tools like NVIDIA Nsight or built-in profiling and whatnot is still left to the bigger tools like Visual Studio.&lt;/p&gt;

</description>
      <category>vscode</category>
      <category>tools</category>
      <category>cpp</category>
      <category>csharp</category>
    </item>
    <item>
      <title>My Pull Request Etiquette</title>
      <dc:creator>Terry Nguyen</dc:creator>
      <pubDate>Sun, 14 May 2017 02:04:22 +0000</pubDate>
      <link>https://dev.to/terrehbyte/my-pull-request-etiquette</link>
      <guid>https://dev.to/terrehbyte/my-pull-request-etiquette</guid>
      <description>&lt;p&gt;&lt;em&gt;Cross-posted from my &lt;a href="https://terrehbyte.com/my-pull-request-etiquette/"&gt;blog&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I'm pretty keen on the idea that amassing a collection of perspectives and experiences is part of the process of creating a better informed opinion or piece of work. It seems like, with the exception of UI/UX design, that the FOSS community benefits from this pretty well.&lt;/p&gt;

&lt;p&gt;Part of that comes for free with a culture that is more conducive towards problems that are more readily approachable from an objective standpoint, though this can easily go awry without &lt;a href="https://youtu.be/-F-3E8pyjFo"&gt;establishing a proper community culture&lt;/a&gt; in the first place. My first foray into creating something like this was when I decided that I'd take a stab at creating my own &lt;a href="https://github.com/terrehbyte/awesome-ue4"&gt;"awesome list" for UE4&lt;/a&gt; since I hadn't found a decent one out there.&lt;/p&gt;

&lt;p&gt;Getting started was pretty simple since &lt;a class="mentioned-user" href="https://dev.to/sindresorhus"&gt;@sindresorhus&lt;/a&gt; had already spent a fair amount of effort into establishing &lt;a href="https://github.com/sindresorhus/awesome"&gt;guidelines and suggestions for an awesome list&lt;/a&gt;, but I hadn't planned out how I was going to handle contributions.&lt;/p&gt;

&lt;p&gt;The first one rolled in from &lt;a href="https://github.com/trentpolack"&gt;@trentpolack&lt;/a&gt;, who &lt;a href="https://github.com/terrehbyte/awesome-ue4/pull/1"&gt;"added a bunch of lovely things"&lt;/a&gt; to the awesome list ranging from tutorials to plugins. I was really excited at first; someone had not only looked at my list, but was also proposing changes to it! After looking at it though, there were some issues:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;An errant &lt;code&gt;\&lt;/code&gt; character in the body text&lt;/li&gt;
&lt;li&gt;Tutorials where strictly assets/plugins were being listed&lt;/li&gt;
&lt;li&gt;An improperly formatted link to an otherwise stellar resource&lt;/li&gt;
&lt;li&gt;Unalphabetized entries within the same category or sub-header&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;There was nothing particularly egregious about it considering that all of the issues entailed short fixes, but there was one question that remained: Was I supposed to respond and ask them to fix it, or should I just fix it myself?&lt;/p&gt;

&lt;p&gt;On one hand, it'd be a real quick thing to have them do so I could cleanly merge their pull request into the repository with little effort on my behalf. However, it also felt a little cruel to reject them for something relatively insignificant that I could readily fix on my own since I had already identified them. It was also just Markdown, so it was technically still valid, just unappealing to look at.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LscqE-Uy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/0no6vm6cfzur0d3wmkhn.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LscqE-Uy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/0no6vm6cfzur0d3wmkhn.PNG" alt="I wasn't too harsh, was I? :)" width="776" height="371"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;While the puritan in me wanted to ask them to redo it, I ultimately leaned on the side of accepting it and fixing it on my own. Putting the typographical errors aside, I merged and closed the pull request after adding a comment stating some of the changes that I made to the content afterwards.&lt;/p&gt;

&lt;p&gt;Maybe I was making a bigger deal out of it than they were, but I wanted to make sure that they understood the rationale behind my changes and that I appreciated their time. I wouldn't want to make the &lt;a href="http://sealedabstract.com/rants/conduct-unbecoming-of-a-hacker/"&gt;barriers for contributing&lt;/a&gt; too high for something so simple.&lt;/p&gt;

&lt;p&gt;Perhaps that is an unsustainable practice for repositories with much more traffic, but I felt that this was appropriate considering the lack of activity and relative "new-ness" for the project. I'm eagerly making my way towards the day when I finally place the finishing touches on it before submitting it for listing on the &lt;a href="https://github.com/sindresorhus/awesome"&gt;awesome list of awesome lists&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Moving forward, I think I'd like to apply the following thoughts when forming and reviewing future pull requests:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Has the submission showed any indication that the submitter has read the contribution guidelines, if present?&lt;/li&gt;
&lt;li&gt;Is the submitter interested in helping develop a better project?&lt;/li&gt;
&lt;li&gt;Do the changes in the pull request reflect an appropriate amount of work for the given request?&lt;/li&gt;
&lt;li&gt;Does it genuinely meet the standards for community contributions?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;We're all humans that make mistakes! Some of us are also developers, in which case we're likely also busy and may potentially miss a thing or two when we're trying to help someone or something out. Hopefully this leads towards a better experience for any submitters or reviewers in the future!&lt;/p&gt;

&lt;p&gt;EDIT: Fixed some typos and made some clarifications&lt;/p&gt;

</description>
      <category>github</category>
    </item>
  </channel>
</rss>
