<?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: Itai Katz</title>
    <description>The latest articles on DEV Community by Itai Katz (@itai).</description>
    <link>https://dev.to/itai</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%2F804744%2Ff49244d9-e8c7-49e8-bc30-746711173271.jpg</url>
      <title>DEV Community: Itai Katz</title>
      <link>https://dev.to/itai</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/itai"/>
    <language>en</language>
    <item>
      <title>NYC Meetup: Creating a single source of truth 🧘‍♀️</title>
      <dc:creator>Itai Katz</dc:creator>
      <pubDate>Thu, 08 Sep 2022 19:46:40 +0000</pubDate>
      <link>https://dev.to/itai/nyc-meetup-creating-a-single-source-of-truth-2hc7</link>
      <guid>https://dev.to/itai/nyc-meetup-creating-a-single-source-of-truth-2hc7</guid>
      <description>&lt;h2&gt;
  
  
  We're hosting a meetup for the dev community in NYC
&lt;/h2&gt;

&lt;p&gt;Join us on Tuesday, September 13 at 6pm for a panel discussion followed by a night of networking, pizza + drinks.&lt;/p&gt;

&lt;p&gt;Panel includes Ashley, VP Engineering at Datadog and Etan, Software Engineer at Stripe. &lt;/p&gt;

&lt;p&gt;Free event at the NoMo Soho. &lt;a href="https://swimmnyc.eventbrite.co.uk/"&gt;Grab your ticket here.&lt;/a&gt;  &lt;/p&gt;

</description>
      <category>eventsinyourcity</category>
      <category>nyc</category>
      <category>startup</category>
      <category>meetup</category>
    </item>
    <item>
      <title>What's worse: Stale documentation or no documentation?</title>
      <dc:creator>Itai Katz</dc:creator>
      <pubDate>Sun, 14 Aug 2022 18:12:00 +0000</pubDate>
      <link>https://dev.to/itai/whats-worse-stale-documentation-or-no-documentation-4a1p</link>
      <guid>https://dev.to/itai/whats-worse-stale-documentation-or-no-documentation-4a1p</guid>
      <description>&lt;p&gt;Stale documentation. 1000%.&lt;/p&gt;

&lt;p&gt;Agree? &lt;/p&gt;

</description>
      <category>discuss</category>
      <category>documentatio</category>
      <category>beginners</category>
      <category>programming</category>
    </item>
    <item>
      <title>Incident management &amp; the wet floor sign</title>
      <dc:creator>Itai Katz</dc:creator>
      <pubDate>Tue, 09 Aug 2022 11:21:00 +0000</pubDate>
      <link>https://dev.to/itai/incident-management-the-wet-floor-sign-2lbo</link>
      <guid>https://dev.to/itai/incident-management-the-wet-floor-sign-2lbo</guid>
      <description>&lt;p&gt;In software engineering, incidents are occasions where critical bugs and issues are exposed in the production environment. They can be found by a user, an automated test, or an engineer. But regardless, an incident is considered a critical issue that makes its way into production without the engineering team or any test or automation noticing it beforehand.&lt;/p&gt;

&lt;p&gt;Incidents are always a bit of a sensitive topic - whether it’s because people don’t want to admit there are issues with their code, or because they tend to expose flaws and issues in our processes that we usually don’t like to discuss.&lt;/p&gt;

&lt;p&gt;And this is, even more the case with repeat incidents, as these would have potentially been avoidable altogether had we simply known about it. In other words, we wouldn’t have slipped on the wet floor if someone had put a warning sign up for us.&lt;/p&gt;

&lt;p&gt;When talking about incidents, the legal concept of “Errors and Omissions Excepted” comes to mind. And as engineers, we know that mistakes happen, and they can happen again; this is quite common in the software engineering industry. We understand that people are fallible and make mistakes, and of course we should expect that. And we also assume that they have good intentions; we hope and expect that mistakes will be corrected.&lt;/p&gt;

&lt;p&gt;Think about it: how many times have you refactored a code to avoid a bug, only to have another engineer make a similar mistake sometime later on? Or how many times have you created a hot-fix to address a certain issue, promising you’ll refactor and turn a patch into a permanent solution?&lt;/p&gt;

&lt;p&gt;That is why we should fix these issues, add tests and processes to ensure they won’t happen again, and also document what happened and share the knowledge.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why should developers document incidents?
&lt;/h2&gt;

&lt;p&gt;The legal concept of “Errors and Omissions Excepted” is essentially a disclaimer for situations where information is rapidly changing. Therefore it can be hard to obtain and thoroughly review an accurate snapshot of it. And code is precisely that - a rapidly changing, complex to review set of information, whether it’s the code itself or its environment.&lt;/p&gt;

&lt;p&gt;One approach is to write tests to make sure that an incident never happens again. But while tests are important and helpful, they usually look at an incident through the pinhole view of a bug in a certain line of code - which means a test will not contribute any information about how an incident happened, what needs to be done outside of the code to avoid a similar incident, and what processes and changes are needed to prevent it from happening again.&lt;/p&gt;

&lt;p&gt;And that is why even though tests are helpful, we also need documentation.&lt;/p&gt;

&lt;p&gt;But documentation is not free from potential issues. Because even if documentation is created about a particular issue (and that is a big if), that documentation is usually outdated, detached from the code, or hard to locate or even know about in the first place.&lt;/p&gt;

&lt;p&gt;Here at Swimm, we’ve encountered similar issues and have created a way using some of our Swimm toolsets to try and solve all of these issues. We simply add a “Wet Floor Sign'' to code paths that might be problematic to change.&lt;/p&gt;

&lt;h2&gt;
  
  
  Best practices for incident response documentation
&lt;/h2&gt;

&lt;p&gt;There are many ways to avoid repeating incidents, and as developers, we are highly motivated to improve our best practices for incident management.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Encourage documentation&lt;/strong&gt;&lt;br&gt;
Step 1 is to make sure to create documentation once a certain issue is discovered and fixed.&lt;/p&gt;

&lt;p&gt;I know - encouraging engineers to create documentation is hard to do, but Swimm makes it a lot easier with the option of adding a template for Incident Reports with &lt;a href="https://swimm.io/blog/how-to-use-swimm-templates/?utm_source=dev-to&amp;amp;utm_medium=publisher&amp;amp;utm_campaign=devtoaug9&amp;amp;utm_term=2022-08-09"&gt;Swimm’s Templates&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--RCKHDTNZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/63ujy2ietsgt82kvj635.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RCKHDTNZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/63ujy2ietsgt82kvj635.png" alt="templates" width="447" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And we have also added documentation to our &lt;a href="https://swimm.io/blog/how-to-use-swimm-templates/?utm_source=dev-to&amp;amp;utm_medium=publisher&amp;amp;utm_campaign=devtoaug9&amp;amp;utm_term=2022-08-09"&gt;Definition of Done&lt;/a&gt; for our hot-fix release. For example, in version 0.7.0, we had an issue where our release notes assets were not added to the correct path, and we created documentation to summarize what happened and how we fixed it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5OLpg2aF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3xgqap6z7mmg8h9otque.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5OLpg2aF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3xgqap6z7mmg8h9otque.png" alt="hot fix" width="880" height="689"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Attach documentation to code&lt;/strong&gt;&lt;br&gt;
As part of our Definition of Done for hot-fix releases, we also recommend adding a snippet from the code that fixes the issue to the documentation. At Swimm, it’s not a requirement, but a strong recommendation.&lt;/p&gt;

&lt;p&gt;As you can see below, we did exactly that by adding our Release Notes to the document describing the hot-fix. This is the head’s up for us, so we remember our fix and don’t slip next time.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7CNHdaAc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/41cowit960kyb6nsolk0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7CNHdaAc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/41cowit960kyb6nsolk0.png" alt="snippets" width="880" height="312"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Maintaining documentation&lt;/strong&gt;&lt;br&gt;
By adding a code snippet to an Incident Report document, you can keep track of it if someone changes the code lines that fixed a specific issue. Specifically, Swimm’s GitHub App will automatically flag the document as Auto-synced (when there’s an insignificant change) or outdated when it requires reselecting a snippet.&lt;/p&gt;

&lt;p&gt;In our case, if someone significantly changed a code path related to the incident, they would be asked to read the doc and edit it accordingly, bringing more attention to the sensitivity of the issue. Also, if someone refactors the structure of our release notes, they should also update the documentation containing our warning and move it to the new location.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--M3UZV1wF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fqe144dv0ot0lkjwbc9k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--M3UZV1wF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fqe144dv0ot0lkjwbc9k.png" alt="out of sync docs" width="880" height="558"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And with more minor changes, Swimm can automatically synchronize your document and commit it directly to your Pull Request.&lt;/p&gt;

&lt;p&gt;Locate your documentation easily, right when you need it&lt;br&gt;
By requesting a snippet to be added to an Incident Report document, Swimm makes it discoverable using our IDE plugin while writing code. Therefore everyone who adds a new release note sees the hot-fix documentation tagged to this object.&lt;/p&gt;

&lt;p&gt;Furthermore, since Swimm is storing your documentation as markdown files together with your code, you can globally search for phrases such as “hotfix” or “incident,” and you’ll be able to find and read the relevant documentation without leaving the IDE. So every time someone adds a new item to our releaseNotes array, they will see there is a related doc with “Hotfix” in its title.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aH1auavd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qmmkv5tmwdxma1wz3xfu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aH1auavd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qmmkv5tmwdxma1wz3xfu.png" alt="screenshot of ide" width="880" height="194"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--K4d1-PV_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rjtkzdadnkt1ytr511ui.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--K4d1-PV_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rjtkzdadnkt1ytr511ui.png" alt="screenshot of ide" width="880" height="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We also have an Incident Reports Playlist that gathers all of our reports and can help others catch up when onboarding and encountering a familiar issue. This is an important way for managers to keep tabs on reading and understanding incidents and fixes on their teams.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--sWhJ9y0D--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cyqe1lezwu8ywk93fu58.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sWhJ9y0D--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cyqe1lezwu8ywk93fu58.png" alt="incident playlist" width="880" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Also, by having our New Document Notification emails sent to Slack, you can get more people to look at new documentation that’s been added.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--18zLy-hy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/btszd04cfkk6n67wder2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--18zLy-hy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/btszd04cfkk6n67wder2.png" alt="screenshot: doc recommendation" width="880" height="848"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Bottom Line
&lt;/h2&gt;

&lt;p&gt;While some incidents are unavoidable, with Swimm, you will be less likely to have the same incidents repeating themselves later on down the road and more likely to fix issues or adjust areas that have been lingering for a while&lt;/p&gt;

&lt;p&gt;Swimm’s platform utilizes numerous tools such as our Web App, GitHub App, and IDE extensions that make it easier to work on code-coupled documentation, maintain it, and find it when you most need it.&lt;/p&gt;

&lt;p&gt;If you’re interested in getting that assurance that your wet floor sign will be handled with Swimm’s platform, learn more about Swimm and &lt;a href="https://swimm.io/sign-beta/?utm_source=dev-to&amp;amp;utm_medium=publisher&amp;amp;utm_campaign=devtoaug9&amp;amp;utm_term=2022-08-09"&gt;join our open beta today&lt;/a&gt;. Slips and falls that are avoidable save countless hours of time and aggravation. And you’ll be able to give away your wet floor signs.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>You're Continuously Integrating &amp; Continuously Deploying. The time has come to Continuously Document.</title>
      <dc:creator>Itai Katz</dc:creator>
      <pubDate>Mon, 08 Aug 2022 17:09:11 +0000</pubDate>
      <link>https://dev.to/itai/youre-continuously-integrating-continuously-deploying-the-time-has-come-to-continuously-document-jeg</link>
      <guid>https://dev.to/itai/youre-continuously-integrating-continuously-deploying-the-time-has-come-to-continuously-document-jeg</guid>
      <description>&lt;p&gt;I'm Principal Software Engineer at Swimm. A startup building a documentation tool for developers based on the paradigms of Continuous Documentation. &lt;/p&gt;

&lt;h2&gt;
  
  
  What is continuous documentation
&lt;/h2&gt;

&lt;p&gt;"Continuous documentation is the process of creating and updating documentation incrementally and as part of the development workflow, ensuring it is in sync with the codebase."&lt;/p&gt;

&lt;p&gt;The author - who happens to be a good friend of mine - argue for &lt;a href="https://swimm.io/blog/what-is-continuous-documentation-manifesto-part-1/?utm_source=facebook&amp;amp;utm_medium=social&amp;amp;utm_campaign=devto-post-aug8"&gt;3 main principles&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Continuous Documentation means that the documentation is: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Code-coupled&lt;/li&gt;
&lt;li&gt;Always up-to-date&lt;/li&gt;
&lt;li&gt;Created when best&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Sounds good in theory, right?&lt;/p&gt;

&lt;p&gt;But how does it work in practice? &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One way is through Git Checks&lt;/strong&gt;&lt;br&gt;
Swimm automatically checks any documentation pushed to git to make sure it’s up to date. If the code mentioned in your documentation changed, Swimm alerts you and lets you address the issue quickly and easily. This way both your code and your documentation are always accurate and up to date.&lt;/p&gt;

&lt;p&gt;I invite you to check out Swimm and &lt;a href="https://swimm.io/sign-beta/?utm_source=facebook&amp;amp;utm_medium=social&amp;amp;utm_campaign=signup-aug8"&gt;join our free open beta&lt;/a&gt; and I'm happy to chat with anyone from the dev.to community to show them the various use cases for Swimm - for both teams and individuals. &lt;/p&gt;

</description>
      <category>codereview</category>
      <category>beginners</category>
      <category>programming</category>
      <category>tooling</category>
    </item>
    <item>
      <title>Should documentation be in included in the definition of done?</title>
      <dc:creator>Itai Katz</dc:creator>
      <pubDate>Sun, 17 Apr 2022 14:36:14 +0000</pubDate>
      <link>https://dev.to/itai/should-documentation-be-in-included-in-the-definition-of-done-3hea</link>
      <guid>https://dev.to/itai/should-documentation-be-in-included-in-the-definition-of-done-3hea</guid>
      <description>&lt;p&gt;The Definition of Done (DoD) is a shared understanding of what work must be completed for a work unit (think: user story, sprint, feature) to be released. &lt;/p&gt;

&lt;h2&gt;
  
  
  Why does the Definition of Done matter?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://swimm.io/blog/documentation-dev-teams-and-the-definition-of-done/"&gt;There are 3 main reasons IMO&lt;br&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;It provides a baseline for sprint planning. If you know ahead of time what is expected in terms of testing, documenting, and deploying then you can more accurately size backlog items and thus, plan accordingly. &lt;/li&gt;
&lt;li&gt;Avoiding repetitive conversation and redefinition. A clear DoD provides a framework for defining the tasks required for each work unit. Therefore, you can focus on execution rather than be stuck in a constant loop of defining. &lt;/li&gt;
&lt;li&gt;Reducing the need for rework. A clear DoD limits the risk of misunderstanding and conflict among the dev team and product owners. Once a backlog item is accepted as “done”, the chance that it will need to be reworked is reduced, and required (non-critical) updates can be moved into the backlog.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The DoD doesn't happen in a vacuum
&lt;/h2&gt;

&lt;p&gt;It can't focus on just building usable software. It must be aligned with the overall organization’s needs, goals, and core values. And that's why a DoD should be a collaborative process among all those involved. &lt;/p&gt;

&lt;h2&gt;
  
  
  Should the Definition of Done include developer documentation?
&lt;/h2&gt;

&lt;p&gt;I believe this question is key. And I say yes, the DoD &lt;strong&gt;should&lt;/strong&gt; include documentation. &lt;/p&gt;

&lt;p&gt;I think it's useful to go back in time here and remember the conversations we used to have about e2d testing and whether it should be included in the DOD. And guess what. The exact same concerns were raised then. &lt;/p&gt;

&lt;p&gt;It hasn’t taken long, though, for us to recognize that writing tests sooner rather than later has provided great value and allowed us to make significant quality advances. And as a result, end-to-end testing has become part of the DoD for a lot of developers I've spoken with.&lt;/p&gt;

&lt;p&gt;So, what do you think? Should it become the new standard? &lt;/p&gt;

</description>
      <category>productivity</category>
      <category>documentation</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>Wtf is Walkthrough Documentation?🤔</title>
      <dc:creator>Itai Katz</dc:creator>
      <pubDate>Tue, 12 Apr 2022 09:31:13 +0000</pubDate>
      <link>https://dev.to/itai/wtf-is-walkthrough-documentation-200j</link>
      <guid>https://dev.to/itai/wtf-is-walkthrough-documentation-200j</guid>
      <description>&lt;p&gt;I like to call Walkthrough Documentation the missing link between low-level &amp;amp; high-level documentation. And it's something that is often over looked. &lt;/p&gt;

&lt;p&gt;But, in my opinion Walkthrough Documentation is where the value in documenting lies. &lt;/p&gt;

&lt;h2&gt;
  
  
  So what is Walkthrough Documentation?
&lt;/h2&gt;

&lt;p&gt;This form of documentation takes readers on a guided tour of the code base. It uses code snippets to explain points of interest on the map. &lt;/p&gt;

&lt;p&gt;As it moves from landmark to landmark, it can point out recurring patterns. It can describe interactions between different blocks of code that may reside quite far from each other or even multiple repositories&lt;/p&gt;

&lt;h2&gt;
  
  
  Recurring patterns in code
&lt;/h2&gt;

&lt;p&gt;Repos contains patterns. For example, deriving from a base class, calling a specific API to read from a database, creating a new config value, adding a new CLI command, and the list goes on. &lt;/p&gt;

&lt;p&gt;When a new dev joins your team, they will most probably perform one of the above mentioned tasks &amp;amp; will need to understand how they're done in your codebase. &lt;/p&gt;

&lt;p&gt;This could be easy if the patterns are simple. But, more often than not patterns aren't so simple and span many different, often far away files in your codebase and can be tricky to understand on your own.&lt;/p&gt;

&lt;p&gt;And thus, the need for Walkthrough Documentation comes into play. &lt;/p&gt;

&lt;h2&gt;
  
  
  Here's an example
&lt;/h2&gt;

&lt;p&gt;Adding a new CLI command, specifically with git CLI. Let’s say that you want to contribute to the git project by adding the command &lt;code&gt;git mycmd&lt;/code&gt; and you want to understand how such a pattern is achieved in git's source code.&lt;/p&gt;

&lt;p&gt;Take a look at the &lt;code&gt;git clone&lt;/code&gt;, a pre-existing example of said pattern. This command (along with every other command), comes with a corresponding file in the &lt;code&gt;builtin/&lt;/code&gt; directory (in our case &lt;code&gt;builtin/clone.c&lt;/code&gt;) and contains the function that implements the command:&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frhzehpj1agzaj688cblk.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frhzehpj1agzaj688cblk.png" alt="code snippet"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Declaring the function isn't enough: we also need to declare it in &lt;code&gt;builtin.h&lt;/code&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcf2c9ol6x4ru1zwkit2q.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcf2c9ol6x4ru1zwkit2q.png" alt="code snippet"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next up: "register" the command so that git knows where to find it. The way to do this is to add it to the &lt;code&gt;commands&lt;/code&gt; list of structs detailing the commands in &lt;code&gt;git.c&lt;/code&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpbamnwea9375j1apnq6q.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpbamnwea9375j1apnq6q.png" alt="code snippet"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And last but not least, add the command's file to our &lt;code&gt;Makefile&lt;/code&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp9pzkqfbtf7hp2vuy4w2.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp9pzkqfbtf7hp2vuy4w2.png" alt="code snippet"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This explanation is tightly code-coupled and goes over specific implementation details including how to name functions, where to put files (the &lt;code&gt;builtin/&lt;/code&gt; dir), function signatures, how to name files (&lt;code&gt;clone.c&lt;/code&gt;, &lt;code&gt;builtin.h&lt;/code&gt;), variable names (&lt;code&gt;BUILTIN_OBJS&lt;/code&gt;), etc.&lt;/p&gt;

&lt;p&gt;The explanation walks the user through different areas of the code that are all related to the single pattern of adding a command to the CLI. &lt;strong&gt;This kind of highly focused tour through the code can really help the user grasp the pattern and understand it quickly.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhdvct65y3x4cjrt8cvkg.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhdvct65y3x4cjrt8cvkg.png" alt="Swimm screenshot"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  But there are challenges.
&lt;/h2&gt;

&lt;p&gt;Yes it takes time. Yes value is lost if it's not properly maintained. My colleague delves into the challenges &amp;amp; how you can overcome them in &lt;a href="https://swimm.io/blog/walkthrough-documentation-where-swimms-main-value-lies/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=itai_walkthroughdocumentation_april" rel="noopener noreferrer"&gt;this article&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;So, what are your thoughts on walkthrough documentation? &lt;/p&gt;

</description>
      <category>programming</category>
      <category>tutorial</category>
      <category>productivity</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Gitsasters, or going back in time 🕰️</title>
      <dc:creator>Itai Katz</dc:creator>
      <pubDate>Wed, 23 Feb 2022 13:02:29 +0000</pubDate>
      <link>https://dev.to/itai/overcoming-git-disasters-re-writing-history-23be</link>
      <guid>https://dev.to/itai/overcoming-git-disasters-re-writing-history-23be</guid>
      <description>&lt;p&gt;My colleague/friend wrote an insightful piece on overcoming git disasters, or as we refer to them, gitsasters. I thought to give a high-level summary and &lt;a href="https://swimm.io/blog/rewriting-history-and-overcoming-git-disasters-gitsasters-part-1-git-reset/"&gt;invite you to check out real-life instances where the git reset tool comes in handy&lt;/a&gt;. &lt;/p&gt;

&lt;h2&gt;
  
  
  What is a gitsaster?
&lt;/h2&gt;

&lt;p&gt;Understanding the concept of git can actually help you know when things go wrong. For example, when you do something you didn't mean to do and just want to go back in time- this is precisely what a gitsaster is. &lt;/p&gt;

&lt;p&gt;Things go wrong in git all the time. There are people like myself who understand what's happening underneath the hood and thus remain calm. &lt;/p&gt;

&lt;p&gt;But, what about those who don't have as deep an understanding? They tend to look at git like a magical black box. &lt;/p&gt;

&lt;h2&gt;
  
  
  Recording changes in git
&lt;/h2&gt;

&lt;p&gt;I don't think a few sentences can give this topic justice. &lt;a href="https://medium.com/swimm/a-visualized-intro-to-git-internals-objects-and-branches-68df85864037"&gt;This article&lt;/a&gt; provides a thorough overview on recording changes in git. &lt;/p&gt;

&lt;p&gt;But to sum it up: git doesn't commit changes directly from the working tree into the repository. Changes first get registers in the index/"staging area". You can think of the index as a way of “confirming” your changes before doing a commit. &lt;/p&gt;

&lt;h2&gt;
  
  
  The command git reset, together with its three modes:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;--soft, that moves whatever HEAD is pointing to&lt;/li&gt;
&lt;li&gt;--mixed, that goes on to update the index to what HEAD is pointing to after the soft step&lt;/li&gt;
&lt;li&gt;--hard, which updates the working dir to match the state of the index&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>git</category>
      <category>tutorial</category>
      <category>beginners</category>
      <category>programming</category>
    </item>
    <item>
      <title>The advantages of IDE integrated documentation</title>
      <dc:creator>Itai Katz</dc:creator>
      <pubDate>Mon, 21 Feb 2022 14:07:58 +0000</pubDate>
      <link>https://dev.to/itai/the-advantages-of-ide-integrated-documentation-35eo</link>
      <guid>https://dev.to/itai/the-advantages-of-ide-integrated-documentation-35eo</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fJiud52Y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mel0o16d2rxoiy2okgsa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fJiud52Y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mel0o16d2rxoiy2okgsa.png" alt="what if I told you context switching was killing your productivity" width="880" height="677"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://static.wixstatic.com/media/cfb56d_d2a07791051e4c0c9458ec694bc293e7~mv2.jpg/v1/fit/w_1000%2Ch_831%2Cal_c%2Cq_80/file.jpg"&gt;Image source&lt;br&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Integrating documentation inside the IDE is a convenient method for documentation management. I don't know about you, but I avoid context switching at all costs. I just know how fast I can break my focus. &lt;/p&gt;

&lt;p&gt;The easiest way for me to document my code is right in my IDE. Here are three advantage: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;It reduces context switching. When I'm looking at code and I want to understand something about it, the documentation is right there. I don't need to leave my IDE and search for info. &lt;/li&gt;
&lt;li&gt;I see which parts of the code have been already documented while I'm reading and I make a note to come back later and fill in the blanks. &lt;/li&gt;
&lt;li&gt;Reviewing annotations when implementing new code or trying to understand a part of the code- it's more straightforward, easier to review, and just intuitive.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Have you tried &lt;a href="https://swimm.io/blog/ide-integrated-documentation-using-swimm/"&gt;IDE-integrated documentation&lt;/a&gt;? &lt;/p&gt;

</description>
      <category>productivity</category>
      <category>webdev</category>
      <category>documentation</category>
    </item>
    <item>
      <title>VS Code vs. WebStorm: A Comparison</title>
      <dc:creator>Itai Katz</dc:creator>
      <pubDate>Mon, 07 Feb 2022 14:03:09 +0000</pubDate>
      <link>https://dev.to/itai/vs-code-vs-webstorm-a-comparison-54bk</link>
      <guid>https://dev.to/itai/vs-code-vs-webstorm-a-comparison-54bk</guid>
      <description>&lt;p&gt;Everyone has a clear IDE preference and lately I've been using both VS Code and WebStorm. Here's why: &lt;/p&gt;

&lt;h2&gt;
  
  
  VS Code
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Free &amp;amp; open-source&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It's customizable, multi-language, fast &amp;amp; lightweight&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;VS Code combines modern editing &amp;amp; debugging with code assistance and navigation &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Webstorm
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Highly comprehensive and intelligent&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Makes running, debugging, and unit testing of Node.js apps easy&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Great code refactoring &amp;amp; auto importing &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Considerations
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;WebStorm gives you the majority of the features you'll need whereas with VS Code, you'll end up installing some extensions manually&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;WebStorm has amazing Git merge tools that provide for great visualizations of the Git diff changes, making merging complex changes a whole lot easier&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;WebStorm tracks all file changes out of the box &amp;amp; enables the inspection of file histories, directories &amp;amp; rollbacks&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;VS Code is lightweight, making it ideal for remote development &amp;amp; fast prototyping &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Tl;dr &lt;a href="https://swimm.io/blog/vscode-vs-webstorm-a-detailed-comparison/"&gt;VS Code is open-source, fast &amp;amp; lightweight and WebStorm maximizes code inspection and refactoring. &lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What's your IDE of choice? &lt;/p&gt;

</description>
      <category>vscode</category>
      <category>ide</category>
      <category>beginners</category>
      <category>discuss</category>
    </item>
  </channel>
</rss>
