<?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: joshchu</title>
    <description>The latest articles on DEV Community by joshchu (@joshchu).</description>
    <link>https://dev.to/joshchu</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%2F618235%2F75e34e94-e46b-421a-b081-9bc990c31384.png</url>
      <title>DEV Community: joshchu</title>
      <link>https://dev.to/joshchu</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/joshchu"/>
    <language>en</language>
    <item>
      <title>5 Podcast I'll start listening as a Web Developer</title>
      <dc:creator>joshchu</dc:creator>
      <pubDate>Mon, 07 Mar 2022 08:25:37 +0000</pubDate>
      <link>https://dev.to/joshchu/5-podcast-ill-start-listening-as-a-web-developer-4fio</link>
      <guid>https://dev.to/joshchu/5-podcast-ill-start-listening-as-a-web-developer-4fio</guid>
      <description>&lt;p&gt;Am I the only developer who hasn't heard a single developer podcast episode yet? It feels like I'm living in a cave after finishing the first episode of &lt;strong&gt;The Bootstrapped Founder&lt;/strong&gt;. I knew that Podcasts exists. But, I haven't really been active in listening to one. &lt;/p&gt;

&lt;p&gt;So, I'm going to share 5 podcasts that I'm gonna start listening from now on. There are a lot of podcasts out there but I feel that these are the podcasts that caught my attention and is relevant to me at the moment.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. &lt;a href="https://bootstrapped-founder.transistor.fm/"&gt;The Bootstrapped Founder&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;The Bootstrapped Founder Podcast is a weekly show about starting and bootstrapping businesses, how to build an audience, and how to build in public. &lt;/p&gt;

&lt;h2&gt;
  
  
  2. &lt;a href="https://developertea.com/"&gt;developer tea&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;This is a podcast about helping engineers find clarity, perspective, and purpose in regular short bursts of high-value content. &lt;/p&gt;

&lt;h2&gt;
  
  
  3. &lt;a href="https://softskills.audio/"&gt;Soft Skills Engineering&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Soft Skills Engineering is a weekly advice podcast for software developers about the non-technical stuff that goes into being a great Software Developer.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. &lt;a href="https://www.frontendhappyhour.com/"&gt;Front End Happy Hour&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;A software engineering podcast featuring a panel of Software Engineers from Netflix, Twitch, &amp;amp; Atlassian talking over drinks about Frontend, JavaScript, and career development.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. &lt;a href="https://hanselminutes.com/"&gt;The Hanselminutes podcast&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Hanselminutes - Fresh Air for Developers is a weekly talk show that brings interesting people together to talk about the web, culture, education, technology and more.&lt;/p&gt;

&lt;p&gt;It's gonna be overwhelming to see the number of episodes you've missed and it you would most likely feel the need to catch up by listening to all of the past episodes, I also feel the same. But, for sure you don't have to go through everything, just choose the episodes that interests you and enjoy your podcast journey instead of treating it like a task.&lt;/p&gt;

&lt;p&gt;What about you, do you have any podcast shows to suggest?&lt;/p&gt;

</description>
      <category>podcast</category>
      <category>webdev</category>
      <category>beginners</category>
      <category>productivity</category>
    </item>
    <item>
      <title>How to setup Prettier, ESLint, Husky and Lint-Staged with a NextJS and Typescript Project</title>
      <dc:creator>joshchu</dc:creator>
      <pubDate>Sun, 06 Mar 2022 15:09:28 +0000</pubDate>
      <link>https://dev.to/joshchu/how-to-setup-prettier-eslint-husky-and-lint-staged-with-a-nextjs-and-typescript-project-i7b</link>
      <guid>https://dev.to/joshchu/how-to-setup-prettier-eslint-husky-and-lint-staged-with-a-nextjs-and-typescript-project-i7b</guid>
      <description>&lt;p&gt;Working in a team can sometimes be challenging, we try to make our codebase look like it has been coded by one person. We can do this by adhering to a code style/format that everyone should follow. &lt;/p&gt;

&lt;p&gt;However, it would be tiresome and impractical to do it manually and it would be easy to bypass and forget following these standards. Therefore, it's in our best interest to automate it using tools. &lt;/p&gt;

&lt;p&gt;Setting up project tools can sometimes be a pain. I've been in this situation, existing materials is either out of date, has conflicting versions or simply just doesn't work on my end. And for that reason, I would like to share my own setup which I use for almost all of the projects I do. &lt;/p&gt;

&lt;p&gt;Disclaimer. Do keep in mind that these versions are working properly at the time of writing. You can update these packages but make sure to account for these changes and fix conflicting errors.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1.&lt;/strong&gt; Now, to start with our project. Let's install a fresh NextJS &amp;amp; Typescript project.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npx create-next-app --typescript new-app --use-npm
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;I added the flag &lt;code&gt;--use-npm&lt;/code&gt; to ensure that my project is generated using npm  instead of yarn.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;2.&lt;/strong&gt; We would now be installing &lt;a href="https://prettier.io/"&gt;Prettier&lt;/a&gt; and &lt;a href="https://eslint.org/"&gt;EsLint&lt;/a&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install prettier@2.5.1 eslint@8.9.0 -D 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;3.&lt;/strong&gt; Install additional configs and plugins in order to extend the functionality of our linter. These the are multiple configs and plugins that I use for every project. ( you can add or exclude anything that you don't want from this setup ). &lt;a href="https://github.com/dustinspecker/awesome-eslint"&gt;Here&lt;/a&gt; is a list of things you can add.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.npmjs.com/package/@typescript-eslint/eslint-plugin"&gt;&lt;strong&gt;@typescript-eslint/eslint-plugin&lt;/strong&gt;&lt;/a&gt; (version 5.3.0) - An ESLint plugin which provides lint rules for TypeScript codebases. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.npmjs.com/package/eslint-config-airbnb"&gt;&lt;strong&gt;eslint-config-airbnb&lt;/strong&gt;)&lt;/a&gt; (version 18.2.1) - This package provides Airbnb's .eslintrc as an extensible shared config. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.npmjs.com/package/eslint-config-prettier"&gt;&lt;strong&gt;eslint-config-prettier&lt;/strong&gt;&lt;/a&gt; (version 8.3.0) - Turns off all rules that are unnecessary or might conflict with [Prettier].&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.npmjs.com/package/eslint-plugin-jsx-a11y"&gt;&lt;strong&gt;eslint-plugin-jsx-a11y&lt;/strong&gt;&lt;/a&gt; (version 6.4.1) - Static AST checker for accessibility rules on JSX elements.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.npmjs.com/package/eslint-plugin-prettier"&gt;&lt;strong&gt;eslint-plugin-prettier&lt;/strong&gt;&lt;/a&gt; (version 4.0.0) -Runs Prettier as an ESLint rule and reports differences as individual ESLint issues.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="//Install%20eslint%20either%20locally%20or%20globally.%20(Note%20that%20locally,%20per%20project,%20is%20strongly%20preferred)"&gt;&lt;strong&gt;eslint-plugin-react&lt;/strong&gt;&lt;/a&gt;(version 7.27.0) -React specific linting rules for eslint.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.npmjs.com/package/eslint-plugin-react-hooks"&gt;&lt;strong&gt;eslint-plugin-react-hooks&lt;/strong&gt;&lt;/a&gt;(version 4.2.0) - This ESLint plugin enforces the Rules of Hooks.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.npmjs.com/package/eslint-plugin-security"&gt;&lt;strong&gt;eslint-plugin-security&lt;/strong&gt;&lt;/a&gt; (version 1.4.0) - ESLint rules for Node Security. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.npmjs.com/package/eslint-plugin-simple-import-sort"&gt;&lt;strong&gt;eslint-plugin-simple-import-sort&lt;/strong&gt;&lt;/a&gt; (version 7.0.0) - Easy autofixable import sorting.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.npmjs.com/package/eslint-plugin-sonarjs"&gt;&lt;strong&gt;eslint-plugin-sonarjs&lt;/strong&gt;&lt;/a&gt; (version 0.12.0) - SonarJS rules for ESLint to detect bugs and suspicious patterns in your code.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To install these packages:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install @typescript-eslint/eslint-plugin@5.12.1 eslint-config-airbnb@18.2.1 eslint-config-prettier@8.4.0 eslint-plugin-jsx-a11y@6.5.1 eslint-plugin-prettier@4.0.0 eslint-plugin-react@7.27.0 eslint-plugin-react-hooks@4.3.0 eslint-plugin-security@1.4.0 eslint-plugin-simple-import-sort@7.0.0 eslint-plugin-sonarjs@0.12.0 -D
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;4.&lt;/strong&gt; After installing, we should not start setting up our &lt;code&gt;.eslintrc.js&lt;/code&gt; and &lt;code&gt;.prettierrc.js&lt;/code&gt; files. Let's first setup our &lt;code&gt;.eslintrc.js&lt;/code&gt; file. Currently our project scaffolding has a &lt;code&gt;.eslintrc.json&lt;/code&gt; there is nothing wrong with using this as a default and writing the configs in JSON format but I prefer writing my configs in Javascript that's why we need to rename it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;module.exports = {
  root: true,
  parserOptions: {
    ecmaVersion: 2020,
    sourceType: "module",
    ecmaFeatures: {
      jsx: true,
    },
  },

  env: {
    browser: true,
    node: true,
    es6: true,
  },

  settings: {
    react: {
      version: "detect",
    },
    "import/resolver": {
      node: {
        extensions: [".ts", ".tsx"],
      },
    },
  },

  plugins: ["@typescript-eslint"],
  extends: [
    "next/core-web-vitals",
    "plugin:@typescript-eslint/recommended",
    "airbnb",
    "prettier",
    "plugin:jsx-a11y/recommended",
    "plugin:prettier/recommended",
    "plugin:sonarjs/recommended",
    "plugin:security/recommended",
    "plugin:react-hooks/recommended",
  ],


  rules: {
    "@typescript-eslint/no-unused-vars": "error",
    "@typescript-eslint/no-explicit-any": "error",
    "react/react-in-jsx-scope": "off",
    "react/jsx-filename-extension": [
      1,
      {
        extensions: [".ts", ".tsx", ".js", ".jsx"],
      },
    ],
    "react/jsx-props-no-spreading": "off",
    "import/extensions": [
      "error",
      "ignorePackages",
      {
        js: "never",
        jsx: "never",
        ts: "never",
        tsx: "never",
      },
    ],
    "jsx-a11y/anchor-is-valid": [
      "error",
      {
        components: ["Link"],
        specialLink: ["hrefLeft", "hrefRight"],
        aspects: ["invalidHref", "preferButton"],
      },
    ],
    "no-nested-ternary": "off",
    "import/prefer-default-export": "off",
  },
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We need to export these configs inside an object. The first we need to setup is the parserOptions. we specify in &lt;code&gt;ecmaVersion&lt;/code&gt; that we want our linter to support ES2020. &lt;code&gt;sourceType&lt;/code&gt; indicates that we would be parsing files in Javascript Modules. and &lt;code&gt;ecmaFeatures&lt;/code&gt; additional support that we would like to have, in our case we want to have &lt;code&gt;jsx&lt;/code&gt; support.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;env&lt;/code&gt; defines which environments we will be supporting. &lt;/p&gt;

&lt;p&gt;&lt;code&gt;settings&lt;/code&gt; are just additional settings for our linter. &lt;code&gt;import/resolvers&lt;/code&gt; sets the resolver for finding where the export is in &lt;code&gt;import x in "module"&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;plugins&lt;/code&gt; provides additional rule definitions like for the previous configs that we added.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;extends&lt;/code&gt; extends configuration of our base file based on the eslint plugins we added. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;difference between plugins and extends is further discussed &lt;a href="https://prateeksurana.me/blog/difference-between-eslint-extends-and-plugins/"&gt;here&lt;/a&gt;. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;finally, &lt;code&gt;rules&lt;/code&gt; which specifies how your linter should treat every little detail you want to be checked. For me, these are the rules I want my linter to check or ignore. &lt;a href="https://eslint.org/docs/rules/"&gt;Here&lt;/a&gt; are the list of rules you can add. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5.&lt;/strong&gt; We now setup our &lt;code&gt;.prettierrc.js&lt;/code&gt;. By default, this is not included in the scaffolding of our project. Setting up our prettier configs are pretty much similar with how we setup eslint configs.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;module.exports = {
    tabWidth: 4,
    printWidth: 80,
    endOfLine: "auto",
    arrowParens: "avoid",
    trailingComma: "es5",
    semi: true,
    useTabs: false,
    singleQuote: false,
    bracketSpacing: true,
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here is the prettier options I use for all of my projects. You can see that I prefer trailing commas and I don't like using single quotes. You can add more options and modify these according to the what your team agreed on. You can find the list of options &lt;a href="https://prettier.io/docs/en/options.html"&gt;here&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;At this point everything should be working properly. But, there are instances that it doesn't. The first step I do to ensure that It's working properly is to restart my Code Editor. This usually solves the problem. &lt;/p&gt;

&lt;p&gt;If you use &lt;code&gt;eslint-plugin-jsx-a11y&lt;/code&gt; you might come up with an error:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Error: Plugin "jsx-a11y" was conflicted between ".eslintrc.json » eslint-config-next/core-web-vitals » /node_modules/eslint-config-next/index.js" and ".eslintrc.json » ../../.eslintrc.json » eslint-config-airbnb » /node_modules/eslint-config-airbnb/rules/react-a11y.js".
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can resolve this issue by ensuring that you've installed &lt;code&gt;eslint-plugin-jsx-a11y@^6.5.1&lt;/code&gt; and &lt;br&gt;
&lt;code&gt;eslint-plugin-react@^7.27.0&lt;/code&gt; in your project and running &lt;code&gt;npm dedupe&lt;/code&gt; this is what &lt;a href="https://docs.npmjs.com/cli/v7/commands/npm-dedupe"&gt;dedupe&lt;/a&gt; means. &lt;/p&gt;

&lt;p&gt;Now, we've pretty much setup our ESLint and Prettier.   Our work here is pretty much done. However, it would also be nice to catch these errors and fix code formatting on every git commit we make to ensure that  we won't be pushing bad code accidentally and for that we would use &lt;a href="https://www.npmjs.com/package/husky"&gt;&lt;strong&gt;Husky&lt;/strong&gt;&lt;/a&gt; to create some git hooks. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6.&lt;/strong&gt; Install and add the command we want to perform on every commit we perform.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install husky -D
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And to initialize the our pre-commit hooks run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npx  husky install
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npx husky add .husky/pre-commit "npx tsc --noEmit &amp;amp;&amp;amp; npx eslint --fix . &amp;amp;&amp;amp; npx prettier --write ."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;this command ensures that there are no typescript errors with &lt;code&gt;tsc&lt;/code&gt;. running &lt;code&gt;eslint&lt;/code&gt; to ensure no linting error and formatting our code with prettier by runnint &lt;code&gt;prettier --write .&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;If you try to add and commit your changes right now you'll notice that the checking pauses and takes a bit of time to do that. This happens because it checks all the files even for those that didn't even change. This is a not optimal for us so we also want to use &lt;code&gt;lint-staged&lt;/code&gt; package to only check those files that changed or those that we addded to the stage to later on commit. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7.&lt;/strong&gt; Install &lt;code&gt;lint-staged&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install lint-staged -D 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;8.&lt;/strong&gt;  Now we're going to create a &lt;code&gt;lint-staged.config.js&lt;/code&gt; file. add these rules:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;module.exports = {
  // this will check Typescript files
  '**/*.(ts|tsx)': () =&amp;gt; 'yarn tsc --noEmit',

  // This will lint and format TypeScript and                                             //JavaScript files
  '**/*.(ts|tsx|js)': (filenames) =&amp;gt; [
    `yarn eslint --fix ${filenames.join(' ')}`,
    `yarn prettier --write ${filenames.join(' ')}`,
  ],

  // this will Format MarkDown and JSON
  '**/*.(md|json)': (filenames) =&amp;gt;
    `yarn prettier --write ${filenames.join(' ')}`,
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;9.&lt;/strong&gt; go to the file under the &lt;code&gt;.husky&lt;/code&gt; folder and open &lt;code&gt;pre-commit&lt;/code&gt; and then replace the last line with .&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npx lint-staged
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And we're pretty much done with the setup. &lt;strong&gt;Congratulations!&lt;/strong&gt; 🚀&lt;/p&gt;

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

&lt;p&gt;These tools are used in order to enhance the consistency of our codebase they help us enforce the rules and standards that we ought to follow. However, there are limitations to these tools and that we all must be aware of it. We must still code in a manner that would ideally need less of these tools. After all, we progress forwards and not back.&lt;/p&gt;

</description>
      <category>nextjs</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Why I chose to lead the path of Essentialism - Part 1. </title>
      <dc:creator>joshchu</dc:creator>
      <pubDate>Sat, 05 Mar 2022 08:08:48 +0000</pubDate>
      <link>https://dev.to/joshchu/why-i-chose-to-lead-the-path-of-essentialism-part-1-23h3</link>
      <guid>https://dev.to/joshchu/why-i-chose-to-lead-the-path-of-essentialism-part-1-23h3</guid>
      <description>&lt;p&gt;&lt;strong&gt;Essentialism&lt;/strong&gt; as described in the book, "Essentialism: The Disciplined Pursuit of the Less" -  is the systemic approach in identifying where our highest point of contribution lies, and the execution of those things effortlessly. Essentialism believes in "Less but Better". &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Decision Fatigue.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1CdwTpCv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a4rr1ip03hso3j2comca.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1CdwTpCv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a4rr1ip03hso3j2comca.jpg" alt="making decisions" width="880" height="587"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As human beings, we tend to do a lot of things. We try to be a lot of things. This, I would say, is the nature of men, we are multi-dimensional beings, it is in our nature to want to do more. However, it is this very nature that would sometimes lead us to the path of dissatisfaction, discontentment, and being distracted. &lt;/p&gt;

&lt;p&gt;Every day we are presented with a lot of choices. In my case, I've always been indecisive about what I want to be, not because I can't choose, but because I want to have it all. I easily jump into new things that piqued my interests, things that others advocate for. But, as I read the first chapter of this book, I started to realize that I haven't really been a master of any of those topics that I have touched nor would I consider myself knowledgeable in the subject area. It left a cluttered roadmap of my life and career. &lt;/p&gt;

&lt;p&gt;The first chapter taught me to pause and ask myself the question, the right questions - "Am I investing my time and resources in the right thing? is this the thing that I truly want?". Right at the moment, it would really be hard to decipher whether you're making the right decision or not. But, I have also learned to decide not based on emotions, as they are temporary and soon pass, but by reason and practicality. Ask these questions to yourself; this would help you filter through your cluttered mind, leaving non-essentials behind. Having less, but better. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn to say No.&lt;/strong&gt;&lt;/p&gt;

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

&lt;p&gt;I'm a people pleaser. I love to make people happy around me and help them in ways that I can. I do things as they bid, without actually thinking for myself or how it would disrupt my schedule. What's important for me then, is that people would be able to depend on me, that I'd feel important to them. The amount of "yes" (Some of my yes's)  I've replied would also be the same amount of "No" I wished I'd uttered.&lt;/p&gt;

&lt;p&gt;This book has taught me that we should evaluate whether the request is something that we can truly do without having to compromise our own tasks and schedule. If we can't accommodate, it's okay to say no. By being selective and articulate in the things that we will do, it would afford us greater freedom where creativity can be fostered. Trying to get the right things done is a million times better than trying to get everything done. Always assess the trade-offs and ask whether accepting the request is worth our time. After all, time is the most expensive thing. &lt;/p&gt;

&lt;p&gt;If we would be able to filter through what other people want of us or what we want to do for them, we would be able to put our focus on the things that truly matter for us, leaving behind non-essentials. By doing less, we become better. &lt;/p&gt;

</description>
      <category>book</category>
      <category>reading</category>
      <category>growth</category>
      <category>essentialism</category>
    </item>
    <item>
      <title>How to get myself to read books</title>
      <dc:creator>joshchu</dc:creator>
      <pubDate>Fri, 04 Mar 2022 15:43:15 +0000</pubDate>
      <link>https://dev.to/joshchu/how-to-get-myself-to-read-books-2841</link>
      <guid>https://dev.to/joshchu/how-to-get-myself-to-read-books-2841</guid>
      <description>&lt;h2&gt;
  
  
  Reading Frenzy.
&lt;/h2&gt;

&lt;p&gt;I love to read blogs and articles, you'll often see my browser tabs swarmed by unread articles from yesterday and the tabs gets smaller by the hour. I also love to read books however, I haven't really finished any. Yet. I have been stuck in this cycle of constantly jumping books and I get distracted over shiny and new things leaving me a half-baked idea of what the book really is - the concepts it would have illuminated me and the knowledge I could have shared.&lt;/p&gt;

&lt;p&gt;To give justice to these books, I would challenge myself to read and absorb as much as I can by holding myself accountable through public learning and blogging. I would challenge myself to a Reading Frenzy. Doing this every day probably will suck and will make the journey less enjoyable and beneficial for me. So, I've decided to write every 3 days or at least 2 articles per week on every book/topic  I'll read.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Reading multiple books might not be a good idea. But I'm willing to give it a try and see how this goes.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;&lt;a href="https://teachyourselfcs.com/"&gt;tycs&lt;/a&gt;&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;tycs is a compilation of books that mirrors the course taught by the founder (&lt;a href="https://bradfieldcs.com/csi/"&gt;bcsi&lt;/a&gt;). There are a lot of interesting books included in this list but I decided to start reading from the top. The first book would be about "The Structure and Interpretation of Programs" which is available &lt;a href="https://mitpress.mit.edu/sites/default/files/sicp/full-text/book/book.html"&gt;online&lt;/a&gt;. It is taught in a different programming language than what I'm used to so to better understand it without switching context a lot I'll use the Javascript version of this book and read it back and forth just to get a better sense of the concepts. &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Design Patterns&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;I have been interested in learning design patterns yet, I haven't had the time to understand what they are and how they can help me. I've decided to use &lt;a href="https://www.patterns.dev/"&gt;Patterns.dev's&lt;/a&gt;  free book on Javascript and React Design Patterns and use Head First's Design  Pattern as complementary material. &lt;/p&gt;

&lt;p&gt;and alas! my brain would be fried from all this technical bonanza. It needs spiritual care also. That is why I"m also going to read: &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Essentialism&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;This is a bit awkward because the &lt;a href="https://www.amazon.com/Essentialism-Disciplined-Pursuit-Greg-McKeown/dp/0804137382"&gt;book&lt;/a&gt; is all about the pursuit of less and yet I'll be reading a lot. There are a lot of self-help books out there but I think this is the most relevant topic at the moment. I hope that this would allow me to de-clutter my life as well as my mind. &lt;/p&gt;

&lt;p&gt;This won't be an easy journey and it would take a lot of courage to be consistent but I hope that I would be able to turn this into something that would not only help me but also those who struggle to do the same. &lt;/p&gt;

</description>
      <category>javascript</category>
      <category>books</category>
      <category>computerscience</category>
      <category>reading</category>
    </item>
  </channel>
</rss>
