+
+```
+
+Here is an example that shows an image of two (2) dogs:
+
+
+
+Image of two dogs
+
+And here's an example of an image that illustrates the use of alt text:
+
+
+
+Image of dog with alt text displayed
+
+==You should also describe your icon buttons.==
+
+Icons can be easily understood most of the time. It's widely recognized that an x symbol, like this ❌, typically closes a window, a check mark ✅ signifies completion, a forward arrow ▶ signifies send (or play), and a plus sign ➕ represents addition.
+
+But this is clear only for individuals with visual capabilities. For people who aren't able to see the buttons, you'll need to provide a description so they know what that button does.
+
+Let's take a look at this HTML and CSS code that shows how to make buttons access:
+
+Document
+
+Here's the result of the code implemented above:
+
+
+
+### Is it Operable?
+
+Users should be able to navigate and interact with the interface quickly. Consider the following factors:
+
+==First, make sure you use clear and consistent headings.==
+
+This is what clear and consistent headings look like:
+
+## I am a Title
+
+## I am a Subtitle
+
+### This is heading 3
+
+#### This is Heading 4
+
+##### This is Heading 5
+
+###### This is heading 6
+
+As you can see, these headings go from largest to smallest in order. We have an H1 heading first, followed by H2, H3, and so on.
+
+Here are some headings that don't follow the proper hierarchy:
+
+###### This is heading 6
+
+##### This is Heading 5
+
+#### This is Heading 4
+
+### This is heading 3
+
+## I am a Subtitle
+
+## I am a Title
+
+In this example, the headings go in reverse order, starting from H6 and moving up through H5, H4, and so on.
+
+Just remember to use proper heading hierarchy – don't use an H2 and then jump straight to H4 for a subheading, for example, as this is visually jarring and doesn't convey the proper importance or hierarchy of the text.
+
+Here's why heading hierarchy is important:
+
+* A clear heading hierarchy helps readers easily navigate and understand the content of a document.
+* Heading hierarchy is crucial for accessibility, as it helps screen readers and assistive technologies interpret the structure of the content. This is important for individuals with visual impairments who rely on such tools to access information.
+* A well-organized heading hierarchy implement a logical flow of information, ensuring that topics are presented in a coherent order.
+
+Also, refrain from using elements that might trigger physical discomfort, like bright flashing lights.
+
+==And make sure you think about== ==[keyboard accessibility](https://www.freecodecamp.org/news/designing-keyboard-accessibility-for-complex-react-experiences/)== ==so users can navigate and communicate using the keyboard, and not exclusively using a mouse.==
+
+### Is it Understandable?
+
+Content and functionality should be presented clearly and understandably. Consider the following factors:
+
+* ==Organize content using headings, subheadings, and bullet points to enhance readability.==
+* Provide instructions and error messages that are easy to understand.
+* Use simple and concise language, avoid complex terms.
+
+### Is it Robust?
+
+Websites should be built using robust and widely supported technologies to enable compatibility across devices and assistive technologies.
+
+You'll want to maximize compatibility with current and future user agents, including assistive technologies.
+
+Here are some of the ways you can maximize compatibility with current and future agents, including assistive tools:
+
+* ==Use== ==[HTML5 semantic elements](https://www.freecodecamp.org/news/semantic-html-alternatives-to-using-divs/)== ==like== `==<====header====>==`==,== `==<====nav====>==`==,== `==<====main====>==`==, and== `==<====footer====>==` ==to enhance the document's structure.==
+* ==Ensure that your== ==[JavaScript code is efficient](https://www.freecodecamp.org/news/javascript-performance-async-defer/)== ==and doesn't block the rendering process.==
+* ==Utilize== ==[browser developer tools](https://www.freecodecamp.org/news/learn-how-to-use-the-chrome-devtools-to-troubleshoot-websites/)== ==and online testing services to identify and fix compatibility issues.==
+* ==Conduct== ==[usability testing](https://www.freecodecamp.org/news/10-best-ux-testing-software-tools/)== ==with a diverse group of users, including those who rely on assistive technologies, to gather feedback and make improvements.==
+* ==Optimize your website for fast loading times and low data usage using techniques like== ==[caching](https://www.freecodecamp.org/news/a-detailed-guide-to-pre-caching/)== ==and== ==[tools like CDNs](https://www.freecodecamp.org/news/cdns-speed-up-performance-by-reducing-latency/)== ==to reduce latency. This benefits both accessibility and user experience.==
+* ==Document your code and accessibility features for future maintainers.==
+* ==Test== ==[website compatibility across various browsers](https://www.freecodecamp.org/news/cross-browser-compatibility-testing-best-practices-for-web-developers/)====. Testing website compatibility involves ensuring that your website functions correctly and looks good on a variety of devices, browsers, and assistive technologies.==
+
+Here are the steps you can follow to test website compatibility effectively:
+
+1. **Device Testing**: Test your website on various devices, such as desktop computers, laptops, tablets, and smartphones. This includes both iOS and Android devices.
+2. **Browser Testing**: Check your website's performance and appearance on multiple browsers, including but not limited to Google Chrome, Mozilla Firefox, Apple Safari, and Microsoft Edge.
+3. **User Testing**: Conduct usability testing with real users. Ask them to use your website on different devices and browsers and collect feedback on compatibility issues.
+4. **Performance Testing**: Assess website loading times, and optimize for speed using tools like Google PageSpeed Insights, GTmetrix, or Lighthouse. Check for compatibility with slow internet connections.
+
+## Conclusion
+
+Understanding web accessibility can enhance the user experience by creating a smooth and seamless interaction with websites and web applications.
+
+Implementing these tips can improve the overall user-friendliness and navigability of your app. It'll help create a more enjoyable experience for all users, and will also allow people with disabilities to perceive, understand, navigate, and interact with your sites effectively.
+
+---
+
+---
+
+ Learn to code for free. freeCodeCamp's open source curriculum has helped more than 40,000 people get jobs as developers. [Get started](https://www.freecodecamp.org/learn/)
\ No newline at end of file
diff --git a/Read Later/Git Merge vs Rebase vs Squash ¿Qué estrategia debemos elegir-.md b/Read Later/2023-11-04 - Git Merge vs Rebase vs Squash ¿Qué estrategia debemos elegir-.md
similarity index 98%
rename from Read Later/Git Merge vs Rebase vs Squash ¿Qué estrategia debemos elegir-.md
rename to Read Later/2023-11-04 - Git Merge vs Rebase vs Squash ¿Qué estrategia debemos elegir-.md
index e6987f8..d8de707 100644
--- a/Read Later/Git Merge vs Rebase vs Squash ¿Qué estrategia debemos elegir-.md
+++ b/Read Later/2023-11-04 - Git Merge vs Rebase vs Squash ¿Qué estrategia debemos elegir-.md
@@ -17,10 +17,9 @@ url_original: |
## Notes
-- Merge commit: Se crea un commit que tiene 2 padres, el último commit de main y la feature branch, se mantiene la trazabilidad hacia la feature branch pero el historial queda visualmente más complejo ^5df1b4
+- Merge commit: Se crea un commit que tiene 2 padres, el último commit de main y la feature branch, se mantiene la trazabilidad hacia la feature branch pero el historial queda visualmente más complejo
- Rebase: Se copian los commits de la feature branch a main como nuevos commits, se pierde la trazabilidad hacia la feature branch pero queda un historial lineal en main
- Squash commit: Se juntan todos los commits en uno solo con un squash que queda en main, se pierde la trazabilidad hacia la feature branch pero queda un historial lineal en main
----
## Original
[Git Merge vs Rebase vs Squash ¿Qué estrategia debemos elegir?](https://www.youtube.com/watch?pp=ygUKZ2l0IHNxdWFzaA%253D%253D&v=HlmZLXMOpEM)
diff --git a/Read Later/How to Write Components that Work in Any Framework.md b/Read Later/2023-11-06 - How to Write Components that Work in Any Framework.md
similarity index 90%
rename from Read Later/How to Write Components that Work in Any Framework.md
rename to Read Later/2023-11-06 - How to Write Components that Work in Any Framework.md
index 127af57..628e953 100644
--- a/Read Later/How to Write Components that Work in Any Framework.md
+++ b/Read Later/2023-11-06 - How to Write Components that Work in Any Framework.md
@@ -17,37 +17,44 @@ url_original: |
## Highlights
-> [!quote] ㅤ
-> With Custom Elements you can author your own custom HTML elements that you can reuse across your site. They can be as simple as text, images, or visual decorations. You can push them further and build interactive components, complex widgets, or entire web applications.
->
-> [source](https://omnivore.app/me/how-to-write-components-that-work-in-any-framework-18ba72d0079#bceef8c0-728e-422a-aed6-b047736cb395)
-> > [!quote] ㅤ
-> ### Writing a web component requires understanding all of its underlying technologies
->
-> As we saw above, web components are made up of three technologies. You can also see in the hello world code snippet, that we explicitly need to know and understand these three technologies.
->
-> 1. We’re creating a **template element** and setting its inner HTML
-> 2. We’re creating a **shadow root**, and explicitly setting its mode to ‘open’.
-> 3. We’re cloning our **template** and appending it to our **shadow root**
-> 4. We’re registering a new **custom element** to the document
->
-> [source](https://omnivore.app/me/how-to-write-components-that-work-in-any-framework-18ba72d0079#46fc130a-1549-40c8-b950-42035c227bc4)
-> > [!quote] ㅤ
-> As web component authors, we need to consider a lot of things:
->
-> * Setting up the shadow DOM
-> * Setting up the HTML templates
-> * Cleaning up event listeners
-> * Defining properties that we want to observe
-> * Reacting to properties when they change
-> * Handling type conversions for attributes
->
-> [source](https://omnivore.app/me/how-to-write-components-that-work-in-any-framework-18ba72d0079#855f444c-49f1-4176-9537-aaeeb6a01355)
-> > [!quote] ㅤ
-> One such tool is called Lit, which is developed by a team at Google. [Lit](https://lit.dev/) is a lightweight library designed to make writing web components simple, by removing the need for the boilerplate we’ve already seen above.
->
-> [source](https://omnivore.app/me/how-to-write-components-that-work-in-any-framework-18ba72d0079#385d9ef8-13fb-4799-bff5-ef767b3df67f)
-> ---
+With Custom Elements you can author your own custom HTML elements that you can reuse across your site. They can be as simple as text, images, or visual decorations. You can push them further and build interactive components, complex widgets, or entire web applications.
+
+[source](https://omnivore.app/me/how-to-write-components-that-work-in-any-framework-18ba72d0079#bceef8c0-728e-422a-aed6-b047736cb395)
+
+---
+
+### Writing a web component requires understanding all of its underlying technologies
+
+As we saw above, web components are made up of three technologies. You can also see in the hello world code snippet, that we explicitly need to know and understand these three technologies.
+
+1. We’re creating a **template element** and setting its inner HTML
+2. We’re creating a **shadow root**, and explicitly setting its mode to ‘open’.
+3. We’re cloning our **template** and appending it to our **shadow root**
+4. We’re registering a new **custom element** to the document
+
+[source](https://omnivore.app/me/how-to-write-components-that-work-in-any-framework-18ba72d0079#46fc130a-1549-40c8-b950-42035c227bc4)
+
+---
+
+As web component authors, we need to consider a lot of things:
+
+* Setting up the shadow DOM
+* Setting up the HTML templates
+* Cleaning up event listeners
+* Defining properties that we want to observe
+* Reacting to properties when they change
+* Handling type conversions for attributes
+
+[source](https://omnivore.app/me/how-to-write-components-that-work-in-any-framework-18ba72d0079#855f444c-49f1-4176-9537-aaeeb6a01355)
+
+---
+
+One such tool is called Lit, which is developed by a team at Google. [Lit](https://lit.dev/) is a lightweight library designed to make writing web components simple, by removing the need for the boilerplate we’ve already seen above.
+
+[source](https://omnivore.app/me/how-to-write-components-that-work-in-any-framework-18ba72d0079#385d9ef8-13fb-4799-bff5-ef767b3df67f)
+
+---
+
## Original

diff --git a/Read Later/How to Avoid Prop Drilling in React.md b/Read Later/2023-11-07 - How to Avoid Prop Drilling in React.md
similarity index 82%
rename from Read Later/How to Avoid Prop Drilling in React.md
rename to Read Later/2023-11-07 - How to Avoid Prop Drilling in React.md
index 6cecddd..52236fb 100644
--- a/Read Later/How to Avoid Prop Drilling in React.md
+++ b/Read Later/2023-11-07 - How to Avoid Prop Drilling in React.md
@@ -18,47 +18,63 @@ url_original: |
## Highlights
-> [!quote] ㅤ
-> Prop drilling occurs when a parent component generates its state and passes it down as `props` to its children components that do not consume the props – instead, they only pass it down to another component that finally consumes it.
->
-> [source](https://omnivore.app/me/how-to-avoid-prop-drilling-in-react-18bae0b4ca2#05db3def-4e59-4cfe-b8dd-1044ce91a9d5)
-> > [!quote] ㅤ
-> First of all, **grouping static elements and dependent components** together to achieve an appealing UI design is the major cause of prop drilling. You can't avoid prop drilling when your UI groups static elements and dependent components together in a parent. The parent component clearly won't use the `prop`, as everything within it is a static element – except the component that needs a prop.
->
-> [source](https://omnivore.app/me/how-to-avoid-prop-drilling-in-react-18bae0b4ca2#fa2c28c0-1b7e-4416-8553-c1b5c7a59637)
-> > [!quote] ㅤ
-> Second of all, when a **component accepts `props` that it doesn't use but merely passes it down to its children**, this is a sign that you have prop drilling in your component:
->
-> [source](https://omnivore.app/me/how-to-avoid-prop-drilling-in-react-18bae0b4ca2#6749a89e-a38c-4f4f-aa3f-c6455e6daf85)
-> > [!quote] ㅤ
-> Third, when a component that represents an independent section of a page is **forced to take props from its parent**, prop drilling is inevitable. It should ideally be self-contained with its state and operations.
->
-> [source](https://omnivore.app/me/how-to-avoid-prop-drilling-in-react-18bae0b4ca2#751d81de-62b7-444b-a2f0-a0b374f6ce45)
-> > [!quote] ㅤ
-> And finally, **the presence of elongated `props`** is a sure sign of prop drilling. Since an elongated prop is a fundamental element that's consistently present in every case of prop drilling, grasping this concept allows you to instinctively avoid prop drilling.
->
-> [source](https://omnivore.app/me/how-to-avoid-prop-drilling-in-react-18bae0b4ca2#90f807ca-03a3-4804-bcf1-c5df4e53a997)
-> > [!quote] ㅤ
-> Component composition is a good approach to fix prop drilling. If you ever find yourself in a situation where a component passes down a prop it neither creates nor consumes, you can use component composition to fix it.
->
-> [source](https://omnivore.app/me/how-to-avoid-prop-drilling-in-react-18bae0b4ca2#0112181f-34b7-4ca3-b941-f1c16303c6c0)
-> > [!quote] ㅤ
-> To avoid prop drilling in this case, any grandchildren components that require access to the same `props`, especially when their parent don't consume the data, should be passed as children ensuring that the data remains within the `App` context.
->
-> [source](https://omnivore.app/me/how-to-avoid-prop-drilling-in-react-18bae0b4ca2#c17f1d4e-8f5c-45d1-9078-fe8ab740e11e)
-> > [!quote] ㅤ
-> Prop drilling can also be fixed by moving state to where it is consumed. The example of prop drilling in this article has a component named `Content`. But the component is forced to receive a `prop` from its parent instead of having a state and be an independent component – and so we have prop drilling.
->
-> [source](https://omnivore.app/me/how-to-avoid-prop-drilling-in-react-18bae0b4ca2#9f94fd13-9558-4bd3-a60c-60074b3495d2)
-> > [!quote] ㅤ
-> It's essential to highlight what to avoid when dealing with prop drilling to prevent unnecessary challenges.
->
-> * **Avoid React Context, if possible, to fix prop drilling.** This approach ties your component to a specific context, restricting its usability outside of that context and hindering composition and reusability.
-> * **Steer clear of redundant components by employing a children-parent replacement approach.** This approach naturally incorporates [component composition](https://www.codementor.io/@dinerismail/the-power-of-component-composition-in-react-21goassg4m) without introducing redundant components or states when resolving prop drilling.
->
-> [source](https://omnivore.app/me/how-to-avoid-prop-drilling-in-react-18bae0b4ca2#8ff7b79b-5503-4e1a-b7fe-1a07a46c578c)
->
+Prop drilling occurs when a parent component generates its state and passes it down as `props` to its children components that do not consume the props – instead, they only pass it down to another component that finally consumes it.
+
+[source](https://omnivore.app/me/how-to-avoid-prop-drilling-in-react-18bae0b4ca2#05db3def-4e59-4cfe-b8dd-1044ce91a9d5)
+
---
+
+First of all, **grouping static elements and dependent components** together to achieve an appealing UI design is the major cause of prop drilling. You can't avoid prop drilling when your UI groups static elements and dependent components together in a parent. The parent component clearly won't use the `prop`, as everything within it is a static element – except the component that needs a prop.
+
+[source](https://omnivore.app/me/how-to-avoid-prop-drilling-in-react-18bae0b4ca2#fa2c28c0-1b7e-4416-8553-c1b5c7a59637)
+
+---
+
+Second of all, when a **component accepts `props` that it doesn't use but merely passes it down to its children**, this is a sign that you have prop drilling in your component:
+
+[source](https://omnivore.app/me/how-to-avoid-prop-drilling-in-react-18bae0b4ca2#6749a89e-a38c-4f4f-aa3f-c6455e6daf85)
+
+---
+
+Third, when a component that represents an independent section of a page is **forced to take props from its parent**, prop drilling is inevitable. It should ideally be self-contained with its state and operations.
+
+[source](https://omnivore.app/me/how-to-avoid-prop-drilling-in-react-18bae0b4ca2#751d81de-62b7-444b-a2f0-a0b374f6ce45)
+
+---
+
+And finally, **the presence of elongated `props`** is a sure sign of prop drilling. Since an elongated prop is a fundamental element that's consistently present in every case of prop drilling, grasping this concept allows you to instinctively avoid prop drilling.
+
+[source](https://omnivore.app/me/how-to-avoid-prop-drilling-in-react-18bae0b4ca2#90f807ca-03a3-4804-bcf1-c5df4e53a997)
+
+---
+
+Component composition is a good approach to fix prop drilling. If you ever find yourself in a situation where a component passes down a prop it neither creates nor consumes, you can use component composition to fix it.
+
+[source](https://omnivore.app/me/how-to-avoid-prop-drilling-in-react-18bae0b4ca2#0112181f-34b7-4ca3-b941-f1c16303c6c0)
+
+---
+
+To avoid prop drilling in this case, any grandchildren components that require access to the same `props`, especially when their parent don't consume the data, should be passed as children ensuring that the data remains within the `App` context.
+
+[source](https://omnivore.app/me/how-to-avoid-prop-drilling-in-react-18bae0b4ca2#c17f1d4e-8f5c-45d1-9078-fe8ab740e11e)
+
+---
+
+Prop drilling can also be fixed by moving state to where it is consumed. The example of prop drilling in this article has a component named `Content`. But the component is forced to receive a `prop` from its parent instead of having a state and be an independent component – and so we have prop drilling.
+
+[source](https://omnivore.app/me/how-to-avoid-prop-drilling-in-react-18bae0b4ca2#9f94fd13-9558-4bd3-a60c-60074b3495d2)
+
+---
+
+It's essential to highlight what to avoid when dealing with prop drilling to prevent unnecessary challenges.
+
+* **Avoid React Context, if possible, to fix prop drilling.** This approach ties your component to a specific context, restricting its usability outside of that context and hindering composition and reusability.
+* **Steer clear of redundant components by employing a children-parent replacement approach.** This approach naturally incorporates [component composition](https://www.codementor.io/@dinerismail/the-power-of-component-composition-in-react-21goassg4m) without introducing redundant components or states when resolving prop drilling.
+
+[source](https://omnivore.app/me/how-to-avoid-prop-drilling-in-react-18bae0b4ca2#8ff7b79b-5503-4e1a-b7fe-1a07a46c578c)
+
+---
+
## Original

diff --git a/Read Later/The Complete Guide to Time Blocking.md b/Read Later/2023-11-10 - The Complete Guide to Time Blocking.md
similarity index 92%
rename from Read Later/The Complete Guide to Time Blocking.md
rename to Read Later/2023-11-10 - The Complete Guide to Time Blocking.md
index 9378f01..5d23890 100644
--- a/Read Later/The Complete Guide to Time Blocking.md
+++ b/Read Later/2023-11-10 - The Complete Guide to Time Blocking.md
@@ -16,32 +16,39 @@ url_original: |
## Highlights
-> [!quote] ㅤ
-> Time blocking is a time management method that asks you to divide your day into blocks of time. Each block is dedicated to accomplishing a specific task or group of tasks, and only those specific tasks. Instead of keeping an open-ended to-do list of things you’ll get to as you can, you’ll start each day with a concrete schedule outlining what you’ll work on and when.
->
-> [source](https://omnivore.app/me/https-todoist-com-productivity-methods-time-blocking-18bbc432143#6ca022ff-400a-4f70-8031-1a3caa0e7246)
-> > [!quote] ㅤ
-> With days that are time blocked in advance, you won’t have to constantly make choices about what to focus on.
->
-> [source](https://omnivore.app/me/https-todoist-com-productivity-methods-time-blocking-18bbc432143#21fb5ecc-b00e-4f14-8d60-84eec666e8a9)
-> > [!quote] ㅤ
-> Task batching is when you group similar (usually smaller) tasks together and schedule specific time blocks to complete all at once. By tackling similar tasks in a group, you’ll limit the amount of context switching you have to do throughout your day, saving precious time and mental energy.
->
-> [source](https://omnivore.app/me/https-todoist-com-productivity-methods-time-blocking-18bbc432143#ce3acd05-a296-4204-acfe-e0822f8a83d2)
-> > [!quote] ㅤ
-> Instead of setting aside time blocks for each area of responsibility each day, day theming dedicates a full day each week to each responsibility.
->
-> [source](https://omnivore.app/me/https-todoist-com-productivity-methods-time-blocking-18bbc432143#5d5543a9-0d8d-42ed-aa24-4ecfeb07d6ac)
-> > [!quote] ㅤ
-> time boxing asks you to limit how much time you'll dedicate to a specific task.
->
-> [source](https://omnivore.app/me/https-todoist-com-productivity-methods-time-blocking-18bbc432143#e342c6ce-607b-4482-af54-4ffbf81ab7ab)
->
->
->> [!info] ㅤ
->> Is _"I'm gonna finish this in X time"_, instead of _"I'm gonna work on this for X time"_
+Time blocking is a time management method that asks you to divide your day into blocks of time. Each block is dedicated to accomplishing a specific task or group of tasks, and only those specific tasks. Instead of keeping an open-ended to-do list of things you’ll get to as you can, you’ll start each day with a concrete schedule outlining what you’ll work on and when.
+
+[source](https://omnivore.app/me/https-todoist-com-productivity-methods-time-blocking-18bbc432143#6ca022ff-400a-4f70-8031-1a3caa0e7246)
---
+
+With days that are time blocked in advance, you won’t have to constantly make choices about what to focus on.
+
+[source](https://omnivore.app/me/https-todoist-com-productivity-methods-time-blocking-18bbc432143#21fb5ecc-b00e-4f14-8d60-84eec666e8a9)
+
+---
+
+Task batching is when you group similar (usually smaller) tasks together and schedule specific time blocks to complete all at once. By tackling similar tasks in a group, you’ll limit the amount of context switching you have to do throughout your day, saving precious time and mental energy.
+
+[source](https://omnivore.app/me/https-todoist-com-productivity-methods-time-blocking-18bbc432143#ce3acd05-a296-4204-acfe-e0822f8a83d2)
+
+---
+
+Instead of setting aside time blocks for each area of responsibility each day, day theming dedicates a full day each week to each responsibility.
+
+[source](https://omnivore.app/me/https-todoist-com-productivity-methods-time-blocking-18bbc432143#5d5543a9-0d8d-42ed-aa24-4ecfeb07d6ac)
+
+---
+
+time boxing asks you to limit how much time you'll dedicate to a specific task.
+
+> [!note]
+> Is _"I'm gonna finish this in X time"_, instead of _"I'm gonna work on this for X time"_
+
+[source](https://omnivore.app/me/https-todoist-com-productivity-methods-time-blocking-18bbc432143#e342c6ce-607b-4482-af54-4ffbf81ab7ab)
+
+---
+
## Original
...and its cousins task batching and day theming. Control your schedule so it doesn't control you
diff --git a/Read Later/2023-11-14 - The one thing you need to finish your game.md b/Read Later/2023-11-14 - The one thing you need to finish your game.md
new file mode 100644
index 0000000..064de0b
--- /dev/null
+++ b/Read Later/2023-11-14 - The one thing you need to finish your game.md
@@ -0,0 +1,31 @@
+---
+id: b453f3fe-d74e-4a3a-b778-8e4f6450da30
+title: |
+ The one thing you need to finish your game
+status: ARCHIVED
+tags:
+ - read-later
+date_added: 2023-11-14 22:58:47
+url_omnivore: |
+ https://omnivore.app/me/https-youtu-be-b-6-au-n-gi-ue-m-si-ixu-ds-nh-t-2-k-5-b-3-jf-s-18bd0b3d045
+url_original: |
+ https://youtu.be/B6auN-GIUeM?si=ixuDsNhT2k5b3JfS
+---
+
+# The one thing you need to finish your game
+
+## Notes
+
+What you need... is a **plan**...
+
+Because it makes the game feasible, realizable and gives it a scope, to see how "big" it's going to be. Also prevents burn out by all the stuff you _"need to do"_.
+
+A plan is not a immovable wall, you can tweak it if you need to adjust to new discoveries or new inputs, this is better than wandering without a goal. But try to not increment the scope so you don't end up with an interminable project.
+
+> The code is more of a guide than law...
+> Jack Sparrow
+## Original
+
+[The one thing you need to finish your game](https://youtu.be/B6auN-GIUeM?si=ixuDsNhT2k5b3JfS)
+
+By [Game Maker's Toolkit](https://www.youtube.com/@GMTK)
\ No newline at end of file
diff --git a/Read Later/2023-11-21 - Career Mistakes to Avoid as a Developer.md b/Read Later/2023-11-21 - Career Mistakes to Avoid as a Developer.md
new file mode 100644
index 0000000..ad8104b
--- /dev/null
+++ b/Read Later/2023-11-21 - Career Mistakes to Avoid as a Developer.md
@@ -0,0 +1,313 @@
+---
+id: 49d7bfb2-8911-11ee-9b49-a315c7dbc2d7
+title: |
+ Career Mistakes to Avoid as a Developer
+status: ARCHIVED
+tags:
+ - read-later
+ - RSS
+date_added: 2023-11-21 21:04:22
+url_omnivore: |
+ https://omnivore.app/me/career-mistakes-to-avoid-as-a-developer-18bf626412f
+url_original: |
+ https://www.freecodecamp.org/news/career-mistakes-to-avoid-as-a-dev/
+---
+
+# Career Mistakes to Avoid as a Developer
+
+## Highlights
+
+Build authentic connections to get the best out of it. Then once you're connected, here are a few things you can do:
+
+* Show interest in their posts.
+* Engage with discussions by commenting or sharing posts.
+* Repost with your thoughts
+* Exchange ideas, or even build things together!
+
+A strong social connection may help you in getting information faster. You may learn about a new release of a library/framework/product, how an industry is moving, how certain technologies might impact your work, and so on.
+
+[source](https://omnivore.app/me/career-mistakes-to-avoid-as-a-developer-18bf626412f#3d561a03-61e0-4ca6-8e70-81651abe90c1)
+
+---
+
+## Original
+
+
+
+What does the word `career` mean to you? To me, it is a roller coaster journey during which we find opportunities, progress, and growth in life. The journey involves learning objectives, work, and other personal and professional aspects.
+
+A promising career is one where you enjoy most (if not all) of your daily work. You see your personal, professional, and financial growth and gradually define what success means to you.
+
+A lousy career is just the opposite. It may pay your bills, but you need more work satisfaction, and measuring your progress and growth becomes hard.
+
+Several factors define a career: promising versus lousy, good versus bad, and successful versus failed. A few of them we can not control – but, we can avoid some career mistakes to build a better career path.
+
+I have spent more than 18 years in Software Engineering and have seen a lot of ups and downs, including in my own career and those of my colleagues. In this article, I will discuss ten career mistakes you should avoid.
+
+Usually, I [share knowledge](https://www.freecodecamp.org/news/author/tapas/) on technical topics like JavaScript, web development, React, Node, Next.js, and so on. But this time, let's connect on essential tips for our Career Development.
+
+If you like to learn from video content as well, this article is also available as a video tutorial here: 🙂
+
+## A Few Things Before We Start
+
+You may or may not agree with all the points. That's fine with me, because what I'm planning to share here is based on my own experiences.
+
+You may strongly agree or disagree with my conclusions, but if there are any additional points that you think I still need to include, please let me know. You can contact me on the social handles I mention at the end of this article.
+
+Also, this article is not only meant for working professionals. All these mistakes we will discuss are relevant for everyone, including students, people seeking jobs, or anyone getting ready for tomorrow in the software industry or any industry.
+
+All set? Let's get started.
+
+## 1\. You Don't Set Realistic Goals
+
+
+
+One of the biggest mistakes most of us make in our careers is not having a goal. What exactly is a goal? It is something like a target.
+
+Let's take an example. Let's say you're going shopping to buy something. You usually have a list of items that you want to get. You don't randomly pick things and come home and feel like, "Oh, it was a complete waste of time and money". So, if that list is your shopping goal, why not have something like this for your career?
+
+Usually, we have a lot of short-term goals, for example,
+
+* I have to fix this bug today.
+* I have to build this project this week.
+* I have to get a promotion this year.
+
+These are great goals to have. But we need to have long-term goals as well. Like, what do you want to be in the long-term in your career. How do you plan every steps to achieve that goal?
+
+Say you are in mechanical engineering, but your heart is in software engineering (mechanical engineering is excellent – I'm just taking this as an example). In that case, you should have a goal for the next few years to translate yourself into a software developer and try to seek more roles more opportunities in the software industry.
+
+I can tell you my story, as I think it'll help give you some perspective. I set myself a long term career goal to transition from my regular multi-national corporation job and start my career full time as an independent teacher and content creator. It took me four years to realize it, but without that goal it would have been impossible for me to chase my passion.
+
+You may ask, will I be able to fulfill all the goals in my life? Well, maybe not. Still, it's important to have some and prioritize the most important ones. That way, even if you can't achieve some, you may identify a few more new goals along the way.
+
+You may have a different way of going about it. But, if you don't have a starting point, you do not have anything to work toward and chase. Your career may become stagnant.
+
+If you don't have any career goals for yourself right now, take some time to come up with a couple realistic goals. Here's some advice on [how to set SMART goals you can actually achieve](https://www.freecodecamp.org/news/how-to-set-smart-goals-you-can-achieve/).
+
+## 2\. You Fail to Recognize Your Potential
+
+
+
+> **Human potential** is the capacity for humans to **improve** themselves through **studying**, **training**, and **practice**, to reach the limit of their ability to develop **aptitudes** and **skills**. – Definition of Human Potential from Wikipedia.
+
+For us, the software developers, is about improving ourselves through practice, training, and study to reach the heights of our ability. But many of us do not know our potential at the start our careers. We figure it out gradually, and when we become aware of it, this helps us improve our careers.
+
+When you know your potential, someone else will not dictate how to shape your career. Instead, you will be able to identify what would be good for you based on your strengths and where you need to bridge the gaps.
+
+But you may ask, "How do I know my potential?". That's where having a goal and working towards it helps. Say you have a goal of mastering machine learning and data science to have a career as a data scientist. As you work towards this goal, you will find the areas where you excel, and other areas where you need to work especially hard. You figure out your potential as you work towards this goal.
+
+Also, try not to settle for unimportant things. Constantly challenge yourself to produce better and more significant outcomes. When you do so, you discover your true potential in a much better way.
+
+## 3\. You Don't Take the Time to Network
+
+
+
+Hey, we're gonna talk about something other than computer networking here. We will focus on human-to-human networking. We are going to talk about socializing. But why?
+
+Networking or socializing with like-minded people, talking to them, and getting inspired by their work are as important as learning to code in programming. You might be a great programmer and fantastic coder. But suppose you do it in a silo. In that case, no one knows you or what you're capable of, so you will most likely lose out on more significant opportunities in your career.
+
+When you socialize and network with others in the tech space, you may find a meaningful community to join. You'll be able to discuss important topics with like-minded people who have interests similar to yours – and this can help you multiply your growth by many times.
+
+This is one mistake I made in my career for several years, as I was unaware of its vast potential. Be active on platforms like LinkedIn, follow people you'd like to connect with on tech Twitter (now X), and make authentic connections with them. Spending mindful time on these platforms, and at in-person events as you're able, can really help boost your career.
+
+Check out the `You Miss Out on Learning Opportunities` section below for some real-life tips on how to reach out and connect with people.
+
+## 4\. You Waste Your Precious Time
+
+
+
+"Wasting time" means not effectively utilizing your time. Would you agree that time is precious? Using and managing your time properly will help your career and life in general.
+
+To clarify, watching a movie, going out with your friends and family, participating in festive activities, and so are not wasting time. You need these to balance out the time you spend working.
+
+Rather, I'm more concerned about the tasks you may have to perform that take away from your "focus time" at work.
+
+Let me walk you through a few situations:
+
+You are working on a task, and here comes some notifications on your phone. You pause whatever you are doing and jump on your phone to see what's happening on that side of the world. The notification may take you 10-15 seconds to read, but you then spend 10 minutes browsing the phone.
+
+This is a habit many of us have built in recent times. And then when you get back to your work, your brain has to recalculate and bring you back to the topic at hand – where you were, and what you were doing – and get you started with the task gain. This context switching is costly, and the same amount of focus may not be possible.
+
+The best way of tackle a situation like this is,
+
+* Switch off the phone's internet while you're working if you do not need it. You can switch it on when you take breaks, maybe at lunch time.
+* You can also set your phone in "Do Not Disturb" mode while your work needs your utmost attention. Just make sure you add some of your family and friend's contacts as emergency contacts so that only a limited set of people can reach out to you during those times in case of any emergencies.
+
+Let's talk about another situation. Suppose you need to prepare and send a design doc to a senior dev for review. But instead, you spend time on something low priority or some little luxury that delayed preparing the doc. You keep postponing until it's become an urgent thing that you'll have to do within a limited time.
+
+This act of delaying something knowingly is called `procrastination`, an ultimate way to kill time. There are some well-known and proven methods to tackle procrastination.
+
+* The first step is to realize and admit to yourself that you procrastinate.
+* Then list out your distractors. This list may vary from person to person. Remove these distractors. It could be your phone, TV, novels, anything.
+* Break down your deliverables into smaller tasks. Achieve them one by one and give yourself a pat on your back once you've finished each small task.
+* Take small breaks and come back to the point where you left off on your task to continue with a fresh brain.
+
+Instead of finding yourself in these types of situations, use your time wisely. If you have to get something done, get it done. When you're procrastinating, something that depends on one task may also get delayed, creating a cycle of time waste, frustrations, and complicated situations.
+
+## 5\. You Neglect Upskilling
+
+
+
+`Upskilling` means getting better at your current skill or acquiring relevant new skills. It is essential to upskill at any and all stages of your career.
+
+One of the common mistakes we make is that we stop upskilling after a few years in our professional life. We get used to the projects, domains, technologies, and environments that create a comfort zone around us. Upskilling is always about coming out of that comfort zone.
+
+Here are a few common excuses we give to ourselves when it comes to upskilling:
+
+* I already have a lot of work at the office or assignments in university.
+* I need to have a personal life.
+* I am happy with whatever I know now, and my work only demands so much.
+* There is so much to learn and it is never ending (sigh!).
+
+But you really don't need that much time in a week to up-skill. You just need to have a plan and to stay consistent in executing it. Set just 1 hour aside in your day. Fork it out from any non-urgent activities and plan your learning schedule in that one hour.
+
+In this one hour, here are some things you can do:
+
+* Assess the gaps, weaknesses, and strengths in your technical and non technical abilities.
+* List them out in a place where you can easily get back to them and make modifications.
+* Prioritize them based on your current needs and near future goals.
+* Time-box each of the items so that you can get something tangible within a specified duration. For example, you want to do a certification on cloud computing within a month, or the Responsive Web Design course from freeCodeCamp over the next few weeks, and so on.
+* Start working on these defined tasks. You may find many resources on internet. Glance over them to create an index of resources that you can understand easily and relate to well.
+* Read and watch tutorials, but also practice hard.
+* Finally, recognize your progress.
+
+You may ask, is that one hour really enough? And I will tell you – it works like magic if you keep it up. Upskilling is not a race or sprint. It needs time, consistency, and perseverance to get from the one end to other.
+
+Have you heard about the power of tiny gains?
+
+
+
+Credit: James Clear
+
+It is a strategy of being just 1% better every day. If you continue to do that for a year, you get almost 38% better at the end of the year. Being 1% worse does the opposite. The strategy was represented in mathematical graphs by James Clear in explanation of [Continuous improvements and how it works](https://jamesclear.com/continuous-improvement).
+
+Upskilling can also help you out a lot if you're preparing for the job search. The way the tech industry is moving, we may not be able to avoid layoffs – but we can be better prepared to get our next job faster. And that becomes much more attainable when you stay relevant and continue learning new things.
+
+## 6\. You Don't Ask for What You Want
+
+
+
+Let me start by sharing an experience of mine. Back in the early 2000s when I was a fresher, I had to attend a meeting with some of the project leads and the manager. We were discussing how to modernize our product with HTML5 features.
+
+I was aware of HTML5, and every time a discussion point was raised, I thought of adding to it, but I didn't. I thought of asking some valuable questions, but I didn't. I felt that in order to ask something in a meeting, I needed a lot of guts! I was wrong.
+
+Oftentimes in your career journey, if you do not ask, you simply won't get what you want or deserve. If someone has some knowledge and you lack it, ask about it. If you have a questiona bout something, ask before you commit to the work. Ask about your promotion, a salary hike, career growth, and anything that is related to your career. There is no such thing as a silly question when it comes to your career growth.
+
+## 7\. You Only Focus on the Money
+
+
+
+Come on, money is important. But is it the only important thing, especially in the context of switching jobs or working towards your career goals? No, certainly not.
+
+When you plan to switch jobs, you also need to look into other factors like work culture, the amount of time you need to spend at the office working, whether it's going to be more stressful compared to the compensation you'll be getting, and so on.
+
+I would certainly look into the following factors along with the compensation (the money part) to make an informed decision about my job switching:
+
+* What will be my technical growth and learning opportunities?
+* What will the work environment be like? Remote/Work From Office/Hybrid? How will that impact me?
+* What skills (both tech and soft) will I be able to learn in the new position?
+* What kind of employee benefits will I get compared to my current organization?
+* Will my work-life balance be impacted positively?
+* What are the company's vision, culture, and values?
+
+Then when you're considering the salary, be careful and make sure you understand the breakdown. What percentage of the CTC comes from any bonus? Is it inclusive or exclusive of CTC? How does the bonus payout happen? If the company doesn't do well in a fiscal year, will you get paid less? Are there stock options or other benefits they pay out instead of cash? All this matters.
+
+The mistake people often make is that they see only the `money` figure as the most important part of a job offer. Make sure you talk to someone from the company, do your research, and learn about what else they're offering as we mentioned above.
+
+## 8\. You Neglect Work-Life Balance
+
+
+
+Another mistake you might make is not balancing your work and life. The last thing you want is to `burn out` at the cost of things you love the most, like your friends, family, and long-term career.
+
+We must learn to prioritize things, and this includes both work and personal life. Your priority list for the day should not have only work related items. While it's important to ship a bug fix, it is also essential to accompany your kids to their soccer games or school plays, or make time to go on a date with your partner, or do something nice for yourself.
+
+Do not be afraid to say "No". At the same time, don't be arrogant when you accept or decline tasks. This is important to keep a healthy work-life balance. When you already have plenty on your plate, trying to accommodate more or do more will only spill over and negatively affect your work-life balance.
+
+So say no when you need to, communicate your intentions ahead of time when possible, and proactively ask for what tasks you'd like to work on when your plate has room for more.
+
+For a long time in my career, I attended meetings late at night to match the timezones of my customers and other colleagues. Then, slowly, it started affecting my health and productivity.
+
+When I thought about it more carefully, I discovered a couple of things. First, I realized that I didn't have to attend all the meetings, and that I could request that they take place in my clients' evenings sometimes. That way we'd both be taking turns compromising. And it worked.
+
+At times, our habits drive us towards the work-life imbalance. For example, staying late at office while the same work can wait till the next morning is a classic example of a habit that may lead to health issues and frustrations in a long run.
+
+We all need to find a way to sustain both work and life. So plan ahead, and stick to your schedule as much as possible. There might be exceptions where you have to give one thing priority above another – but do not allow the exception to become the norm.
+
+## 9\. You Miss Out on Learning Opportunities
+
+
+
+If you have the opportunity to learn from a person who specializes in a particular field, grab it. If you use social media platforms like LinkedIn and X/Twitter wisely, it can lead you to the people who share great insights about subjects you're interested in.
+
+A quick tip for you:
+
+When you send someone a connection request on LinkedIn/X, take some time to introduce yourself. Things that you can mention briefly:
+
+* What did you find unique about the person you want to connect to?
+* A bit about yourself, introducing some of your uniqueness, too.
+* Why do you want to connect?
+
+==Build authentic connections to get the best out of it. Then once you're connected, here are a few things you can do:==
+
+* ==Show interest in their posts.==
+* ==Engage with discussions by commenting or sharing posts.==
+* ==Repost with your thoughts==
+* ==Exchange ideas, or even build things together!==
+
+==A strong social connection may help you in getting information faster. You may learn about a new release of a library/framework/product, how an industry is moving, how certain technologies might impact your work, and so on.==
+
+Apart from learning a lot, you may also get to know about job openings, hirings, and references. After all, companies have also started recruiting talent from social media pages.
+
+Also, being part of a forum like the [freeCodeCamp forum](https://forum.freecodecamp.org/) can be helpful for networking and learning as well. It is also a place for you to share solutions to a problem, talk about what you've learned, and make yourself visible gradually.
+
+When we learn from someone, we not only come to understand what they've achieved or how they did it, but we also learn about the struggles, failures, and how they made the turnaround. Learning from someone else's experience can help accelerate your career journey. Don't make the mistake of living in a silo and missing out on these opportunities.
+
+## 10\. You Can't See the Bigger Picture
+
+
+
+By `Big Picture`(or Bigger Picture), I mean understanding and developing a wider perspective on your career as a whole. It is about your ability to consider and assess many different aspects of a situation, rather than focusing on just the minute details.
+
+As developers, we're supposed to implement features, do bug fixes, maintain code, and deliver quality software to our end-users. That's great!
+
+But, we need to think beyond the individual tasks assigned to us. Our understanding of the overall project goals, the user acceptance criteria, delivery mechanisms, and perspectives of other engineers is key. And so is judging the impact of our work, as it will help us get the big picture of a project.
+
+Suppose your product manager wants your team to build user interfaces that also cater to the needs of specially-abled and visually challenged users. In this case, you and your team members must see the bigger picture around `Accessibility`.
+
+If your designer doesn't define the site's colors accordingly, or the developers do not implement keyboard accessibility along with ARIA roles and attributes, then they're missing the bigger picture.
+
+Another example could be over-optimizing performance while your users do not care about it. Your users may be waiting to get a feature ASAP so it can help them achieve their business goals. But by addressing unnecessary optimizations, you may be delaying that release and missing crucial deadlines.
+
+Missing the bigger picture may lead to a lack of synergy in your organization. It can also result in software products that need multiple iterations to meet customer needs because those needs weren't understood at the beginning. This can cause you to miss deadlines and do more work, and can greatly increase the cost to your client.
+
+Along with understanding "what" tasks you need to perform, also ask "why" your tasks are important and how they will impact the rest of the project or other people's work.
+
+Irrespective of what you build, how big or small it is, how glorified or dull is the outcome, you need to know the impact of it on end users and your internal customers (like product/project managers, quality assurance team, documentation team, whoever).
+
+Once you look at the bigger picture and act accordingly, your margin of error reduces automatically.
+
+## Some More Advice and Wrapping Up
+
+I wanted to share all this career advice with you because I have been on the other side and learned the hard way. Before I move on to write my next article or record my next video, one more quick tip for you: make sure you work to build up your finances.
+
+Financial independence brings peace and the mental stability to think wildly about things you want to pursue in your career. But getting to the point of financial stability is not an overnight thing. You need to plan, save, and invest wisely such that your money grows faster than your age.
+
+I am not a finance expert, but I relied on some good ones and took their suggestions early on. If you have the opportunity and mindset to build your finances for the future, the time is now.
+
+That's all for now. I hope you found this article informative and insightful. I regularly publish meaningful posts on my [GreenRoots Blog](https://blog.greenroots.info/), you may find them helpful, too.
+
+Let's connect.
+
+* I am an educator on my YouTube channel, `tapaScript`. Please [SUBSCRIBE](https://www.youtube.com/tapasadhikary?sub%5Fconfirmation=1) to the channel if you want to learn JavaScript, ReactJS, Next.js, Node.js, Git, and all about Web Development in the fundamental way.
+* [Follow me on X (Twitter](https://twitter.com/tapasadhikary)) or [LinkedIn](https://www.linkedin.com/in/tapasadhikary/) if you don't want to miss the daily dose of Web Development and Programming Tips.
+* Find all my public speaking talks [here](https://www.tapasadhikary.com/talks).
+* Check out and follow my Open Source work on [GitHub](https://github.com/atapas).
+
+See you soon with my next article. Until then, please take care of yourself, and stay happy.
+
+---
+
+---
+
+ Learn to code for free. freeCodeCamp's open source curriculum has helped more than 40,000 people get jobs as developers. [Get started](https://www.freecodecamp.org/learn/)
\ No newline at end of file
diff --git a/Read Later/2023-11-21 - Conventional Commits.md b/Read Later/2023-11-21 - Conventional Commits.md
new file mode 100644
index 0000000..049e2db
--- /dev/null
+++ b/Read Later/2023-11-21 - Conventional Commits.md
@@ -0,0 +1,265 @@
+---
+id: 2a685647-d920-4ba6-b837-3ee29a2f7f10
+title: |
+ Conventional Commits
+status: ARCHIVED
+tags:
+ - read-later
+date_added: 2023-11-21 16:36:37
+url_omnivore: |
+ https://omnivore.app/me/https-www-conventionalcommits-org-en-v-1-0-0-18bf36268eb
+url_original: |
+ https://www.conventionalcommits.org/en/v1.0.0/
+---
+
+# Conventional Commits
+
+## Highlights
+
+The commit message should be structured as follows:
+
+---
+
+```fortran
+[optional scope]:
+
+[optional body]
+
+[optional footer(s)]
+```
+
+[source](https://omnivore.app/me/https-www-conventionalcommits-org-en-v-1-0-0-18bf36268eb#0a71a3f4-0b81-4ccf-849b-f45c65951d5b)
+
+---
+
+## Specification
+
+The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in [RFC 2119](https://www.ietf.org/rfc/rfc2119.txt).
+
+1. Commits MUST be prefixed with a type, which consists of a noun, `feat`, `fix`, etc., followed by the OPTIONAL scope, OPTIONAL `!`, and REQUIRED terminal colon and space.
+2. The type `feat` MUST be used when a commit adds a new feature to your application or library.
+3. The type `fix` MUST be used when a commit represents a bug fix for your application.
+4. A scope MAY be provided after a type. A scope MUST consist of a noun describing a section of the codebase surrounded by parenthesis, e.g., `fix(parser):`
+5. A description MUST immediately follow the colon and space after the type/scope prefix. The description is a short summary of the code changes, e.g., _fix: array parsing issue when multiple spaces were contained in string_.
+6. A longer commit body MAY be provided after the short description, providing additional contextual information about the code changes. The body MUST begin one blank line after the description.
+7. A commit body is free-form and MAY consist of any number of newline separated paragraphs.
+8. One or more footers MAY be provided one blank line after the body. Each footer MUST consist of a word token, followed by either a `:` or `#` separator, followed by a string value (this is inspired by the[git trailer convention](https://git-scm.com/docs/git-interpret-trailers)).
+9. A footer’s token MUST use `-` in place of whitespace characters, e.g., `Acked-by` (this helps differentiate the footer section from a multi-paragraph body). An exception is made for `BREAKING CHANGE`, which MAY also be used as a token.
+10. A footer’s value MAY contain spaces and newlines, and parsing MUST terminate when the next valid footer token/separator pair is observed.
+11. Breaking changes MUST be indicated in the type/scope prefix of a commit, or as an entry in the footer.
+12. If included as a footer, a breaking change MUST consist of the uppercase text BREAKING CHANGE, followed by a colon, space, and description, e.g.,_BREAKING CHANGE: environment variables now take precedence over config files_.
+13. If included in the type/scope prefix, breaking changes MUST be indicated by a`!` immediately before the `:`. If `!` is used, `BREAKING CHANGE:` MAY be omitted from the footer section, and the commit description SHALL be used to describe the breaking change.
+14. Types other than `feat` and `fix` MAY be used in your commit messages, e.g., _docs: update ref docs._
+15. The units of information that make up Conventional Commits MUST NOT be treated as case sensitive by implementors, with the exception of BREAKING CHANGE which MUST be uppercase.
+16. BREAKING-CHANGE MUST be synonymous with BREAKING CHANGE, when used as a token in a footer.
+
+[source](https://omnivore.app/me/https-www-conventionalcommits-org-en-v-1-0-0-18bf36268eb#5670099d-60fe-4b9c-82b9-814e423c0e61)
+
+---
+
+### What do I do if the commit conforms to more than one of the commit types?
+
+Go back and make multiple commits whenever possible. Part of the benefit of Conventional Commits is its ability to drive us to make more organized commits and PRs.
+
+[source](https://omnivore.app/me/https-www-conventionalcommits-org-en-v-1-0-0-18bf36268eb#6ae81ced-efe6-464a-8026-c2f286faf4b7)
+
+---
+
+### How does this relate to SemVer?
+
+`fix` type commits should be translated to `PATCH` releases. `feat` type commits should be translated to `MINOR` releases. Commits with `BREAKING CHANGE` in the commits, regardless of type, should be translated to `MAJOR` releases.
+
+[source](https://omnivore.app/me/https-www-conventionalcommits-org-en-v-1-0-0-18bf36268eb#6876934a-5761-49f8-8905-3153e5d667b7)
+
+---
+
+## Original
+
+## [](#summary)Summary
+
+The Conventional Commits specification is a lightweight convention on top of commit messages. It provides an easy set of rules for creating an explicit commit history; which makes it easier to write automated tools on top of. This convention dovetails with [SemVer](http://semver.org/), by describing the features, fixes, and breaking changes made in commit messages.
+
+==The commit message should be structured as follows:==
+
+---
+
+```fortran
+{post.content}
+ {signedIn && } +Count: {count}
+Square: {memoizedValue}
+ + setOtherState(e.target.value)} /> +Count: {count}
+This is a dynamically loaded component!
+