<?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: Edwin Torres</title>
    <description>The latest articles on DEV Community by Edwin Torres (@codesandtags).</description>
    <link>https://dev.to/codesandtags</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%2F165217%2Fcb29cc7b-0a4f-4f9d-b68e-11f3e8684c69.png</url>
      <title>DEV Community: Edwin Torres</title>
      <link>https://dev.to/codesandtags</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/codesandtags"/>
    <language>en</language>
    <item>
      <title>Fundamentals of Software Architecture Book - Part 2</title>
      <dc:creator>Edwin Torres</dc:creator>
      <pubDate>Sat, 12 Aug 2023 11:02:40 +0000</pubDate>
      <link>https://dev.to/codesandtags/fundamentals-of-software-architecture-book-part-2-1go8</link>
      <guid>https://dev.to/codesandtags/fundamentals-of-software-architecture-book-part-2-1go8</guid>
      <description>&lt;h2&gt;
  
  
  Fundamentals of Software Architecture
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Book Details
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;📖 &lt;strong&gt;Title&lt;/strong&gt;: &lt;a href="https://www.oreilly.com/library/view/fundamentals-of-software/9781492043447/" rel="noopener noreferrer"&gt;Fundamentals of Software Architecture&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;✍️ &lt;strong&gt;Author&lt;/strong&gt;: Mark Richards, Neal Ford&lt;/li&gt;
&lt;li&gt;📆 &lt;strong&gt;Publication Year&lt;/strong&gt;: 2020&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Summary
&lt;/h3&gt;

&lt;p&gt;Here I have the relevant points to me of the book Fundamentals of Software Architecture by Mark Richards and Neal Ford. This part is focused on Architecture characteristics and fitness functions.&lt;/p&gt;




&lt;h2&gt;
  
  
  Chapter 5: Identifying Architecture Characteristics
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Give a reason why it is a good practice to limit the number of characteristics (“-ilities”) an architecture should support.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🤓 It's good practice to limit the number of "-ilities" because each characteristic can introduce complexity into the architecture, potentially affecting its performance, maintainability, and other aspects. Moreover, some characteristics can conflict with others, making it a balancing act to satisfy all needs. Focusing on the most critical characteristics ensures a lean and effective architecture.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. True or false: most architecture characteristics come from business requirements and user stories.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🤓 &lt;strong&gt;False&lt;/strong&gt;. While business requirements and user stories do influence the architecture characteristics, they are not the sole sources. Architecture characteristics are often also derived from technical constraints, non-functional requirements, or the strategic direction of the organization.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. If a business stakeholder states that time-to-market (i.e., getting new features and bug fixes pushed out to users as fast as possible) is the most important business concern, which architecture characteristics would the architecture need to support?&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%2Fwww.codesandtags.io%2Fblog%2Fimages%2Fbooks%2Fsoftware-architecture-characteristics-table.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%2Fwww.codesandtags.io%2Fblog%2Fimages%2Fbooks%2Fsoftware-architecture-characteristics-table.png" alt="Architectural Characteristics Table"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🤓 The architecture would need to support characteristics such as&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Agility&lt;/strong&gt; (for ease of implementing new features and fixing bugs)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deployability&lt;/strong&gt; (for fast and efficient deployment processes)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Testability&lt;/strong&gt; (to quickly verify new features and bug fixes).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;4. What is the difference between scalability and elasticity?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🤓 &lt;strong&gt;Scalability&lt;/strong&gt; is the ability of a system to handle increased load by adding more resources or using existing resources more efficiently. &lt;strong&gt;Elasticity&lt;/strong&gt;, on the other hand, is the ability of a system to dynamically scale up and down based on the demand, often realized through cloud-based infrastructures.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. You find out that your company is about to undergo several major acquisitions to significantly increase its customer base. Which architectural characteristics should you be worried about?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🤓 The significant increase in the customer base would mean you should be particularly concerned about :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Scalability&lt;/strong&gt; (to handle the increased load)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Performance&lt;/strong&gt; (to ensure system responsiveness under increased load)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interoperability&lt;/strong&gt; (if the acquisitions involve integrating with other systems).&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Chapter 6: Measuring and Governing Architecture Characteristics
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Why is cyclomatic complexity such an important metric to analyze for architecture?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🤓 &lt;strong&gt;Cyclomatic complexity is a measure of the number of linearly independent paths through a program's source code&lt;/strong&gt;, essentially assessing its complexity. High cyclomatic complexity often indicates that a system might be hard to maintain, understand, and modify. Thus, it can serve as an early warning signal for potential architectural problems, encouraging refactoring or redesign to ensure simplicity and maintainability.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. What is an architecture fitness function? How can they be used to analyze an architecture?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🤓 An architecture fitness function is a way to quantitatively measure an architectural characteristic to determine how well the architecture aligns with the intended design principles. They serve as a guide to developers by enforcing architectural constraints and driving architectural decisions. Fitness functions can be used to continually assess and validate that the evolving architecture remains fit for its purpose throughout its lifecycle.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Provide an example of an architecture fitness function to measure the scalability of an architecture.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🤓 An example of a fitness function for scalability could be the response time of the system as load increases. You could simulate a certain number of users (for instance, 10,000 users) hitting your system simultaneously, and measure the response time. If the response time stays within acceptable boundaries, your system can be considered scalable to that extent.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. What is the most important criteria for an architecture characteristic to allow architects and developers to create fitness functions?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🤓 The most important criteria for an architecture characteristic is that it must be &lt;strong&gt;quantifiable&lt;/strong&gt; and &lt;strong&gt;measurable&lt;/strong&gt;. Fitness functions are objective metrics, so the architectural characteristic they are measuring must be translated into something that can be measured consistently and accurately. &lt;strong&gt;If a characteristic can't be measured, it can't be tracked or evaluated through a fitness function&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Chapter 7: Scope of Architecture Characteristics
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. What is an architectural quantum, and why is it important to architecture?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🤓 An architectural quantum is the smallest independent, deployable unit in an architecture. The quantum often corresponds to a microservice in a microservices architecture. The concept is important because it helps architects design systems that are modular, loosely coupled, and can evolve independently.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Assume a system consisting of a single user interface with four independently deployed services, each containing its own separate database. Would this system have a single quantum or four quanta? Why?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🤓 This system would have four quanta. Each of the four services is independently deployable and contains its own database, thus each service is an architectural quantum.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Assume a system with an administration portion managing static reference data (such as the product catalog, and warehouse information) and a customer-facing portion managing the placement of orders. How many quanta should this system be and why? If you envision multiple quanta, could the admin quantum and customer-facing quantum share a database? If so, in which quantum would the database need to reside?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🤓 This system would most likely have two quanta - one for the administration portion and one for the customer-facing portion. Each has distinct responsibilities and could evolve independently. While the two quanta could technically share a database, it would be better for each to have its own to maintain the principle of independent deployability. Sharing a database would introduce a level of coupling that could inhibit the ability to deploy and scale each quantum independently. If they were to share a database, it would reside in neither quantum specifically, but would become a shared resource, which would need to be carefully managed to avoid conflicts and ensure consistency.&lt;/p&gt;




&lt;h2&gt;
  
  
  Chapter 8: Component-Based Thinking
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. We define the term component as a building block of an application—something the application does. A component usually consist of a group of classes or source files. How are components typically manifested within an application or service?&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%2Fwww.codesandtags.io%2Fblog%2Fimages%2Fbooks%2Fsoftware-architecture-component-levels.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%2Fwww.codesandtags.io%2Fblog%2Fimages%2Fbooks%2Fsoftware-architecture-component-levels.png" alt="Architectural Characteristics Table"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🤓 Components are usually manifested within an application or service as distinct units of functionality. They can be organized as modules, packages, or services, each encapsulating a set of related functionalities. In object-oriented languages, a component can comprise multiple classes, interfaces, or packages. In a microservices architecture, each microservice can be considered a component.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. What is the difference between technical partitioning and domain partitioning? Provide an example of each.&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%2Fwww.codesandtags.io%2Fblog%2Fimages%2Fbooks%2Fsoftware-architecture-technical-and-domain-partioning.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%2Fwww.codesandtags.io%2Fblog%2Fimages%2Fbooks%2Fsoftware-architecture-technical-and-domain-partioning.png" alt="Architectural Characteristics Table"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🤓 &lt;strong&gt;Technical partitioning&lt;/strong&gt; organizes components based on their technical role (like UI, business logic, data access), while &lt;strong&gt;domain partitioning&lt;/strong&gt; organizes components based on business functionality or domain concepts. An example of technical partitioning could be a &lt;strong&gt;three-tier architecture with separate layers&lt;/strong&gt; for presentation, business logic, and data storage. An example of domain partitioning &lt;strong&gt;could be a microservices architecture&lt;/strong&gt; where each service corresponds to a specific business capability, like customer management or order processing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. What is the advantage of domain partitioning?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🤓 &lt;strong&gt;Domain partitioning&lt;/strong&gt; aligns the software system with the business domain, making the system easier to understand and modify according to business changes. It facilitates independent development and deployment of different business capabilities, which can improve &lt;strong&gt;speed, scalability, and resilience&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Under what circumstances would technical partitioning be a better choice over domain partitioning?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🤓 Technical partitioning might be a better choice when building simple or monolithic applications where business functionality is not complex or diversified enough to justify the overhead of domain partitioning. It might also be preferred when the team's technical expertise significantly outweighs their understanding of the business domain.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. What is the entity trap? Why is it not a good approach for component identification?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🤓 The entity trap is a common mistake made when identifying components based on entities in the business domain, &lt;strong&gt;which often leads to anemic domain models with components that lack meaningful behavior&lt;/strong&gt;. This approach is problematic because it encourages a data-centric view of the system rather than focusing on the behavior and responsibilities of components, which can lead to poor encapsulation and high coupling.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. When might you choose the workflow approach over the Actor/Actions approach when identifying core components?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🤓 The &lt;strong&gt;workflow approach&lt;/strong&gt; might be preferred when the system's primary purpose is to facilitate a complex series of steps or transactions, where the sequence and interaction of operations are critical. On the other hand, the &lt;strong&gt;Actor/Actions&lt;/strong&gt; approach could be better when the system is more centered around user interactions or when you have distinct user roles performing different actions on the system. The best choice depends on the specific context and requirements of the system.&lt;/p&gt;

</description>
      <category>books</category>
      <category>software</category>
      <category>architecture</category>
      <category>systemdesign</category>
    </item>
    <item>
      <title>Fundamentals of Software Architecture Book - Part 1</title>
      <dc:creator>Edwin Torres</dc:creator>
      <pubDate>Mon, 07 Aug 2023 15:34:26 +0000</pubDate>
      <link>https://dev.to/codesandtags/fundamentals-of-software-architecture-book-part-1-ela</link>
      <guid>https://dev.to/codesandtags/fundamentals-of-software-architecture-book-part-1-ela</guid>
      <description>&lt;h2&gt;
  
  
  Fundamentals of Software Architecture
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Book Details
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;📖 &lt;strong&gt;Title&lt;/strong&gt;: &lt;a href="https://www.oreilly.com/library/view/fundamentals-of-software/9781492043447/" rel="noopener noreferrer"&gt;Fundamentals of Software Architecture&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;✍️ &lt;strong&gt;Author&lt;/strong&gt;: Mark Richards, Neal Ford&lt;/li&gt;
&lt;li&gt;📆 &lt;strong&gt;Publication Year&lt;/strong&gt;: 2020&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This year &lt;strong&gt;2023&lt;/strong&gt; I've started to read more books, and I've decided to write a summary of each book I read. This is the first one, and I hope you enjoy it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Summary
&lt;/h3&gt;

&lt;p&gt;This book is a great introduction to software architecture, it covers the basics of software architecture, and it's a great starting point for anyone who wants to learn more about software architecture. Here are some of the topics covered in this book and I want to answer the self-assessment questions for each chapter.&lt;/p&gt;




&lt;h2&gt;
  
  
  Chapter 1: Introduction
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. What are the four dimensions that define software architecture?&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%2Fwww.codesandtags.io%2Fblog%2Fimages%2Fbooks%2Fsoftware-architecture-four-dimensions.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%2Fwww.codesandtags.io%2Fblog%2Fimages%2Fbooks%2Fsoftware-architecture-four-dimensions.png" alt="four dimensions software architecture"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Architecture characteristics&lt;/strong&gt;: Define the success criteria of a system, which is generally orthogonal to the functionality of the system. Notice that all of the characteristics listed do not require knowledge of the functionality of the system, yet they are required in order for the system to function properly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Architecture Decisions&lt;/strong&gt;: Define the rules for how a system should be constructed. For example, an architect might make an architecture decision that only the business and services layers within a layered architecture can access the database.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Structure&lt;/strong&gt;: Refers to the type of architecture style (or styles) the system is implemented in (such as microservices, layered, or microkernel)&lt;/li&gt;
&lt;li&gt;Design principles: Define a guideline of principles rather than a hard-and-fast rule.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. What is the difference between an architecture decision and a design principle?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Architecture decisions form the constraints of the system and direct the development teams on what is and what isn’t allowed.&lt;/li&gt;
&lt;li&gt;Design principles are guidelines that help development teams make decisions about how to implement the system.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. List the eight core expectations of a software architect&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🤓 The eight core expectations of a software architect are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Make architecture decisions&lt;/li&gt;
&lt;li&gt;Continually analyze the architecture&lt;/li&gt;
&lt;li&gt;Keep current with latest trends&lt;/li&gt;
&lt;li&gt;Ensure compliance with decisions&lt;/li&gt;
&lt;li&gt;Diverse exposure and experience&lt;/li&gt;
&lt;li&gt;Have business domain knowledge&lt;/li&gt;
&lt;li&gt;Possess interpersonal skills&lt;/li&gt;
&lt;li&gt;Understand and navigate politics&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;4. What is the First Law of Software Architecture?&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Everything in software architecture is a trade-off. -- First Law of Software Architecture&lt;/p&gt;

&lt;p&gt;Why is more important than how. -- Second Law of Software Architecture&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Chapter 2: Architectural Thinking
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Describe the traditional approach of architecture versus development and explain why that approach no longer works.&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%2Fwww.codesandtags.io%2Fblog%2Fimages%2Fbooks%2Fsoftware-architecture-traditional-approach.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%2Fwww.codesandtags.io%2Fblog%2Fimages%2Fbooks%2Fsoftware-architecture-traditional-approach.png" alt="Traditional approach architecture vs design"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🤓 The traditional approach implies that architecture is something that is fully defined up front and then merely implemented by developers. However, this approach has been found to have several major drawbacks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Lack of Flexibility&lt;/strong&gt;: Once the architecture is defined, it can be very difficult to change. However, software development is often a highly unpredictable process, and changes in requirements or technologies may necessitate changes in the architecture.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Communication Breakdown&lt;/strong&gt;: Because architects and developers often work in isolation from each other, there can be a lack of understanding and communication between the two groups. Architects may make decisions without fully understanding the implementation implications, and developers may struggle to implement an architecture they had no part in designing.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Reality Gap&lt;/strong&gt;: Architectural designs often look good on paper but may not work as well when actually implemented. This gap between design and reality can lead to problems and delays.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. List the three levels of knowledge in the knowledge triangle and provide an example of each.&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%2Fwww.codesandtags.io%2Fblog%2Fimages%2Fbooks%2Fsoftware-architecture-knowledge-representation.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%2Fwww.codesandtags.io%2Fblog%2Fimages%2Fbooks%2Fsoftware-architecture-knowledge-representation.png" alt="Knowledge representation"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🤓 Our knowledge pyramid illustrates how fundamentally different the role of architect compares to developer. Developers spend their whole careers honing expertise, and transitioning to the architect role means a shift in that perspective, which many individuals find difficult. The architect role requires a different set of skills, and the knowledge pyramid illustrates this shift.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Why is it more important for an architect to focus on technical breadth rather than technical depth?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🤓 Focusing on technical breadth means acquiring a wide-ranging understanding of various technologies, patterns, languages, platforms, and principles. This breadth allows architects to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;See the Big Picture&lt;/strong&gt;: Understand how different components and technologies fit together and influence each other. This is essential when designing complex systems where decisions in one area can significantly impact other areas.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Make Informed Decisions&lt;/strong&gt;: Choose the most suitable technologies and designs for the system's requirements. A broad knowledge allows architects to consider a wider range of options and make more informed decisions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Communicate Effectively&lt;/strong&gt;: Communicate with different stakeholders, including developers, project managers, business stakeholders, and others. Each group may have different areas of expertise and concerns, and a broad understanding helps architects bridge these gaps.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Adapt to Change&lt;/strong&gt;: Stay adaptable and resilient in the face of changing requirements, technologies, and business environments. A wide knowledge base allows architects to learn and adopt new technologies more easily.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, as an architect, it is more beneficial to know that five solutions exist for a particular problem than to have singular expertise in only one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. What are some of the ways of maintaining your technical depth and remaining hands-on as an architect?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;🤓 &lt;strong&gt;Coding&lt;/strong&gt;: Try to spend some of your time coding. This could be writing prototypes, creating proofs of concept, fixing bugs, or contributing to critical parts of the system. This not only helps maintain your coding skills but also gives you firsthand experience with the technologies you're using.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Education&lt;/strong&gt;: Continually educate yourself about new technologies, languages, and methodologies. This can involve reading books, articles, or research papers, attending conferences or webinars, or taking online courses.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Personal Projects&lt;/strong&gt;: Work on personal projects outside of your day-to-day work. This can be a great way to learn new technologies, experiment with different architectures, or just keep your coding skills sharp.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Code Reviews&lt;/strong&gt;: Participate in code reviews. This gives you a chance to see how the architecture is being implemented, spot potential issues, and provide valuable feedback to developers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Pair Programming&lt;/strong&gt;: Occasionally pair program with developers. This is another great way to stay familiar with the codebase and the challenges that developers face.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Prototyping&lt;/strong&gt;: When considering a new technology or architectural approach, create a small prototype. This can provide valuable insights that you wouldn't get from reading about it alone.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Stay Connected with the Developer Community&lt;/strong&gt;: Participate in tech meetups, online forums, open-source projects, and other communities. This can keep you updated on new technologies and best practices, and provide opportunities to learn from others.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By staying hands-on and maintaining technical depth, you'll be a more effective architect. You'll understand the challenges that developers face, make better architectural decisions, and be able to communicate more effectively with your team.&lt;/p&gt;




&lt;h2&gt;
  
  
  Chapter 3 - Modularity
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. What is meant by the term connascence?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🤓 &lt;strong&gt;Connascence&lt;/strong&gt; is a metric used to describe the coupling or the degree of interdependence between two or more parts of a software system.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. What is the difference between static and dynamic connascence?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🤓 &lt;strong&gt;Static connascence&lt;/strong&gt; is coupling that can be determined by examining the source code, while &lt;strong&gt;dynamic connascence&lt;/strong&gt; is coupling that can only be determined when the code is running.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. What does connascence of type mean? Is it static or dynamic connascence?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🤓 &lt;strong&gt;Connascence of type&lt;/strong&gt; is when multiple parts of a program must agree on the type of an entity. It is a form of static connascence.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. What is the strongest form of connascence?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🤓 &lt;strong&gt;Connascence of Identity&lt;/strong&gt; is the strongest form of connascence. It refers to when multiple parts of the system depend on a mutable entity's identity.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. What is the weakest form of connascence?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🤓 &lt;strong&gt;Connascence of Name&lt;/strong&gt;, where multiple parts of the system must agree on the name of an entity, is considered the weakest form of connascence.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Which is preferred within a code base—static or dynamic connascence?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🤓 &lt;strong&gt;Static connascence&lt;/strong&gt; is generally preferred within a code base as it is easier to identify and manage than dynamic connascence.&lt;/p&gt;




&lt;h2&gt;
  
  
  Chapter 4 - Modularity
&lt;/h2&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%2Fwww.codesandtags.io%2Fblog%2Fimages%2Fbooks%2Fsoftware-architecture-characteristics.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%2Fwww.codesandtags.io%2Fblog%2Fimages%2Fbooks%2Fsoftware-architecture-characteristics.png" alt="Architecture Characteristics"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. What three criteria must an attribute meet to be considered an architecture characteristic?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🤓 An attribute must be testable, contribute to the architecture of the system, and provide a way to measure and quantify it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. What is the difference between an implicit characteristic and an explicit one? Provide an example of each.&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%2Fwww.codesandtags.io%2Fblog%2Fimages%2Fbooks%2Fsoftware-architecture-explicit-implicit-characteristics.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%2Fwww.codesandtags.io%2Fblog%2Fimages%2Fbooks%2Fsoftware-architecture-explicit-implicit-characteristics.png" alt="Architecture Characteristics"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🤓 An implicit characteristic is one that is required or assumed but not explicitly stated, like usability. An explicit characteristic is one that is directly stated and designed for, such as response time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Provide an example of an operational characteristic&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🤓 An example of an operational characteristic is availability, which refers to the system's ability to be in a state to perform its designated function during operation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Provide an example of a structural characteristic.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🤓 An example of a structural characteristic is modularity, referring to the degree to which a system's components may be separated and recombined.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Provide an example of a cross-cutting characteristic.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🤓 An example of a cross-cutting characteristic is security, which is the system's ability to resist unauthorized attempts at usage or behavior modification, affecting multiple components of the system.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Which architecture characteristic is more important to strive for—availability or performance?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🤓 The importance of availability versus performance &lt;strong&gt;depends on the specific needs of the system being developed&lt;/strong&gt;. For a critical system where downtime could be costly, availability may be more important. For a system where speed is crucial for user satisfaction, performance may be more important. The context and requirements of the system dictate which characteristic is more important to strive for.&lt;/p&gt;

</description>
      <category>books</category>
      <category>software</category>
      <category>architecture</category>
      <category>systemdesign</category>
    </item>
    <item>
      <title>How to succeed behavioral questions</title>
      <dc:creator>Edwin Torres</dc:creator>
      <pubDate>Mon, 27 Mar 2023 03:42:01 +0000</pubDate>
      <link>https://dev.to/codesandtags/how-to-succeed-behavioral-questions-4dd3</link>
      <guid>https://dev.to/codesandtags/how-to-succeed-behavioral-questions-4dd3</guid>
      <description>&lt;p&gt;Practicing behavioral questions is essential for interview preparation because they allow the interviewer to assess your interpersonal and problem-solving skills, work ethic, and cultural fit with the company. Here are some tips and strategies for preparing for behavioral questions:&lt;/p&gt;

&lt;h2&gt;
  
  
  Understand the purpose
&lt;/h2&gt;

&lt;p&gt;Behavioral questions are designed to evaluate your soft skills, such as teamwork, communication, leadership, adaptability, and conflict resolution. Recognize that interviewers are looking for specific examples from your past experiences to gauge your potential for success in the role.&lt;/p&gt;

&lt;h2&gt;
  
  
  Use the STAR method
&lt;/h2&gt;

&lt;p&gt;The STAR method is a widely used technique for answering behavioral interview questions. It helps structure your response by focusing on a specific example from your past experiences and demonstrating your skills and abilities in a clear, concise manner. The acronym STAR stands for:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Situation&lt;/strong&gt;: Begin by describing the context or background of the situation you faced. Provide enough detail to help the interviewer understand the circumstances, but be concise. This sets the stage for the rest of your answer and helps the interviewer visualize the scenario.&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Example: *&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"In my previous role as a software developer, I was working on a project with a tight deadline, and one of my team members fell ill, leaving us short-staffed."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Task&lt;/strong&gt;: Explain the specific task or goal you needed to accomplish in that situation. This part highlights your responsibility and the challenge you faced.&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Example: *&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"As the team lead, my task was to ensure we met the deadline without compromising the quality of the project, while also managing the increased workload due to my colleague's absence."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Action&lt;/strong&gt;: Describe the specific actions you took to address the task or challenge. Focus on your role and the steps you took, showcasing your skills, abilities, and decision-making process.&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Example: *&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"I assessed the remaining tasks and prioritized them based on importance and time sensitivity. I then redistributed the workload among the team members, making sure to assign tasks based on individual strengths and availability. I also communicated the situation to our manager and requested additional resources. To keep the team motivated, I held daily check-ins to monitor progress and address any concerns."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Result&lt;/strong&gt;: Explain the outcome of your actions, emphasizing the positive impact you had on the situation. Quantify your results whenever possible to demonstrate the tangible benefits of your actions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"As a result, we were able to complete the project on time and within budget, despite being short-staffed. Our manager praised the team for our effective communication and adaptability, and our client was satisfied with the quality of the final product."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;By following the STAR method when answering behavioral questions, you can ensure that your response is well-structured, focused, and clearly demonstrates your skills and abilities. This technique helps you showcase your problem-solving and decision-making skills, making it easier for the interviewer to assess your fit for the role.&lt;/p&gt;

&lt;h2&gt;
  
  
  Research common behavioral questions
&lt;/h2&gt;

&lt;p&gt;Familiarize yourself with common behavioral questions, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tell me about a time when you faced a difficult problem. How did you handle it?&lt;/li&gt;
&lt;li&gt;Describe a situation where you had to collaborate with a difficult colleague.&lt;/li&gt;
&lt;li&gt;Can you provide an example of when you had to lead a team or project? What challenges did - you face, and how did you overcome them?&lt;/li&gt;
&lt;li&gt;How do you handle stressful situations or tight deadlines?&lt;/li&gt;
&lt;li&gt;Prepare specific examples: Reflect on your past experiences (professional, academic, or personal) and identify situations that demonstrate your soft skills. Prepare detailed examples for each situation that follow the STAR method.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Practice your delivery
&lt;/h2&gt;

&lt;p&gt;Rehearse your answers out loud to ensure your responses are clear, concise, and well-structured. Consider practicing with a friend, family member, or mentor who can provide feedback and ask follow-up questions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tailor your answers to the company and role
&lt;/h2&gt;

&lt;p&gt;Research the company's values, culture, and expectations for the role you're interviewing for, and tailor your answers to align with their priorities. This demonstrates your understanding of the company and showcases your fit within the organization.&lt;/p&gt;

&lt;h2&gt;
  
  
  Be honest and authentic
&lt;/h2&gt;

&lt;p&gt;While it's essential to present yourself in the best light, avoid exaggerating or fabricating your experiences. Interviewers can often tell when a candidate is not being genuine, which could harm your credibility.&lt;/p&gt;

&lt;h2&gt;
  
  
  Show self-awareness and growth
&lt;/h2&gt;

&lt;p&gt;When discussing challenging situations or mistakes, emphasize what you learned from the experience and how you've grown as a result. This shows your ability to learn from your mistakes and adapt in the future.&lt;/p&gt;

&lt;p&gt;By practicing behavioral questions using these strategies, you'll be better prepared to demonstrate your soft skills and showcase your fit within the company during the interview process.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--PXrEWO8s--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.codesandtags.io/blog/images/behavioral-questions.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PXrEWO8s--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.codesandtags.io/blog/images/behavioral-questions.jpg" alt="space" width="769" height="691"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>faang</category>
      <category>interview</category>
    </item>
    <item>
      <title>Speed Coding Toptal</title>
      <dc:creator>Edwin Torres</dc:creator>
      <pubDate>Mon, 04 Jul 2022 15:15:40 +0000</pubDate>
      <link>https://dev.to/codesandtags/speed-coding-toptal-1nn1</link>
      <guid>https://dev.to/codesandtags/speed-coding-toptal-1nn1</guid>
      <description>&lt;h2&gt;
  
  
  ¿Cómo abordé un reto de Speed Coding creado por Toptal?
&lt;/h2&gt;

&lt;p&gt;Hace unos días estuve en el &lt;a href="https://collisionconf.com/"&gt;CollisionConf&lt;/a&gt; &lt;em&gt;(Collision is one of the world’s biggest tech conferences)&lt;/em&gt;, donde participaron muchas startups, vinieron speakers de talla mundial, habían inversores buscando oportunidades, CEO/CTO/Directores/Estudiantes con una historia y muchas ganas de aprender.&lt;/p&gt;

&lt;p&gt;Justo faltando un día para que acabara el evento, me encontré en un stand de la empresa Toptal, donde estaba ofreciendo un premio por ganar la mayor cantidad de puntos en una competencia de Speed Coding. Jamás había escuchado de esto, y como la competencia era en JavaScript, me emocioné y decidí participar.&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Cómo era la prueba?
&lt;/h2&gt;

&lt;p&gt;La prueba consistia en resolver en menos de 3 minutos (apróximadamente) unos 15 ejercicios de programación en Javascript, los cuales salían de forma aleatoria, empezando por los fáciles y terminando por el que más complejidad tenía. La interfaz gráfica usaba &lt;a href="https://ace.c9.io/"&gt;Ace Editor&lt;/a&gt;  para ingresar el código esperado, ejecutar los Unit Test y enviar la solución.&lt;/p&gt;

&lt;p&gt;Por cada ejercicio solucionado te dan una serie de puntos, y también dependiendo la cantidad de segundos que te sobren te van dando una bonificación.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QaRzH5X4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.codesandtags.io/blog/static/4a29d084091e96c1b6a860a1a108769a/e0b0e/toptal-speed-coding.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QaRzH5X4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.codesandtags.io/blog/static/4a29d084091e96c1b6a860a1a108769a/e0b0e/toptal-speed-coding.jpg" alt="Toptal Speed Coding Rules" width="800" height="825"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Primera estrategia - Copiando y Pegando
&lt;/h2&gt;

&lt;p&gt;Dado que era mi primer acercamiento al Speed Coding, abordé el tema como todo un novato, empecé a familiarizarme con la interfaz gráfica, fue explorando los ejercicios que tenían, y empecé a guardar las preguntas para solucionarlas una a una con más tiempo.  Una vez tenía todas las preguntas y respuestas, decidí empezar a copiar y pegar las respuestas (ya que es imposible escribir ese código manualmente en ese tiempo). &lt;/p&gt;

&lt;p&gt;Haciendo esto llegué a ganar alrededor de unos 300 puntos, (sin embargo los primeros lugares tenían un poco más de 4000 puntos). En ese momento supe que no era la mejor estrategia y tenia que buscar algo más efectivo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Segunda estrategia - Automatizando envios en la interfaz gráfica
&lt;/h2&gt;

&lt;p&gt;Dado que ya había tenido automatizando flujos en Javascript (En propio navegador usando SetInterval y SetTimeout) y usando algunas herramientas como Selenium o Puppeteer, decidí escoger una de estas.&lt;/p&gt;

&lt;p&gt;En este punto hice varias cosas como:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Identifiqué los selectores del botón enviar.&lt;/li&gt;
&lt;li&gt;Minifiqué y pasé todas las soluciones de JavaScript a un objeto (Map) para identificarlas con el nombre del problema y obtener la solución&lt;/li&gt;
&lt;li&gt;Use una expresión regular para identificar en los selectores cuál era el nombre del problema a resolver.&lt;/li&gt;
&lt;li&gt;Moví el cursor a la primera línea para poner ahí el código de la solución.&lt;/li&gt;
&lt;li&gt;Simulaba un click sobre botón Submit que ejecutaba las pruebas.&lt;/li&gt;
&lt;li&gt;Simulaba un click sobre botón Submit para enviar el ejercicio y moverme al siguiente hasta terminar.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://github.com/codesandtags/speed-coding/blob/main/src/toptal/speed-coding.js"&gt;Ver código fuente - speed-coding.js&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Esta estrategia me permitió subir a un puntaje apróximadamente de unos &lt;code&gt;1,500&lt;/code&gt; puntos.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tercera estrategia - Haciendo peticiones directamente al API
&lt;/h2&gt;

&lt;p&gt;No podía quedarme con la duda, de como abordar mejor este problema así que encontré un articulo creado por Toptal - &lt;a href="https://www.toptal.com/javascript/coding-challenge-retrospective"&gt;Coding Challenge Retrospective&lt;/a&gt;, el cuál me dió una nueva idea y es que en vez de gastar tiempo en la interfaz gráfica, podría reducir significativamente el tiempo haciendo peticiones directamente en el API. De esta manera vi algunos ejemplos que mostraban en el articulo y decidí adaptarlo a mi manera.&lt;/p&gt;

&lt;p&gt;En este punto realicé las siguientes cosas:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Identifiqué en el navegador la forma en que el API hacia las peticiones (eran peticionces POST usando un form-data).&lt;/li&gt;
&lt;li&gt;Creé una función para iniciar el challenge y otra que de manera recursiva empezaba a enviar soluciones hasta que el isChallengeEntryFinished fuera verdadero.&lt;/li&gt;
&lt;li&gt;Me dí cuenta que lo más importante en el API era enviar en sus datos las respuestas de los test con el valor correcto, y esto significaba que tenía que ejecutar localmente las validaciones con mis funciones generadas para cada problema.&lt;/li&gt;
&lt;li&gt;En este punto lo más retante fue identificar la mejor forma de ejecutar las funciones con parámetros variables y ajustar el formato de la respuesta en la petición, como por ejemplo los test_cases y el code.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://github.com/codesandtags/speed-coding/blob/main/src/toptal/speed-coding-api.js"&gt;Ver código fuente - speed-coding-api.js&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Esta estrategia me permitió subir a un puntaje apróximado de  &lt;code&gt;3928&lt;/code&gt; puntos.&lt;/p&gt;

&lt;p&gt;Luego de esto, hice algunas optimizaciones en el código, llegando finalmente a un puntaje de &lt;code&gt;4041&lt;/code&gt; puntos, quedando en el puesto &lt;code&gt;14&lt;/code&gt; de la competencia, quedando a unos &lt;code&gt;18&lt;/code&gt; puntos del primer puesto.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusión
&lt;/h2&gt;

&lt;p&gt;Después de invertir al menos unas &lt;strong&gt;6 horas&lt;/strong&gt; 😅 de la madrugada en este reto, tuve una grata experiencia y disfruté demasiado poder abordar diferentes soluciones, aprendí cosas sobre como mejorar el performance y está claramente que jugando directamente con el API hace una reducción bastante grande en el tiempo, ya que la interfaz gráfica en su renderización, quita milisegundos valiosos.&lt;/p&gt;

&lt;p&gt;Para un futuro, probablemente abordaré la estrategia 1 y 3, adicionandole un valor agregado con la implementación de &lt;a href="https://www.geeksforgeeks.org/how-to-handle-child-threads-in-node-js/"&gt;multiples threads en Nodejs&lt;/a&gt;, e incluso contemplando el uso otros lenguajes de programación como Go. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4BC4IRnn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.codesandtags.io/blog/static/c5b00d9ea43227c052d22976161c005f/7ceee/leaderboard.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4BC4IRnn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.codesandtags.io/blog/static/c5b00d9ea43227c052d22976161c005f/7ceee/leaderboard.png" alt="Leaderboard" width="800" height="576"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>toptal</category>
      <category>speedcoding</category>
      <category>challenges</category>
      <category>node</category>
    </item>
    <item>
      <title>Types of Software Developer</title>
      <dc:creator>Edwin Torres</dc:creator>
      <pubDate>Sat, 19 Mar 2022 20:32:28 +0000</pubDate>
      <link>https://dev.to/codesandtags/types-of-software-developer-24f5</link>
      <guid>https://dev.to/codesandtags/types-of-software-developer-24f5</guid>
      <description>&lt;p&gt;Did you know the term "Software Developer" is too general to describe what does a Software Developer nowadays?.&lt;br&gt;
Well, here I've created the next mind map to let you know the big picture about the different types of Software Developers you can find in the industry.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--59VkAVWe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.codesandtags.io/blog/static/0c3e5da8b02182824273f0f63be423d9/b0b8f/hero.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--59VkAVWe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.codesandtags.io/blog/static/0c3e5da8b02182824273f0f63be423d9/b0b8f/hero.webp" alt="Types of Software Developer" width="800" height="335"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here you can find the full version of the mind map. &lt;a href="https://coggle.it/diagram/YjYZFFhHPaPgcitQ/t/-"&gt;Types of Software Developer&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Types of Software Developers, salaries and jobs
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.glassdoor.com/Search/results.htm?keyword=Front%20end%20developer"&gt;Front-end Developer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.glassdoor.com/Search/results.htm?keyword=Back%20end%20developer"&gt;Back-end Developer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.glassdoor.com/Search/results.htm?keyword=Game%20developer"&gt;Game Developer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.glassdoor.com/Search/results.htm?keyword=Desktop%20developer"&gt;Desktop Developer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.glassdoor.com/Search/results.htm?keyword=Mobile%20developer"&gt;Mobile Developer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.glassdoor.com/Search/results.htm?keyword=Full%20Stack%20developer"&gt;Full Stack Developer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.glassdoor.com/Search/results.htm?keyword=Blockchain%20developer"&gt;Blockchain Developer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.glassdoor.com/Search/results.htm?keyword=Data%20Scientist"&gt;Data Scientist Developer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.glassdoor.com/Search/results.htm?keyword=Middle%20Tier%20Developer"&gt;Middle Tier Developer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.glassdoor.com/Search/results.htm?keyword=Big%20Data%20Developer"&gt;Big Data Developer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.glassdoor.com/Search/results.htm?keyword=Security%20Developer"&gt;Security Developer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.glassdoor.com/Search/results.htm?keyword=Dev%20Ops%20Developer"&gt;Dev Ops Developer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.glassdoor.com/Search/results.htm?keyword=Embedded%20Developer"&gt;Embedded Developer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.glassdoor.com/Search/results.htm?keyword=Graphics%20Developer"&gt;Graphics Developer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.glassdoor.com/Search/results.htm?keyword=Software%20Development%20Engineer%20in%20Test%20(SDET)"&gt;Software Development Engineer in Test (SDET)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>frontend</category>
      <category>backend</category>
      <category>mobile</category>
      <category>developer</category>
    </item>
    <item>
      <title>🤯 How to generate pixel art in your Github activity</title>
      <dc:creator>Edwin Torres</dc:creator>
      <pubDate>Mon, 25 May 2020 19:12:09 +0000</pubDate>
      <link>https://dev.to/codesandtags/how-to-generate-pixel-art-in-your-github-activity-2e6k</link>
      <guid>https://dev.to/codesandtags/how-to-generate-pixel-art-in-your-github-activity-2e6k</guid>
      <description>&lt;p&gt;Do you have lots of white spaces in your Github activity and would you like to fill them with something interesting like &lt;a href="https://es.wikipedia.org/wiki/Pixel_art"&gt;pixel art&lt;/a&gt;?. Then this article is for you.&lt;/p&gt;

&lt;p&gt;To review the original post, you &lt;a href="https://codesandtags.github.io/blog/how-to-generate-pixel-art-in-your-github-activity"&gt;can go here ➡️&lt;/a&gt;. &lt;/p&gt;

&lt;h2&gt;
  
  
  What you will learn here?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;How to create commits in past 🤯&lt;/li&gt;
&lt;li&gt;How to use the &lt;code&gt;Date.toLocaleDateString&lt;/code&gt; method.&lt;/li&gt;
&lt;li&gt;How to play with regular expressions&lt;/li&gt;
&lt;li&gt;How to fill those boring and white Github spaces in your activity. 😏&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to create commits in past 🤯
&lt;/h2&gt;

&lt;p&gt;Okay, I think this is maybe the most important thing in this article 😅, given that it was the main question I made me when I've decided to fill out my white spaces in Github.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Here you will find a &lt;a href="https://stackoverflow.com/questions/23609991/git-github-commit-at-past-date/34639957"&gt;short answer in StackOverflow&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;The long answer is: You need to create a commit adding the date when the commit happened. For more information, please review the &lt;a href="https://git-scm.com/docs/git-commit"&gt;Git documentation&lt;/a&gt;.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git commit --amend --no-edit --date="Fri Nov 6 20:00:00 2015 -0600"

// Explanation
git commit  // Record changes to the repository 
  --amend   // Replace the tip of the current branch by creating a new commit.
  --no-edit  // Use the selected commit message without launching an editor
  --date="Fri Nov 6 20:00:00 2015 -0600" // ⭐️ Override the author date used in the commit.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  How to format the days?
&lt;/h2&gt;

&lt;p&gt;Well, once you know how to create a commit in pass we need to create the correct format for the amount of commits we want. (Are we developers, aren't we? and we like to save time).&lt;br&gt;
In order to avoid extract every part of the date and create boring code repetitions, we can use the power of 💪🏼 built-in functions, like &lt;a href="https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/Date/toLocaleDateString"&gt;toLocaleDateString&lt;/a&gt;. This function allows to create a formatted date (in String), just passing an &lt;a href="https://tc39.es/ecma402/#datetimeformat-objects"&gt;object with the options&lt;/a&gt;.    &lt;/p&gt;

&lt;p&gt;Once formatted the day as we want, the format is not 100% equals to our desired date in the git commit  command. So we need to replace a couple of things.&lt;br&gt;
So that, we can use the &lt;a href="https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/replace"&gt;String.replace&lt;/a&gt; function and the power of regular expressions 💛 and as we are developers and we like the fancy things, we can also use the &lt;a href="https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/concat"&gt;String.concat&lt;/a&gt; function, in order to create immutable strings 😏&lt;/p&gt;

&lt;p&gt;On Internet you can find some pages to play with your regular expressions like &lt;a href="https://regexr.com/"&gt;regexr.com&lt;/a&gt; and &lt;a href="https://rubular.com/"&gt;Rubular&lt;/a&gt;. Enjoy them!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;getFormattedDay&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;stringDate&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;date&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nb"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;stringDate&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;options&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;weekday&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;short&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
      &lt;span class="na"&gt;month&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;short&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
      &lt;span class="na"&gt;day&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;numeric&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;hour&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2-digit&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;minute&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2-digit&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;second&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2-digit&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;year&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;numeric&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
    &lt;span class="p"&gt;};&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;dateFormatted&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;date&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;toLocaleDateString&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;en-US&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;options&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;dateFormatted&lt;/span&gt;
        &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;replace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sr"&gt;/,/ig&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;''&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;replace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="se"&gt;\d\d\d\d&lt;/span&gt;&lt;span class="sr"&gt; /i&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;''&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;replace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sr"&gt;/PM|AM/ig&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;''&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;concat&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;date&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;getFullYear&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
        &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;concat&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt; -0500&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  How to generate the commit text based on the desired days?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HLgXWN2S--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://codesandtags.github.io/blog/static/cc65f7852403ed6cfeab41250251446b/48f8e/contribution.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HLgXWN2S--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://codesandtags.github.io/blog/static/cc65f7852403ed6cfeab41250251446b/48f8e/contribution.png" width="630" height="456"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Alright! so far, we have done many things (I guess) so, only it is remaining to paint the Github Activity. To paint our grid we need to know the next things. &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The height of the grid is 7 rects/squares.&lt;/li&gt;
&lt;li&gt;Review in the Github Activity the days we want to mark.&lt;/li&gt;
&lt;li&gt;An array with all dates we want to mark.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;getCommitText&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;days&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;days&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;day&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;`git commit --amend --no-edit --date="&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;getFormattedDay&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;day&lt;/span&gt;&lt;span class="p"&gt;)}&lt;/span&gt;&lt;span class="s2"&gt;"`&lt;/span&gt; 
    &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="s2"&gt;` &amp;amp;&amp;amp; git push origin master --force`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;letterE&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
&lt;span class="c1"&gt;// Top stick letter E&lt;/span&gt;
&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2019-11-17 20:00&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2019-11-24 20:00&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2019-12-01 20:00&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2019-12-08 20:00&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="c1"&gt;// Bottom stick letter E&lt;/span&gt;
&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2019-11-23 20:00&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2019-11-30 20:00&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2019-12-07 20:00&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2019-12-14 20:00&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="c1"&gt;// Left stick letter E&lt;/span&gt;
&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2019-11-10 20:00&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2019-11-11 20:00&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2019-11-12 20:00&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2019-11-13 20:00&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2019-11-14 20:00&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2019-11-15 20:00&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2019-11-16 20:00&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2019-11-18 20:00&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2019-11-19 20:00&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2019-11-20 20:00&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2019-11-21 20:00&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2019-11-22 20:00&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="c1"&gt;// Middle stick letter E&lt;/span&gt;
&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2019-11-27 20:00&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2019-12-04 20:00&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2019-12-11 20:00&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="p"&gt;];&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;letterT&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
&lt;span class="c1"&gt;// Top stick letter T&lt;/span&gt;
&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2019-12-22 20:00&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2019-12-29 20:00&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2020-01-05 20:00&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2020-01-12 20:00&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2020-01-19 20:00&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2020-01-26 20:00&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="c1"&gt;// Middle stick letter T&lt;/span&gt;
&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2020-01-06 20:00&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2020-01-07 20:00&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2020-01-08 20:00&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2020-01-09 20:00&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2020-01-10 20:00&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2020-01-11 20:00&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2020-01-13 20:00&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2020-01-14 20:00&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2020-01-15 20:00&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2020-01-16 20:00&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2020-01-17 20:00&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2020-01-18 20:00&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;];&lt;/span&gt;

&lt;span class="c1"&gt;// Magic happends here&lt;/span&gt;
&lt;span class="nx"&gt;getCommitText&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;letterE&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="se"&gt;\n\r&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;getCommitText&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;letterT&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="se"&gt;\n\r&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Creating the commits
&lt;/h2&gt;

&lt;p&gt;Congratulations! 🙌🏼 now you can run this commits in your empty repo created in Github and play with the white spaces in your Github Activity.&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 --amend --no-edit --date="Sun Dec 22 08:00:00 2019 -0500" &amp;amp;&amp;amp; git push origin master --force                                                                      ─╯
git commit --amend --no-edit --date="Sun Dec 29 08:00:00 2019 -0500" &amp;amp;&amp;amp; git push origin master --force
git commit --amend --no-edit --date="Sun Jan 5 08:00:00 2020 -0500" &amp;amp;&amp;amp; git push origin master --force
git commit --amend --no-edit --date="Sun Jan 12 08:00:00 2020 -0500" &amp;amp;&amp;amp; git push origin master --force
git commit --amend --no-edit --date="Sun Jan 19 08:00:00 2020 -0500" &amp;amp;&amp;amp; git push origin master --force
git commit --amend --no-edit --date="Sun Jan 26 08:00:00 2020 -0500" &amp;amp;&amp;amp; git push origin master --force
git commit --amend --no-edit --date="Mon Jan 6 08:00:00 2020 -0500" &amp;amp;&amp;amp; git push origin master --force
git commit --amend --no-edit --date="Tue Jan 7 08:00:00 2020 -0500" &amp;amp;&amp;amp; git push origin master --force
git commit --amend --no-edit --date="Wed Jan 8 08:00:00 2020 -0500" &amp;amp;&amp;amp; git push origin master --force
git commit --amend --no-edit --date="Thu Jan 9 08:00:00 2020 -0500" &amp;amp;&amp;amp; git push origin master --force
git commit --amend --no-edit --date="Fri Jan 10 08:00:00 2020 -0500" &amp;amp;&amp;amp; git push origin master --force
git commit --amend --no-edit --date="Sat Jan 11 08:00:00 2020 -0500" &amp;amp;&amp;amp; git push origin master --force
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Finally, don't forget "With a great power comes a great responsibility".&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Shut up! and show me the code.
&lt;/h2&gt;

&lt;p&gt;Okay my dear friend. &lt;a href="https://gist.github.com/codesandtags/6dc67efd0a968a080b3c2c6038c8a2e1"&gt;Here you will find my Gist&lt;/a&gt; ♥️ . I hope you can fill those horrible white spaces in your Github Activity and create awesome pixel arts. &lt;a href="https://www.shutterstock.com/es/search/geek+pixel?image_type=illustration"&gt;Here some ideas&lt;/a&gt; for you.  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/Annihil/github-spray"&gt;Here also you&lt;/a&gt; will find a nice project to get the patterns you want. &lt;/p&gt;

&lt;p&gt;PS: Would you like to learn how to do more of these types of things? If you’re new to learning to code, I recommend you join the ZTM community and start by taking &lt;a href="https://academy.zerotomastery.io/p/complete-web-developer-zero-to-mastery?affcode=441520_49y0uhps"&gt;The Complete Web Developer course&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Cheers and keep learning! 🍻&lt;/p&gt;

</description>
      <category>github</category>
      <category>commit</category>
      <category>pixelart</category>
      <category>javascript</category>
    </item>
    <item>
      <title>🔥 Roadmap Web Developer Front End 2020</title>
      <dc:creator>Edwin Torres</dc:creator>
      <pubDate>Fri, 22 May 2020 21:16:01 +0000</pubDate>
      <link>https://dev.to/codesandtags/roadmap-web-developer-front-end-2020-h0g</link>
      <guid>https://dev.to/codesandtags/roadmap-web-developer-front-end-2020-h0g</guid>
      <description>&lt;p&gt;These notes are part of the recommendations of &lt;a href="https://zerotomastery.io/about/instructor/andrei-neagoie/"&gt;Andrei Neagoie&lt;/a&gt; in the &lt;a href="https://www.youtube.com/watch?v=57GuRoJ5Bfw"&gt;Real Web Developer Roadmap 2020&lt;/a&gt;. I invite you to review &lt;a href="https://academy.zerotomastery.io/p/complete-web-developer-zero-to-mastery?affcode=441520_49y0uhps"&gt;The complete web developer in 2020&lt;/a&gt; course or if you have some experience &lt;a href="https://academy.zerotomastery.io/p/the-complete-junior-to-senior-web-developer-roadmap?affcode=441520_49y0uhps"&gt;The complete junior to senior web developer in 2020&lt;/a&gt; course and get your own insights. So, this an awesome feedback about what should we focus on in this 2020 as Web Developers. This first part covers the FrontEnd point of view in the roadmap, the BackEnd part is coming 😅.&lt;/p&gt;

&lt;p&gt;Important note: The links and notes marked with the 🚀 are highly recommend&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/57GuRoJ5Bfw"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  General recommendations
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Master your IDE&lt;/li&gt;
&lt;li&gt;Improve your basic fundamentals

&lt;ul&gt;
&lt;li&gt;Git / Github&lt;/li&gt;
&lt;li&gt;Terminal skills&lt;/li&gt;
&lt;li&gt;Learn to upload your files to your hosting and create your own domain&lt;/li&gt;
&lt;li&gt;Learn more about JSON / gRPC&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Front End
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Web APIS provided by the browser 🚀
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/es/docs/Web/API/Fetch_API"&gt;Fetch / XHR&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://developer.mozilla.org/es/docs/DOM"&gt;DOM&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://developer.mozilla.org/es/docs/Web/API/Window/localStorage"&gt;Local Storage&lt;/a&gt; and &lt;a href="https://developer.mozilla.org/es/docs/Web/API/Window/sessionStorage"&gt;Session Storage&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API/Using_Service_Workers"&gt;Service Workers&lt;/a&gt; and &lt;a href="https://developer.mozilla.org/es/docs/Web/Progressive_web_apps"&gt;PWA&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/es/docs/Mozilla/Add-ons/WebExtensions/API/i18n"&gt;i18n&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  HTML5 🚀
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/es/docs/Glossary/Semantics"&gt;Semantic HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/es/docs/Learn/Accessibility"&gt;Accessibility&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/es/docs/Glossary/SEO"&gt;SEO&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/es/docs/Learn/HTML/Forms"&gt;Forms&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://css-tricks.com/notes-agency-starting-their-first-responsive-web-project/"&gt;Responsive Mobile First 🚀&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  CSS3 🚀
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://css-tricks.com/css-animation-libraries/"&gt;Animations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://css-tricks.com/everything-need-know-css-variables/"&gt;CSS Variables&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.24a11y.com/2019/pixels-vs-relative-units-in-css-why-its-still-a-big-deal/?ref=heydesigner"&gt;Rem vs EM vs PX&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://css-tricks.com/snippets/css/media-queries-for-standard-devices/"&gt;Media Queries&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Preprocessors 

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://sass-lang.com/"&gt;SASS 🚀&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;CSS Layout 🚀

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://css-tricks.com/snippets/css/a-guide-to-flexbox/"&gt;Flexbox module&lt;/a&gt; and &lt;a href="https://zerotomastery.io/resources/"&gt;ZerotoMastery Resources&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://css-tricks.com/snippets/css/complete-guide-grid/"&gt;Grid module&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;CSS in JS

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/css-modules/css-modules"&gt;CSS Modules&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://styled-components.com/"&gt;Styled-components&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Organizing CSS

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://acss.io/"&gt;Atomic CSS 🚀&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://getbem.com/introduction/"&gt;BEM&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Frameworks and libraries

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://tachyons.io/"&gt;Tachyons&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tailwindcss.com/"&gt;Tailwind&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://bulma.io/"&gt;Bulma&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  JavaScript
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Fundamentals 🚀

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/es/docs/Learn/JavaScript/Asynchronous"&gt;Asynchronous JavaScript&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/es/docs/Web/API"&gt;DOM Manipulations + Web APIs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/digitaldaswani/oop-vs-fp-with-javascript-39jf"&gt;OPP vs FP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/es/docs/Web/JavaScript/Guide/M%C3%B3dulos"&gt;Modules&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Compilers / Transpilers

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.typescriptlang.org/"&gt;TypeScript&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://svelte.dev/"&gt;Svelte&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://elm-lang.org/"&gt;ELM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://reasonml.github.io/"&gt;ReasonML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://babeljs.io/"&gt;Babel&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Frameworks / Libraries

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://es.reactjs.org/"&gt;ReactJS 🚀&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://angular.io/"&gt;Angular&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://vuejs.org/"&gt;Vue&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://redwoodjs.com/"&gt;RedwoodJS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  State Managment
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://vuex.vuejs.org/"&gt;Vuex&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ngrx.io/guide/store"&gt;NgRx&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mobx.js.org/README.html"&gt;Mobx&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://redux.js.org/"&gt;Redux 🚀&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://graphql.org/"&gt;Apollo GraphQL 🚀&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  SSR 🚀
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://sapper.svelte.dev/"&gt;Sapper&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nextjs.org/"&gt;Next.js 🚀&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://angular.io/guide/universal"&gt;Angular Universal&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nuxtjs.org/"&gt;Next.js&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Helpers 🚀
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://babeljs.io/"&gt;Babel  🚀&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://eslint.org/"&gt;ESLint 🚀&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://prettier.io/"&gt;Prettier 🚀&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/typicode/husky"&gt;Husky&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/sasstools/sass-lint"&gt;SASS Lint&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Build Tools
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.npmjs.com/misc/scripts"&gt;NPM Scripts 🚀&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bundlers

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://parceljs.org/"&gt;Parcel&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="https://webpack.js.org/"&gt;Webpack 🚀&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://rollupjs.org/guide/en/"&gt;Rollup&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Web Components
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://stenciljs.com/"&gt;Stencil&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.polymer-project.org/"&gt;Polymer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://lit-element.polymer-project.org/"&gt;LitElement&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Package Management
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.npmjs.com/package/npx"&gt;Npx 🚀&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.npmjs.com/"&gt;Npm 🚀&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://yarnpkg.com/"&gt;Yarn&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.npmjs.com/using-npm/registry.html"&gt;Npm Registry 🚀&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Popular libraries
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/axios/axios"&gt;Axios&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://d3js.org/"&gt;D3.js&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://momentjs.com/"&gt;MomentJs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ramdajs.com/"&gt;Ramda&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://rxjs-dev.firebaseapp.com/"&gt;RxJS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://immerjs.github.io/immer/docs/introduction"&gt;Immer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://lodash.com/"&gt;Lodash&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://jamstack.org/"&gt;JAM Stack 🚀 &lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Static Sites

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gohugo.io/"&gt;Hugo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://jekyllrb.com/"&gt;Jekyll&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://scully.io/"&gt;Scully&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.gatsbyjs.org/"&gt;Gatsby 🚀&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gridsome.org/"&gt;Gridsome&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;CMS

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://wordpress.com/"&gt;Wordpress&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://headlesscms.org/"&gt;Headless CMS 🚀 &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.contentful.com/"&gt;Contentful 🚀&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Unit Test
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://jestjs.io/"&gt;Jest  🚀&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/avajs"&gt;Ava&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Mocha / Chai / Sinon &lt;/li&gt;
&lt;li&gt;&lt;a href="https://jasmine.github.io/"&gt;Jasmine&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://testing-library.com/docs/react-testing-library/intro"&gt;React Testing Library  🚀&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  End to End Test
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.protractortest.org/#/"&gt;Protractor&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.cypress.io/"&gt;Cypress  🚀&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://nightwatchjs.org/"&gt;nightwatchjs&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="https://devexpress.github.io/testcafe/"&gt;TestCafe  🚀&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Continuous Integration / Continuous Delivery
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.gitlab.com/ee/ci/"&gt;Gitlab CI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://travis-ci.org/"&gt;Travis CI  🚀&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.jenkins.io/"&gt;Jenkins 🚀&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://circleci.com/"&gt;Circle CI  🚀&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/features/actions"&gt;Github Actions  🚀&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Back End
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Static Hosting
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Zeit / Vercel&lt;/li&gt;
&lt;li&gt;&lt;a href="https://surge.sh/"&gt;Surge&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.gitlab.com/ee/user/project/pages/"&gt;Gitlab Pages&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pages.github.com/"&gt;Github Pages 🚀&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.netlify.com/"&gt;Netlify 🚀&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Managed Hosting
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.bluehost.com/"&gt;Blue Host&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.hostgator.co/"&gt;Hostgator 🚀&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Cloud
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dashboard.heroku.com/"&gt;Heroku 🚀&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.digitalocean.com/"&gt;Digital Ocean 🚀&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/"&gt;AWS 🚀&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cloud.google.com/"&gt;GCP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://azure.microsoft.com/es-es/"&gt;Azure&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Web Servers
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.nginx.com/"&gt;Nginx 🚀 &lt;/a&gt; and [Nginx Load Balancing](&lt;a href="http://nginx.org/en/docs/(http/load_balancing.html)"&gt;http://nginx.org/en/docs/(http/load_balancing.html)&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://caddyserver.com/v2"&gt;Caddy 2 🚀&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://httpd.apache.org/"&gt;Apache&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.cloudflare.com/"&gt;CDN Cloudfare 🚀&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Serverless
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/es/lambda/features/"&gt;AWS Lambda&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.netlify.com/functions/overview/"&gt;Netlify Lambda&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Node.js
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://expressjs.com/es/"&gt;Express.js 🚀&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nextjs.org/"&gt;Nest.js&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://koajs.com/"&gt;Koa.js&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hapi.dev/"&gt;Hapi.js&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🦕 &lt;a href="https://deno.land/v1/"&gt;Deno&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Python 🚀
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://flask.palletsprojects.com/en/1.1.x/"&gt;Flask&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.djangoproject.com/"&gt;Django&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  API Consumption
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://graphql.org/"&gt;GraphQL 🚀&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://es.wikipedia.org/wiki/Transferencia_de_Estado_Representacional"&gt;REST&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/es/docs/Web/API/WebSockets_API"&gt;Web Sockets&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://grpc.io/"&gt;gRPC 🚀&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Authentication
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://firebase.google.com/?hl=es"&gt;Managed: Firebase 🚀&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://oauth.net/2/"&gt;Third Party: Oauth2 🚀&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Cookie Based Authentication &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://auth0.com/learn/token-based-authentication-made-easy/"&gt;Token Based Authentication 🚀&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Containers
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.docker.com/"&gt;Docker 🚀&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Relational Databases 🚀
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.postgresql.org/"&gt;PostgreSQL&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.mysql.com/"&gt;MySQL&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://es.wikipedia.org/wiki/NewSQL"&gt;NewSQL&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  NoSQL Databases  🚀
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.mongodb.com/es"&gt;MongoDB&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="https://cassandra.apache.org/"&gt;Cassandra&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://redis.io/"&gt;Redis 🚀&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://rethinkdb.com/"&gt;RethinkDB&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://couchdb.apache.org/"&gt;CouchDB&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/es/dynamodb/"&gt;DynamoDB&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Managed Databases
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://airtable.com/"&gt;AirTable 🚀&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://firebase.google.com/?hl=es"&gt;Firebase  🚀&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.prisma.io/"&gt;Prisma&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;AWS / GCP / Azure&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Mobile
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://reactnative.dev/"&gt;React Native 🚀&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="https://flutter-es.io/"&gt;Flutter 🚀&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;PWA 🚀&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ionicframework.com/"&gt;Ionic&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.nativescript.org/"&gt;NativeScript&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Desktop
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.electronjs.org/"&gt;Electron&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Machine Learning
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Prebuild Models 🚀 like cloudML / Firebase ML / Clarify / IBM ML / AWS ML&lt;/li&gt;
&lt;li&gt;&lt;a href="https://brain.js.org/#/"&gt;Brain.js&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.tensorflow.org/js"&gt;Tensorflow.js 🚀&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Web Assembly 🚀
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://devblogs.microsoft.com/aspnet/blazor-webassembly-3-2-0-now-available/"&gt;Blazor&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;PS: If you are starting your Web Development career, I suggest you can start with this &lt;a href="https://academy.zerotomastery.io/purchase?product_id=1527922&amp;amp;coupon_code=FRIENDS10&amp;amp;affcode=441520_49y0uhps"&gt;Complete Web Developer 2020 Course by ZTM&lt;/a&gt; and get a 10% discount using that link.&lt;/p&gt;

&lt;p&gt;PS2: To review more post like this, I invite you &lt;a href="https://codesandtags.github.io/blog/roadmap-web-developer-front-end-2020"&gt;to my blog 🤖&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Cheers and keep learning! 🍻&lt;/p&gt;

</description>
      <category>frontend</category>
      <category>roadmap</category>
      <category>javascript</category>
    </item>
    <item>
      <title>💅 How to create a triangle in CSS</title>
      <dc:creator>Edwin Torres</dc:creator>
      <pubDate>Wed, 20 May 2020 03:49:15 +0000</pubDate>
      <link>https://dev.to/codesandtags/how-to-create-a-triangle-in-css-hmh</link>
      <guid>https://dev.to/codesandtags/how-to-create-a-triangle-in-css-hmh</guid>
      <description>&lt;p&gt;A couple of days before, I had to face this common challenge, however, there are many solutions (using images, using divs, and using pseudo-elements with and empty content). For me, the best solution was using pseudo-elements, so that here is my solution.&lt;/p&gt;

&lt;p&gt;If you want to read more about this common pattern, please review &lt;a href="https://css-tricks.com/snippets/css/css-triangle/"&gt;this article in CSS Tricks&lt;/a&gt; (One of the best pages for CSS Content).&lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding ::before and ::after pseudo-elements in CSS
&lt;/h2&gt;

&lt;p&gt;In few words a &lt;a href="https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-elements"&gt;pseudo-element&lt;/a&gt; is : &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A CSS pseudo-element is a keyword added to a selector that lets you style a specific part of the selected element(s). For example, ::first-line can be used to change the font of the first line of a paragraph. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Creating the triangle
&lt;/h2&gt;

&lt;p&gt;After understanding the above concept, it means we can add some content, or create another element given a selector. &lt;br&gt;
In our case, if we define a &lt;code&gt;border-width&lt;/code&gt; and we have an empty &lt;code&gt;content&lt;/code&gt;, the border will start from the center of the element.&lt;/p&gt;

&lt;p&gt;Then, pretty much we need to play with the &lt;code&gt;border-color&lt;/code&gt;, &lt;code&gt;border-width&lt;/code&gt; and the &lt;code&gt;position:absolute&lt;/code&gt; to create our triangle. Below, you will find a couple of examples in my &lt;a href="https://codepen.io/codesandtags/embed/ExVGWvG?height=265&amp;amp;theme-id=dark&amp;amp;default-tab=result"&gt;codepen&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/codesandtags/embed/ExVGWvG?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

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

&lt;p&gt;Well, I think that's all using a short example. Given the above examples, you can add letters, transformations, animations, and whatever you can imagine, using the pseudo-elements.&lt;/p&gt;

&lt;p&gt;To get a complete list, please &lt;a href="https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-elements"&gt;check the documentation&lt;/a&gt; and don't forget review the &lt;a href="https://caniuse.com/#search=%3A%3Abefore"&gt;compatibility with browsers&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you want to see my original post, &lt;a href="https://codesandtags.github.io/blog/how-to-create-a-triangle-in-css"&gt;you're welcome here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Cheers and keep learning! 🍻&lt;/p&gt;

</description>
      <category>css</category>
      <category>html</category>
      <category>tricks</category>
    </item>
    <item>
      <title>🔥 The Complete Web Developer in 2020</title>
      <dc:creator>Edwin Torres</dc:creator>
      <pubDate>Fri, 08 May 2020 21:07:00 +0000</pubDate>
      <link>https://dev.to/codesandtags/the-complete-web-developer-in-2020-321a</link>
      <guid>https://dev.to/codesandtags/the-complete-web-developer-in-2020-321a</guid>
      <description>&lt;p&gt;As part of my personal training, I've decided to re force my knowledge in web development, so I bought one of the best courses (in my personal opinion), &lt;a href="https://academy.zerotomastery.io/p/complete-web-developer-zero-to-mastery?affcode=441520_49y0uhps"&gt;The Complete Web Developer in 2020&lt;/a&gt; by &lt;a href="https://zerotomastery.io/about/instructor/andrei-neagoie/"&gt;Andrei Neagoie&lt;/a&gt; and here are my notes. These notes are just the most relevant parts or resources for me, so I recommend you review the course for more details. If you want to read the original post, you can &lt;a href="https://codesandtags.github.io/blog/the-complete-web-developer-in-2020"&gt;review this link&lt;/a&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  1. How the internet works
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;IP Address&lt;/li&gt;
&lt;li&gt;ISP: Internet Service Provider&lt;/li&gt;
&lt;li&gt;DNS: Domain Name Server&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.submarinecablemap.com/"&gt;Magical blue cable - The submarine cable map&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.nytimes.com/interactive/2019/03/10/technology/internet-cables-oceans.html"&gt;People think that data is in the cloud, but it’s not. It’s in the ocean&lt;/a&gt;. &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=u1xxZ8r2rRc"&gt;Video about how works the submarine cable in Spanish&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/playlist?list=PL2HX_yT71umAoRTnYD8wdfj70AEQj_EOI"&gt;How the internet works? Well explained&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  2. History of the Web
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.w3.org/People/Berners-Lee/"&gt;Tim Berners-Lee&lt;/a&gt; was working at CERN, and then in 1989 created the first approach of Internet &lt;a href="http://info.cern.ch/hypertext/WWW/TheProject.html"&gt;WWW&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.vox.com/a/internet-maps"&gt;40 maps that explain internet&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Some videos of Crash Course Computer Sciences Computer: &lt;a href="https://www.youtube.com/watch?v=3QhU9jd03a0&amp;amp;list=PL8dPuuaLjXtNlUrzyH5r6jN9ulIgZBpdo&amp;amp;index=29"&gt;Networks&lt;/a&gt;, &lt;a href="https://www.youtube.com/watch?v=AEaKrq3SpW8&amp;amp;index=30&amp;amp;list=PL8dPuuaLjXtNlUrzyH5r6jN9ulIgZBpdo"&gt;Internet&lt;/a&gt;  and the &lt;a href="https://www.youtube.com/watch?v=guvsH5OFizE&amp;amp;index=31&amp;amp;list=PL8dPuuaLjXtNlUrzyH5r6jN9ulIgZBpdo"&gt;World Wide Web&lt;/a&gt; .&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  3. HTML
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://developer.mozilla.org/en-US/docs/Web"&gt;MDN Official&lt;/a&gt; resources to review anything.&lt;/li&gt;
&lt;li&gt;Use the &lt;a href="https://rubberduckdebugging.com/"&gt;Rubber Duck Technique&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.w3schools.com/html/exercise.asp"&gt;HTMLs Quizzes by w3schools&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.freecodecamp.org/learn/responsive-web-design/basic-html-and-html5/"&gt;Free codecamp exercises&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  4. CSS
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;An awesome site which explains &lt;a href="https://www.supremo.co.uk/typeterms/"&gt;how works the font types&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;One of the best resources is &lt;a href="https://css-tricks.com/"&gt;CSS Tricks&lt;/a&gt;  and &lt;a href="https://css-tricks.com/almanac/"&gt;CSS Tricks Almanacs&lt;/a&gt; for properties.&lt;/li&gt;
&lt;li&gt;In this site you will understand &lt;a href="https://paletton.com/"&gt;the balance and complement color&lt;/a&gt;. &lt;/li&gt;
&lt;li&gt;CSS Selectors : start *, class, id, element, element nested, greater than, plus&lt;/li&gt;
&lt;li&gt;What selectors win out in the cascade depends on? Specificity, Importance, Source order. &lt;a href="https://specificity.keegan.st/"&gt;Specificity calculator&lt;/a&gt;. &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://flukeout.github.io/"&gt;Game to practice&lt;/a&gt; the specificity concepts.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://fonts.google.com/"&gt;Google Fonts&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.w3schools.com/css/css_quiz.asp"&gt;CSS Quizzes by w3schools&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://cssminifier.com/"&gt;CSS Minifier&lt;/a&gt; to reduce the Critical Render Path. &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://developer.mozilla.org/en-US/docs/Web/Performance/Critical_rendering_path"&gt;Critical Render Path MDN&lt;/a&gt; and &lt;a href="https://developers.google.com/web/fundamentals/performance/critical-rendering-path/analyzing-crp?hl=es"&gt;Critical rendering path explained&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Playing with &lt;a href="http://flexboxfroggy.com/"&gt;Froggy for Flexbox&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://thoughtbot.com/blog/transitions-and-transforms"&gt;Mastering Transitions and Transforms&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;With &lt;a href="https://caniuse.com/"&gt;Can I Use&lt;/a&gt; we can review if our attributes are supported by browsers.&lt;/li&gt;
&lt;li&gt;Always &lt;a href="https://codepen.io/"&gt;Playground for CSS&lt;/a&gt;, Javascript and other Web stuffs with.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Bootstrap and templates
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;To create landing pages and campaigns with &lt;a href="https://mailchimp.com/"&gt;Mailchimp&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://daneden.github.io/animate.css/"&gt;Animate CSS&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.creative-tim.com/"&gt;The Creative Tim Templates&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.mashup-template.com/"&gt;Mashup Free Templates&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://startbootstrap.com/templates/"&gt;Bootstrap Templates 1&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://mdbootstrap.com/freebies/"&gt;Bootstrap Templates 2&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="https://cruip.com/"&gt;Templates for startups&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  CSS Grid and Flex
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Flex is really useful if you have layout with one dimension, CSS Grid is useful when you have layouts with two dimensions (Row, Columns).&lt;/li&gt;
&lt;li&gt;Despite CSS grid is not 100% supported in all browsers, the support is greater every time. &lt;a href="https://caniuse.com/#feat=css-grid"&gt;Can I Use CSS Grid&lt;/a&gt; and &lt;a href="https://caniuse.com/#feat=flexbox"&gt;Can I Use Flexbox&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://grid.malven.co/"&gt;CSS Grid cheat sheet&lt;/a&gt;. &lt;/li&gt;
&lt;li&gt;
&lt;a href="http://cssgridgarden.com/"&gt;Game for CSS Grid&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://codepen.io/codesandtags/pen/ZEbvjrB"&gt;CSS Grid Exercise 1 solution&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://codepen.io/codesandtags/pen/eYpyPOb?editors=1100"&gt;CSS Grid Exercise 2 solution&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://undraw.co/illustrations"&gt;Site to get free illustrations&lt;/a&gt; for your projects.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Career of Developer
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.glassdoor.com/Salaries/index.htm"&gt;Glassdoor to get Reviews&lt;/a&gt; and information about companies and salaries in the industry.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.jetbrains.com/lp/devecosystem-2019/"&gt;Jetbrains research about the Developer Survey 2019&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://insights.stackoverflow.com/survey/2019"&gt;Stackoverflow Developer Survey 2019&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://insights.stackoverflow.com/trends?tags=reactjs%2Cangular%2Cvue.js"&gt;Stackoverflow Trends&lt;/a&gt;. &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://octoverse.github.com/"&gt;Github Octoverse statistics&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://hackernoon.com/the-2019-web-developer-roadmap-ab89ac3c380e"&gt;JavaScript Roadmap&lt;/a&gt;. &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://hired.com/page/state-of-salaries"&gt;State of salaries by Hired&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Become in a Freelance in &lt;a href="https://www.upwork.com/"&gt;Upwork&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://zerotomastery.io/community/"&gt;Zero to Mastery Community&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://i.udemycdn.com/redactor/raw/2020-01-18_15-59-49-3ee1a8bf731b133914f2a795867a6238.jpg"&gt;Front-End Learning path in ZTM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://cssgrid-generator.netlify.app/"&gt;CSS Grid generator&lt;/a&gt; by Sarah Drasner&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  JavaScript
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://eloquentjavascript.net/"&gt;Eloquent JavaScript Ebook&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/getify/You-Dont-Know-JS"&gt;You don’t know JavaScript Series&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://javascript.info/"&gt;JavaScript modern tutorial&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/Map"&gt;Data Structures&lt;/a&gt;: Arrays, Object, Map, Set, WeakMap, WeakSet&lt;/li&gt;
&lt;li&gt;Playgrounds &lt;a href="https://jsbin.com/"&gt;Jsbin&lt;/a&gt; &lt;a href="https://codepen.io/"&gt;codepen&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://developer.mozilla.org/es/docs/DOM"&gt;DOM === document&lt;/a&gt;. &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://gomakethings.com/javascript-selector-performance/"&gt;Document selector and performance&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://developer.mozilla.org/es/docs/Web/Events"&gt;DOM event list&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="http://youmightnotneedjquery.com/"&gt;You might not need jQuery&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;The keyword this represents where the object is inside of.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Advance JavaScript
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://babeljs.io/"&gt;BabelJS&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://sdras.github.io/array-explorer/"&gt;Array Explorer with some examples&lt;/a&gt; by Sarah Drasner &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://sdras.github.io/object-explorer/"&gt;Object explorer with some examples&lt;/a&gt; by Sarah Drasner &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.freecodecamp.org/news/js-type-coercion-explained-27ba3d9a2839/"&gt;JavaScript Coercion&lt;/a&gt; and &lt;a href="https://dorey.github.io/JavaScript-Equality-Table/"&gt;JavaScript Equality Table&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Iterating: Arrays and Strings&lt;/li&gt;
&lt;li&gt;Enumerating : Objects&lt;/li&gt;
&lt;li&gt;JavaScript Engine Memory Heap: Limited
memory (variables)&lt;/li&gt;
&lt;li&gt;JavaScript Engine Call Stack: Allocates execution blocks and calls. &lt;/li&gt;
&lt;li&gt;&lt;p&gt;To generate a Maximum call stack sized exceed.&lt;br&gt;
&lt;br&gt;
&lt;code&gt;(function a() { a() })();&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;To crash the browser :&lt;br&gt;
&lt;br&gt;
&lt;code&gt;let drunk = []; while(true) { drunk.push['🍻'] }&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Call Stack, Web API, Callback Queue, Event Loop&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Command Line
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://ohmyz.sh/"&gt;Oh My Zsh&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/@ivanaugustobd/your-terminal-can-be-much-much-more-productive-5256424658e8"&gt;Nice article to setup Oh My Zsh&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/romkatv/powerlevel10k/issues/157"&gt;Some issues and solutions with fonts in Oh My Zsh&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Git + Github + Open Source
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/zero-to-mastery/start-here-guidelines/pull/5108#issuecomment-625023782"&gt;Pull Request&lt;/a&gt; to become in contributor for ZTM in Github organization.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/zero-to-mastery/ZtM-Job-Board/pull/1100"&gt;Pull Request&lt;/a&gt; to add my profile in the ZTM Board Job.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://zero-to-mastery.github.io/ZtM-Job-Board/"&gt;Zero To Mastery Job Board&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/zero-to-mastery/resources"&gt;Zero To Mastery Resources&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Create your &lt;a href="https://github.com/cobidev/simplefolio"&gt;Developer Portoflio&lt;/a&gt; by &lt;a class="mentioned-user" href="https://dev.to/cobidev"&gt;@cobidev&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/tholman/github-corners"&gt;Github Corner logo&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  A Day in the life Developer
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://javascriptweekly.com/"&gt;JavaScript Weekly&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://css-weekly.com/"&gt;CSS Weekly&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://softwareengineeringdaily.com/"&gt;Software Engineering Daily&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.producthunt.com/"&gt;Product Hunt&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  NPM Scripts
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://semver.npmjs.com/"&gt;Semantic Versioning Calculator&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  React
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://bradfrost.com/blog/post/atomic-web-design/"&gt;Atomic Design Concepts&lt;/a&gt; for Web Components&lt;/li&gt;
&lt;li&gt;&lt;a href="https://es.reactjs.org/docs/faq-internals.html"&gt;Virtual DOM vs DOM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/facebook/react/blob/master/CHANGELOG.md"&gt;React CHANGELOG&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/facebook/create-react-app"&gt;Create React App&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://tachyons.io/"&gt;Tachyons&lt;/a&gt; Create fast interfaces with few CSS &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://robohash.org/"&gt;API Robot&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.jmes.tech/react-fragment-and-semantic-html/"&gt;React Fragment and semantic&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Redux for management state, share data between containers and predictable using the 3 principles.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://medium.com/swlh/redux-core-principles-explained-with-simple-terms-55988f34f9a0"&gt;3 Redux Principles&lt;/a&gt;: Single source of true, state is read only, changes use pure functions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Redux action&lt;/strong&gt;: Something that user does.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Redux reducer&lt;/strong&gt;: A pure function which update the state (immutable)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Redux store&lt;/strong&gt;: An object which represents the single source of true&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://facebook.github.io/flux/docs/in-depth-overview"&gt;Redux based on Architecture Flux pattern&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;Redux offers a way to replace the state and transform to props to the components.&lt;/li&gt;
&lt;li&gt;To connect redux wieth react, it implements HoF (Hight order Functions)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://reactjs.org/docs/hooks-faq.html#is-it-safe-to-omit-functions-from-the-list-of-dependencies"&gt;useState performance and good practices&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://reacttraining.com/react-router/web/guides/quick-start"&gt;React Router&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://ramdajs.com/"&gt;RamdaJs&lt;/a&gt;, A practical functional library for JavaScript programmers.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://styled-components.com/"&gt;React Styled components&lt;/a&gt;, Use the best bits of ES6 and CSS to style your apps without stress 💅.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/css-modules/css-modules"&gt;React CSS Modules&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.gatsbyjs.org/"&gt;Gatsby&lt;/a&gt;, Fast in every way that matters.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://semantic-ui.com/"&gt;Semantic UI&lt;/a&gt;, User Interface is the language of the web.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://immutable-js.github.io/immutable-js/"&gt;ImmutableJS&lt;/a&gt; collections for JavaScript.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://mdbootstrap.com/docs/react/"&gt;MDB&lt;/a&gt; with React&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  HTTP/JSON/AJAX + Asynchronous JavaScript
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;A great list for &lt;a href="https://httpstatusdogs.com/"&gt;Http Status Dog&lt;/a&gt; and &lt;a href="https://http.cat/"&gt;Http Status Cat&lt;/a&gt; and &lt;a href="https://www.w3schools.com/tags/ref_httpmessages.asp"&gt;Http Reference&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/@fullsour/when-should-you-use-path-variable-and-query-parameter-a346790e8a6d"&gt;Query Strings vs Query Params&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.granite5.com/insights/use-https-vs-http-benefits-switching/"&gt;Why you require HTTPS&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.w3schools.com/js/js_json_intro.asp"&gt;JSON format&lt;/a&gt; and &lt;a href="https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/JSON"&gt;JSON Reference&lt;/a&gt;) &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://en.wikipedia.org/wiki/JSONP"&gt;JSONP&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.w3schools.com/js/js_ajax_intro.asp"&gt;AJAX&lt;/a&gt;. &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://developer.mozilla.org/es/docs/Web/API/Fetch_API"&gt;Fetch API&lt;/a&gt; and &lt;a href="https://developer.mozilla.org/es/docs/Web/API/Response"&gt;Response Object&lt;/a&gt;. &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/Promise"&gt;Promises&lt;/a&gt; has 3 states: Fulfilled, rejected, pending&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Sentencias/funcion_asincrona"&gt;Async await looks syntactic sugar&lt;/a&gt;. &lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/daumann/ECMAScript-new-features-list"&gt;ECMAScript update list with examples&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  APIs
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://jsonplaceholder.typicode.com/"&gt;JSON Place Holder&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://swapi.dev/"&gt;Start Wars API&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://pokeapi.co/"&gt;Pokémon API&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.twilio.com/docs/sms/api"&gt;Twilio SMS API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://numbersapi.com/"&gt;Numbers API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://api.chucknorris.io/"&gt;Chuck Norris API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://open-notify.org/Open-Notify-API/ISS-Location-Now/"&gt;Open International Space API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.ibm.com/cloud/watson-speech-to-text"&gt;IBM API Speech to Text&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;🔥 &lt;a href="https://public-apis.xyz/"&gt;Public APIs XYZ&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Face Recognition Project
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://iconos8.es/"&gt;Free Logos&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://vincentgarreau.com/particles.js/"&gt;Particles JS&lt;/a&gt; and &lt;a href="https://www.npmjs.com/package/react-particles-js"&gt;Particles React&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.npmjs.com/package/react-tilt"&gt;React Tilt&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.clarifai.com/"&gt;Clarifai Platform for AI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.clarifai.com/models"&gt;Clarifai Models&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.clarifai.com/models/face-detection-image-recognition-model-a403429f2ddf4b49b307e318f00e528b-detection"&gt;Face Detection Recognition Model&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Clarifai/clarifai-javascript"&gt;Clarifai client for JavaScript&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://codesandtags.github.io/face-recognition-brain/"&gt;Example of project&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://firebase.google.com/docs/auth/web/password-auth?hl=es"&gt;Firebase Auth Documentation Web&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://firebase.google.com/docs/auth/web/manage-users?hl=es-419#get_the_currently_signed-in_user"&gt;Firebase Auth Update and get user&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://firebase.google.com/docs/auth/admin/verify-id-tokens#web"&gt;Firebase Admin&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/emeka/securing-your-express-node-js-api-with-firebase-auth-4b5f"&gt;Article using Firebase and Authorization in NodeJs and Express&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://firebase.google.com/docs/auth/admin/manage-sessions?hl=es-419"&gt;Revoke token with Firebase&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  NodeJS + ExpressJS
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://johnny-five.io/"&gt;JavaScript Robotic and IoT&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://nodejs.org/es/docs/"&gt;NodeJS Documentation&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://nodejs.org/api/globals.html#globals_global"&gt;NodeJS Globals&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;From the 12.12.x and higher the imports in NodeJS can use the ES6 way, instead of CommonJS.&lt;/li&gt;
&lt;li&gt;Common libraries most used in NodeJS: fs, path, http, nodemon&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://expressjs.com/"&gt;ExpressJS&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;Most used attributes in express request: body, params, query, headers.&lt;/li&gt;
&lt;li&gt;Most used attributes in express response: status, send&lt;/li&gt;
&lt;li&gt;Most used methods with fs : readFile, readFileSync, appendFile, writeFile, unlink&lt;/li&gt;
&lt;li&gt;&lt;a href="https://adventofcode.com/"&gt;Contest Happens every December&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Databases
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Relational: MySQL, PostgreSQL, Oracle, MSSQL, Sybase, Derby, SQlite&lt;/li&gt;
&lt;li&gt;Non Relational (NoSQL) : Redis, MongoDB, Cassandra, CouchDB, Apache HBASE, Rick&lt;/li&gt;
&lt;li&gt;&lt;a href="http://knexjs.org/"&gt;SQL Query builder for JavaScript&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Deployment
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://devcenter.heroku.com/articles/getting-started-with-nodejs"&gt;Heroku Node JS&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://nodejs.dev/how-to-read-environment-variables-from-nodejs"&gt;Environment variables&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/quick-code/deploying-production-build-of-react-app-to-heroku-2548d8bf6936"&gt;Heroku deployment article&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Github Awesome Profiles
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/sindresorhus"&gt;Sindre Sorhus&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/sdras"&gt;Sarah Drasner&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/aneagoie"&gt;Andrei Neagoie&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/codesandtags"&gt;Edwin Torres&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;PS: Would you like to learn how to do more of these types of things? If you’re new to learning to code, I recommend you join the ZTM community and start by taking &lt;a href="https://academy.zerotomastery.io/p/complete-web-developer-zero-to-mastery?affcode=441520_49y0uhps"&gt;The Complete Web Developer course&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Cheers and keep learning! 🍻&lt;/p&gt;

</description>
      <category>react</category>
      <category>javascript</category>
      <category>html</category>
      <category>css</category>
    </item>
    <item>
      <title>🤯 Learning to learn</title>
      <dc:creator>Edwin Torres</dc:creator>
      <pubDate>Sat, 02 May 2020 01:33:41 +0000</pubDate>
      <link>https://dev.to/codesandtags/learning-to-learn-1ekh</link>
      <guid>https://dev.to/codesandtags/learning-to-learn-1ekh</guid>
      <description>&lt;p&gt;Recently I've started a huge personal challenge that I will describe with more details in the next months, however a really critical part of this challenge is, &lt;strong&gt;How can I learn faster?&lt;/strong&gt;. Well, I've bought a really nice course in Udemy, &lt;a href="https://academy.zerotomastery.io/p/learning-to-learn-efficient-learning-zero-to-mastery-blueprint?affcode=441520_49y0uhps"&gt;Learning to learn&lt;/a&gt; by &lt;a href="https://www.udemy.com/user/andrei-neagoie/"&gt;Andrei Neagoie&lt;/a&gt; and these are my notes.&lt;/p&gt;

&lt;p&gt;Also I want to mention that I love the productivity stuffs, and I admire people like &lt;a href="https://es.wikipedia.org/wiki/Bill_Gates"&gt;Bill Gates&lt;/a&gt;, and &lt;a href="https://en.wikipedia.org/wiki/Tim_Ferriss"&gt;Tim Ferris&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;You can also read the original &lt;a href="https://codesandtags.github.io/blog/learning-to-learn"&gt;article here&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  The principles
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;The &lt;a href="https://en.wikipedia.org/wiki/Method_of_loci"&gt;method of Loci&lt;/a&gt; about memory enhacement.

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://deck.of.cards/"&gt;https://deck.of.cards/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Learning vs Winning to the system, by Paul Grahan

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://paulgraham.com/lesson.html"&gt;http://paulgraham.com/lesson.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;What is success?. This is subjective meaning, however it can be achieved with the next characteristics.

&lt;ul&gt;
&lt;li&gt;Drive &lt;/li&gt;
&lt;li&gt;Persistence&lt;/li&gt;
&lt;li&gt;Going a good learner &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;The obstacle &amp;amp; The dip

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://www.sethgodin.com/#books-courses-and-more"&gt;Seth Godin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Sometimes we have to know when to turn around and pick the right path in order to use our resources efficiently.&lt;/li&gt;
&lt;/ol&gt;


&lt;/li&gt;
&lt;li&gt;Compound learning

&lt;ol&gt;
&lt;li&gt;The principle behind is: You don’t have to dedicate many hours one day to learning something, you need instead to learning at least 20 - 30 minutes per day, everyday to compound the learning in your mind.&lt;/li&gt;
&lt;li&gt;Improve by 1% a day, and in 70 days you’re twice a good. - Alan Wiss P.h D&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.calculatorsoup.com/calculators/financial/compound-interest-calculator.php"&gt;https://www.calculatorsoup.com/calculators/financial/compound-interest-calculator.php&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.bankrate.com/calculators/savings/compound-savings-calculator-tool.aspx"&gt;https://www.bankrate.com/calculators/savings/compound-savings-calculator-tool.aspx&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;


&lt;/li&gt;
&lt;li&gt;Failures don’t count on you

&lt;ol&gt;
&lt;li&gt;Every time you make a mistake, any time you fail you are learning, it gives you feedback on why you should do next time.&lt;/li&gt;
&lt;/ol&gt;


&lt;/li&gt;
&lt;li&gt;Choice vs Chore

&lt;ol&gt;
&lt;li&gt;Chores are temporary and they won’t last long, but if you start to shift your focus and realize that learning is a choice you can not do anything today&lt;/li&gt;
&lt;/ol&gt;


&lt;/li&gt;
&lt;li&gt;It’s all in the frame.

&lt;ol&gt;
&lt;li&gt;Not everything in life is objective, rather than is subjective and everything depends of perspective, so we can reframe that.&lt;/li&gt;
&lt;li&gt;Shift your focus, shift your perspective on you can control, instead of you can not control.&lt;/li&gt;
&lt;/ol&gt;


&lt;/li&gt;
&lt;li&gt;Pareto principle

&lt;ol&gt;
&lt;li&gt;Also know as the 80/20 rule. The law of vital few.&lt;/li&gt;
&lt;li&gt;80 percent of sales comes from 20 percent of clients.&lt;/li&gt;
&lt;li&gt;80 percent of code comes from 20 percent of programmers.&lt;/li&gt;
&lt;li&gt;It’s about eliminating things.&lt;/li&gt;
&lt;li&gt;Composition by Pietro monad. $50 Million Dollars&lt;/li&gt;
&lt;li&gt;Is this the best use of my time?&lt;/li&gt;
&lt;/ol&gt;


&lt;/li&gt;
&lt;li&gt;Skill Staking

&lt;ul&gt;
&lt;li&gt;Mastering by &lt;a href="https://www.amazon.com/-/es/Robert-Greene/dp/014312417X"&gt;Robert Greene&lt;/a&gt; says there are 3 keys. 

&lt;ol&gt;
&lt;li&gt;Curiosity&lt;/li&gt;
&lt;li&gt;Value of learning&lt;/li&gt;
&lt;li&gt;Staking your skills in different unique ways.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;For example, if you are a programmer and you combine your programming skills with business skills, or communication skills you will be more valuable.&lt;/li&gt;
&lt;li&gt;It’s not about being the greatest in one thing, you just need to be pretty good at list of useful skills that when combined, make you truly one of a kind.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Happiness Factors

&lt;ul&gt;
&lt;li&gt;To be an efficient learner, you need to enjoy what you’re doing to learning.&lt;/li&gt;
&lt;li&gt;What are the things that make you happy in your life?&lt;/li&gt;
&lt;li&gt;Create monitor factors and monitor them.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Productivity time

&lt;ul&gt;
&lt;li&gt;What is your most productivity time? Morning ? Night ?&lt;/li&gt;
&lt;li&gt;Every person is different and your job is to figure out what your productivity times are.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Self learning paradigm

&lt;ol&gt;
&lt;li&gt;The core of self learning, is this idea of personal autonomy to become a self learner and efficient learner.&lt;/li&gt;
&lt;li&gt;This is a choice you have to make, based on your mainly motivation.
&lt;/li&gt;
&lt;/ol&gt;


&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  The lies
&lt;/h1&gt;

&lt;p&gt;There are a couple of lies in the world and the learning process you need to know.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Follow your passion

&lt;ul&gt;
&lt;li&gt;Become &lt;a href="https://www.amazon.es/Good-They-Cant-Ignore-You/dp/1455509124"&gt;so good they can't ignore you&lt;/a&gt; by Carl Newport.&lt;/li&gt;
&lt;li&gt;Passion is simple overrated, many people who actually love what they do don’t have a passion for it.&lt;/li&gt;
&lt;li&gt;More than passion you need creativity, control and impact. Learning is a craft and you can learn to love the process.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;You can avoid risk

&lt;ul&gt;
&lt;li&gt;Risk is part of the process, and you have to be able to tolerate and enjoy taking risk.&lt;/li&gt;
&lt;li&gt;If you really want to be good, you need to stretch your boundaries, and people who don’t take risks in their life, are going to be left behind by those that take risk. &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Trust this one person

&lt;ul&gt;
&lt;li&gt;Don’t follow one single person and think that everything he or she says is true, and is right for us.&lt;/li&gt;
&lt;li&gt;Each person give advices based on the experiences in their life.&lt;/li&gt;
&lt;li&gt;Create your option based on different opinions and your own experiences, because there can be charlatans.&lt;/li&gt;
&lt;li&gt;The people who tell you that they know everything are often the ones that know the least.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;10.000 hours rule

&lt;ul&gt;
&lt;li&gt;It’s a &lt;a href="https://www.theguardian.com/science/2019/aug/21/practice-does-not-always-make-perfect-violinists-10000-hour-rule"&gt;popular rule by Malcom Gladwell&lt;/a&gt;, however is not totally true.&lt;/li&gt;
&lt;li&gt;The more you practice the better you get, but it means that you won’t need at least 10.000 hours to achieve it.&lt;/li&gt;
&lt;li&gt;Remember there are a lot of variables that makes difference in this topic ( Genetic, Environment, Country). And stay focus is more relevant.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  The Pillars
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Everything is a game

&lt;ul&gt;
&lt;li&gt;One of the most important pillar to being an efficient learner.&lt;/li&gt;
&lt;li&gt;Everything you do or you want to learn, cab be learned, there is where the growth mindset is really important and the game to create a strategy makes sense.&lt;/li&gt;
&lt;li&gt;If you have the Locus of control, you start being aware you have the control of your life and the are prepared to be a better learner.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Feyman Technique

&lt;ul&gt;
&lt;li&gt;It was mentioned by &lt;a href="https://es.wikipedia.org/wiki/Richard_Feynman"&gt;Richard Feynman&lt;/a&gt;, a famous Novel Prize in Physicist&lt;/li&gt;
&lt;li&gt;You need to explain the things you learn in the most simple way. The idea is to become in a good learner to understand a topic you want to be able to explain it in simple terms.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Trunk based knowledge

&lt;ul&gt;
&lt;li&gt;Instead of working from the leafs we should start learning at the roots at the trunk and form that trunk in those leafs.&lt;/li&gt;
&lt;li&gt;If you want to have a long term learning, you should start from the principles, fundamentals at that topic.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://medium.com/accelerated-intelligence/be-prepared-to-lose-your-job-in-the-future-if-you-dont-learn-this-one-skill-now-8a87ade2a268"&gt;Article&lt;/a&gt; Be Prepared To Lose Your Job In The Future… If You Don’t Learn This One Skill Now&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Efficiency trumps grit

&lt;ul&gt;
&lt;li&gt;Being busy just shows that you have lack of time management skills and you’ll discover that efficient learning isn’t about being the absolute hardest worker, it’s about being smart with your time. 🙈&lt;/li&gt;
&lt;li&gt;We have limited time in our life, we have limited skills that we can acquire in our life. So we want to be as efficient as possible with our time.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  The Science
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Focus vs Diffuse mode

&lt;ul&gt;
&lt;li&gt;Barbara Oakey &lt;a href="https://www.youtube.com/watch?v=O96fE1E-rf8"&gt;learning how to learn&lt;/a&gt; . Two states that our brain can be in: Focus and Diffuse mode.&lt;/li&gt;
&lt;li&gt;Focus mode, our brain has the 100% of attention in one thing. It activates the prefrontal cortex in your brain.&lt;/li&gt;
&lt;li&gt;Diffuse mode, your brain is thinking in several things. It activates many regions in your brain. Things like going for a talk or even sleeping.&lt;/li&gt;
&lt;li&gt;As you can’t become expert overnight the best strategy is combine the two modes creating connections and &lt;a href="https://en.wikipedia.org/wiki/Myelin"&gt;Myelin&lt;/a&gt;. So multitasking is an awful strategy.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;The Science of sleep

&lt;ul&gt;
&lt;li&gt;For long term learning, lack of sleep is just a horrible strategy, because it creates toxic products in our brain.&lt;/li&gt;
&lt;li&gt;When you sleep your brain actually cell shrink and fluids flow through these gaps and they clear these toxins for you.&lt;/li&gt;
&lt;li&gt;The idea is to find a balance, don't sleep too much, and don't sleep too little.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Brain Training

&lt;ul&gt;
&lt;li&gt;When two neurons are connected this is call synapses.&lt;/li&gt;
&lt;li&gt;The brain is like a muscle, never has the same state.&lt;/li&gt;
&lt;li&gt;Physical exercise creates estimates and help our brain, because relax it and makes the brain stays in the diffuse mode.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;The Science of feedback

&lt;ul&gt;
&lt;li&gt;Feedback is an integral part of learning. Either be positive or negative. However, getting negative feedback indicates, what we need to fix.&lt;/li&gt;
&lt;li&gt;Here is the importance of mentors or coaches that can accelerate your learning.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Procrastination

&lt;ul&gt;
&lt;li&gt;Procrastination is an issue with managing our emotion and not our time.&lt;/li&gt;
&lt;li&gt;To get rid of procrastination we need to take the initiative and start doing the task.&lt;/li&gt;
&lt;li&gt;This is a useful tool to control our procrastination in Internet. &lt;a href="https://www.inmotion.app/"&gt;https://www.inmotion.app/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Short and Long term memory

&lt;ul&gt;
&lt;li&gt;Long term memory is created by practice and practice, like riding bicycle. Usually you put fundamental concepts and principles that guide your life.&lt;/li&gt;
&lt;li&gt;Short term memory is also known as working memory.  To move from the Short term memory to Long term memory, you can use spaced repetition technique (several days).&lt;/li&gt;
&lt;li&gt;Article about those concepts. &lt;a href="https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2657600/"&gt;https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2657600/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Active and Passive Learning

&lt;ul&gt;
&lt;li&gt;Passive learning is when you do the easy things, like watch videos, listen podcast or just reading something.&lt;/li&gt;
&lt;li&gt;Active learning involves the practice, take notes, take action, teach to someone.&lt;/li&gt;
&lt;li&gt;The idea behind is combine them. Passive + Active. One hour of test is better than one hour of studying.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;The Science of Motivation

&lt;ul&gt;
&lt;li&gt;Intrinsic motivation: Things you believe or you are. Three main motivators Autonomy, Mastery and Purpose.&lt;/li&gt;
&lt;li&gt;External motivation: Things like money, status, gifts. This extrinsic motivation can generate side effects.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Goals

&lt;ul&gt;
&lt;li&gt;Amygdala is the part of our brain which handles our emotions and detects fear. And when there is something huge or challenging it can allow us to run or fight.&lt;/li&gt;
&lt;li&gt;Robert Maurer in his book the &lt;a href="https://www.amazon.es/peque%C3%B1o-puede-cambiar-Crecimiento-personal/dp/8479538996"&gt;Kaizen Method&lt;/a&gt;. Wrotes that the idea is to take a big challenge in small steps day by day, to hack the amygdala and eliminates the fear.&lt;/li&gt;
&lt;li&gt;A nice technique is to use &lt;a href="https://www.ucop.edu/local-human-resources/_files/performance-appraisal/How%20to%20write%20SMART%20Goals%20v2.pdf"&gt;SMART goals&lt;/a&gt;. Here video describe &lt;a href="https://www.youtube.com/watch?v=PCRSVRD2EAk"&gt;how to properly set goals&lt;/a&gt; or you can review this detail guide about SMART goals.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;It pays to not be busy

&lt;ul&gt;
&lt;li&gt;Nowadays in this world being busy means “good” but, at the end it shows a lack of management time.&lt;/li&gt;
&lt;li&gt;We have a region in the brain called the hippocampus which is crucial for learning, and if we want to strengthen the neurons there we need to do exercise, then if we are busy we won’t find time to it.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Chunking

&lt;ul&gt;
&lt;li&gt;When we focus on something we create chunks of knowledge, we create patterns and connect them with existing patterns.&lt;/li&gt;
&lt;li&gt;Bottom up learning and Top down learning, to connect chunks, creating a mind map.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;How to solve problems

&lt;ul&gt;
&lt;li&gt;This is the most demand skill guarantee for the next 20 years (even more years). Because people pay for solving problems, and if you have a unique skill to solve problems you become more valuable.&lt;/li&gt;
&lt;li&gt;Some problems requires you stay in focus mode for structured problems or diffuse mode for intuitive or creative problems.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Deliberate practice

&lt;ul&gt;
&lt;li&gt;The most effective and most powerful types of practice in any field work by harnessing the adaptability of the human body and brain to create, step by step, the ability to do things that were previously not possible. Taken &lt;a href="http://nautil.us/issue/35/boundaries/not-all-practice-makes-perfect"&gt;rom this article &lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Anders Ericsson wrote &lt;a href="https://www.amazon.com/Peak-Secrets-New-Science-Expertise-ebook/dp/B011H56MKS"&gt;a book about learning&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Deliberate practices is we are right on the edge of our limits, and then come back and practice until get a level up, and repeat that cycle. Masters can visualize and create experience in their minds. &lt;/li&gt;
&lt;li&gt;To get deliberate practice we need to define specific goals, intense focus, immediate feedback. It takes place outside of comfort zone.&lt;/li&gt;
&lt;li&gt;The good news are, the better you get at something the more enjoyable it becomes.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Spaced repetition

&lt;ul&gt;
&lt;li&gt;Repeat things after few days is the best way to build strengthen the synaptic connections in our neurons.&lt;/li&gt;
&lt;li&gt;A wonderful comic about spaced repetition. &lt;a href="https://ncase.me/remember/"&gt;https://ncase.me/remember/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Habits as energy savers

&lt;ul&gt;
&lt;li&gt;Research has shown that writing your daily list the evening before such as your goals actually helps to accomplish your goals the next day.&lt;/li&gt;
&lt;li&gt;The habits saves energy to your brain, because you don’t have to think too much about the thing you’re doing. It becomes easier and easier.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Be adventurous

&lt;ul&gt;
&lt;li&gt;We remember things when we’re in an adventurous state when our emotions are high.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Have and endpoint

&lt;ul&gt;
&lt;li&gt;Define an end-point and an end-point to finish something that helps your brain to stay focus.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Be bored

&lt;ul&gt;
&lt;li&gt;To be bored sometimes is good, given it allows that diffuse mode of thinking happens.&lt;/li&gt;
&lt;li&gt;This &lt;a href="https://www.youtube.com/watch?v=LKPwKFigF8U"&gt;video explains&lt;/a&gt; the importance to be bored&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  The Techniques
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Pomodoro Technique

&lt;ul&gt;
&lt;li&gt;This technique was developed by &lt;a href="https://en.wikipedia.org/wiki/Pomodoro_Technique"&gt;Francisco Cirillo&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;25 minutes on (no interruptions) focus, 5 minutes off. 25 minutes focus mode, 5 minutes diffuse mode.&lt;/li&gt;
&lt;li&gt;Here you can find some options to use the pomodo online. &lt;a href="https://www.marinaratimer.com/"&gt;https://www.marinaratimer.com/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Chunk the subject

&lt;ul&gt;
&lt;li&gt;Chunking is related to habits to get the autopilot. Each chunk of knowledge leads to further and further progress.&lt;/li&gt;
&lt;li&gt;Here comes the technique Divide and Conquer.&lt;/li&gt;
&lt;li&gt;Some examples are, Dueling for language learning, Khan Academic for Maths, and this one about computation. &lt;a href="https://www.youtube.com/watch?v=SzJ46YA_RaA"&gt;https://www.youtube.com/watch?v=SzJ46YA_RaA&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Spaced repetition revised

&lt;ul&gt;
&lt;li&gt;Over-learning = not  good, so you need to take some breaks and repeat again after.&lt;/li&gt;
&lt;li&gt;After certain point those neuron connection get strong enough that don’t have to repeat as often. This is called as brain consolidation.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Dliberated practice revised

&lt;ul&gt;
&lt;li&gt;Doing the things that are hard but also work smart.&lt;/li&gt;
&lt;li&gt;The idea of deliberate practice is to avoid the the easy stuffs and then take challenging projects. Expanding our comfort zone.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Create a roadmap

&lt;ul&gt;
&lt;li&gt;Define your goals is really important to understand why are you learning something. This should be aligned with your internal motivations / intrinsic motivations.&lt;/li&gt;
&lt;li&gt;Once you have identified your goal, create a roadmap with the strategy to achieve it. Be careful and select the best content and resource in your road.&lt;/li&gt;
&lt;li&gt;These are tools to create your roadmap. &lt;a href="https://coggle.it/"&gt;Coggle&lt;/a&gt; and &lt;a href="https://miro.com/"&gt;Miro&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Interleaving

&lt;ul&gt;
&lt;li&gt;Mix up your learning by being creative and flexible. The idea is instead of practicing one skill over and over and over, you want to shift three or more different skills.&lt;/li&gt;
&lt;li&gt;Learning three similar but in a different way.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.scientificamerican.com/article/the-interleaving-effect-mixing-it-up-boosts-learning/"&gt;Article The Interleaving Effect: Mixing It Up Boosts Learning&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Einstellung

&lt;ul&gt;
&lt;li&gt;Here is the &lt;a href="https://es.wikipedia.org/wiki/Efecto_Einstellung"&gt;Einstellung effect&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;It’s a rigid mindset where you don’t use new ideas to solve problems.&lt;/li&gt;
&lt;li&gt;To solve that problem you need to accept there is other points and alternatives to solve a problem.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Importance of community

&lt;ul&gt;
&lt;li&gt;Stay and community and share similar things, getting motivation from others and receive feedback it’s really valuable in your learning process. &lt;/li&gt;
&lt;li&gt;You’re the average of the five people you hang out with most, so be surrounded by people  that you like to be.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Habits revised

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.amazon.com/-/es/Charles-Duhigg/dp/081298160X"&gt;The power of habits book&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;The habits are formed by the cue, the routine, the reward and the belief.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.amazon.com/-/es/James-Clear/dp/0735211299"&gt;Atomic habits book&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;There are four laws for habits. Obvious, easy, attractive and satisfying.&lt;/li&gt;
&lt;li&gt;Some tools &lt;a href="https://habitica.com/static/home"&gt;https://habitica.com/static/home&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;System vs Goals

&lt;ul&gt;
&lt;li&gt;Goals are good but systems are better. &lt;a href="https://www.amazon.com/-/es/Scott-Adams-ebook/dp/B00COOFBA4"&gt;How to fail at almost everything&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Create a system defines rules and uses chunks to achieve a goal. e.g. SMART goals.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=NVGuFdX5guE"&gt;https://www.youtube.com/watch?v=NVGuFdX5guE&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;The power of the Senses

&lt;ul&gt;
&lt;li&gt;The senses play an important role in the memories. &lt;/li&gt;
&lt;li&gt;Humans are bad remembering facts, but are good remembering stories and emotions. So try to be stimulated and your senses.&lt;/li&gt;
&lt;li&gt;Create analogies or metaphors in your mind.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Method of Loci

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.nototo.app/"&gt;https://www.nototo.app/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Pareto Principle

&lt;ul&gt;
&lt;li&gt;What the critical skills are needed to accomplish something in the most efficient way.&lt;/li&gt;
&lt;li&gt;The Pareto Principle is about of selection, If you focus in the 20% of the most relevant things you will get the 80% of results.&lt;/li&gt;
&lt;li&gt;If you want to learn any language here is the Pareto Principle in action &lt;a href="https://mostcommonwords.co/"&gt;https://mostcommonwords.co/&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Parkinson's Law

&lt;ul&gt;
&lt;li&gt;Work expands so as to fill the time available for its completion.&lt;/li&gt;
&lt;li&gt;If you put deadlines you can get the benefits of Parkinson’s Law.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.amazon.com/-/es/Cal-Newport/dp/1455586692"&gt;Deep work by Carl Newport&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Stakes and Rewards

&lt;ul&gt;
&lt;li&gt;Focus on small rewards system. Intrinsic vs extrinsic.&lt;/li&gt;
&lt;li&gt;This is a community to focus on your Stakes &lt;a href="https://www.stickk.com/"&gt;https://www.stickk.com/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Concepts vs Facts

&lt;ul&gt;
&lt;li&gt;Concepts are more important than facts. Facts are easy to find in Google, but concepts are high-level topics.&lt;/li&gt;
&lt;li&gt;That’s why is more important to get the foundations and the concepts. Trunk-based learning.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Test Yourself

&lt;ul&gt;
&lt;li&gt;You need to practice and put yourself into your limits. Active learning.&lt;/li&gt;
&lt;li&gt;You need to quiz yourself and to be honest about what have you learned.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;The first 20 hours and ultra learning.

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.amazon.es/First-20-Hours-Learn-Anything/dp/1591846943"&gt;The first 20 hours&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.amazon.com/-/es/Scott-Young/dp/006285268X"&gt;Ultralearning&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;PS: If you want to take the course, you can use this link &lt;br&gt;
&lt;a href="https://academy.zerotomastery.io/p/learning-to-learn-efficient-learning-zero-to-mastery-blueprint?affcode=441520_49y0uhps"&gt;Learning to Learn in ZTM&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Cheers and keep learning! 🍻&lt;/p&gt;

</description>
      <category>learning</category>
      <category>knowledge</category>
      <category>productivity</category>
    </item>
    <item>
      <title>🎉 Creating my blog with Gatsby and Github Pages</title>
      <dc:creator>Edwin Torres</dc:creator>
      <pubDate>Fri, 01 May 2020 03:47:40 +0000</pubDate>
      <link>https://dev.to/codesandtags/creating-my-blog-with-gatsby-and-github-pages-542i</link>
      <guid>https://dev.to/codesandtags/creating-my-blog-with-gatsby-and-github-pages-542i</guid>
      <description>&lt;p&gt;Alright! Today is a great day, many years after I lost my old blog, I've decided to start from scratch&lt;br&gt;
and create again one blog to publish my experiences and don't fall in the inertia. Here I will describe my experience creating my own blog using &lt;strong&gt;Gatsby&lt;/strong&gt; and &lt;strong&gt;Github Pages&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This article will be structured in &lt;/p&gt;
&lt;h2&gt;
  
  
  What you will learn?
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Overview of Gatsby and GitHub Pages&lt;/li&gt;
&lt;li&gt;Creating your project with Gatsby&lt;/li&gt;
&lt;li&gt;Publishing your project in Github Pages&lt;/li&gt;
&lt;li&gt;Adding Travis CI to automate the deploy process&lt;/li&gt;
&lt;li&gt;Next steps&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
  
  
  1. Overview of Gatsby and GitHub Pages
&lt;/h2&gt;

&lt;p&gt;First things first. Before to explain you, how to create your site I will tell you more about Gatsby and Github Pages, if you alreay know about them, go ahead to the next step.&lt;/p&gt;

&lt;p&gt;Taken from the official website &lt;a href="https://www.gatsbyjs.org/"&gt;Gatsby&lt;/a&gt; is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Gatsby is a free and open source framework based on React that helps developers build blazing fast websites and apps.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So we can use the power of &lt;br&gt;
&lt;a href="https://es.reactjs.org/"&gt;React&lt;/a&gt;, &lt;a href="https://graphql.org/"&gt;GraphQL&lt;/a&gt;, &lt;a href="https://es.wikipedia.org/wiki/Markdown"&gt;Markdown&lt;/a&gt; and some data sources&lt;br&gt;
to create really fast web sites, re-using lots of &lt;a href="https://www.gatsbyjs.org/plugins/"&gt;plugins&lt;/a&gt; and publishing in many Web hosting, in my case I will deploy in Github Pages.&lt;/p&gt;

&lt;p&gt;In other words &lt;a href="https://pages.github.com/"&gt;Github Pages&lt;/a&gt; is a free option to deploy hosted repositories &lt;br&gt;
in Github, also it give us an easy way to automate this process with some platforms like &lt;a href="http://travis-ci.org/"&gt;Travis CI&lt;/a&gt;. &lt;/p&gt;
&lt;h2&gt;
  
  
  2. Creating your project with Gatsby
&lt;/h2&gt;

&lt;p&gt;After I reviewd some tutorials and content in Internet, about how to create my own site with Gatsby, here are my steps.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Follow the &lt;a href="https://www.gatsbyjs.org/docs/quick-start/"&gt;quick-start&lt;/a&gt; with Gatsby to install the &lt;code&gt;gatsby-cli&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Once you have installed the Gatsby CLI can create your Gatsby project based on some &lt;a href="https://www.gatsbyjs.org/starters/?v=2"&gt;Gatsby templates&lt;/a&gt;. 
To be honest, the simplest way to create your own site is using a template instead of creating everything from scratch. 
Also you can find &lt;a href="https://github.com/gatsbyjs/gatsby/tree/master/examples"&gt;some examples made with Gatsby&lt;/a&gt; and other technologies.
&lt;/li&gt;
&lt;li&gt;In my case I've created my site based on the beautiful &lt;a href="https://github.com/narative/gatsby-theme-novela"&gt;narative theme&lt;/a&gt;. 
Once of the benefits of using this template are: &lt;/li&gt;
&lt;li&gt;Really good structure to add author and post&lt;/li&gt;
&lt;li&gt;Can be integrated with Contentful to create dynamic post instead of static post (commits in Github)&lt;/li&gt;
&lt;li&gt;Can be integrated with Mailchimp to reuse tue Subscriptions for newsletter&lt;/li&gt;
&lt;li&gt;The styles can be modifies based on the &lt;a href="https://theme-ui.com/"&gt;theme-ui&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;The metadata and social networks can be modified in a simple way.&lt;/li&gt;
&lt;li&gt;Is open source.
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you want to see more templates, you can visit &lt;a href="https://jamstackthemes.dev/#ssg=gatsby"&gt;this link&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  3. Publishing your project in Github Pages
&lt;/h2&gt;

&lt;p&gt;I will no describe the step by step to publish your site in Github Pages, because in the &lt;a href="https://pages.github.com/"&gt;official page&lt;/a&gt; is described really well.&lt;br&gt;
However I can provide you some learned lessons.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I recommend to install the &lt;a href="https://www.npmjs.com/package/gh-pages"&gt;gh-pages dependency&lt;/a&gt; to avoid doing many manual things.&lt;/li&gt;
&lt;li&gt;Don't forget to create the &lt;code&gt;gh-pages&lt;/code&gt; branch in your repo.&lt;/li&gt;
&lt;li&gt;If you are trying to select your &lt;code&gt;gh-pages&lt;/code&gt; branch, please follow the &lt;a href="https://help.github.com/en/enterprise/2.14/user/articles/configuring-a-publishing-source-for-github-pages"&gt;next link&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Please review the &lt;a href="https://www.gatsbyjs.org/docs/how-gatsby-works-with-github-pages/"&gt;How Gatsby works with Github pages&lt;/a&gt;. &lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  4. Adding Travis CI to automate the deploy process
&lt;/h2&gt;

&lt;p&gt;In few words, &lt;a href=""&gt;Travis CI&lt;/a&gt; is&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Easily sync your projects with Travis CI and you’ll be testing your code in minutes!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;To be honest, this have changed my perspective and life when is needed to automate the deploy process based on commits in a branch.&lt;br&gt;
To deploy your site using Travis CI you need to create a &lt;code&gt;.travis.yml&lt;/code&gt; file in your root folder project and add the next configuration.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;language&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;node_js&lt;/span&gt;
&lt;span class="na"&gt;cache&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;directories&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;~/.npm&lt;/span&gt;
&lt;span class="na"&gt;notifications&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;email&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;recipients&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;THE EMAIL WHERE WILL BE SENT THE NOTIFICATIONS&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
    &lt;span class="na"&gt;on_success&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;always&lt;/span&gt;
    &lt;span class="na"&gt;on_failure&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;always&lt;/span&gt;
&lt;span class="na"&gt;node_js&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;12.13.1'&lt;/span&gt;
&lt;span class="na"&gt;git&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;depth&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;3&lt;/span&gt;
&lt;span class="na"&gt;script&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;npm run build&lt;/span&gt;
&lt;span class="na"&gt;deploy&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;provider&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;pages&lt;/span&gt;
  &lt;span class="na"&gt;skip_cleanup&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="no"&gt;true&lt;/span&gt;
  &lt;span class="na"&gt;keep_history&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="no"&gt;true&lt;/span&gt;
  &lt;span class="na"&gt;github_token&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;$GITHUB_TOKEN&lt;/span&gt;
  &lt;span class="na"&gt;local_dir&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;public&lt;/span&gt;
  &lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;branch&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;master&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You also can follow &lt;a href="https://snyk.io/blog/deploying-a-gatsby-site-to-github-pages-from-travis-ci/"&gt;this article&lt;/a&gt; to get more details.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You can achieve the same result using &lt;a href="https://circleci.com/"&gt;Circle CI&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  5. Next steps
&lt;/h2&gt;

&lt;p&gt;It's hard to tell you all things you can do with Gatsby, however you can start reviwing: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Review &lt;a href="https://www.gatsbyjs.org/plugins/"&gt;Gatsby Plugins&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Review &lt;a href="https://www.gatsbyjs.org/docs/awesome-gatsby-resources/"&gt;Gatsby Resources&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Connect Gatsby with &lt;a href="https://www.contentful.com/r/knowledgebase/gatsbyjs-and-contentful-in-five-minutes/"&gt;Contentful in five minutes&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Publish your site in other hosting like &lt;a href="https://www.netlify.com/"&gt;netlify&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Improve the &lt;a href="https://www.gatsbyjs.org/docs/graphql-concepts/"&gt;GraphQL setup with Gatsby&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Add &lt;a href="https://www.gatsbyjs.com/docs/#integrations"&gt;Gatsby Integrations&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Improve your SEO and Analytics tracking.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  6. Demo
&lt;/h2&gt;

&lt;p&gt;If you want to see my site, this is the demo: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://codesandtags.github.io/blog/"&gt;https://codesandtags.github.io/blog/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Cheers 🍻&lt;/p&gt;

</description>
      <category>gatsby</category>
      <category>githubpages</category>
      <category>github</category>
      <category>blog</category>
    </item>
  </channel>
</rss>
