<?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: Edison Augusthy</title>
    <description>The latest articles on DEV Community by Edison Augusthy (@edisonpappi).</description>
    <link>https://dev.to/edisonpappi</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%2F97948%2F19b8a190-5231-4ca9-8a6f-1cb53b721d89.jpg</url>
      <title>DEV Community: Edison Augusthy</title>
      <link>https://dev.to/edisonpappi</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/edisonpappi"/>
    <language>en</language>
    <item>
      <title>🚀⚙️18 developer tools every developer should use in 2026</title>
      <dc:creator>Edison Augusthy</dc:creator>
      <pubDate>Thu, 28 May 2026 15:09:16 +0000</pubDate>
      <link>https://dev.to/edisonpappi/18-developer-tools-i-use-to-improve-my-workflow-70a</link>
      <guid>https://dev.to/edisonpappi/18-developer-tools-i-use-to-improve-my-workflow-70a</guid>
      <description>&lt;p&gt;Every few months I find some tool that makes one small part of development less painful.&lt;/p&gt;

&lt;p&gt;Sometimes it is for debugging performance. Sometimes it is for responsive testing. Sometimes it is just a better way to draw a quick diagram or test an API before the backend is ready.&lt;/p&gt;

&lt;p&gt;So this post is a combination of tools and resources I use, or keep close, to improve my development workflow. Not every tool here is something everyone needs. But each one solves a real problem that comes up when building, testing, explaining, or maintaining software.&lt;/p&gt;

&lt;p&gt;If you already use any of these, feel free to share your view too. It is always helpful to know how other developers are using the same tools in their day-to-day work.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. &lt;a href="https://www.npmjs.com/package/angular-render-scan" rel="noopener noreferrer"&gt;Angular Render Scan&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fedisonaugusthy%2Fangular-render-scan%2Fraw%2Fmain%2Fdocs%2Fassets%2Fangular-render-scan-demo.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fedisonaugusthy%2Fangular-render-scan%2Fraw%2Fmain%2Fdocs%2Fassets%2Fangular-render-scan-demo.gif" alt="Angular Render Scan screenshot" width="559" height="267"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Angular Render Scan helps debug Angular change detection and component renders visually.&lt;/p&gt;

&lt;p&gt;If you work with Angular, you know this pain. A page feels slow, but from the code it is not always clear which component is rendering too much. Instead of guessing, this tool helps you see render activity directly.&lt;/p&gt;

&lt;p&gt;I like this kind of tool because it makes performance debugging less abstract. You can look at the UI and quickly understand where to focus.&lt;/p&gt;

&lt;p&gt;I would use it for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;finding components that render too often&lt;/li&gt;
&lt;li&gt;debugging change detection issues&lt;/li&gt;
&lt;li&gt;checking slow Angular screens&lt;/li&gt;
&lt;li&gt;improving performance without random code changes&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  2. &lt;a href="https://chromewebstore.google.com/detail/jfcnekmenjickfihkniaoaklehjmdhdb?utm_source=item-share-cb" rel="noopener noreferrer"&gt;Multi Device Viewer&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3x3tri3ssw2ukc7mbn3v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3x3tri3ssw2ukc7mbn3v.png" alt="Multi Device Viewer screenshot" width="800" height="385"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Multi Device Viewer is a Chrome extension for checking responsive layouts across multiple devices at the same time.&lt;/p&gt;

&lt;p&gt;This is one of those problems I kept facing while building projects. I would test one mobile size, then tablet, then desktop, then again come back to mobile because one small CSS change broke something else.&lt;/p&gt;

&lt;p&gt;With this extension, I can preview multiple screen sizes side by side. It also supports device frames, orientation switching, screenshots, and annotations, which helps when I need to explain a layout issue clearly.&lt;/p&gt;

&lt;p&gt;I would use it for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;checking mobile, tablet, laptop, desktop, and custom sizes&lt;/li&gt;
&lt;li&gt;comparing breakpoints side by side&lt;/li&gt;
&lt;li&gt;capturing screenshots for feedback&lt;/li&gt;
&lt;li&gt;spotting responsive issues without resizing the browser again and again&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  3. &lt;a href="https://react-scan.com/" rel="noopener noreferrer"&gt;React Scan&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpcqbymp1a4i9j5d0d3oa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpcqbymp1a4i9j5d0d3oa.png" alt="React Scan screenshot" width="800" height="417"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;React Scan is useful for finding performance issues in React apps.&lt;/p&gt;

&lt;p&gt;React performance debugging can get confusing when the app grows. Sometimes the issue is not one big mistake, but many small unnecessary renders. React Scan makes that easier to notice by highlighting components that need attention.&lt;/p&gt;

&lt;p&gt;It is a nice tool to keep around when a React screen feels slower than expected and you want a quick visual clue.&lt;/p&gt;

&lt;p&gt;I would use it for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;detecting unnecessary renders&lt;/li&gt;
&lt;li&gt;finding components that need optimization&lt;/li&gt;
&lt;li&gt;debugging React performance visually&lt;/li&gt;
&lt;li&gt;checking whether a change improved or worsened rendering&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  4. &lt;a href="https://todiagram.com/editor" rel="noopener noreferrer"&gt;ToDiagram&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fziwrh2geq5gvac32t6ta.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fziwrh2geq5gvac32t6ta.png" alt="ToDiagram screenshot" width="799" height="393"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ToDiagram is useful when data is technically readable, but still hard to understand.&lt;/p&gt;

&lt;p&gt;JSON, YAML, XML, CSV, and Mermaid can all become messy when the structure gets bigger. Seeing that data as a diagram makes it much easier to understand relationships and nested structures.&lt;/p&gt;

&lt;p&gt;This is helpful when I am looking at API responses, config files, schemas, or any data shape that needs a visual map.&lt;/p&gt;

&lt;p&gt;I would use it for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;visualizing JSON or YAML&lt;/li&gt;
&lt;li&gt;understanding nested data&lt;/li&gt;
&lt;li&gt;explaining payloads to someone else&lt;/li&gt;
&lt;li&gt;turning structured data into diagrams quickly&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  5. &lt;a href="https://app.diagrams.net/" rel="noopener noreferrer"&gt;diagrams.net&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fud1iapv7l7d1y2bhvi4f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fud1iapv7l7d1y2bhvi4f.png" alt="diagrams.net screenshot" width="800" height="391"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;diagrams.net, also known as draw.io, is one of the tools I keep coming back to.&lt;/p&gt;

&lt;p&gt;It is not fancy in a distracting way. It just does the job. You can create flowcharts, architecture diagrams, UML diagrams, ER diagrams, network diagrams, and database schemas without needing a heavy setup.&lt;/p&gt;

&lt;p&gt;When I need a clean diagram for a document or discussion, this is usually enough.&lt;/p&gt;

&lt;p&gt;I would use it for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;architecture diagrams&lt;/li&gt;
&lt;li&gt;database schema diagrams&lt;/li&gt;
&lt;li&gt;flowcharts&lt;/li&gt;
&lt;li&gt;explaining systems visually&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  6. &lt;a href="https://excalidraw.com/" rel="noopener noreferrer"&gt;Excalidraw&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F75hxrbyxkziqzryh8m2g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F75hxrbyxkziqzryh8m2g.png" alt="Excalidraw screenshot" width="800" height="393"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Excalidraw is great when the diagram does not need to look too formal.&lt;/p&gt;

&lt;p&gt;I use this kind of tool when I want to explain an idea quickly. The hand-drawn style makes it feel less like a final document and more like a working thought.&lt;/p&gt;

&lt;p&gt;It is perfect for rough architecture, UI flows, planning notes, and quick discussions.&lt;/p&gt;

&lt;p&gt;I would use it for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;sketching ideas&lt;/li&gt;
&lt;li&gt;drawing rough system flows&lt;/li&gt;
&lt;li&gt;making casual architecture notes&lt;/li&gt;
&lt;li&gt;explaining something without over-polishing it&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  7. &lt;a href="https://jam.dev/" rel="noopener noreferrer"&gt;Jam&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk0ug1g2v3ng5du0a8ywz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk0ug1g2v3ng5du0a8ywz.png" alt="Jam screenshot" width="800" height="435"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Jam makes bug reporting much easier.&lt;/p&gt;

&lt;p&gt;Instead of sending a message like "this page is broken", you can record the issue and share useful debugging context with it. It can capture things like browser details, console logs, network logs, and reproduction steps.&lt;/p&gt;

&lt;p&gt;This reduces a lot of back and forth between developers, QA, and product people.&lt;/p&gt;

&lt;p&gt;I would use it for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;reporting bugs with proper context&lt;/li&gt;
&lt;li&gt;capturing console and network logs&lt;/li&gt;
&lt;li&gt;sharing reproduction steps&lt;/li&gt;
&lt;li&gt;making debugging faster for the person fixing the issue&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  8. &lt;a href="https://beeceptor.com/" rel="noopener noreferrer"&gt;Beeceptor&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm1smsg91684zms2nheus.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm1smsg91684zms2nheus.png" alt="Beeceptor screenshot" width="800" height="407"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Beeceptor is useful when you need a mock API quickly.&lt;/p&gt;

&lt;p&gt;There are many times when frontend work is ready, but the backend is not. Or maybe you want to test how your app behaves when an API is slow, fails, or returns a different response.&lt;/p&gt;

&lt;p&gt;Mock endpoints make that work much easier. Beeceptor also helps with webhook testing and request inspection, which is very useful during integrations.&lt;/p&gt;

&lt;p&gt;I would use it for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;creating mock REST or GraphQL APIs&lt;/li&gt;
&lt;li&gt;testing webhooks&lt;/li&gt;
&lt;li&gt;simulating API delays and failures&lt;/li&gt;
&lt;li&gt;continuing frontend work without waiting for backend changes&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  9. &lt;a href="https://affine.pro/" rel="noopener noreferrer"&gt;AFFiNE&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjnq7dwa8v9cp4fey73f5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjnq7dwa8v9cp4fey73f5.png" alt="AFFiNE screenshot" width="800" height="395"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;AFFiNE is an open-source workspace that combines docs, whiteboards, and databases.&lt;/p&gt;

&lt;p&gt;I like tools that let me write and draw in the same place. Some ideas start as text, but later need a whiteboard. Some planning starts visually, then becomes notes or tasks.&lt;/p&gt;

&lt;p&gt;AFFiNE fits that kind of mixed workflow well.&lt;/p&gt;

&lt;p&gt;I would use it for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;project notes&lt;/li&gt;
&lt;li&gt;whiteboards&lt;/li&gt;
&lt;li&gt;planning tasks&lt;/li&gt;
&lt;li&gt;keeping a personal or team knowledge base&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  10. &lt;a href="https://fishshell.com/" rel="noopener noreferrer"&gt;fish shell&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyeyqod9e4n01x3efzhr4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyeyqod9e4n01x3efzhr4.png" alt="fish shell screenshot" width="800" height="266"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;fish is a command line shell with good defaults.&lt;/p&gt;

&lt;p&gt;If you spend a lot of time in the terminal, small improvements matter. Autosuggestions, tab completions, syntax highlighting, and cleaner scripting can save a surprising amount of time.&lt;/p&gt;

&lt;p&gt;It is not a tool that changes your whole workflow overnight, but it makes daily terminal work smoother.&lt;/p&gt;

&lt;p&gt;I would use it for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;better command suggestions&lt;/li&gt;
&lt;li&gt;faster terminal navigation&lt;/li&gt;
&lt;li&gt;cleaner shell scripting&lt;/li&gt;
&lt;li&gt;improving the daily command line experience&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  11. &lt;a href="https://www.freepublicapis.com/" rel="noopener noreferrer"&gt;Free Public APIs&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi6mv35ptod20rwhdxdh6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi6mv35ptod20rwhdxdh6.png" alt="Free Public APIs screenshot" width="799" height="394"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Free Public APIs is a directory of public APIs.&lt;/p&gt;

&lt;p&gt;This is useful when you want to build a demo, practice API integration, or test a frontend idea without creating your own backend first.&lt;/p&gt;

&lt;p&gt;Many side projects slow down because we spend too much time thinking about data. A public API directory helps you start faster.&lt;/p&gt;

&lt;p&gt;I would use it for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;finding APIs for side projects&lt;/li&gt;
&lt;li&gt;practicing API integration&lt;/li&gt;
&lt;li&gt;building frontend demos&lt;/li&gt;
&lt;li&gt;exploring public data sources&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  12. &lt;a href="https://webcurate.co/polypane" rel="noopener noreferrer"&gt;Polypane&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi9h04uuspl7ixet92hcc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi9h04uuspl7ixet92hcc.png" alt="Polypane screenshot" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Polypane is a browser built for web development and responsive testing.&lt;/p&gt;

&lt;p&gt;It helps you view different screen sizes at the same time and check things like responsiveness, accessibility, and site quality. For frontend work, that saves time because you do not have to keep jumping between device sizes manually.&lt;/p&gt;

&lt;p&gt;This is useful when you want a more focused testing setup than normal browser resizing.&lt;/p&gt;

&lt;p&gt;I would use it for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;testing multiple screen sizes&lt;/li&gt;
&lt;li&gt;checking responsive layouts&lt;/li&gt;
&lt;li&gt;reviewing accessibility issues&lt;/li&gt;
&lt;li&gt;debugging frontend pages in a dedicated browser&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  13. &lt;a href="https://www.skills.sh/" rel="noopener noreferrer"&gt;Skills&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl1n2vo0pzm8rwsx9lsyz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl1n2vo0pzm8rwsx9lsyz.png" alt="Skills screenshot" width="800" height="392"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Skills is a directory for reusable capabilities for AI agents.&lt;/p&gt;

&lt;p&gt;If you use coding agents, you probably know that instructions matter a lot. A good workflow can make the agent more useful, but writing the same instructions again and again is boring.&lt;/p&gt;

&lt;p&gt;Skills are interesting because they package that kind of procedural knowledge so it can be reused.&lt;/p&gt;

&lt;p&gt;I would use it for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;discovering agent skills&lt;/li&gt;
&lt;li&gt;improving coding-agent workflows&lt;/li&gt;
&lt;li&gt;reusing common instructions&lt;/li&gt;
&lt;li&gt;making repeated AI workflows more consistent&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  14. &lt;a href="https://github.com/best-of-ai/ai-directories" rel="noopener noreferrer"&gt;AI Directories&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0edv1qbgqs78yylwx18i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0edv1qbgqs78yylwx18i.png" alt="AI Directories screenshot" width="800" height="469"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This GitHub repo is a curated list of AI directories where people can submit AI tools.&lt;/p&gt;

&lt;p&gt;Building a product is one thing. Getting people to find it is another. If you are building an AI-related tool, directories can help with early discovery and launch distribution.&lt;/p&gt;

&lt;p&gt;This is a useful repo to keep bookmarked if you are planning to launch or promote an AI product.&lt;/p&gt;

&lt;p&gt;I would use it for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;finding AI directories&lt;/li&gt;
&lt;li&gt;submitting an AI product&lt;/li&gt;
&lt;li&gt;planning launch distribution&lt;/li&gt;
&lt;li&gt;researching where similar tools are listed&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  15. &lt;a href="https://www.patterns.dev/" rel="noopener noreferrer"&gt;Patterns.dev&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flnd2zwpwf3scj4tp867m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flnd2zwpwf3scj4tp867m.png" alt="Patterns.dev screenshot" width="800" height="407"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Patterns.dev is a learning resource for design, rendering, and performance patterns in web apps.&lt;/p&gt;

&lt;p&gt;This is not something I open for a quick one-minute task. It is more of a resource I would read when I want to understand frontend architecture better.&lt;/p&gt;

&lt;p&gt;Good tools improve your workflow, but good resources improve how you think. Patterns.dev fits into that second category.&lt;/p&gt;

&lt;p&gt;I would use it for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;learning JavaScript patterns&lt;/li&gt;
&lt;li&gt;understanding rendering patterns&lt;/li&gt;
&lt;li&gt;improving frontend architecture&lt;/li&gt;
&lt;li&gt;studying performance techniques&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  16. &lt;a href="https://khalilstemmler.com/articles/domain-driven-design-intro/" rel="noopener noreferrer"&gt;An Introduction to Domain-Driven Design&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3wuuk7effz6d99wazkvn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3wuuk7effz6d99wazkvn.png" alt="Domain-Driven Design article screenshot" width="800" height="636"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is a good introduction to Domain-Driven Design.&lt;/p&gt;

&lt;p&gt;DDD can sound heavy at first, but the basic idea is practical: understand the business domain and make the code reflect that domain clearly.&lt;/p&gt;

&lt;p&gt;This becomes more useful when an app grows beyond simple CRUD and the business logic starts spreading everywhere.&lt;/p&gt;

&lt;p&gt;I would use it for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;understanding DDD basics&lt;/li&gt;
&lt;li&gt;organizing business logic better&lt;/li&gt;
&lt;li&gt;learning about entities, value objects, aggregates, and domain events&lt;/li&gt;
&lt;li&gt;thinking beyond simple controller-service-database code&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  17. &lt;a href="https://abseil.io/resources/swe-book/html/pr01.html" rel="noopener noreferrer"&gt;Software Engineering at Google&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz6u3ny3nx1j8gdrondf2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz6u3ny3nx1j8gdrondf2.png" alt="Software Engineering at Google screenshot" width="800" height="680"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Software Engineering at Google is a free online book about building and maintaining software over time.&lt;/p&gt;

&lt;p&gt;The part I like is how it separates programming from software engineering. Writing code is one part. Keeping that code useful, maintainable, and adaptable for years is the bigger challenge.&lt;/p&gt;

&lt;p&gt;This is a good resource when you want to think more seriously about engineering practices, trade-offs, and long-term maintenance.&lt;/p&gt;

&lt;p&gt;I would use it for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;learning about software engineering at scale&lt;/li&gt;
&lt;li&gt;understanding maintainable codebases&lt;/li&gt;
&lt;li&gt;thinking about trade-offs and cost&lt;/li&gt;
&lt;li&gt;improving engineering habits&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  18. &lt;a href="https://llmtext.com/install" rel="noopener noreferrer"&gt;LLMTEXT.com&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo5riz5892uor6xoorgnq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo5riz5892uor6xoorgnq.png" alt="LLMTEXT.com screenshot" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;LLMTEXT.com is useful if you work with &lt;code&gt;llms.txt&lt;/code&gt; and MCP servers.&lt;/p&gt;

&lt;p&gt;The install page helps turn any &lt;code&gt;llms.txt&lt;/code&gt; URL into a dedicated MCP server. That means an AI tool can use documentation in a more structured way instead of you copying and pasting the same docs again and again.&lt;/p&gt;

&lt;p&gt;This becomes more useful when you use AI coding assistants regularly, because better context usually means better output.&lt;/p&gt;

&lt;p&gt;I would use it for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;installing &lt;code&gt;llms.txt&lt;/code&gt; MCP servers&lt;/li&gt;
&lt;li&gt;connecting documentation to AI tools&lt;/li&gt;
&lt;li&gt;avoiding repeated doc copy-paste&lt;/li&gt;
&lt;li&gt;improving context for Claude, Cursor, or other LLM workflows&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Final thoughts
&lt;/h2&gt;

&lt;p&gt;These are not the only developer tools out there, and I am not saying everyone should use all of them.&lt;/p&gt;

&lt;p&gt;For me, the best tools are the ones that remove repeated friction. If a tool saves me from resizing the browser ten times, guessing which component is slow, drawing the same diagram from scratch, or waiting for an API before I can continue, then it is worth keeping in my workflow.&lt;/p&gt;

&lt;p&gt;That is why I like collecting tools like this. Small improvements add up over time.&lt;/p&gt;

&lt;p&gt;If you use any of these tools, or if you know a better alternative, share it in the comments. It will help others understand how these tools are actually improving real development workflows.&lt;/p&gt;

</description>
      <category>react</category>
      <category>frontend</category>
      <category>angular</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Sell your skills</title>
      <dc:creator>Edison Augusthy</dc:creator>
      <pubDate>Mon, 21 Jun 2021 04:51:05 +0000</pubDate>
      <link>https://dev.to/edisonpappi/sell-your-skills-and-earn-more-money-2pg</link>
      <guid>https://dev.to/edisonpappi/sell-your-skills-and-earn-more-money-2pg</guid>
      <description>&lt;p&gt;one of the main goals in my life is to retire early and enjoy rest by traveling all over the world. I know all of you also have some goals like this. but we know it's hard to save enough money for your retirement life. here am sharing some of my side income techniques, which you can adapt and achieve your financial goals&lt;/p&gt;

&lt;h2&gt;
  
  
  1) share market
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fktzk8d5w70l699edi84h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fktzk8d5w70l699edi84h.png" alt="Amazone" width="676" height="359"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;above image just shows the growth of tesla on last few years. If you have invested 1000 dollars on Tesla shares in January 2020   that would be 8800 dollars by January 2021, that means 800% increment in your amount. This itself simply explain the power of share market. I usually make around 60 USD a week, which is much more than enough to cover my family's medical bills. so if you have  1 hour to spend daily,  you can easily make more profit from the share market. most people say it is hard to learn share market concepts but I say actually it's not. it's super easy to learn the foundations which is much more than enough to be an investor. first start with some tutorials on youtube, then find some good shares, start investing&lt;/p&gt;

&lt;h2&gt;
  
  
  2) Sell your skills on amazon
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6jl668ko7ajlh6do3wmd.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6jl668ko7ajlh6do3wmd.jpg" alt="tesla" width="750" height="422"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In my home, everyone is super talented except me. my mom makes really good chips, and my sister is good at making crafts from wastes and empty bottles. actually, I was looking for a place to sell their skills, and I landed on amazon. we started an amazon seller account last year and started selling chips and crafts, surprisingly we got good reviews from customers and we are now able to make around 90 USD per month. this was a simple idea that came to my mind on the country-wide lock down in India started on 2020 March, I never thought it would be a success, but it is.&lt;/p&gt;

&lt;p&gt;you can sell almost anything on amazon or any other online store. if your son is good at painting then start selling his painting, if you are good at farming just start selling some of your agricultural yields. if you are good at gardening even you can sell  some plant seeds too.&lt;/p&gt;

&lt;p&gt;its just find out what skills you can sell.. sell it .. and save for future&lt;/p&gt;

&lt;h2&gt;
  
  
  3) A simple app can give you 100 Dollars each month
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6oczubntayecanhsj6yw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6oczubntayecanhsj6yw.png" alt="playstore" width="800" height="443"&gt;&lt;/a&gt;&lt;br&gt;
last year I was planing to make some apps for learning new the technologies. I don't want to make something just show on my Github, but I wanted one app that can pay me in the future. at last, I came to an idea to make a app that can help people to crack professional exams. I just created a simple app and Deployed it on the play store. surprisingly people started using it, so I just kept updated with new content. later last month I was able to make 100 dollars from my app.&lt;/p&gt;

&lt;h4&gt;
  
  
  "the best time to start was yesterday. the next best time is Now"
&lt;/h4&gt;

&lt;p&gt;Just remember there are plenty of ways that you can achieve your financial goals. all you have to do is just find out one and start doing it. the best time to start was yesterday. the next best time is Now so start now.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>watercooler</category>
      <category>codenewbie</category>
      <category>career</category>
    </item>
    <item>
      <title>✨♻️One line - Date Operations in JavaScript</title>
      <dc:creator>Edison Augusthy</dc:creator>
      <pubDate>Mon, 14 Sep 2020 04:32:56 +0000</pubDate>
      <link>https://dev.to/edisonpappi/one-line-date-operations-in-javascript-5c1h</link>
      <guid>https://dev.to/edisonpappi/one-line-date-operations-in-javascript-5c1h</guid>
      <description>&lt;p&gt;&lt;strong&gt;See some of the useful single line JavaScript snippets for dealing with dates&lt;/strong&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Cheking
&lt;/h4&gt;

&lt;h6&gt;
  
  
  Is Before
&lt;/h6&gt;

&lt;p&gt;Check if a date is before another date.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// 2020/10/20 is before 2020/10/21&lt;/span&gt;
&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2020/10/20&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2020/10/21&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;// =&amp;gt; true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h6&gt;
  
  
  Is Same
&lt;/h6&gt;

&lt;p&gt;Check if a date is the same as another date.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// '2020-10-20' is same of '2020-10-21'&lt;/span&gt;

&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2020&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;valueOf&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2020&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;21&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;valueOf&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="c1"&gt;// =&amp;gt; false&lt;/span&gt;
&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2020&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;valueOf&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2020&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;valueOf&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="c1"&gt;// =&amp;gt; true&lt;/span&gt;
&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2020&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;getTime&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2020&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;getTime&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="c1"&gt;// =&amp;gt; true&lt;/span&gt;
&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2020&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;valueOf&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2020&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;getTime&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="c1"&gt;// =&amp;gt; true&lt;/span&gt;
&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2020&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;toDateString&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;substring&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt;
  &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2020&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;21&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;toDateString&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;substring&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;// =&amp;gt; true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h6&gt;
  
  
  Is After
&lt;/h6&gt;

&lt;p&gt;Check if a date is after another date&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2020&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2020&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;19&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;// =&amp;gt; true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h6&gt;
  
  
  Is Leap Year
&lt;/h6&gt;

&lt;p&gt;Check if a year is a leap year&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;29&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;getDate&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="mi"&gt;29&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="c1"&gt;// =&amp;gt; true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h6&gt;
  
  
  Is a Date
&lt;/h6&gt;

&lt;p&gt;Check if a variable is a native js Date object.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;
&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="k"&gt;instanceof&lt;/span&gt; &lt;span class="nb"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="c1"&gt;// =&amp;gt; true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h4&gt;
  
  
  Get Or Set
&lt;/h4&gt;

&lt;p&gt;Get the Millisecond/Second/Minute/Hour of the given date&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;getSeconds&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="c1"&gt;// =&amp;gt; 49&lt;/span&gt;
&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;getHours&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="c1"&gt;// =&amp;gt; 19&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Set the Millisecond/Second/Minute/Hour of the given date.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;setSeconds&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="c1"&gt;// =&amp;gt; "2020-09-09T09:12:30.695Z"&lt;/span&gt;
&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;setHours&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;13&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="c1"&gt;// =&amp;gt; "2020-09-09T03:12:49.695Z"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h6&gt;
  
  
  Date of Month
&lt;/h6&gt;

&lt;p&gt;Gets the day of the month.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;
&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;getDate&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="c1"&gt;// =&amp;gt; 9&lt;/span&gt;

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

&lt;/div&gt;



&lt;p&gt;Sets the day of the month&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;setDate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;// =&amp;gt; "2020-09-04T09:12:49.695Z"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h6&gt;
  
  
  Day of Week
&lt;/h6&gt;

&lt;p&gt;Gets the day of the week.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;
&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;getDay&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="c1"&gt;// =&amp;gt; 0 (Sunday)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Sets the day of the week&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;
&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;setDate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;getDate&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;14&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;// =&amp;gt; "2020-08-26T09:12:49.695Z"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h6&gt;
  
  
  Day of Year
&lt;/h6&gt;

&lt;p&gt;Gets or sets the day of the year.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;
&lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;floor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;getFullYear&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;60&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;60&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;24&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;// =&amp;gt; 252&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h6&gt;
  
  
  Week of Year
&lt;/h6&gt;

&lt;p&gt;Gets the week of the year&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;day&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;MILLISECONDS_IN_WEEK&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;604800000&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;firstDayOfWeek&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// monday as the first day (0 = sunday)&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;startOfYear&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;day&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getFullYear&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;startOfYear&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setDate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="nx"&gt;startOfYear&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getDate&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;firstDayOfWeek&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;startOfYear&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getDay&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;dayWeek&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;round&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;day&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;startOfYear&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="nx"&gt;MILLISECONDS_IN_WEEK&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="c1"&gt;// =&amp;gt; 37&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Sets the week of the year&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;day&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;week&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;24&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;MILLISECONDS_IN_WEEK&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;604800000&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;firstDayOfWeek&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// monday as the first day (0 = sunday)&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;startOfYear&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;day&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getFullYear&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;startOfYear&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setDate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="nx"&gt;startOfYear&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getDate&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;firstDayOfWeek&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;startOfYear&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getDay&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;dayWeek&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;round&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;day&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;startOfYear&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="nx"&gt;MILLISECONDS_IN_WEEK&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;day&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setDate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;day&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getDate&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;dayWeek&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;week&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;day&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;toISOString&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="c1"&gt;// =&amp;gt; "2020-06-10T09:12:49.794Z&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h6&gt;
  
  
  Days in Month
&lt;/h6&gt;

&lt;p&gt;Get the number of days in the current month&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2012&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;02&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;getDate&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="c1"&gt;// =&amp;gt; 29&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h4&gt;
  
  
  Parse
&lt;/h4&gt;

&lt;p&gt;Return the Date parsed from date string using the given format string&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;datePattern&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sr"&gt;/^&lt;/span&gt;&lt;span class="se"&gt;(\d{2})&lt;/span&gt;&lt;span class="sr"&gt;-&lt;/span&gt;&lt;span class="se"&gt;(\d{2})&lt;/span&gt;&lt;span class="sr"&gt;-&lt;/span&gt;&lt;span class="se"&gt;(\d{4})&lt;/span&gt;&lt;span class="sr"&gt;$/&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[,&lt;/span&gt; &lt;span class="nx"&gt;month&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;day&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;year&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;datePattern&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;exec&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;12-25-1995&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;month&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;, &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;day&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;year&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;// =&amp;gt; "1995-12-24T13:00:00.000Z"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Return the Date parsed from time string using the given format string&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;datePattern&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sr"&gt;/^&lt;/span&gt;&lt;span class="se"&gt;(\d{4})&lt;/span&gt;&lt;span class="sr"&gt;-&lt;/span&gt;&lt;span class="se"&gt;(\d{2})&lt;/span&gt;&lt;span class="sr"&gt;-&lt;/span&gt;&lt;span class="se"&gt;(\d{2})\s(\d{1,2})&lt;/span&gt;&lt;span class="sr"&gt;:&lt;/span&gt;&lt;span class="se"&gt;(\d{2})&lt;/span&gt;&lt;span class="sr"&gt;$/&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[,&lt;/span&gt; &lt;span class="nx"&gt;year&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;month&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;day&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;rawHour&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;min&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;datePattern&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;exec&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2010-10-20 4:30&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;year&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;-&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;month&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;-&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;day&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;T&lt;/span&gt;&lt;span class="p"&gt;${(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;0&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;rawHour&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;slice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)}&lt;/span&gt;&lt;span class="s2"&gt;:&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;min&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;:00`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;// =&amp;gt; "2010-10-19T17:30:00.000Z"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h4&gt;
  
  
  Manipulate
&lt;/h4&gt;

&lt;h6&gt;
  
  
  Add
&lt;/h6&gt;

&lt;p&gt;Add the specified number of days to the given date.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// add 7 days&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;now&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nx"&gt;now&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setDate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;now&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getDate&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;// =&amp;gt; "Sun Sep 16 2018 09:12:49"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h6&gt;
  
  
  Subtract
&lt;/h6&gt;

&lt;p&gt;Subtract the specified number of days from the given date.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// subsctact 7 days&lt;/span&gt;
&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;getTime&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;60&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;60&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;24&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;// =&amp;gt; Sun Sep 09 2018 09:12:49&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h6&gt;
  
  
  End of Time
&lt;/h6&gt;

&lt;p&gt;Return the end of a unit of time for the given date.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;end&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nx"&gt;end&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setHours&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;23&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;59&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;59&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;999&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;end&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;toISOString&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="c1"&gt;// =&amp;gt; "2018-09-09T16:59:59.999Z"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h4&gt;
  
  
  Display
&lt;/h4&gt;

&lt;h6&gt;
  
  
  Time from now
&lt;/h6&gt;

&lt;p&gt;Return time from now.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;
&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;Intl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;RelativeTimeFormat&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;day&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;// =&amp;gt; "4 days ago"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h6&gt;
  
  
  Difference
&lt;/h6&gt;

&lt;p&gt;Get the unit of time between the given dates&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;
&lt;span class="c1"&gt;// difference betwwen '2007-01-27' to '2007-01-29'&lt;/span&gt;
&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2007&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;27&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2007&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;29&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;// =&amp;gt; -172800000&lt;/span&gt;
&lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ceil&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2007&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;27&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2007&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;29&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;60&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;60&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;24&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;// =&amp;gt; -2&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






</description>
      <category>react</category>
      <category>javascript</category>
      <category>angular</category>
      <category>typescript</category>
    </item>
    <item>
      <title>🚀⚙️Deep Dive in to JavaScript Engine - (Chrome V8)</title>
      <dc:creator>Edison Augusthy</dc:creator>
      <pubDate>Mon, 07 Sep 2020 02:42:34 +0000</pubDate>
      <link>https://dev.to/edisonpappi/how-javascript-engines-chrome-v8-works-50if</link>
      <guid>https://dev.to/edisonpappi/how-javascript-engines-chrome-v8-works-50if</guid>
      <description>&lt;p&gt;The web browser are the main part of internet world. When ever we type  a  URL in the address bar, it fetch resources from remote server, and display them on the screen, through this time it mainly undergoes 3 process&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fetch&lt;/li&gt;
&lt;li&gt;Process&lt;/li&gt;
&lt;li&gt;Display&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At first it fetching data from subsequent web servers via the internet.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fbyomg1cyqfop1hkdkvuf.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fbyomg1cyqfop1hkdkvuf.gif" alt="Alt Text" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then the &lt;code&gt;Render engine&lt;/code&gt;, will process the received resourses. After that  the &lt;code&gt;Browser Engine&lt;/code&gt; will performs data presentation. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fa8yc1ut2b6hn1cb1qyfw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fa8yc1ut2b6hn1cb1qyfw.png" alt="Alt Text" width="800" height="316"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;so how all this happen...?&lt;/p&gt;

&lt;p&gt;To know better about these processes, we should know how a browser process JavaScript . And that is done by JavaScript engines. &lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;JavaScript engine&lt;/strong&gt; is a program or an interpreter which executes JavaScript code. JS is a higher level dynamic language and it has  no way to directly interact with our machines lower level logic. So JavaScript engine can be implemented as a standard interpreter, or just-in-time compiler that compiles JavaScript to bytecode in some form . see the high level overview of the js engine in below image&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fh7509mqq3egedothd2g8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fh7509mqq3egedothd2g8.png" alt="Alt Text" width="799" height="448"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Parser&lt;/strong&gt;
The Html Parser will fetch all scripts loaded via &lt;code&gt;&amp;lt;script&amp;gt;&lt;/code&gt; tag. The source code inside this script gets loaded as a UTF-16 byte stream to a byte stream decoder. This byte stream decoder then decodes the bytes into token and  then its sent to parser.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AST(Abstract Syntax Tree)&lt;/strong&gt;&lt;br&gt;
The parser creates nodes based on the tokens it gets. With these nodes, it creates an Abstract Syntax Tree (AST).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Interpreter&lt;/strong&gt;&lt;br&gt;
The interpreter walks through the AST and generates byte code. It reads the code line by line. When the byte code has been generated, the AST is deleted for clearing up memory space.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Profiler&lt;/strong&gt;&lt;br&gt;
The Profiler monitors and watches code to optimize it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Compiler&lt;/strong&gt;&lt;br&gt;
The compiler works ahead of time and creates a translation of the code that has been written and compiles down to a lower level language that machines can read.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;We have seen different components of js engine . Now lets check what are the Different &lt;em&gt;JavaScript engines&lt;/em&gt; available..&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;V8 — open source, developed by Google, written in C++&lt;/li&gt;
&lt;li&gt;Rhino — managed by the Mozilla Foundation, open source, developed entirely in Java&lt;/li&gt;
&lt;li&gt;Spider Monkey — the first JavaScript engine, which back in the days powered Netscape Navigator, and today powers Firefox&lt;/li&gt;
&lt;li&gt;JavaScriptCore — open source, marketed as Nitro and developed by Apple for Safari&lt;/li&gt;
&lt;li&gt;KJS — KDE’s engine originally developed by Harri Porten for the KDE project’s Konqueror web browser&lt;/li&gt;
&lt;li&gt;Chakra (JScript9) — Internet Explorer&lt;/li&gt;
&lt;li&gt;Chakra Core(JavaScript) — Microsoft Edge (Now uses v8)&lt;/li&gt;
&lt;li&gt;Nashorn, open source as part of OpenJDK, written by Oracle Java Languages and Tool Group&lt;/li&gt;
&lt;li&gt;JerryScript — is a lightweight engine for the Internet of Things.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  V8
&lt;/h4&gt;

&lt;p&gt;The V8 Engine which is built by Google is open source and written in C++. This engine is used inside Google Chrome. V8 is also used for the popular Node.js And Deno. To obtain High performance, V8 translates JavaScript code into more efficient machine code instead of using an interpreter. Even though Most modern JavaScript engines has the same approach, but  V8 stand out is that it does not produce any intermediate code.&lt;/p&gt;

&lt;h4&gt;
  
  
  HOW  V8 WORKS
&lt;/h4&gt;

&lt;p&gt;V8 compiles JavaScript code into machine code at execution by implementing a JIT (Just-In-Time) compiler. A JIT compiler takes the benefits from both the traditional compiler and an interpreter and mixes them together. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fq2w9v6fq9wpkueq7rau8.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fq2w9v6fq9wpkueq7rau8.gif" alt="v8 overview" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When V8 compiles JavaScript code, the parser generates an AST (abstract syntax tree). A syntax tree is a tree representation of the syntactic structure of the JavaScript code. Ignition, the interpreter, generates bytecode from this syntax tree. TurboFan, the optimizing compiler, eventually takes the bytecode and generates optimized machine code from it.&lt;/p&gt;

&lt;p&gt;Lets check v8's 2 main pipelines  behind its performance &lt;code&gt;Ignition&lt;/code&gt; interpreter and the compiler &lt;code&gt;Turbofan&lt;/code&gt; little bit more &lt;/p&gt;




&lt;h5&gt;
  
  
  Ignition
&lt;/h5&gt;

&lt;p&gt;The interpreter in v8 is called Ignition. The interpreter generates the byte-code. This is good for code that only needed to run only once. The byte-code runs inside the JavaScript engine itself. Interpreted code is falser to get something running but is a bit slower. Ignition resolve  overhead memory consumption by achieving three objectives&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; reducing memory usage&lt;/li&gt;
&lt;li&gt; reducing startup time&lt;/li&gt;
&lt;li&gt; reducing complexity&lt;/li&gt;
&lt;/ul&gt;




&lt;h5&gt;
  
  
  TurboFan
&lt;/h5&gt;

&lt;p&gt;The TurboFan pipeline follows some steps to translate bytecode into machine code. Optimizations in the pipeline  are performed based on feedback collected by Ignition.&lt;/p&gt;

&lt;p&gt;TurboFan’s online, JIT-style compilations and optimizations concludes V8’s translation from source code to machine code.&lt;/p&gt;

&lt;p&gt;Sometimes, we may have repeated code blocks. The JavaScript compilers run feedback and collect profiling data for the code being executed. If it comes across the function that is being called with the same type of parameters every time and has been called multiple times, this code goes through TurboFan. The TurboFan produces highly optimized machine-level code which runs directly on the CPU for the hot code. TurboFan only kicks in when JS engine detects a code to be hot. A code is hot when it runs quite often, runs inside a loop, etc. The compiled code has direct CPU instructions and is quite faster.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>react</category>
      <category>angular</category>
      <category>vue</category>
    </item>
    <item>
      <title>🌳Say goodbye to LocalStorage 🚀</title>
      <dc:creator>Edison Augusthy</dc:creator>
      <pubDate>Tue, 01 Sep 2020 10:48:54 +0000</pubDate>
      <link>https://dev.to/edisonpappi/say-goodbye-to-local-storage-568g</link>
      <guid>https://dev.to/edisonpappi/say-goodbye-to-local-storage-568g</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F4yrg1tb8sj26zsce8s49.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F4yrg1tb8sj26zsce8s49.png" alt="Alt Text" width="800" height="292"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Being a front-end developer one of the common things that we wanted is to store and share data in the client browser, And most of us really rely on local storage. So what is  &lt;strong&gt;localStorage&lt;/strong&gt;..?&lt;br&gt;
according to MDN:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The &lt;code&gt;localStorage&lt;/code&gt; provides mechanisms by which browsers can store key/value pairs, in a much more intuitive fashion than using cookies. data stored in  &lt;code&gt;localStorage&lt;/code&gt;  has no expiration time. Data in a  &lt;code&gt;localStorage&lt;/code&gt;  object created in a "private browsing" or "incognito" session is cleared when the last "private" tab is closed.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So the data stored in &lt;code&gt;localStorage&lt;/code&gt;  &lt;strong&gt;is specific to the protocol of the page&lt;/strong&gt;. In particular, data stored by a script on a site accessed with HTTP (e.g.,  &lt;a href="http://example.com/" rel="noopener noreferrer"&gt;http://example.com&lt;/a&gt;) is put in a different  &lt;code&gt;localStorage&lt;/code&gt;  object from the same site accessed with HTTPS (e.g.,  &lt;a href="https://example.com/" rel="noopener noreferrer"&gt;https://example.com&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;The keys and the values are  &lt;em&gt;always&lt;/em&gt;  in the UTF-16  &lt;a href="https://developer.mozilla.org/en-US/docs/Web/API/DOMString" rel="noopener noreferrer"&gt;&lt;code&gt;DOMString&lt;/code&gt;&lt;/a&gt;  format, which uses two bytes per character. As with objects, integer keys are automatically converted to strings.&lt;/p&gt;
&lt;h3&gt;
  
  
  So what are &lt;code&gt;localStorage&lt;/code&gt; disadvantages..?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;data stored in &lt;code&gt;localStorage&lt;/code&gt; has no expiration time&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;localStorage&lt;/code&gt; will be available for any tab or window in the browser,&lt;/li&gt;
&lt;li&gt;Have to constantly keep back up of data to prevent loss&lt;/li&gt;
&lt;li&gt;  The user is completely responsible for the safety of the data&lt;/li&gt;
&lt;li&gt;  Takes up more storage space if you store locally&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Switching to session storage
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;Window.sessionStorage&lt;/code&gt; is a better alternative option for &lt;code&gt;localStorage&lt;/code&gt;.&lt;br&gt;
 A page session lasts only as long as the browser tab is open, and it will survive over page reloads and restores. But opening a page in a new tab or window will create a new session. And we have a storage limit is larger than a cookie (at most 5MB)&lt;/p&gt;
&lt;h2&gt;
  
  
  Using Session storage
&lt;/h2&gt;
&lt;h4&gt;
  
  
  setting data
&lt;/h4&gt;

&lt;p&gt;We can store data using &lt;code&gt;setItem&lt;/code&gt; method.&lt;br&gt;
syntax :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;sessionStorage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setItem&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;key&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Value&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;the above code will add the given key-value pair to session storage.&lt;br&gt;
EG:&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F4tpad95fm1mmpn4ow75e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F4tpad95fm1mmpn4ow75e.png" alt="Alt Text" width="750" height="395"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;so the session storage now  has  data with key &lt;code&gt;MyCat&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F8epkroovwuki7fthr0uj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F8epkroovwuki7fthr0uj.png" alt="Alt Text" width="319" height="337"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  Getting data
&lt;/h4&gt;

&lt;p&gt;We can get data using the &lt;code&gt;getItem&lt;/code&gt; method.&lt;br&gt;
syntax :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;
&lt;span class="nx"&gt;sessionStorage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getItem&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;key&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

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

&lt;/div&gt;



&lt;p&gt;the above code will return data of that key from session storage.&lt;br&gt;
EG: &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fyvaujc0zbxalzyiyyj7l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fyvaujc0zbxalzyiyyj7l.png" alt="Alt Text" width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  Removing Data
&lt;/h4&gt;

&lt;p&gt;We can remove data using &lt;code&gt;removeItem&lt;/code&gt; or &lt;code&gt;clear&lt;/code&gt;method.&lt;br&gt;
syntax :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;sessionStorage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;removeItem&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;key&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nx"&gt;sessionStorage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;clear&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;removeItem&lt;/code&gt; will remove a specific key from session storage, whereas the &lt;code&gt;clear&lt;/code&gt; method will clean up the entire session storage&lt;/p&gt;

</description>
      <category>react</category>
      <category>angular</category>
      <category>vue</category>
      <category>browser</category>
    </item>
  </channel>
</rss>
