<?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: Rabin Otieno</title>
    <description>The latest articles on DEV Community by Rabin Otieno (@otienorabin).</description>
    <link>https://dev.to/otienorabin</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%2F1527164%2F71d8fc86-0a59-4aba-845b-e82c87192ae4.jpeg</url>
      <title>DEV Community: Rabin Otieno</title>
      <link>https://dev.to/otienorabin</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/otienorabin"/>
    <language>en</language>
    <item>
      <title>5 Surprising Developer Facts You Might Not Know</title>
      <dc:creator>Rabin Otieno</dc:creator>
      <pubDate>Sun, 15 Jun 2025 08:47:43 +0000</pubDate>
      <link>https://dev.to/otienorabin/5-surprising-developer-facts-you-might-not-know-23pn</link>
      <guid>https://dev.to/otienorabin/5-surprising-developer-facts-you-might-not-know-23pn</guid>
      <description>&lt;p&gt;When we think about computers and technology in general we often focus on the technical aspects. However, there are a lot of other fascinating facts that are often overlooked or that most people are not aware of. Some of these details might help us get a better understanding of the systems that we use every day. Here are some of the most surprising ones:&lt;/p&gt;

&lt;h2&gt;
  
  
  1. The first antivirus came right after the first virus
&lt;/h2&gt;

&lt;p&gt;In 1971, the “&lt;strong&gt;Creeper virus&lt;/strong&gt;”  was created by Bob Thomas who was a researcher at BBN Technologies. All it did was display the message, “I’M THE CREEPER: CATCH ME IF YOU CAN”. Although considered a virus, it was simply self-replicating and not malicious. Also, the fact that it replicated across networked devices makes it more of a worm. To tackle this, the first antivirus known as “&lt;strong&gt;Reaper&lt;/strong&gt;” was created. Creeper and Reaper ran on ARPANET (a precursor to the modern internet).&lt;/p&gt;

&lt;h2&gt;
  
  
  2. There is a programming language called Brainfuck
&lt;/h2&gt;

&lt;p&gt;This was created in 1993 by Urban Muller as an experiment. The goal was to build the smallest possible compiler. It is simple as it only has 8 characters for commands yet still notoriously difficult to read and write. Here are the characters:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &amp;lt; + - &lt;span class="nb"&gt;.&lt;/span&gt; , &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example: Hello, World!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;++++++++[&amp;gt;++++[&amp;gt;++&amp;gt;+++&amp;gt;+++&amp;gt;+&lt;span class="o"&gt;&amp;lt;&amp;lt;&amp;lt;&lt;/span&gt;&amp;lt;-]&amp;gt;+&amp;gt;+&amp;gt;-&amp;gt;&amp;gt;+[&amp;lt;&lt;span class="o"&gt;]&lt;/span&gt;&amp;lt;-]&amp;gt;&amp;gt;.&amp;gt;---.+++++++..+++.&amp;gt;&amp;gt;.&amp;lt;-.&amp;lt;.+++.------.--------.&amp;gt;&amp;gt;+.&amp;gt;++.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Brainfuck wasn’t meant for practical use but to expound on the computational limits (and probably frustrate programmers).&lt;/p&gt;

&lt;h2&gt;
  
  
  3. You can write a whole backend in Google Sheets!
&lt;/h2&gt;

&lt;p&gt;Although Google sheets itself is not Turing-complete, the Apps Script engine behind it is. &lt;br&gt;
Using the &lt;strong&gt;Google Apps Script&lt;/strong&gt; you can create forms, accept user data, run business logic and even serve JSON. This can be a fun way to quickly prototype an idea or internal tool. However, this isn’t a suitable option for production environment due to limitations in terms of performance, security, and scalability.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Adding logs or print statements can change the behavior of some bugs
&lt;/h2&gt;

&lt;p&gt;This bizarre phenomenon is known as &lt;strong&gt;Heisenbug&lt;/strong&gt;. It is named after Heisenberg’s Uncertainty Principle which implies that observing a system can alter its behavior. For instance, in a race condition between 2 threads, adding print() can slow execution thereby accidentally synchronizing the threads. This gives the illusion that the problem is fixed but once the print() is removed the bug will reappear. The actual fix would be to use synchronization solutions such as locks or mutexes.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. The name Git is not random
&lt;/h2&gt;

&lt;p&gt;It comes from British slang which refers to an unpleasant or foolish person. When BitKeeper revoked Linux’s free license, Linus Torvalds created a version control system (VCS) in just 10 days as a replacement and named it &lt;strong&gt;Git&lt;/strong&gt;. He joked that he is “a git” for writing yet another VCS. Ironically, Git went on to become the most widely used version control system in the world.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>learning</category>
      <category>developer</category>
    </item>
    <item>
      <title>What You Need To Know About JavaScript V8 Engine</title>
      <dc:creator>Rabin Otieno</dc:creator>
      <pubDate>Sat, 01 Mar 2025 19:44:36 +0000</pubDate>
      <link>https://dev.to/otienorabin/what-you-need-to-know-about-javascript-v8-engine-2nem</link>
      <guid>https://dev.to/otienorabin/what-you-need-to-know-about-javascript-v8-engine-2nem</guid>
      <description>&lt;p&gt;When you hear the words &lt;em&gt;&lt;strong&gt;“V8 Engine”&lt;/strong&gt;&lt;/em&gt; you probably think of the popular design for automotive engines. They are well-known for their powerful and smooth performance across the board. The JavaScript V8 engine is no different. This powerful software is unrivalled when it comes to execution of Js code. Its high versatility makes it a perfect fit for a variety of applications. Here are the details.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is it?
&lt;/h2&gt;

&lt;p&gt;The V8 engine is a software whose primary role is to translate Js code into machine code (compilation). It was created by &lt;strong&gt;&lt;em&gt;Google&lt;/em&gt;&lt;/strong&gt; for the &lt;strong&gt;&lt;em&gt;Chrome&lt;/em&gt;&lt;/strong&gt; web browser to enhance the speed and overall performance. However, due to its unique and useful features it is nowadays used on multiple fronts. For instance, it is also used by Microsoft Edge and Node.js.&lt;/p&gt;

&lt;p&gt;Older engines used to interpret JavaScript code directly and this had an impact on speed and efficiency. Therefore, Js couldn’t be used for applications that require faster execution times. V8 engine takes a hybrid approach that includes both interpretation (to bytecode) and compilation. This makes it very efficient. In addition, the engine supports WebAssembly hence allowing execution of code written in languages such as Rust and C++.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Features
&lt;/h2&gt;

&lt;p&gt;• &lt;strong&gt;Just-In-Time (JIT) Compilation&lt;/strong&gt;&lt;br&gt;
This is a technique that ensures the code is compiled at &lt;br&gt;
runtime when needed. Only the frequently used parts of the code are compiled thus promoting high-speed execution. This is done using the &lt;em&gt;&lt;strong&gt;TurboFan compiler&lt;/strong&gt;&lt;/em&gt;. Before the compilation, the &lt;em&gt;&lt;strong&gt;Ignition Interpreter&lt;/strong&gt;&lt;/em&gt; first does the translation into bytecode. This hybrid approach creates a fine balance between fast startup times and high-speed execution.&lt;/p&gt;

&lt;p&gt;• &lt;strong&gt;Garbage Collection&lt;/strong&gt;&lt;br&gt;
It frees up unused memory thereby preventing memory leaks. This is done based on the generations i.e. it uses quick cleanup for short-lived objects (young generation) and a more optimized cleanup for long-lived objects (old generation). Since the garbage collection is done in small steps it doesn’t stop execution thus ensuring smooth performance.&lt;/p&gt;

&lt;p&gt;• &lt;strong&gt;WebAssembly Support&lt;/strong&gt;&lt;br&gt;
The fact that it can run WebAssembly code alongside JavaScript allows near-native performance for web apps. The WebAssembly code can be compiled &lt;strong&gt;&lt;em&gt;Ahead-Of-Time (AOT)&lt;/em&gt;&lt;/strong&gt;. The execution is even faster than JIT-compiled JavaScript. This allows for high-performance web apps like Figma and Photoshop Web.&lt;/p&gt;

&lt;p&gt;• &lt;strong&gt;Hidden Classes and Inline Caching&lt;/strong&gt;&lt;br&gt;
Instead of dynamically assigning properties which tends to be slow, it creates hidden classes behind the scenes to structure objects efficiently. If a function accesses the same property multiple times V8 remembers its location through inline caching and avoids looking it up again. Reduced lookup time translates to faster access.&lt;/p&gt;

&lt;p&gt;• &lt;strong&gt;Optimization and De-optimization&lt;/strong&gt;&lt;br&gt;
It employs various techniques to optimize the code and can also de-optimize it if need be. For example, if the applied assumptions turn out to be wrong it can roll back and use the slower generic version thus ensuring that execution still happens correctly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;The JavaScript V8 engine is one of the fastest and most efficient engines. It offers a robust platform that combines both compilation and interpretation to provide the best performance. The ability to execute WebAssembly code and to power both browsers &amp;amp; sever-side applications through Node.js makes it a versatile engine. In addition, it is open-source and has cross-platform compatibility hence making it widely accessible. For more detailed information checkout the &lt;a href="https://v8.dev/docs" rel="noopener noreferrer"&gt;documentation&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>webdev</category>
      <category>javascript</category>
      <category>google</category>
    </item>
    <item>
      <title>Intel Core i3, i5, i7…. what do these really mean?</title>
      <dc:creator>Rabin Otieno</dc:creator>
      <pubDate>Wed, 12 Feb 2025 17:45:22 +0000</pubDate>
      <link>https://dev.to/otienorabin/intel-core-i3-i5-i7-what-do-these-really-mean-24ja</link>
      <guid>https://dev.to/otienorabin/intel-core-i3-i5-i7-what-do-these-really-mean-24ja</guid>
      <description>&lt;p&gt;Given a choice between a laptop with &lt;strong&gt;Intel® Core™ i7-6700&lt;/strong&gt; and another with &lt;strong&gt;Intel® Core™ i5-14500T&lt;/strong&gt;, one might end up choosing the former thinking that it is more powerful. This is a subtle mistake that is easy to make if you are not conversant with Intel processors. The latter is actually more powerful. The tier number (i5, i7 etc.) alone is not enough to consider one better than the other. This article aims to help you make a more informed choice when dealing with common Intel Core Processors.&lt;/p&gt;

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

&lt;p&gt;In simple terms, it is a single module within the processor that is capable of executing instructions independently. Most &lt;strong&gt;Pentium&lt;/strong&gt; CPUs (predecessor to &lt;strong&gt;Intel Core series&lt;/strong&gt;) had a single core which meant that execution had to be done sequentially, one task after the other. As you can imagine, this was slow. To improve their performance the clock speeds were bumped up. It ended up creating other issues such as excessive heating and inefficient power consumption. &lt;/p&gt;

&lt;p&gt;This led to the shift in architecture with the multi-core processor being adopted. Rather than depending on very high clock speeds to boost performance, it implements other techniques such as &lt;strong&gt;multi-processing&lt;/strong&gt;, &lt;strong&gt;more work per clock cycle&lt;/strong&gt;, and &lt;strong&gt;better power efficiency&lt;/strong&gt;. With years of continuous improvements this evolved into the modern day CPUs that are of various classes. &lt;/p&gt;

&lt;h2&gt;
  
  
  Tiers
&lt;/h2&gt;

&lt;p&gt;The categorization of processors is done based on features such as &lt;strong&gt;number of cores&lt;/strong&gt;, &lt;strong&gt;size of cache&lt;/strong&gt;, &lt;strong&gt;power consumption&lt;/strong&gt;, &lt;strong&gt;graphics card&lt;/strong&gt; and &lt;strong&gt;clock speed&lt;/strong&gt;. Based on these we have tiers such as:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Core i3&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Can have up to 10 cores.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Small cache size, usually about 12 to 18MB (depending on the generation).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Relatively low clock speed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Don’t support overclocking except for the Core i3-7350K.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Good for light work e.g. MS office applications.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Core i5&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Can have up to 14 cores.&lt;/li&gt;
&lt;li&gt;Moderately sized cache of about 18 to 24MB.&lt;/li&gt;
&lt;li&gt;Moderately high clock speed.&lt;/li&gt;
&lt;li&gt;Some support overclocking.&lt;/li&gt;
&lt;li&gt;Good for multitasking, moderate gaming and typical everyday use cases.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Core i7&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Can have up to 20 cores.&lt;/li&gt;
&lt;li&gt;Large sized cache of about 25 to 33MB.&lt;/li&gt;
&lt;li&gt;High clock speed.&lt;/li&gt;
&lt;li&gt;Some support overclocking.&lt;/li&gt;
&lt;li&gt;High end graphics.&lt;/li&gt;
&lt;li&gt;Good for design works, gaming, and professional use cases.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Core i9&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Can have up to 24 cores.&lt;/li&gt;
&lt;li&gt;Cache size up to 36MB.&lt;/li&gt;
&lt;li&gt;Fastest clock speed. Turbo boost up to 6.0GHz.&lt;/li&gt;
&lt;li&gt;Some support overclocking.&lt;/li&gt;
&lt;li&gt;High end graphics.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Core Ultra&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;These are some of Intel’s Latest high-performance processors, designed to suit AI workloads and advanced multitasking.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Has 12+ cores.&lt;/li&gt;
&lt;li&gt;High turbo speeds (~5.0 GHz+).&lt;/li&gt;
&lt;li&gt;Has new AI-focused Neural Processing Units.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As shown in the information above, the number used in the naming categories doesn’t directly reference the number of cores. So it’s wrong to assume that an i5 will have only 5 cores. Also, it is worth mentioning that the values change across generations. For instance, the core counts stated above are for the 14th Gen processors hence are different from those of a 5th Gen.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Note: As of 2024 Intel has adopted new naming techniques that excludes the “i” thus you might see a Core i9 being simply referred to as Core 9. This applies for the new high-end processors.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Generations
&lt;/h3&gt;

&lt;p&gt;The tiers are further categorized by generations. The newer generations typically will have improvements that make them better than the older ones in terms of performance among other features. This is the reason why in the example that was given above, the Intel® Core™ i5-14500T is considered better than Intel® Core™ i7-6700 performance-wise.&lt;/p&gt;

&lt;p&gt;As per Intel’s naming system, the first one or two digits after the tier typically denotes the generation, the remaining 3 show the model number, and an optional letter represents specific capabilities of the chip or show intended use.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fx8a7mjr1v984j4z16a03.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fx8a7mjr1v984j4z16a03.png" alt="Breakdown of Intel® Core™ i5-14500T naming" width="598" height="107"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This shows that it is a 14 generation processor and also has optimized power consumption. &lt;/p&gt;

&lt;h3&gt;
  
  
  Suffixes
&lt;/h3&gt;

&lt;p&gt;As you might have noticed some processors have letter suffixes while others don’t. Here are the meanings of some of these letters:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;T&lt;/strong&gt; -&amp;gt;  power optimized. These usually have lower clock speeds but are energy-efficient.&lt;br&gt;
&lt;strong&gt;F&lt;/strong&gt; -&amp;gt;  No integrated graphics. These are great for gaming and high-performance uses that will require you to have external dedicated GPU.&lt;br&gt;
&lt;strong&gt;K&lt;/strong&gt; -&amp;gt;  Unlocked for overclocking. These are suitable for workloads that require high clock speeds.&lt;br&gt;
&lt;strong&gt;H&lt;/strong&gt; -&amp;gt;  High-performance mobile processor. Such laptops have more power and cores.&lt;br&gt;
&lt;strong&gt;G&lt;/strong&gt; -&amp;gt;  High-performance Intel graphics. Great for workloads that require advanced graphics performance e.g. some design works&lt;br&gt;
&lt;strong&gt;U&lt;/strong&gt; -&amp;gt;  Ultra-low power. Offer low power consumption and long battery life.&lt;br&gt;
&lt;strong&gt;S&lt;/strong&gt; -&amp;gt;  Special edition or optimized performance. These are usually limited-release CPUs with better tuning.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;There is a wide variety of Intel Core processors. i3, i5, i7, and i9 are part of the numbering system used to denote the performance tier of the specific chip. Each tier has its own key features that will influence the performance. When making a purchase, it is very important to also consider the generation of the processor and the suffix letter where applicable. Intel regularly updates their products and therefore some of these details might change over time. For more information on the topic be sure to visit the official website: &lt;a href="https://www.intel.com/content/www/us/en/products/details/processors.html" rel="noopener noreferrer"&gt;www.intel.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>processor</category>
      <category>developer</category>
    </item>
    <item>
      <title>Are You Writing Your Git Commit Messages Properly?</title>
      <dc:creator>Rabin Otieno</dc:creator>
      <pubDate>Sun, 26 May 2024 16:22:04 +0000</pubDate>
      <link>https://dev.to/otienorabin/are-you-writing-your-git-commit-messages-properly-54cl</link>
      <guid>https://dev.to/otienorabin/are-you-writing-your-git-commit-messages-properly-54cl</guid>
      <description>&lt;p&gt;When it comes to version control, Git is a very effective tool. However, like any other tool you have to use it the right way to get the most out of it. There are different aspects that you need to take into consideration. This article focuses on how to write effective Git commit messages following the Conventional Commits specification. It outlines the fundamentals to help you create clear, informative, and standardized commit messages.&lt;/p&gt;

&lt;h2&gt;
  
  
  How does a good commit message look?
&lt;/h2&gt;

&lt;p&gt;The purpose of sending a message is to communicate. For communication to be effective, the receiver has to clearly understand what the sender of the message is trying to tell them. Thus you need to provide the context and adequate information. Based on this, a good commit message should convey the following:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Type (mandatory)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;fix:&lt;/code&gt; –  applicable when the action is fixing a bug.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;feat:&lt;/code&gt; –  applicable when you add a new feature.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;BREAKING CHANGE:&lt;/code&gt; - applicable when you introduce a change that
might require certain aspects of the program to be updated or 
upgraded to avoid disruptions. For example, replacing deprecated 
resources with new ones might disrupt functionality if there is 
no backward compatibility. You can also indicate a breaking 
change by using the symbol '!' right after the type (or scope if 
available). 
Example; 'feat(authentication)!:'&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;docs:&lt;/code&gt; – applicable for documentation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Others include &lt;em&gt;test: , chore: , refactor: , build: , style:&lt;/em&gt; etc. If you are part of a team there might be a convention with customized types that you are expected to adhere to. It is therefore important to get the details beforehand.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Scope (optional)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Although providing the scope is optional, it is good practice to include it for clarity. The scope specifies the part of the codebase affected by the changes thus helping readers understand the context of the change. This is especially helpful in large projects with many contributors. It makes collaboration easier. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Description (mandatory)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is the part where you describe what you’ve done. Keep it concise and straight to the point. Make sure that you write it in imperative form. For instance, instead of writing “Added authentication mechanism” you should write “Add authentication mechanism”. This will promote readability in automatically generated changelogs and release notes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Body (optional)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here is where you can provide more information about what you’ve implemented. Use a blank line to separate the body from the description.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Footer (optional)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If there is any metadata you’d like to include do so in the footer. For instance, if the change you’ve made addresses an issue that had been raised earlier you can indicate it here by citing the reference number. Example; '&lt;strong&gt;fix #003&lt;/strong&gt;'&lt;br&gt;
You can also include reviewer’s name in the footer.&lt;/p&gt;

&lt;p&gt;Remember, a scope should be followed by a colon and space before giving the description. You should also keep in mind that BREAKING CHANGE is case-sensitive when included in the footer hence should be written in uppercase. &lt;/p&gt;
&lt;h2&gt;
  
  
  Examples
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;chore(Art_func): change variable “Empty” to “empty”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Change variable name from “Empty” to “empty” for consistency with &lt;br&gt;
  the naming convention.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;fix(database)!: modify schema&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Modify schema to accommodate only structured data. Dismiss all &lt;br&gt;
  other types of data.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;feat: add support for dark mode.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For long messages, use a text editor by running&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git commit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;without the -m flag. This opens an editor where you can write a detailed commit message. For shorter messages you can just include the -m flag and use the terminal instead of an editor.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git commit -m "subject" -m "body"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Using multiple -m flags helps you format the message correctly by separating the subject, body, and footer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Writing a commit message should serve the intended purpose. To make it clear and informative, it is recommended that you include at least the type and description of the changes you’ve made. Follow the conventional approach to maintain a good codebase that can support collaboration and automation of various processes. For detailed information be sure to go through the &lt;a href="https://www.conventionalcommits.org/en/v1.0.0/"&gt;Conventional Commits&lt;/a&gt; guidelines.&lt;/p&gt;

</description>
      <category>git</category>
      <category>developer</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
