<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Devlog by Aryan]]></title><description><![CDATA[Sharing my journey as an Engineer, building fast, beautiful, and intelligent web apps while exploring Next.js, backend, and AI.]]></description><link>https://blog.aryannamdev.online</link><generator>RSS for Node</generator><lastBuildDate>Sun, 26 Apr 2026 15:10:56 GMT</lastBuildDate><atom:link href="https://blog.aryannamdev.online/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[The Faster Runtime War]]></title><description><![CDATA[Node.js is stable, mature and production-proven.Bun is fast, modern and improves developer experience a lot.This is not about replacing Node, it’s about choosing the right tool.

JavaScript runtimes are getting interesting again.
For years, Node.js d...]]></description><link>https://blog.aryannamdev.online/the-faster-runtime-war</link><guid isPermaLink="true">https://blog.aryannamdev.online/the-faster-runtime-war</guid><category><![CDATA[Node.js]]></category><category><![CDATA[Bun]]></category><category><![CDATA[runtime]]></category><dc:creator><![CDATA[Aryan Namdev]]></dc:creator><pubDate>Sun, 21 Dec 2025 13:42:51 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1766323533264/c06d0fbd-ed9e-43ad-bc76-e9c600d289ff.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Node.js is stable, mature and production-proven.<br />Bun is fast, modern and improves developer experience a lot.<br />This is not about replacing Node, it’s about choosing the right tool.</p>
<hr />
<p>JavaScript runtimes are getting interesting again.</p>
<p>For years, <strong>Node.js</strong> dominated the backend JavaScript world without much competition. Suddenly <strong>Bun</strong> entered the scene claiming insane speed, better DX, and an all-in-one toolchain and the acquisition of <strong>Bun</strong> by <strong>Anthopic</strong> tells us a lot about <strong>Bun</strong>.</p>
<p>So I decided to slow down, ignore hype tweets, and actually understand both runtimes deeply.</p>
<p>This post is based on real usage, reading docs, testing simple APIs, and breaking things.</p>
<hr />
<h2 id="heading-what-exactly-is-a-javascript-runtime">What exactly is a JavaScript runtime?</h2>
<p>A runtime is not just “where JS runs”.</p>
<p>It usually includes:</p>
<ul>
<li><p>A JavaScript engine</p>
</li>
<li><p>APIs for filesystem, networking, timers</p>
</li>
<li><p>Module resolution</p>
</li>
<li><p>Package management (sometimes)</p>
</li>
<li><p>Tooling ecosystem</p>
</li>
</ul>
<p>Different runtimes make different tradeoffs.</p>
<hr />
<h2 id="heading-high-level-overview">High-level overview</h2>
<div class="hn-table">
<table>
<thead>
<tr>
<td>Feature</td><td>Node.js</td><td>Bun</td></tr>
</thead>
<tbody>
<tr>
<td>Initial release</td><td>2009</td><td>2022</td></tr>
<tr>
<td>Engine</td><td>V8</td><td>JavaScriptCore</td></tr>
<tr>
<td>Written in</td><td>C++</td><td>Zig</td></tr>
<tr>
<td>Stability</td><td>Very high</td><td>Still evolving</td></tr>
<tr>
<td>Ecosystem</td><td>Massive</td><td>Growing</td></tr>
<tr>
<td>Learning curve</td><td>Easy</td><td>Easy</td></tr>
</tbody>
</table>
</div><hr />
<h2 id="heading-architecture-differences">Architecture differences</h2>
<h3 id="heading-nodejs-architecture">Node.js architecture</h3>
<p>Node.js uses:</p>
<ul>
<li><p><strong>V8</strong> JavaScript engine</p>
</li>
<li><p><strong>libuv</strong> for async I/O</p>
</li>
<li><p>Event loop model</p>
</li>
</ul>
<p>This architecture is extremely battle-tested. Almost every production bug has already happened and solved.</p>
<p>Node is slower in cold starts but very predictable under load.</p>
<hr />
<h3 id="heading-bun-architecture">Bun architecture</h3>
<p>Bun is written in <strong>Zig</strong>, which already gives performance benefits.</p>
<p>It uses:</p>
<ul>
<li><p>JavaScriptCore</p>
</li>
<li><p>Native APIs written from scratch</p>
</li>
<li><p>Integrated tooling (bundler, test runner, package manager)</p>
</li>
</ul>
<p>Because everything is tightly integrated, Bun avoids many layers Node has.</p>
<p>That’s one big reason it feels faster.</p>
<hr />
<h2 id="heading-performance-comparison">Performance comparison</h2>
<h3 id="heading-cold-start-time">Cold start time</h3>
<div class="hn-table">
<table>
<thead>
<tr>
<td>Runtime</td><td>Cold start</td></tr>
</thead>
<tbody>
<tr>
<td>Node.js</td><td>Slower</td></tr>
<tr>
<td>Bun</td><td>Very fast</td></tr>
</tbody>
</table>
</div><p>Bun shines in:</p>
<ul>
<li><p>CLI tools</p>
</li>
<li><p>Serverless functions</p>
</li>
<li><p>Scripts</p>
</li>
</ul>
<p>Node is fine, but you feel the delay sometimes.</p>
<hr />
<h3 id="heading-runtime-execution">Runtime execution</h3>
<div class="hn-table">
<table>
<thead>
<tr>
<td>Scenario</td><td>Winner</td></tr>
</thead>
<tbody>
<tr>
<td>CPU-heavy scripts</td><td>Bun</td></tr>
<tr>
<td>IO-heavy apps</td><td>Almost same</td></tr>
<tr>
<td>Real-world APIs</td><td>Difference is small</td></tr>
</tbody>
</table>
</div><p>Most backend apps are IO-bound, not CPU-bound.<br />So the “5x faster” claim rarely matters in production APIs.</p>
<hr />
<h2 id="heading-package-management">Package management</h2>
<p>This is where Bun really surprised me.</p>
<div class="hn-table">
<table>
<thead>
<tr>
<td>Feature</td><td>npm (Node)</td><td>Bun</td></tr>
</thead>
<tbody>
<tr>
<td>Install speed</td><td>Slow</td><td>Extremely fast</td></tr>
<tr>
<td>Lockfile</td><td>package-lock.json</td><td>bun.lockb</td></tr>
<tr>
<td>Disk usage</td><td>High</td><td>Lower</td></tr>
<tr>
<td>Node_modules</td><td>Yes</td><td>Yes (but optimized)</td></tr>
</tbody>
</table>
</div><p><code>bun install</code> feels unreal sometimes.<br />For large repos, this alone can save hours every week.</p>
<hr />
<h2 id="heading-tooling-all-in-one-vs-modular">Tooling - all in one vs modular</h2>
<h3 id="heading-nodejs-tooling">Node.js tooling</h3>
<p>Node philosophy:</p>
<ul>
<li><p>Do one thing well</p>
</li>
<li><p>Let ecosystem handle the rest</p>
</li>
</ul>
<p>You need:</p>
<ul>
<li><p>npm / yarn / pnpm</p>
</li>
<li><p>jest / vitest</p>
</li>
<li><p>webpack / esbuild / vite</p>
</li>
</ul>
<p>This gives flexibility but also config fatigue.</p>
<hr />
<h3 id="heading-bun-tooling">Bun tooling</h3>
<p>Bun comes with:</p>
<ul>
<li><p>Runtime</p>
</li>
<li><p>Package manager</p>
</li>
<li><p>Bundler</p>
</li>
<li><p>Test runner</p>
</li>
</ul>
<div class="hn-table">
<table>
<thead>
<tr>
<td>Tool</td><td>Node</td><td>Bun</td></tr>
</thead>
<tbody>
<tr>
<td>Runtime</td><td>Node</td><td>Bun</td></tr>
<tr>
<td>Package manager</td><td>npm/yarn/pnpm</td><td>bun</td></tr>
<tr>
<td>Bundler</td><td>external</td><td>built-in</td></tr>
<tr>
<td>Test runner</td><td>external</td><td>built-in</td></tr>
</tbody>
</table>
</div><p>For side projects, this feels amazing.</p>
<p>But less flexibility sometimes is a tradeoff.</p>
<hr />
<h2 id="heading-compatibility-with-npm-ecosystem">Compatibility with npm ecosystem</h2>
<p>This is important.</p>
<div class="hn-table">
<table>
<thead>
<tr>
<td>Area</td><td>Node</td><td>Bun</td></tr>
</thead>
<tbody>
<tr>
<td>npm packages</td><td>100%</td><td>~90-95%</td></tr>
<tr>
<td>Native addons</td><td>Fully supported</td><td>Partial</td></tr>
<tr>
<td>Edge cases</td><td>Rare</td><td>More common</td></tr>
</tbody>
</table>
</div><p>Most packages work in Bun.<br />But when something breaks, debugging can be painful.</p>
<p>Node almost never surprises you.</p>
<hr />
<h2 id="heading-production-readiness">Production readiness</h2>
<h3 id="heading-nodejs">Node.js</h3>
<p>Node is production everywhere:</p>
<ul>
<li><p>Netflix</p>
</li>
<li><p>Uber</p>
</li>
<li><p>PayPal</p>
</li>
<li><p>Almost every SaaS backend</p>
</li>
</ul>
<p>Monitoring, logging, debugging tools are extremely mature.</p>
<hr />
<h3 id="heading-bun">Bun</h3>
<p>Bun <strong>can</strong> be used in production, but:</p>
<ul>
<li><p>Docs still evolving</p>
</li>
<li><p>Breaking changes happen</p>
</li>
<li><p>Some infra tools assume Node</p>
</li>
</ul>
<p>For critical systems, Node is still safer.</p>
<hr />
<h2 id="heading-developer-experience-dx">Developer Experience (DX)</h2>
<p>This is subjective, but important.</p>
<div class="hn-table">
<table>
<thead>
<tr>
<td>Area</td><td>Node</td><td>Bun</td></tr>
</thead>
<tbody>
<tr>
<td>Setup</td><td>Manual</td><td>Very quick</td></tr>
<tr>
<td>Speed</td><td>Average</td><td>Very fast</td></tr>
<tr>
<td>Config</td><td>More</td><td>Less</td></tr>
<tr>
<td>Debugging</td><td>Mature</td><td>Improving</td></tr>
</tbody>
</table>
</div><p>Bun feels fun.<br />Node feels reliable.</p>
<hr />
<h2 id="heading-typescript-compilation-where-things-get-really-different">TypeScript compilation (where things get really different)</h2>
<p>If you work in JavaScript backend today, you are probably writing <strong>TypeScript by default</strong>.<br />So how a runtime handles TypeScript actually matters a lot in daily workflow.</p>
<p>This is one area where Bun feels very different from Node.</p>
<hr />
<h3 id="heading-typescript-in-nodejs">TypeScript in Node.js</h3>
<p>Node <strong>does not understand TypeScript natively</strong>.</p>
<p>What usually happens:</p>
<ul>
<li><p>You write <code>.ts</code> files</p>
</li>
<li><p>TypeScript compiler (<code>tsc</code>) transpiles them to <code>.js</code></p>
</li>
<li><p>Node runs the compiled JavaScript</p>
</li>
</ul>
<p>Typical setup looks like:</p>
<ul>
<li><p><code>tsc</code> or <code>ts-node</code></p>
</li>
<li><p><code>ts-node-dev</code>, <code>nodemon</code>, or similar</p>
</li>
<li><p>Extra config for source maps, paths, etc</p>
</li>
</ul>
<p>This approach is stable and predictable, but also:</p>
<ul>
<li><p>More config</p>
</li>
<li><p>More tooling</p>
</li>
<li><p>Slower feedback loop</p>
</li>
</ul>
<p>It works great in production, but for local dev it sometimes feels heavy.</p>
<hr />
<h3 id="heading-typescript-in-bun">TypeScript in Bun</h3>
<p>Bun can <strong>run TypeScript directly</strong>.</p>
<p>Yes, you can do:</p>
<pre><code class="lang-plaintext">bun index.ts
</code></pre>
<p>And it just works.</p>
<p>Behind the scenes, Bun transpiles TypeScript using its own pipeline without needing <code>tsc</code>.</p>
<div class="hn-table">
<table>
<thead>
<tr>
<td>Aspect</td><td>Bun</td></tr>
</thead>
<tbody>
<tr>
<td>Native TS support</td><td>✅ Yes</td></tr>
<tr>
<td>Needs build step</td><td>❌ No (for dev)</td></tr>
<tr>
<td>Tooling required</td><td>None</td></tr>
<tr>
<td>Startup time</td><td>Very fast</td></tr>
<tr>
<td>Config</td><td>Minimal</td></tr>
</tbody>
</table>
</div><p>This gives a much faster developer feedback loop, especially for:</p>
<ul>
<li><p>Scripts</p>
</li>
<li><p>Small APIs</p>
</li>
<li><p>Side projects</p>
</li>
<li><p>Experiments</p>
</li>
</ul>
<p>But there is a tradeoff.</p>
<hr />
<h3 id="heading-type-safety-and-strictness">Type safety and strictness</h3>
<p>One important thing people forget:</p>
<ul>
<li><p><strong>Node + tsc</strong> gives you full type checking</p>
</li>
<li><p><strong>Bun focuses more on speed than strict type checking</strong></p>
</li>
</ul>
<p>Bun transpiles TypeScript, but it does <strong>not replace</strong> <code>tsc</code> completely if you care about:</p>
<ul>
<li><p>Strict type checks</p>
</li>
<li><p>CI validation</p>
</li>
<li><p>Large codebases with many contributors</p>
</li>
</ul>
<p>So in real projects, you still might:</p>
<ul>
<li><p>Use Bun to run code</p>
</li>
<li><p>Use <code>tsc --noEmit</code> in CI for type safety</p>
</li>
</ul>
<p>Which is totally fine, but good to know.</p>
<hr />
<h3 id="heading-real-world-workflow-comparison">Real-world workflow comparison</h3>
<div class="hn-table">
<table>
<thead>
<tr>
<td>Workflow</td><td>Node.js</td><td>Bun</td></tr>
</thead>
<tbody>
<tr>
<td>Local development</td><td>Slower</td><td>Very fast</td></tr>
<tr>
<td>Type safety</td><td>Very strong</td><td>Good, but not complete</td></tr>
<tr>
<td>Config complexity</td><td>High</td><td>Low</td></tr>
<tr>
<td>CI pipelines</td><td>Very mature</td><td>Still evolving</td></tr>
</tbody>
</table>
</div><hr />
<h2 id="heading-when-should-you-use-nodejs">When should you use Node.js?</h2>
<p>Use Node if:</p>
<ul>
<li><p>You work on large production apps</p>
</li>
<li><p>Stability matters more than speed</p>
</li>
<li><p>You rely on many npm packages</p>
</li>
<li><p>You work in teams and enterprises</p>
</li>
</ul>
<p>Node is boring, but boring is good in backend.</p>
<hr />
<h2 id="heading-when-should-you-try-bun">When should you try Bun?</h2>
<p>Use Bun if:</p>
<ul>
<li><p>You build side projects</p>
</li>
<li><p>You write scripts or tools</p>
</li>
<li><p>You want faster installs</p>
</li>
<li><p>You enjoy modern DX</p>
</li>
<li><p>You want to experiment</p>
</li>
</ul>
<p>I personally use Bun for experiments and Node for work.</p>
<hr />
<h2 id="heading-final-thoughts">Final thoughts</h2>
<p>This is not a war.</p>
<p>Bun is not killing Node.<br />Node is not obsolete.</p>
<p>Bun is pushing the ecosystem forward, forcing Node to improve.<br />That competition is healthy.</p>
<p>As developers, the goal is not picking sides.<br />The goal is picking the right tool for the job.</p>
<p>Try Bun.<br />Understand Node deeply.<br />And don’t trust hype blindly.</p>
]]></content:encoded></item><item><title><![CDATA[Getting Started with Formik: A Comprehensive Guide]]></title><description><![CDATA[Formik is a popular and widely-used library for managing forms in React applications. It simplifies the process of handling form state, validation, and submission, making it easier for developers to build efficient and maintainable forms. In this blo...]]></description><link>https://blog.aryannamdev.online/getting-started-with-formik-a-comprehensive-guide</link><guid isPermaLink="true">https://blog.aryannamdev.online/getting-started-with-formik-a-comprehensive-guide</guid><category><![CDATA[React]]></category><category><![CDATA[formik]]></category><dc:creator><![CDATA[Aryan Namdev]]></dc:creator><pubDate>Sat, 08 Apr 2023 04:12:47 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1680925356839/744b68f8-82e7-469f-b08d-c5629a1504a0.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Formik is a popular and widely-used library for managing forms in React applications. It simplifies the process of handling form state, validation, and submission, making it easier for developers to build efficient and maintainable forms. In this blog, we'll dive into the world of Formik, exploring its features and showcasing its capabilities through code snippets.</p>
<h2 id="heading-introduction-to-formik"><strong>Introduction to Formik</strong></h2>
<p>React provides excellent support for handling form inputs and maintaining state. However, as forms grow in complexity, managing form state, validation, and submission can become cumbersome. Formik comes to the rescue, providing a simple yet powerful abstraction over forms, making it easier to manage complex forms with ease.</p>
<p>Formik's primary features include:</p>
<ul>
<li><p>Managing form state</p>
</li>
<li><p>Handling form submissions</p>
</li>
<li><p>Validating form input</p>
</li>
<li><p>Displaying error messages</p>
</li>
</ul>
<p>Let's explore these features step-by-step with examples.</p>
<h2 id="heading-installing-and-setting-up-formik"><strong>Installing and Setting Up Formik</strong></h2>
<p>To get started with Formik, you need to install the package using npm or yarn:</p>
<pre><code class="lang-bash">npm install formik
</code></pre>
<p>or</p>
<pre><code class="lang-bash">yarn add formik
</code></pre>
<p>Now, you can import the <code>Formik</code> component and use it in your React application. Let's create a simple form with Formik.</p>
<h2 id="heading-creating-a-simple-form-with-formik"><strong>Creating a Simple Form with Formik</strong></h2>
<p>Here's a basic example of a form with Formik:</p>
<pre><code class="lang-bash">import React from <span class="hljs-string">'react'</span>;
import { Formik, Form, Field } from <span class="hljs-string">'formik'</span>;

const SimpleForm = () =&gt; {
  <span class="hljs-built_in">return</span> (
    &lt;Formik
      initialValues={{ name: <span class="hljs-string">''</span> }}
      onSubmit={(values) =&gt; {
        console.log(<span class="hljs-string">'Form values: '</span>, values);
      }}
    &gt;
      {() =&gt; (
        &lt;Form&gt;
          &lt;label htmlFor=<span class="hljs-string">"name"</span>&gt;Name:&lt;/label&gt;
          &lt;Field id=<span class="hljs-string">"name"</span> name=<span class="hljs-string">"name"</span> placeholder=<span class="hljs-string">"Enter your name"</span> /&gt;
          &lt;button <span class="hljs-built_in">type</span>=<span class="hljs-string">"submit"</span>&gt;Submit&lt;/button&gt;
        &lt;/Form&gt;
      )}
    &lt;/Formik&gt;
  );
};

<span class="hljs-built_in">export</span> default SimpleForm;
</code></pre>
<p>In this example, we have:</p>
<ul>
<li><p>Imported <code>Formik</code>, <code>Form</code>, and <code>Field</code> components from the Formik library.</p>
</li>
<li><p>Defined the initial form values using the <code>initialValues</code> prop.</p>
</li>
<li><p>Implemented the <code>onSubmit</code> function to handle form submission.</p>
</li>
</ul>
<h2 id="heading-validating-form-input"><strong>Validating Form Input</strong></h2>
<p>Formik makes it easy to validate form inputs using the <code>validate</code> prop or the <code>validationSchema</code> prop with Yup. Let's add validation to our example using Yup.</p>
<p>First, install Yup:</p>
<pre><code class="lang-bash">npm install yup
</code></pre>
<p>or</p>
<pre><code class="lang-bash">yarn add yup
</code></pre>
<p>Now, let's add validation to our form:</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">import</span> React <span class="hljs-keyword">from</span> <span class="hljs-string">'react'</span>;
<span class="hljs-keyword">import</span> { Formik, Form, Field, ErrorMessage } <span class="hljs-keyword">from</span> <span class="hljs-string">'formik'</span>;
<span class="hljs-keyword">import</span> * <span class="hljs-keyword">as</span> Yup <span class="hljs-keyword">from</span> <span class="hljs-string">'yup'</span>;

<span class="hljs-keyword">const</span> validationSchema = Yup.object({
  <span class="hljs-attr">name</span>: Yup.string().required(<span class="hljs-string">'Name is required!'</span>),
});

<span class="hljs-keyword">const</span> SimpleForm = <span class="hljs-function">() =&gt;</span> {
  <span class="hljs-keyword">return</span> (
    <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">Formik</span>
      <span class="hljs-attr">initialValues</span>=<span class="hljs-string">{{</span> <span class="hljs-attr">name:</span> '' }}
      <span class="hljs-attr">validationSchema</span>=<span class="hljs-string">{validationSchema}</span>
      <span class="hljs-attr">onSubmit</span>=<span class="hljs-string">{(values)</span> =&gt;</span> {
        console.log('Form values: ', values);
      }}
    &gt;
      {() =&gt; (
        <span class="hljs-tag">&lt;<span class="hljs-name">Form</span>&gt;</span>
          <span class="hljs-tag">&lt;<span class="hljs-name">label</span> <span class="hljs-attr">htmlFor</span>=<span class="hljs-string">"name"</span>&gt;</span>Name:<span class="hljs-tag">&lt;/<span class="hljs-name">label</span>&gt;</span>
          <span class="hljs-tag">&lt;<span class="hljs-name">Field</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"name"</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"name"</span> <span class="hljs-attr">placeholder</span>=<span class="hljs-string">"Enter your name"</span> /&gt;</span>
          <span class="hljs-tag">&lt;<span class="hljs-name">ErrorMessage</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"name"</span> /&gt;</span>
          <span class="hljs-tag">&lt;<span class="hljs-name">button</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"submit"</span>&gt;</span>Submit<span class="hljs-tag">&lt;/<span class="hljs-name">button</span>&gt;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-name">Form</span>&gt;</span>
      )}
    <span class="hljs-tag">&lt;/<span class="hljs-name">Formik</span>&gt;</span></span>
  );
};

<span class="hljs-keyword">export</span> <span class="hljs-keyword">default</span> SimpleForm;
</code></pre>
<p>In this example, we have:</p>
<ul>
<li><p>Imported <code>ErrorMessage</code> from the Formik library.</p>
</li>
<li><p>Created a validation schema using Yup.</p>
</li>
<li><p>Passed the validation schema to the <code>Formik</code> component using the <code>validationSchema</code> prop.</p>
</li>
<li><p>Displayed error messages using the <code>&lt;ErrorMessage&gt;</code> component.</p>
</li>
</ul>
<h2 id="heading-conclusion"><strong>Conclusion</strong></h2>
<p>Formik is a powerful library that simplifies form handling in React applications. It provides an easy-to-use abstraction for managing form state, validation, and submission. With Formik, you can build efficient and maintainable forms without the hassle of managing complex state and validation logic.</p>
<p>In this blog, we have explored the basics of Formik, including installation, creating a simple form, and adding validation. With these building blocks, you can now create more complex forms and harness the power of Formik in your React applications. Happy coding!</p>
]]></content:encoded></item><item><title><![CDATA[Prototype Chaining in JavaScript]]></title><description><![CDATA[Javascript Overview
JavaScript is an object-oriented language that supports prototypal inheritance. Unlike class-based inheritance, where objects inherit from classes, objects in JavaScript inherit from other objects. The mechanism for this inheritan...]]></description><link>https://blog.aryannamdev.online/prototype-chaining-in-javascript</link><guid isPermaLink="true">https://blog.aryannamdev.online/prototype-chaining-in-javascript</guid><dc:creator><![CDATA[Aryan Namdev]]></dc:creator><pubDate>Sun, 05 Feb 2023 10:11:52 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1675591765911/eb9d1619-4ada-4098-84e6-4c2d7e9f172f.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1 id="heading-javascript-overview">Javascript Overview</h1>
<p>JavaScript is an object-oriented language that supports prototypal inheritance. Unlike class-based inheritance, where objects inherit from classes, objects in JavaScript inherit from other objects. The mechanism for this inheritance is called prototype chaining.</p>
<p>Every JavaScript object has a prototype property that refers to another object, which in turn can have its own prototype property, and so on. The prototype chain ends when the prototype is null, which is the default value for the prototype property of the Object object.</p>
<p>By following the prototype chain, JavaScript can resolve property and method references from one object to another. For example, if an object A refers to a property or method that is not found in its own properties, JavaScript will look for that property or method in the prototype object of A. If it is not found there, it will continue searching up the prototype chain.</p>
<p>Prototype chaining is a powerful mechanism that enables objects to inherit properties and methods from other objects. This allows you to create objects that share common behavior and data.</p>
<h1 id="heading-creating-objects-in-javascript">Creating Objects in JavaScript</h1>
<p>There are several ways to create objects in JavaScript. You can create objects using object literals, object constructors, or the object create method.</p>
<h2 id="heading-object-literals">Object Literals</h2>
<p>The simplest way to create objects in JavaScript is to use object literals. An object literal is a comma-separated list of name-value pairs surrounded by curly braces. For example:</p>
<pre><code class="lang-bash">cssCopy codevar obj = {
  name: <span class="hljs-string">"John"</span>,
  age: 30
};
</code></pre>
<h2 id="heading-object-constructors">Object Constructors</h2>
<p>Another way to create objects in JavaScript is to use object constructors. An object constructor is a function that is used to create objects. For example:</p>
<pre><code class="lang-bash">javascriptCopy codefunction Person(name, age) {
  this.name = name;
  this.age = age;
}

var john = new Person(<span class="hljs-string">"John"</span>, 30);
</code></pre>
<h2 id="heading-objectcreate-method">Object.create Method</h2>
<p>The Object.create method is another way to create objects in JavaScript. It creates an object with a specified prototype object. For example:</p>
<pre><code class="lang-bash">cssCopy codevar person = {
  name: <span class="hljs-string">"John"</span>,
  age: 30
};

var john = Object.create(person);
</code></pre>
<h1 id="heading-prototype-chaining">Prototype Chaining</h1>
<p>In JavaScript, you can create objects that inherit from other objects by using prototype chaining. Prototype chaining is a mechanism that allows objects to inherit properties and methods from other objects.</p>
<p>For example, you can create an object that represents an animal, and then create objects that represent specific types of animals, such as dogs and cats. The dog and cat objects can inherit properties and methods from the animal object.</p>
<pre><code class="lang-bash">javascriptCopy codevar animal = {
  <span class="hljs-built_in">type</span>: <span class="hljs-string">"Animal"</span>,
  move: <span class="hljs-function"><span class="hljs-title">function</span></span>() {
    console.log(<span class="hljs-string">"Moving..."</span>);
  }
};

var dog = Object.create(animal);
dog.type = <span class="hljs-string">"Dog"</span>;
dog.bark = <span class="hljs-function"><span class="hljs-title">function</span></span>() {
  console.log(<span class="hljs-string">"Barking..."</span>);
};

var cat = Object.create(animal);
cat.type = <span class="hljs-string">"Cat"</span>;
cat.meow = <span class="hljs-function"><span class="hljs-title">function</span></span>() {
  console.log(<span class="hljs-string">"Meowing..."</span>);
};
</code></pre>
<p>In this example, the dog and cat objects inherit the move method from the animal object. The dog object also has a bark method, and the cat object has a meow method.</p>
<p>When you use the prototype chain, you can create objects that share common behavior and data. This can help you write more maintainable and reusable code.</p>
]]></content:encoded></item><item><title><![CDATA[Tailwind Installation with React using Vite]]></title><description><![CDATA[Even though the Tailwind Documentation has the steps, but here is all the information in one place just for you to see and get started using Tailwind with React.
Why even use Tailwind?
The utility-first CSS framework Tailwind CSS may be used to swift...]]></description><link>https://blog.aryannamdev.online/tailwind-installation-with-react-using-vite</link><guid isPermaLink="true">https://blog.aryannamdev.online/tailwind-installation-with-react-using-vite</guid><category><![CDATA[vite]]></category><category><![CDATA[React]]></category><category><![CDATA[Tailwind CSS]]></category><dc:creator><![CDATA[Aryan Namdev]]></dc:creator><pubDate>Fri, 20 Jan 2023 15:05:56 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1674225354651/39174bb6-dbb0-43c2-a754-73990635f79a.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Even though the Tailwind Documentation has the steps, but here is all the information in one place just for you to see and get started using Tailwind with React.</p>
<h1 id="heading-why-even-use-tailwind">Why even use Tailwind?</h1>
<p>The utility-first CSS framework Tailwind CSS may be used to swiftly create unique user interfaces. The fact that Tailwind CSS offers a sizable collection of pre-defined CSS classes that may be used to implement widely-used CSS styles, like spacing, typography, and colors, is one justification for using it. This can speed up the process of designing responsively and consistently. In addition, Tailwind CSS is very adaptable and simple to integrate into any project because it was developed using a utility-first approach. It also offers a simple method for implementing responsive design on the website.</p>
<p>Tailwind also has the configuration file <code>tailwind.config.js</code> , in which users can create and add snippets for styles that can later be used as utility classes per the Developer's need.</p>
<h1 id="heading-setting-our-react-project-using-tailwind">Setting our React Project using Tailwind</h1>
<p>In this blog, we'll be using Vite, there are other front end tooling but the most preferable one is Vite because of it because of it's hot reload, speed and other factors.</p>
<h1 id="heading-creating-our-react-project-using-vite">Creating our React Project using Vite</h1>
<pre><code class="lang-bash">npm create vite@latest my-project -- --template react
<span class="hljs-built_in">cd</span> my-project
</code></pre>
<h1 id="heading-installing-tailwindcss">Installing TailwindCSS</h1>
<p>Install <code>tailwindcss</code> and its peer dependencies via npm, and then run the init command to generate both <code>tailwind.config.cjs</code> and <code>postcss.config.cjs</code>.</p>
<pre><code class="lang-bash">npm install -D tailwindcss postcss autoprefixer
npx tailwindcss init -p
</code></pre>
<h1 id="heading-configuring-your-path">Configuring your Path</h1>
<p>Configure your paths and remember to make these changes in your <code>tailwind.config.cjs</code> file.</p>
<pre><code class="lang-javascript">t(<span class="hljs-string">'tailwindcss'</span>).Config} */
<span class="hljs-built_in">module</span>.exports = {
  <span class="hljs-attr">content</span>: [
    <span class="hljs-string">"./index.html"</span>,
    <span class="hljs-string">"./src/**/*.{js,ts,jsx,tsx}"</span>,
  ],
  <span class="hljs-attr">theme</span>: {
    <span class="hljs-attr">extend</span>: {},
  },
  <span class="hljs-attr">plugins</span>: [],
</code></pre>
<h1 id="heading-add-the-tailwind-directives-to-your-css">Add the Tailwind directives to your CSS</h1>
<p>These changes must be made in your <code>index.css</code> file.</p>
<pre><code class="lang-javascript">@tailwind base;
@tailwind components;
@tailwind utilities;
</code></pre>
<h1 id="heading-starting-your-development-server">Starting your Development Server</h1>
<pre><code class="lang-bash">npm run dev
</code></pre>
<p>Now you can start using CSS with your React.</p>
<h1 id="heading-installing-the-tailwind-intellisense-extension">Installing the Tailwind Intellisense Extension</h1>
<p>For more productivity, you can Install the Extension mentioned below in VS code to get Intellisense and auto suggestion of classes when working on your project.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1674227033365/b49c094b-5a59-4cb8-9333-0062b274fe29.png" alt class="image--center mx-auto" /></p>
<p>Happy Tailwind!</p>
]]></content:encoded></item><item><title><![CDATA[Pass by Reference vs Pass by Value in JavaScript]]></title><description><![CDATA[When it comes to memory allocation, Javascript have the Call stack and the memory heap and they both work differently let's understand the difference between both of the before diving into Value vs Reference.
The Call Stack and Memory Heap of JS
The ...]]></description><link>https://blog.aryannamdev.online/pass-by-reference-vs-pass-by-value-in-javascript</link><guid isPermaLink="true">https://blog.aryannamdev.online/pass-by-reference-vs-pass-by-value-in-javascript</guid><category><![CDATA[JavaScript]]></category><dc:creator><![CDATA[Aryan Namdev]]></dc:creator><pubDate>Mon, 16 Jan 2023 05:16:25 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1673846154764/9399420e-6ae6-44d9-ae1f-c1f40333478d.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>When it comes to memory allocation, Javascript have the Call stack and the memory heap and they both work differently let's understand the difference between both of the before diving into Value vs Reference.</p>
<h1 id="heading-the-call-stack-and-memory-heap-of-js">The Call Stack and Memory Heap of JS</h1>
<p>The call stack is used to keep track of the functions that are currently executing in a program. It maintains a list of stack frames, where each frame represents a function call. When a function is called, a new stack frame is added to the call stack, and when the function completes its execution, the corresponding stack frame is removed.</p>
<p>On the other hand, the memory heap is an area of memory where data objects such as arrays and objects are stored. When a variable is declared and assigned a value, JavaScript will allocate a block of memory on the heap to store the data. The variable that references the data points to the memory location on the heap where the data is stored.</p>
<p>In simple terms, the call stack is used to keep track of the program execution flow and the memory heap is used to store the data. The call stack and the heap work together to ensure that the program executes correctly.</p>
<p>It's important to note that the call stack has a limited size and if the call stack gets too large, it can cause a stack overflow error. On the other hand, the heap does not have a fixed size, and it is subject to garbage collection, which means that when an object or variable is no longer needed or reachable, JavaScript will automatically release the memory allocated for it.</p>
<h1 id="heading-pass-by-value">Pass by Value</h1>
<p>A copy of its value is passed to the function when a variable is passed by value. This means that any changes made to the variable within the function have no effect on the original variable outside of the function.</p>
<h2 id="heading-example">Example</h2>
<pre><code class="lang-javascript">Copy codelet x = <span class="hljs-number">5</span>;

<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">increment</span>(<span class="hljs-params">x</span>) </span>{
    x++;
}

increment(x);
<span class="hljs-built_in">console</span>.log(x); <span class="hljs-comment">// Output: 5</span>
</code></pre>
<p>In this example, we pass the variable x to the increment function. Within the function, we increment the value of x by 1. However, when we log the value of x outside of the function, it is still 5, as the original variable was not affected by the change made within the function.</p>
<h1 id="heading-pass-by-reference">Pass by Reference</h1>
<p>When a variable is passed by reference, a reference to the variable's memory location is passed to the function. This means that any changes made to the variable within the function will also affect the original variable outside of the function.</p>
<h2 id="heading-example-1">Example</h2>
<pre><code class="lang-javascript">Copy codelet x = { <span class="hljs-attr">value</span>: <span class="hljs-number">5</span> };

<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">increment</span>(<span class="hljs-params">obj</span>) </span>{
    obj.value++;
}

increment(x);
<span class="hljs-built_in">console</span>.log(x.value); <span class="hljs-comment">// Output: 6</span>
</code></pre>
<p>In this example, we pass the object x to the increment function. Within the function, we increment the value property of the object by 1. When we log the value property of the object outside of the function, it is 6, as the original object was affected by the change made within the function.</p>
<p>It is important to note that in JavaScript, primitive data types (such as numbers, strings, and booleans) are passed by value, while objects and arrays are passed by reference.</p>
<h1 id="heading-creating-a-copy-of-array-or-object">Creating a copy of Array or Object</h1>
<p>Therefore, if we want to create a new copy of an object or array, we have to use methods such as <code>Object.assign()</code>, <code>JSON.parse(JSON.stringify())</code>, or <code>Array.slice()</code> to create a new reference.</p>
<pre><code class="lang-javascript">Copy codelet originalArray = [<span class="hljs-number">1</span>, <span class="hljs-number">2</span>, <span class="hljs-number">3</span>];
<span class="hljs-keyword">let</span> newArray = originalArray.slice();

originalArray[<span class="hljs-number">0</span>] = <span class="hljs-number">10</span>;
<span class="hljs-built_in">console</span>.log(originalArray); <span class="hljs-comment">// Output: [10, 2, 3]</span>
<span class="hljs-built_in">console</span>.log(newArray); <span class="hljs-comment">// Output: [1, 2, 3]</span>
</code></pre>
<p>In this example, we create a new array by calling the <code>slice()</code> method on the original array. Since the new array is assigned a new reference, changes made to the original array do not affect the new array.</p>
<h1 id="heading-conclusion">Conclusion</h1>
<p>In conclusion, understanding the difference between pass by reference and pass by value is crucial for writing efficient and bug-free code in JavaScript. While primitive data types are passed by value, objects and arrays are passed by reference. Always keep in mind which data type you are working with and how it is passed to a function, to avoid any unexpected</p>
]]></content:encoded></item><item><title><![CDATA[07 Tips for clearing your JavaScript Interview]]></title><description><![CDATA[Clearing a JavaScript interview can be a daunting task, but with the right preparation and understanding of the language, it can be a breeze. In this blog post, we will take a look at some tips and strategies for preparing for a JavaScript interview,...]]></description><link>https://blog.aryannamdev.online/07-tips-for-clearing-your-javascript-interview</link><guid isPermaLink="true">https://blog.aryannamdev.online/07-tips-for-clearing-your-javascript-interview</guid><category><![CDATA[JavaScript]]></category><category><![CDATA[interview]]></category><dc:creator><![CDATA[Aryan Namdev]]></dc:creator><pubDate>Fri, 13 Jan 2023 11:17:26 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1673608075956/5d8f4336-9c64-4e37-ad54-553da7ab29fd.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Clearing a JavaScript interview can be a daunting task, but with the right preparation and understanding of the language, it can be a breeze. In this blog post, we will take a look at some tips and strategies for preparing for a JavaScript interview, as well as some common interview questions and how to approach them.</p>
<h1 id="heading-understand-the-basics-of-the-language">Understand the basics of the language</h1>
<p>Before you can answer more advanced questions, you need to have a solid understanding of the basics of the language. Brush up on concepts such as data types, operators, loops, functions, and basic data structures like arrays and objects. It's also important to have a good understanding of JavaScript’s event loop, prototype chain, and hoisting.</p>
<h1 id="heading-get-familiar-with-popular-javascript-libraries-and-frameworks">Get familiar with popular JavaScript libraries and frameworks</h1>
<p>Many companies use popular JavaScript libraries and frameworks such as React, Angular, and Vue.js in their projects. Familiarizing yourself with these libraries and frameworks can give you an edge in the interview. Practice building small projects using these libraries and frameworks to get comfortable with their syntax and usage.</p>
<h1 id="heading-practice-writing-clean-and-efficient-code">Practice writing clean and efficient code</h1>
<p>In a JavaScript interview, you may be asked to write code on a whiteboard or a shared code editor. It is important to write clean and efficient code, as this is a reflection of your skills as a developer. Practice writing code that is easy to read and understand, and pay attention to best practices such as variable naming and indentation.</p>
<h1 id="heading-be-familiar-with-es6-features">Be familiar with ES6+ features</h1>
<p>JavaScript has undergone several major updates in recent years, with the introduction of ES6, ES7, ES8 and ES9. Be familiar with new features such as arrow functions, template literals, destructuring, and the spread operator.</p>
<h1 id="heading-practice-solving-common-javascript-interview-questions">Practice solving common JavaScript interview questions</h1>
<p>Practice solving common JavaScript interview questions such as "What is closure in JavaScript?" or "How do you remove duplicates from an array?" to familiarize yourself with the types of questions that may be asked. This will also help you to develop a better understanding of the language and its features.</p>
<h1 id="heading-be-prepared-to-explain-your-thought-process">Be prepared to explain your thought process</h1>
<p>In an interview, it's not just about getting the right answer, but also about explaining your thought process and how you arrived at that answer. Be prepared to explain how you approached a problem, the steps you took to solve it, and any trade-offs you made.</p>
<h1 id="heading-be-honest-and-ask-questions">Be honest and ask questions</h1>
<p>It's okay if you don't know the answer to a question. Be honest and let the interviewer know that you're not familiar with a particular concept or feature. Don’t be afraid to ask questions to clarify the requirements or the expected output.</p>
<p>In conclusion, clearing a JavaScript interview requires a combination of understanding the basics of the language, being familiar with popular libraries and frameworks, and practice writing clean and efficient code. By following these tips and strategies, and practice solving common interview questions, you will be well-prepared for your next JavaScript interview.</p>
]]></content:encoded></item><item><title><![CDATA[Getting Started With Express.js]]></title><description><![CDATA[Express
Express.js is a popular Node.js web application framework that allows developers to easily create server-side web applications. In this blog post, we will go through the basics of getting started with Express.js by building a simple "Hello Wo...]]></description><link>https://blog.aryannamdev.online/getting-started-with-expressjs</link><guid isPermaLink="true">https://blog.aryannamdev.online/getting-started-with-expressjs</guid><category><![CDATA[Express.js]]></category><category><![CDATA[Node.js]]></category><category><![CDATA[JavaScript]]></category><category><![CDATA[Web Development]]></category><dc:creator><![CDATA[Aryan Namdev]]></dc:creator><pubDate>Fri, 13 Jan 2023 04:43:22 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1673584714233/56ebb2cb-5bd6-4fab-96ac-c642ef1c2268.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1 id="heading-express">Express</h1>
<p>Express.js is a popular Node.js web application framework that allows developers to easily create server-side web applications. In this blog post, we will go through the basics of getting started with Express.js by building a simple "Hello World" application.</p>
<h1 id="heading-installing">Installing</h1>
<p>First, we will need to install the Express.js package. This can be done by running the following command in your terminal:</p>
<pre><code class="lang-bash">npm install express
</code></pre>
<p>Once the package is installed, we can create a new JavaScript file for our application. In this example, we will call it "app.js".</p>
<h1 id="heading-creating-our-first-route">Creating our first route</h1>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> express = <span class="hljs-built_in">require</span>(<span class="hljs-string">"express"</span>); <span class="hljs-comment">//ie export</span>
<span class="hljs-keyword">const</span> app = express();

<span class="hljs-comment">//creating route</span>
app.get(<span class="hljs-string">"/"</span>, <span class="hljs-function">(<span class="hljs-params">req, res</span>) =&gt;</span> {
  res.send(<span class="hljs-string">"Hello World"</span>);
});

<span class="hljs-comment">//listening</span>
app.listen(<span class="hljs-number">3000</span>, <span class="hljs-function">() =&gt;</span> {
  <span class="hljs-built_in">console</span>.log(<span class="hljs-string">"Server running on port 3000"</span>);
});
</code></pre>
<p>In the code above, we are requiring the Express.js module and creating a new Express application by calling the express() function. We then define a route for the root URL ("/") that will handle a GET request. When a user visits the root URL, our callback function will be executed, which sends a "Hello World" message back to the user.</p>
<p>Finally, we are telling the application to listen on port 3000 for incoming connections.</p>
<h1 id="heading-running-our-application">Running our Application</h1>
<p>To run the application, we can simply execute the following command in the terminal:</p>
<pre><code class="lang-bash">node app.js
</code></pre>
<p>and then visit <a target="_blank" href="http://localhost:3000"><code>http://localhost:3000</code></a> in a web browser. It should show "Hello World"</p>
<p>This is just the beginning of what you can do with Express.js. You can also easily define other routes, use middleware, and handle different types of HTTP requests. Happy coding!</p>
]]></content:encoded></item><item><title><![CDATA[ODM vs ORM]]></title><description><![CDATA[Object-Relational Mapping (ORM) and Object-Document Mapping (ODM) are two popular techniques used to interact with databases in a programming language. Both ORM and ODM provide an abstraction layer that allows developers to work with the database usi...]]></description><link>https://blog.aryannamdev.online/odm-vs-orm</link><guid isPermaLink="true">https://blog.aryannamdev.online/odm-vs-orm</guid><category><![CDATA[Databases]]></category><category><![CDATA[iwritecode]]></category><dc:creator><![CDATA[Aryan Namdev]]></dc:creator><pubDate>Thu, 12 Jan 2023 18:50:28 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1673548970353/3105ca78-76ba-46b2-aa66-cc59a17afbdf.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Object-Relational Mapping (ORM) and Object-Document Mapping (ODM) are two popular techniques used to interact with databases in a programming language. Both ORM and ODM provide an abstraction layer that allows developers to work with the database using their programming language's objects, rather than writing raw SQL queries. This makes it easier to write, maintain, and test the code. However, there are some key differences between ORM and ODM, and it's important to understand these differences to choose the right approach for your project.</p>
<h1 id="heading-orm">ORM</h1>
<p>As the name suggests, is used to interact with relational databases. Relational databases, such as MySQL, PostgreSQL, and Oracle, store data in tables, with each table representing a specific entity and each row representing an instance of that entity. The relationships between tables are defined using foreign keys. ORM provides a way to map these tables and relationships to objects in the programming language, making it easy to work with the data using the familiar object-oriented paradigm. For example, using an ORM library such as Hibernate, a Java developer can define a class to represent a "Person" entity, and Hibernate will automatically create the corresponding table in the database and handle all the CRUD operations.</p>
<h1 id="heading-odm">ODM</h1>
<p>On the other hand, is used to interact with document-based databases, such as MongoDB and CouchDB. Document-based databases store data in the form of documents, with each document representing an instance of an entity. These databases are more flexible than relational databases, as the structure of the documents can vary from one document to another. ODM provides a way to map these documents to objects in the programming language, making it easy to work with the data using the familiar object-oriented paradigm. For example, using an ODM library such as Mongoose, a JavaScript developer can define a schema to represent a "Person" entity, and Mongoose will automatically handle all the CRUD operations.</p>
<h1 id="heading-usecase">Usecase</h1>
<p>So, when should you use ORM, and when should you use ODM? The main difference between ORM and ODM is the type of database they are used with. If you are working with a <strong>relational database</strong>, <strong>ORM</strong> is the way to go. ORM is more <strong>powerful and flexible</strong> than ODM, as it can handle complex relationships between tables. However, if you are working with a <strong>document-based database</strong>, <strong>ODM</strong> is the better choice. ODM is simpler and more suited for document-based databases, as it is designed to work with the flexible schema of these databases.</p>
<h1 id="heading-database-variance">Database Variance</h1>
<p>It's also important to note that there are other types of databases like Graph databases and Time series databases, which have their ORM or ODM libraries specific to them. For example, Neo4j uses Cypher as the query language and has its own ORM library called "Neo4j-OGM" (Object Graph Mapping) and InfluxDB uses InfluxQL and has its own ORM library called "InfluxDB-ORM".</p>
<h1 id="heading-conclusion">Conclusion</h1>
<p>In conclusion, ORM and ODM are powerful techniques that allow developers to work with databases more efficiently and conveniently. ORM is best suited for relational databases, while ODM is best suited for document-based databases. However, the choice of which to use ultimately depends on the specific needs of your project and the type of database you are working with.</p>
]]></content:encoded></item><item><title><![CDATA[Markdown: The text-markup beast.]]></title><description><![CDATA[What's Markdown good for?
Markdown is an easy way to take down notes, create content for a website, create readme in your github. Markdown is used for creating groceries list to a big production content creation.
Here are some most helpful and common...]]></description><link>https://blog.aryannamdev.online/markdown-the-text-markup-beast</link><guid isPermaLink="true">https://blog.aryannamdev.online/markdown-the-text-markup-beast</guid><category><![CDATA[markdown]]></category><category><![CDATA[Web Development]]></category><category><![CDATA[#LCO]]></category><dc:creator><![CDATA[Aryan Namdev]]></dc:creator><pubDate>Sat, 23 Jul 2022 22:59:40 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1658612858064/6lN8CLdpL.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1 id="heading-whats-markdown-good-for">What's Markdown good for?</h1>
<p>Markdown is an easy way to take down <strong>notes</strong>, <strong>create content</strong> for a website, <strong>create readme</strong> in your github. Markdown is used for creating groceries list to a big production content creation.</p>
<p>Here are some most helpful and common tags (elements) of MarkDown:</p>
<h1 id="heading-tags">Tags</h1>
<h2 id="heading-1-headings">1. Headings</h2>
<p>Syntax:</p>
<pre><code><span class="hljs-comment"># Heading 1</span>
<span class="hljs-comment">## Heading 2</span>
<span class="hljs-comment">### Heading 3</span>
<span class="hljs-comment">#### Heading 4</span>
<span class="hljs-comment">##### Heading 5</span>
<span class="hljs-comment">###### Heading 6</span>
</code></pre><p>Output:</p>
<h1 id="heading-heading-1">Heading 1</h1>
<h2 id="heading-heading-2">Heading 2</h2>
<h3 id="heading-heading-3">Heading 3</h3>
<h4 id="heading-heading-4">Heading 4</h4>
<h5 id="heading-heading-5">Heading 5</h5>
<h6 id="heading-heading-6">Heading 6</h6>
<blockquote>
<p>note: Putting an space after the '#' is necessary, otherwise the formatting will not work.</p>
</blockquote>
<h2 id="heading-2-bold">2. Bold</h2>
<p>Syntax:</p>
<pre><code><span class="hljs-operator">*</span><span class="hljs-operator">*</span>bold text<span class="hljs-operator">*</span><span class="hljs-operator">*</span>

__bold text__
</code></pre><p>Output:</p>
<p><strong>bold text</strong></p>
<p><strong>bold text</strong></p>
<h2 id="heading-3-italics">3. Italics</h2>
<p>Syntax:</p>
<pre><code><span class="hljs-operator">*</span>Italicized text<span class="hljs-operator">*</span>

_Italicized text_
</code></pre><p>Output:</p>
<p><em>Italicized text</em></p>
<p><em>Italicized text</em></p>
<h2 id="heading-4-quotes">4. Quotes</h2>
<p>Syntax:</p>
<h3 id="heading-quote-with-single-paragraph">Quote with single paragraph.</h3>
<pre><code>&gt;The <span class="hljs-keyword">quote</span> will go here.
</code></pre><p>Output:</p>
<blockquote>
<p>The quote will go here.</p>
</blockquote>
<h3 id="heading-quote-with-multiple-paragraphs">Quote with multiple paragraphs.</h3>
<pre><code><span class="hljs-operator">&gt;</span>This <span class="hljs-keyword">is</span> the first para.
&gt;
<span class="hljs-operator">&gt;</span>This <span class="hljs-keyword">is</span> the second para.
</code></pre><p>Output:</p>
<blockquote>
<p>This is the first para.</p>
<p>This is the second para.</p>
</blockquote>
<hr />
<blockquote>
<p><strong>NOTE</strong>: If we do not put the "&gt;" in between of two para elements, it'll come in a single paragraph.</p>
</blockquote>
<h3 id="heading-nested-quotes">Nested  quotes</h3>
<pre><code><span class="hljs-operator">&gt;</span>This <span class="hljs-keyword">is</span> the first para.
&gt;
<span class="hljs-operator">&gt;</span><span class="hljs-operator">&gt;</span>This <span class="hljs-keyword">is</span> the nested para.
</code></pre><p>Output:</p>
<blockquote>
<p>This is the first para.</p>
<blockquote>
<p>This is the nested para.</p>
</blockquote>
</blockquote>
<h3 id="heading-quotes-with-other-elements">Quotes with Other Elements</h3>
<pre><code><span class="hljs-operator">&gt;</span>We can make text <span class="hljs-operator">*</span><span class="hljs-operator">*</span>bold<span class="hljs-operator">*</span><span class="hljs-operator">*</span>.
&gt;
<span class="hljs-operator">&gt;</span><span class="hljs-operator">-</span>Can add list.
</code></pre><p>Output:</p>
<blockquote>
<p>We can make text <strong>bold</strong>.</p>
<ul>
<li>Can add list.</li>
</ul>
</blockquote>
<h3 id="heading-nested-quotes">Nested  quotes</h3>
<pre><code><span class="hljs-operator">&gt;</span>This <span class="hljs-keyword">is</span> the first para.
&gt;
<span class="hljs-operator">&gt;</span><span class="hljs-operator">&gt;</span>This <span class="hljs-keyword">is</span> the nested para.
</code></pre><p>Output:</p>
<blockquote>
<p>This is the first para.</p>
<blockquote>
<p>This is the nested para.</p>
</blockquote>
</blockquote>
<h2 id="heading-5-ordered-lists">5. Ordered lists</h2>
<p>Syntax:</p>
<pre><code><span class="hljs-number">1</span><span class="hljs-string">.</span> <span class="hljs-string">Item</span> <span class="hljs-number">1</span>
<span class="hljs-number">2</span><span class="hljs-string">.</span> <span class="hljs-string">Item</span> <span class="hljs-number">2</span>
</code></pre><p>Output:</p>
<ol>
<li>Item 1</li>
<li>Item 2</li>
</ol>
<h3 id="heading-nested-ordered-lists">Nested Ordered lists</h3>
<p>Syntax:</p>
<pre><code><span class="hljs-number">1</span><span class="hljs-string">.</span> <span class="hljs-string">Item</span> <span class="hljs-number">1</span>
<span class="hljs-number">2</span><span class="hljs-string">.</span> <span class="hljs-string">Item</span> <span class="hljs-number">2</span>
  <span class="hljs-number">1</span><span class="hljs-string">.</span> <span class="hljs-string">item</span> <span class="hljs-number">2.1</span>
  <span class="hljs-number">2</span><span class="hljs-string">.</span> <span class="hljs-string">item</span> <span class="hljs-number">2.2</span>
</code></pre><p>Output:</p>
<ol>
<li>Item 1</li>
<li>Item 2<ol>
<li>item 2.1</li>
<li>item 2.2</li>
</ol>
</li>
</ol>
<h2 id="heading-6-unordered-lists">6. Unordered lists</h2>
<p>Syntax:</p>
<pre><code><span class="hljs-bullet">-</span> Item 1
<span class="hljs-bullet">-</span> Item 2
<span class="hljs-bullet">*</span> item 3
<span class="hljs-bullet">*</span> item 4
</code></pre><p>Output:</p>
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>item 3</li>
<li>item 4</li>
</ul>
<h3 id="heading-nested-unordered-lists">Nested Unordered lists</h3>
<p>Syntax:</p>
<pre><code><span class="hljs-bullet">-</span> Item 1
<span class="hljs-bullet">-</span> Item 2
<span class="hljs-bullet">  -</span> item 2.1
<span class="hljs-bullet">  -</span> item 2.2
</code></pre><p>Output:</p>
<ul>
<li>Item 1</li>
<li>Item 2<ul>
<li>item 2.1</li>
<li>item 2.2</li>
</ul>
</li>
</ul>
<h2 id="heading-7-code-blocks">7. Code Blocks</h2>
<h3 id="heading-inline-code">Inline Code</h3>
<p>Syntax:</p>
<pre><code>`<span class="hljs-keyword">inline</span> code`
</code></pre><p>Output:
<code>inline code</code></p>
<h3 id="heading-multi-line-code">Multi-line code</h3>
<p>Syntax:</p>
<p><strong>Multi line code is inserted by ```` in the beginning and end of the code.</strong></p>
<p>Output:</p>
<pre><code>This 
<span class="hljs-keyword">is</span> 
Multi-<span class="hljs-type">Line</span>
Code
</code></pre><h2 id="heading-8-links">8. Links</h2>
<p>Syntax:</p>
<pre><code>[<span class="hljs-string">LCO</span>](<span class="hljs-link">web.learncodeonline.in</span>)
</code></pre><p>Output:
<a target="_blank" href="https://courses.learncodeonline.in">LCO</a></p>
<h2 id="heading-9-urls-and-email-addresses">9. URLs and Email Addresses</h2>
<p>Syntax:</p>
<pre><code><span class="hljs-operator">&lt;</span>http:<span class="hljs-comment">// www.google.com&gt;</span>
<span class="hljs-operator">&lt;</span>aryanamdev08@gmail.com&gt;
</code></pre><p>Output:</p>
<p><a target="_blank" href="http://www.google.com">http://www.google.com</a>
, <a target="_blank" href="mailto:aryanamdev08@gmail.com">aryanamdev08@gmail.com</a></p>
<h2 id="heading-10-images">10. Images</h2>
<p>Syntax:</p>
<pre><code>![<span class="hljs-string">Mountain img</span>](<span class="hljs-link">https://images.pexels.com/photos/933054/pexels-photo-933054.jpeg?cs=srgb&amp;dl=pexels-joyston-judah-933054.jpg&amp;fm=jpg</span>)
</code></pre><p>Output:</p>
<p><img src="https://images.pexels.com/photos/933054/pexels-photo-933054.jpeg?cs=srgb&amp;dl=pexels-joyston-judah-933054.jpg&amp;fm=jpg" alt="Mountain img" /></p>
<p><strong>Here is all what i had about Markdown and i'll come up with more such blogs.</strong></p>
]]></content:encoded></item><item><title><![CDATA[CSS Positions: The Positioning Gamechanger.]]></title><description><![CDATA[CSS Positioning:
The CSS Position property is used to position an element in the webpage, and how it'll position, will depend on the property we choose to give. 
We'll have came around those fixed navbars on the top and those sticky navbars and guess...]]></description><link>https://blog.aryannamdev.online/css-positions-the-positioning-gamechanger</link><guid isPermaLink="true">https://blog.aryannamdev.online/css-positions-the-positioning-gamechanger</guid><category><![CDATA[CSS]]></category><dc:creator><![CDATA[Aryan Namdev]]></dc:creator><pubDate>Fri, 22 Jul 2022 21:19:33 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1658299452613/0_5zeVVjt.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1 id="heading-css-positioning">CSS Positioning:</h1>
<p>The CSS Position property is used to position an element in the webpage, and how it'll position, will depend on the property we choose to give. 
We'll have came around those <strong>fixed navbars</strong> on the top and those <strong>sticky navbars</strong> and guess what, they are all done with the <strong>help of CSS Position.</strong>
In This blog we'll be discussing when to use which css property to get the best out of it. </p>
<p>Syntax: </p>
<pre><code><span class="hljs-selector-tag">selector</span>{
  <span class="hljs-attribute">Position</span>: Property;
}
</code></pre><h1 id="heading-types-of-positions">Types of Positions:</h1>
<h2 id="heading-1-static-position">1. Static Position:</h2>
<p>Static Position is the <strong>default value</strong> of the position property. It have <strong>no effects</strong> in the positioning of any element.</p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://codepen.io/aryaann/pen/ZExKdpp">https://codepen.io/aryaann/pen/ZExKdpp</a></div>
<h2 id="heading-2-relative-position">2. Relative Position:</h2>
<p>A Relative positioned element does not give any results, when <code>{position: relative;}</code> is applied to it. But when it is twiched with the <strong><code>left</code> , <code>right</code>,  <code>top</code></strong> and <strong><code>bottom</code> </strong>properties. It starts acting accordingly. If the element have <code>left: 20px;</code> that means from the place where it is positioned, it have to move <strong>20px from left.</strong></p>
<p>as we can see in the example:</p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://codepen.io/aryaann/pen/qBojPoa">https://codepen.io/aryaann/pen/qBojPoa</a></div>
<h2 id="heading-3-absolute-position">3. Absolute Position:</h2>
<p>The Absolutely Positioned element is <strong>removed </strong>from the document flow. The elements with whom it was a sibling, they leave <strong>no space</strong> for the element. The Absolute position is used to align the element in context to it's <strong>parent element</strong>, which have the property <code>**{position:relative;}**</code> in it.</p>
<p>as we can see in the example, we gave <code>position: relative;</code> to the element with <strong>ID "three"</strong> and gave it's <strong>child</strong> the <code>{position: absolute}</code> and give left and bottom values "0". That means the child will align relatively bottom-left to its parent.</p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://codepen.io/aryaann/pen/wvmePvN">https://codepen.io/aryaann/pen/wvmePvN</a></div>
<h2 id="heading-4-fixed-position">4. Fixed Position:</h2>
<p>When an item is position fixed, it is removed from the normal document flow and it'll be <strong>fixed to the viewport</strong>. So if even when scrolled through, it also <strong>scrolls</strong>, remaining at the <strong>same position</strong>. Syntax <code>{position:fixed}</code></p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://codepen.io/aryaann/pen/rNdwGqV">https://codepen.io/aryaann/pen/rNdwGqV</a></div>
<h2 id="heading-5-sticky-position">5. Sticky Position:</h2>
<p>The Simplest explanation of sticky position is it sticks to the view port until it's  relative parent is scrolled through. Syntax `{position:sticky;}.</p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://codepen.io/aryaann/pen/BarZmde">https://codepen.io/aryaann/pen/BarZmde</a></div>
<p><strong>Will Come again with such blogs.</strong></p>
<p>Connect me: <a target="_blank" href="https://www.linkedin.com/in/aryan-namdev-3b16151b6/">linkedin</a></p>
]]></content:encoded></item><item><title><![CDATA[Css Selectors: All You Need To Know.]]></title><description><![CDATA[What are CSS Selectors?
In CSS there are various types of selectors, selectors are used to target HTML elements that we wants to style. There are so many elements in HTML, that can confuse any Beginner-Dev that is trying to build things, so the trans...]]></description><link>https://blog.aryannamdev.online/css-selectors-all-you-need-to-know</link><guid isPermaLink="true">https://blog.aryannamdev.online/css-selectors-all-you-need-to-know</guid><category><![CDATA[HTML5]]></category><category><![CDATA[CSS]]></category><category><![CDATA[Web Development]]></category><category><![CDATA[frontend]]></category><category><![CDATA[css_selector]]></category><dc:creator><![CDATA[Aryan Namdev]]></dc:creator><pubDate>Tue, 19 Jul 2022 18:27:51 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1658249997867/FXFq6GMl9.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1 id="heading-what-are-css-selectors">What are CSS Selectors?</h1>
<p>In <strong>CSS</strong> there are various types of <strong>selectors</strong>, selectors are used to target <strong>HTML</strong> elements that we wants to style. There are so many elements in HTML, that can confuse any Beginner-Dev that is trying to build things, so the transition from beginner Web-Dev to an Intermediate one
is, getting familiar with CSS Selectors.</p>
<p><img src="https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/Selectors/selector.png" alt="CSS IMG" class="image--center mx-auto" /></p>
<h1 id="heading-types-of-css-selectors">Types of CSS Selectors:</h1>
<h2 id="heading-universal-selector">Universal Selector:</h2>
<p>The <strong>Universal selector</strong> selects all the HTML elements, it is used to delete the default margins and paddings. It is denoted by <code>*</code></p>
<pre><code>*{
  <span class="hljs-attribute">margin</span>: <span class="hljs-number">0</span>;
  <span class="hljs-attribute">padding</span>: <span class="hljs-number">0</span>;
  <span class="hljs-attribute">box-sizing</span>:border-box;
}
</code></pre><h2 id="heading-type-selectors">Type Selectors:</h2>
<p>This group includes selectors that target HTML elements by their <strong>type</strong>. Like, <code>&lt;h1&gt;, &lt;li&gt;, &lt;nav&gt;</code>.</p>
<pre><code><span class="hljs-selector-tag">h1</span>{
  <span class="hljs-attribute">color</span>: <span class="hljs-number">#111</span>;
}
</code></pre><h2 id="heading-class-selectors">Class Selectors:</h2>
<p>This group includes selectors that target HTML elements by the <strong>class</strong> they are assigned to. Class is assigned by <code>.classname</code> inside an HTML tag.</p>
<pre><code><span class="hljs-selector-class">.navbar</span>{
  <span class="hljs-attribute">background-color</span>: <span class="hljs-number">#111</span>;
}
</code></pre><blockquote>
<p><strong>Note:</strong> Class can be assigned to many Elements at once.</p>
</blockquote>
<h2 id="heading-id-selectors">ID Selectors:</h2>
<p>This group includes selectors that target HTML elements by the<strong> ID</strong> they are assigned to. ID is assigned by <code>#ID</code> inside an HTML tag.</p>
<pre><code><span class="hljs-selector-id">#Logo</span>{
  <span class="hljs-attribute">height</span>: <span class="hljs-number">5em</span>;
}
</code></pre><blockquote>
<p><strong>Note:</strong> IDs can be assigned to <strong>only one Element</strong> at once.</p>
</blockquote>
<h2 id="heading-attribute-selectors">Attribute Selectors:</h2>
<p>This group  allows you to select HTML tags based on the <strong>presence of attributes</strong> they have in the tag. Attribute is targeted by <code>tag-name[attribute]{}</code></p>
<pre><code><span class="hljs-selector-tag">img</span><span class="hljs-selector-attr">[alt=<span class="hljs-string">"logo"</span>]</span>{
  <span class="hljs-attribute">height</span>: <span class="hljs-number">5em</span>;
}
</code></pre><p>or</p>
<pre><code><span class="hljs-selector-tag">a</span><span class="hljs-selector-attr">[href=<span class="hljs-string">"https://example.com"</span>]</span>{
  <span class="hljs-attribute">height</span>: <span class="hljs-number">5em</span>;
}
</code></pre><h2 id="heading-grouping-selectors">Grouping Selectors:</h2>
<p>This group allows you to select <strong>2 or more</strong> elements at once. They are selected by <code>,</code> <code>a,b{}</code>. It'll apply the styles in all the selected elements.</p>
<pre><code><span class="hljs-selector-tag">div</span>, <span class="hljs-selector-tag">span</span>{
  <span class="hljs-attribute">display</span>: inline-block;
}
</code></pre><h2 id="heading-desendant-combinator">Desendant Combinator:</h2>
<p>The <strong>" " (space)</strong> selector selects the elements that are <strong>descendants</strong> of the first element <code>A B{}</code>. </p>
<pre><code><span class="hljs-selector-tag">ul</span> <span class="hljs-selector-tag">li</span>{
  <span class="hljs-attribute">display</span>: flex;
}
</code></pre><h2 id="heading-child-combinator">Child Combinator:</h2>
<p>The <strong>&gt;</strong> selector selects the elements that are <strong>direct children</strong> of the first element <code>A &gt; B{}</code>. </p>
<pre><code><span class="hljs-selector-tag">div</span> &gt; *{
  <span class="hljs-attribute">color</span>: green;
}
</code></pre><h2 id="heading-pseudo-selectors">Pseudo Selectors:</h2>
<p>This group allows you to select and style certain HTML tags   based on their <strong>state</strong>. The <code>:hover</code> pseudo-class selects an element only when it is being <strong>hovered</strong> by the mouse pointer. </p>
<pre><code><span class="hljs-selector-class">.list-items</span><span class="hljs-selector-pseudo">:hover</span>{
  <span class="hljs-attribute">background-color</span>: <span class="hljs-number">#111</span>;
}
</code></pre><p>or</p>
<pre><code><span class="hljs-selector-tag">a</span><span class="hljs-selector-pseudo">:visited</span>{
  <span class="hljs-attribute">color</span>: purple;
}
</code></pre><p><strong>Thankyou for reading, i'll come up with more!</strong></p>
<p><strong>let's connect</strong> <a target="_blank" href="https://www.linkedin.com/in/aryan-namdev-3b16151b6/">Linkedin</a></p>
]]></content:encoded></item></channel></rss>