<?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: Paresh Awashank</title>
    <description>The latest articles on DEV Community by Paresh Awashank (@paresh4734).</description>
    <link>https://dev.to/paresh4734</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%2F714083%2Fe88396e4-c63f-4a34-8cef-de354079787b.PNG</url>
      <title>DEV Community: Paresh Awashank</title>
      <link>https://dev.to/paresh4734</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/paresh4734"/>
    <language>en</language>
    <item>
      <title>Rule Engines</title>
      <dc:creator>Paresh Awashank</dc:creator>
      <pubDate>Wed, 11 Mar 2026 05:06:17 +0000</pubDate>
      <link>https://dev.to/paresh4734/rule-engines-4459</link>
      <guid>https://dev.to/paresh4734/rule-engines-4459</guid>
      <description>&lt;p&gt;‘Rule Engine’ In the name itself it has a word ‘Engine’ and it may be because many times it handles complex processing to produce the desired output from the provided inputs. Now why I choose this topic to write a blog on??? Because recently I came across one scenario in which the client loss the revenue only because of one small flaw in the Rule Engine, and many time it is better to learn from the other’s mistake and hence I thought to wright something on the ‘Rule Engine’!&lt;/p&gt;

&lt;p&gt;So, the analogy behind the word Engine (which we normally use for the mechanical objects) is, both Mechanical Engines and Rule Engines converts some inputs into the desired outputs. The mechanical Engine converts fuels into the motion, and Rule Engine converts the data into the decision or in simple word Mechanical engine powers machines and Rule Engine powers decisions. &lt;/p&gt;

&lt;p&gt;Rule Engine is treated as a ‘Brain’ of the business process and hence it is an important part if the software system. It consists of the rule on the provided input to process the data and give the output. There are many different types of rule engines with complex definitions you will find on the internet, but I would like to talk about it in the simple words. So as per my understanding we can divide the Rule Engines in two types based on the place it is written in, ‘SQL Based Rule Engine’ and ‘Code Based Rule Engine’.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SQL Based Rule Engine&lt;/strong&gt;&lt;br&gt;
In this type of rule engine, most of the business rules are written on the database level using Stored Procedures, SQL Functions, Triggers etc. The data comes into the database tables and based on the data and using different conditions using filters, joins, case statements the system produces the output. This is the most common approaches where the database is used heavily.&lt;br&gt;
Some of the advantages of the SQL Based Rule engines are,&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Faster execution as the logic works directly on the database side&lt;/li&gt;
&lt;li&gt; Centralized rules handling on the database level&lt;/li&gt;
&lt;li&gt; The rules are easy to manage and handle when they are more related to the data
Along with the advantages, there are disadvantages as well, &lt;/li&gt;
&lt;li&gt; When the number of rules get increases, it becomes difficult to handle, and the queries get increasingly complex and hence becomes difficult to maintain&lt;/li&gt;
&lt;li&gt;  One change in the query sometimes impact on multiple rules&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Code Based Rule Engine&lt;/strong&gt;&lt;br&gt;
As the name says, in the code-based rule engines, the business rules are written the application code programming languages like C#, Python, Java etc. Here the rule conditions are written using the programming language syntax for conditions like If-Else, Case Statements, Configurations etc. This approach is mostly used when the rules are more complex and need frequent changes and need to be flexible.&lt;br&gt;
Some of the advantages of the Code Based Rule engines are,&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; It has a better readability &lt;/li&gt;
&lt;li&gt; The rules are written in the structured way&lt;/li&gt;
&lt;li&gt; We can write the unit test cases to test the rules and the changes&lt;/li&gt;
&lt;li&gt; It is flexible to implement new changes
The disadvantage for this approach is, if the rules are hidden in the assembly, it is difficult to see as they are hidden in the code.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Irrespective of type of the Rule Engine, the biggest change with the Rule Engine is managing the rules properly. Over the time, the business keeps adding the new conditions, exceptions and new cases. And because of this, the rule engine becomes increasingly complex. Hence below are some best practices we can implement while building or managing the rule engines,&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Keep the rules modular – Avoid writing rules in one query on in one code block, rather divide them into the logical blocks&lt;/li&gt;
&lt;li&gt; Documentation – Document the Rule Engine rule and changes properly. You can use of the technic like ADR (Architecture Decision Record) etc.&lt;/li&gt;
&lt;li&gt; Maintaining the Priority/Order – Keep the Priority/Order of the rules in mind as rules are mainly condition based &lt;/li&gt;
&lt;li&gt; Test the Edge Cases – Make sure to test all the edge cases and negative scenarios along with the other affecting applications (regression testing).&lt;/li&gt;
&lt;li&gt; Maintain the Logs – Logging is helpful in tracing the issues or the flow&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
A rule engine is a Brain of the application; it is a decision-making code part of the application. One small mistake in the rule can cause the major financial or functional impact. So whenever, we design or modify a rule engine, we must be very careful, test is thoroughly and design it in a way that it is clear, modular, maintainable and reliable. Because at the end of the day it is not a SQL Based or Code Based – It is a core logic that drives the business decisions!!&lt;/p&gt;

&lt;p&gt;Happy Coding!&lt;/p&gt;

</description>
      <category>code</category>
      <category>sql</category>
      <category>development</category>
    </item>
    <item>
      <title>AutoGen Vs LangGraph Frameworks</title>
      <dc:creator>Paresh Awashank</dc:creator>
      <pubDate>Thu, 02 Jan 2025 04:15:38 +0000</pubDate>
      <link>https://dev.to/paresh4734/autogen-vs-langgraph-frameworks-32j3</link>
      <guid>https://dev.to/paresh4734/autogen-vs-langgraph-frameworks-32j3</guid>
      <description>&lt;p&gt;We all know AI is growing very fast and a part of our &lt;a href="https://www.elastikteams.com/" rel="noopener noreferrer"&gt;Elastik Team’s&lt;/a&gt; culture ‘Learn and Grow’, we learn something new every quarter. In Q4 of 2024, we made some really good progress in our AI custom application ‘AI Wizard’ to convert it from RAG based framework to the Multi-Agent Framework. We had so many discussions and brainstorming sessions around it to finalize the design and the frameworks to use for it and finally chose two multi-Agent frameworks ‘AutGen’ and ‘LangGraph’ to start with so that we can compare the different parameters between them like performance, ease of use, time required to build the new features etc. So, we decided on two teams and provided them with two different learning paths to start learning on these frameworks and build one POC each to understand how it works. Once we got confidence, we started the actual implementation and converted the application within the sprint of 3 weeks successfully. As I was also involved in this conversion project, I was also kept a goal to learn the AI Agent and Multi-Agents framework, and in this blog, I would like to write some details on what are these frameworks and what are their key features. So, let’s start.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What Are These Frameworks?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AutoGen&lt;/strong&gt;: It’s a user-friendly framework designed to simplify the process of creating multi-agent systems. It focuses on easy integration and customization, making it ideal for beginners and smaller teams.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LangGraph&lt;/strong&gt;: This framework emphasizes structure and scalability, allowing developers to create complex systems with a clear flow of communication between agents. It’s great for large projects where you need detailed control over agent interactions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What are the Key Features?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Ease of Use&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AutoGen&lt;/strong&gt;: This is a plug-and-play experience. Using this you can quickly set up agents with vey less coding. When you have a short time, this is a perfect tool.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LangGraph&lt;/strong&gt;: This requires comparatively more initial setup, and you will need to define the detailed workflows for this.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. Flexibility&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AutoGen&lt;/strong&gt;: This provides the pre-built templates and tools, and hence it may feel like limited for the customization.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LangGraph&lt;/strong&gt;: This is the most flexible and hence most of the customizations are possible with this.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. Scalability&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AutoGen&lt;/strong&gt;: This is mostly suitable for small to medium projects. For large projects might require additional workarounds.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LangGraph&lt;/strong&gt;: As this is mainly require for the flexible and customizable applications, even if you have number of agents or workflows it’s possible with this.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;4. Learning Curve&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AutoGen&lt;/strong&gt;: As this require minimal coding and as it is based on the pre-built tools it is easy to learn.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LangGraph&lt;/strong&gt;: It has a learning curve but it add really good value in the developer’s knowledge base.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;When to Choose What?&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Use AutoGen if:&lt;/strong&gt;&lt;br&gt;
    - You want to finish the project quickly.&lt;br&gt;
    - You are new to AI development.&lt;br&gt;
    - Your project is small.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use LangGraph if:&lt;/strong&gt;&lt;br&gt;
    - You are working on a large and complex system.&lt;br&gt;
    - You are comfortable with more advanced coding.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is the takeaway?&lt;/strong&gt;&lt;br&gt;
AutoGen and LangGraph are both very powerful tools to build multi-agent frameworks, and both has their own key features. As per my analysis, based on your project requirements you can choose either of them. If your project is small, easy and if the developers are new then you can use AutoGen, where on other side if the project is largen with lots of scenarios and if your developers are skilled, then you can choose LangGraph!&lt;/p&gt;

&lt;p&gt;Happy Coding!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Angular 16 - Developer Specific Features</title>
      <dc:creator>Paresh Awashank</dc:creator>
      <pubDate>Tue, 03 Oct 2023 16:49:47 +0000</pubDate>
      <link>https://dev.to/paresh4734/angular-16-developer-specific-features-305b</link>
      <guid>https://dev.to/paresh4734/angular-16-developer-specific-features-305b</guid>
      <description>&lt;p&gt;Hello There! Continuing my Angular versions new features learning series, and this the time for the current latest Angular version Angular 16. So far Angular is adding so many interesting features in previous launches and lets see what it is offering in this version. You can find my previous version blogs here - &lt;a href="https://dev.to/paresh4734/angular-15-new-features-4gkf"&gt;Angular 15&lt;/a&gt;, &lt;a href="https://dev.to/paresh4734/what-is-new-in-angular-13-14-1897"&gt;Angular 13&amp;amp;14&lt;/a&gt; &amp;amp; &lt;a href="https://dev.to/paresh4734/what-is-new-in-angular-12-4eg0"&gt;Angular 12&lt;/a&gt;. Lets see the Angular 16 new developer specific features now.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Angular Signals&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In this release, Angular has introduced the first reactivity primitives and those are ‘Signal’, ‘Computed’ and ‘Effect’. The signals are used to set or update the values and notify the consumer the values have been changed. It can hold a simple value or a complex data structure. Here is the example of signal&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;//declare signal
const  color = signal(‘Red’);

//get the signal value
console.write(‘The selected color is ’ +  color()); //Output - Red

//set the signal value
color.set(‘Green’); .
console.write(‘The selected color is ’ +  color()); //Output - Green
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There are more functions which signal provide like, update, mutate etc.&lt;/p&gt;

&lt;p&gt;The **Effect **is used to notify consumers that the signal’s value is changed. For example,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;effect(() =&amp;gt; { console.log(`The current color is: ${color()}`); });
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And this callback will execute when the signal value is changed. Effects are rarely used in an application code but there are few scenarios where it can be used, like syncing data in local storage etc.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Enhanced Hydration&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Basically, Hydration is the process of restoring the server side rendering application on the client side. This enhancement in Angular can improve the page load performance. Initially, when Angular was rendered on the page, the framework would discard the existing DOM nodes and used to re-render them from scratch. But now, developers can opt-in Angular reusing these existing DOM nodes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Faster Build with the esbuild&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Angular 16’s CLI builder is based on the esbuild. An esbuild claims ‘An extremely fast bundler for the web’ This new thing is improving the build time significantly in this new version. To enable this feature, developers need to add the configuration in the &lt;em&gt;angular.json&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;"architect": {&lt;br&gt;
  "build": {&lt;br&gt;
    "builder": "@angular-devkit/build-angular:browser-esbuild",&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Standalone Component Migration and Scaffolding&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;The standalone components were first introduced in Angular 14 and they became more stable in Angular 15. Now Angular 16 has introduced the migration semantic and standalone migration guide and these tools are very useful in reducing the time required to move the code to standalone components. Also you can generate the whole new angular application with standalone components with below command&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ng new --standalone&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Required Inputs&lt;/p&gt;

&lt;p&gt;This is the easy way to mark the component or directive input as required. This new feature was newly introduced in Angular 16. Below is an example,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;export class EmployeeDetails {
  @Input({ required: true }) employeeName: string;
}

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

&lt;/div&gt;



&lt;p&gt;The above are some interesting developer specific new features introduced by the Angular 16. There are also few breaking changes developer needs to keep in mind while upgrading to the version 16&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Supported Node version for Angular 16 is node.js v16 or v18&lt;/li&gt;
&lt;li&gt;Supported Typescript version for Angular 16 is TS version 4.9 or later.&lt;/li&gt;
&lt;li&gt;Angular compatibility compiler (ngcc) is removed - The view engine was removed in Angular 13 and now ngcc is removed in version 16.&lt;/li&gt;
&lt;li&gt;Angular package format changed.&lt;/li&gt;
&lt;li&gt;ReflectiveInjector has been removed.&lt;/li&gt;
&lt;li&gt;Updated behavior for Router.createUrlTree.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So these are the details on the angular version upgrade, developer specific changes. Same as the previous version upgrades, angular has brought new and interesting features in Angular 16 as well! Looking forward for more in the future!!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Happy Reading! Happy Coding!&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>angular</category>
      <category>development</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Open AI: Fine Tuning vs Text Embedding</title>
      <dc:creator>Paresh Awashank</dc:creator>
      <pubDate>Fri, 30 Jun 2023 09:59:34 +0000</pubDate>
      <link>https://dev.to/paresh4734/open-ai-fine-tuning-vs-text-embedding-45ll</link>
      <guid>https://dev.to/paresh4734/open-ai-fine-tuning-vs-text-embedding-45ll</guid>
      <description>&lt;p&gt;We all know nowadays AI is booming everywhere, and it has divided people in two categories, one in favor of AI and others are against it. Some people are saying it will help people to complete their tasks quickly and others are saying it will make people lazy. But whatever the debate is, I personally feel that it completely depends on the mindset of the person who is using it and utilizing its power in the correct way. It is kind of the same thing as the ‘knife’ if it is in the criminal's hand it may harm people but if it is in the cook's hand, it will help in creating delicious food. Personally I feel it has awesome advantages and it definitely helps software developers like me, and hence I am trying to become more involved in AI and its applications. And as a part of it, this quarter I kept my quarterly SMART goal to understand the difference between two methodologies to train OpenAI with the custom dataset. As we all know that the OpenAI has information available till March 2021 which was publicly available by that time. So now, if you want to train OpenAI with your custom data, it has provided some ways to do it. Fine Tuning and Text Embedding are two of them. Let's understand what they are.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Fine-Tuning: Customizing Language Models&lt;/strong&gt;
Fine-tuning is a process of training a pre-existing language model on a custom dataset as per user’s requirement to make OpenAI information more suitable for the specific applications. OpenAI's fine-tuning process involves taking a pre-trained base model and training it further on a dataset that is specific to the custom application. Here are some &lt;strong&gt;benefits&lt;/strong&gt; of the Fine Tuning training approach.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Reduces Time for Training&lt;/strong&gt; - As we saw in an introduction that the Fine-Tuned models are pre-trained models and hence it allows users to leverage the knowledge and parameters learned during pre-training. And hence it requires less resources and also reduces the time than training the models from the start.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Transfer Learning&lt;/strong&gt; - Again, as the Fine-tuning models are pre-trained, they can learn very effectively and efficiently. This transfer learning allows for better performance even if the target task has limited training data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Customization&lt;/strong&gt;- Fine tuning allows users the ability to customize models and its behavior according to specific custom requirements. Developers can modify the model’s response or output format as per the requirement of an application. This kind of control over models allows great flexibility and adaptability.&lt;/p&gt;

&lt;p&gt;Along with the above advantages, Fine-Tuning also has few &lt;strong&gt;disadvantages&lt;/strong&gt; as well, and below are the some of them,&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Limited Generalization&lt;/strong&gt; - Even the fine tuning modes are highly optimized for the specific tasks it was trained on but it may lack the broader understanding and generalization capabilities of the original pre-trained model. The fine-tuned model may not perform as well on tasks or domains outside of its limited training scope. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Overtraining&lt;/strong&gt; - Fine-tuning a model on specific data can end into overtraining, where the model can perform poorly on unseen or slightly different data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dependency on Pre-training&lt;/strong&gt; - Fine-tuning is completely dependent on the pre-trained model. If the pre-training process has issues, it can impact the efficiency of the process.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Embedding Open AI APIs: Generalized Language Models&lt;/strong&gt;
An embedding is a list of some numbers. When we train AI with any information, then each block of data is stored a vector which is nothing but each block represented as some floating number. Text embedding refers to the process of representing text data in a numeric format where words or documents are mapped to vectors. Here are some &lt;strong&gt;benefits&lt;/strong&gt; of the Text embedding approach.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Dimension Reduction&lt;/strong&gt; - In general, dimension reduction is the transformation of data from a high-dimensional space into a low-dimensional space so that the low-dimensional representation retains some meaningful properties of the original data. Text embedding techniques can effectively reduce the dimension of text data. Instead of representing each word or document as a high dimensional thing, the text embedding compresses the information into lower dimension vectors. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Transfer Learning&lt;/strong&gt; - Similar to Fine-Tuning, pre-trained text embeddings can be transferred to new tasks or domains with data. This transfer learning speeds up the training process and enhances the performance of models.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Improved Generalization&lt;/strong&gt; - Text Embedding captures the contextual meaning of the words which enables better generalization compared to simple representation of data. This enhances the performance of various natural language processing.&lt;/p&gt;

&lt;p&gt;Below are the some of &lt;strong&gt;disadvantages&lt;/strong&gt; of Text Embedding,&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Loss of some fine information&lt;/strong&gt; - Because of the dimension reduction approach of the Text Embedding, some fine grained information loss. Some characteristics of words or documents may not be captured in the required way in lower dimension vectors. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Limited Coverage&lt;/strong&gt; - The pre-trained text embeddings may not cover all the words it phrases in given text data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Context Related Limitations&lt;/strong&gt; - The Text Embeddings depend on the context and the surrounding words in the particular document. This can create a problem of different embedding of the same word or phrase in different documents.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Summary&lt;/strong&gt; - &lt;/p&gt;

&lt;p&gt;It's important to note that the advantages and disadvantages of both Fine-Tuning and Text Embedding can vary depending on the specific use case, dataset, and requirements. Proper understanding of these factors is very important for effective and responsible utilization of these techniques.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Happy Reading!&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>openai</category>
    </item>
    <item>
      <title>Angular 15 New Features</title>
      <dc:creator>Paresh Awashank</dc:creator>
      <pubDate>Sun, 04 Jun 2023 17:09:13 +0000</pubDate>
      <link>https://dev.to/paresh4734/angular-15-new-features-4gkf</link>
      <guid>https://dev.to/paresh4734/angular-15-new-features-4gkf</guid>
      <description>&lt;p&gt;This has been the 3rd quarter in a row now, I am focusing on learning new things Angular brings in its major upgrade. So far I learned Angular 12, 13 and 14 and this time I am focusing on Angular version 15. Angular version 15 was released in November 2022 and basically it is an update to Angular 14. It has few new features and it is more stable than the previous versions. Now let’s focus on some of the new and interesting things Angular is offering in version 15.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Standalone Components&lt;/strong&gt; - In Angular 15, the standalone components are more stable. Standalone components were first introduced in Angular 14 and you can find more details &lt;a href="https://dev.to/paresh4734/what-is-new-in-angular-13-14-1897"&gt;here&lt;/a&gt; about what are standalone components and how it made the developers life easy. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NgOptimizedImage Directive is Stable&lt;/strong&gt; -  NgOptimizedImage directive was submitted as a “developer preview” feature in Angular version 14.2, and now it is fully operable in Angular 15. This helps to reduce the download time of the images in your application. This improves image loading performance by enforcing best practices. NgOptimizedImage ensures that the loading of the Largest Contentful Paint (LCP) image is prioritized by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Automatically setting the fetchpriority attribute on the image tag&lt;/li&gt;
&lt;li&gt;Lazy loading non-priority images by default&lt;/li&gt;
&lt;li&gt;Asserting that there is a corresponding preconnect link tag in the document head&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Stack Traces are more Helpful&lt;/strong&gt; - Another feature which will make developers life easy is that the stack trace in Angular are cleaner and hence more useful to understand the debugging stack.  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Strict Mode Enhancements&lt;/strong&gt; - Angular 15 introduces enhanced strict mode settings, which provide additional checks and stricter enforcement of coding practices. With stricter templates, type checking, and error handling, developers can catch potential bugs and issues at compile-time, resulting in more reliable and maintainable code. It also helps developers to catch the bug.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Enhancement in Angular Materical&lt;/strong&gt; - The new version introduces a wide range of new components, including data tables, expansion panels, and sliders, expanding the options available for developers to create rich and interactive user interfaces. Also, many existing components are refactored based on the Angular Material Design Components (MDC) for the Web.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Improved Angular CLI&lt;/strong&gt; - The Angular Command Line Interface is more improved in Angular version 15. It introduced several productive enhancements including faster compilation time, enhanced error reporting etc. These updates empower developers to generate code, and perform common tasks more efficiently.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;: Angular 15 introduces lots of exciting features and improvements, further solidifying its position as a leading JavaScript framework. From performance enhancements, Stack trace enhancement and strict mode improvements, Angular 15 empowers developers to build faster, more reliable, and highly interactive web applications. By staying up to date with the latest versions of Angular, developers can use the power of these features and deliver exceptional user experiences. But don’t forget that the major upgrades also come with some breaking changes as well, so before you upgrade to the Angular version 15, you might need to  review and refactor parts of your Angular application.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Happy Reading!&lt;/strong&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>What is New in Angular 13 &amp; 14</title>
      <dc:creator>Paresh Awashank</dc:creator>
      <pubDate>Mon, 03 Apr 2023 05:43:58 +0000</pubDate>
      <link>https://dev.to/paresh4734/what-is-new-in-angular-13-14-1897</link>
      <guid>https://dev.to/paresh4734/what-is-new-in-angular-13-14-1897</guid>
      <description>&lt;p&gt;Hey there.. I am back… From the last couple of quarters I am focusing on different new things in Angular. A couple of years back, I started working on Angular for the first time with version 9 and from last year I am trying to keep myself upgraded on Angular even if I need to work on older versions sometimes as a part of my daily project work.So to keep this learning as a practice, initially, I learned Angular 12 and wrote a blog on my learning and new things in Angular 12, then in this quarter I learned new things in Angular 13 and 14. Few weeks back I also explored the Angular upgrade from Angular 9 to Angular 14 and wrote a blog on the same.&lt;br&gt;
In this blog I will be writing what are the new things Angular has included in Angular 13 and Angular 14. For this blog, I took a reference from an Angular official document and few other information sources on internet.&lt;/p&gt;

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

&lt;p&gt;So, let's start with ‘What is new in Angular 13’. Angular 13 is released in November 2021&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Node JS older than 12 is No longer supported&lt;/strong&gt; - Angular 13 now only supports Node JS version 12.0 or greater. The latest version of Node.js when Angular 13 released was the 16.13.0. There are some breaking changes due to this update.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Typescript 4.4 support Module&lt;/strong&gt; - In Angular 13, the support for TypeScipt is added from 5th October 2021. The TS versions older than 4.4.2 are no longer supported.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;APF Changes&lt;/strong&gt; - The Angular Package Format(APF), has been streamlined and modernized to better serve developers. Also, the APF support to Node Package Exports updated, and this will help developers for inadvertently relying on internal APIs that may change.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;RxJS Version Updated&lt;/strong&gt; - Basically in Angular, RxJS is used for the Subscriber and Observable. It is also used for State Management in Angular. In Angular 13, the version of RxJS is upgraded from 6.x to 7.4.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Improvements to Angular CLI&lt;/strong&gt; - In Angular 13, now supports the use of persistent build cache. The persistent build cache is a feature that caches build results on disk (under the .angular/cache folder). And this results in up-to 68% improvement in build speed. Users will need to make changes in angular.json to enable this.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;View Engine is no Longer Available&lt;/strong&gt; - I have explained what is View Engine in my &lt;a href="https://dev.to/paresh4734/what-is-new-in-angular-12-4eg0"&gt;Angular 12 Blog&lt;/a&gt;. In Angular 13, View Engine is completely replaced with the Ivy Engine. It is the next generation compilation and rendering pipeline. The reason behind removing the View Engine is ‘Performance’ and hence after removing the View Engine, angular 13 became a little lighter.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;IE11 Support Completely Removed&lt;/strong&gt; - In Angular 13, the Internet Explorer 11 (IE11) support was completely removed, and because of it Angular 13 became lighter because it required the polyfill files which are now removed because of this. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Improvements in Validations&lt;/strong&gt; - In Angular 13, now we can enable Email, Max, Min etc validations dynamically.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Other Changes&lt;/strong&gt; - There are few more changes in Angular 13 below,&lt;br&gt;
    - Validation error messaging improved&lt;br&gt;
    - Resolved bugs in $localize and now it become more stable&lt;br&gt;
    - Improved the TestBed which will enable better job of tearing down test modules&lt;/p&gt;

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

&lt;p&gt;Now, let’s talk about the Angular 14 new features. Angular 14 was released in June 2022. Below are the new things in Angular 14&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Standalone Components&lt;/strong&gt; - Standalone Components are the components which do not depend on other things. Now in Angular 14, no need to import the modules in the Module.ts file file which was required before to do. Developers now can import it directly in the component.ts file. To make this change, developers need to use ‘--standalone’ param while generating the new component. This will add the ‘standalone: true’ property in the @component directive of the newly generated component. The benefit of this new feature is, if developers have multiple components which use the different modules, no need to add them in module.ts, rather developers can add them only in required components.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Extended Developer Diagnostics&lt;/strong&gt; - In previous versions than Angular 14, if there was an error in the file, it was only showing in the code behind file but was not if I am defining the HTML UI template. Now, in Angular 14, it will also show in the HTML template with the details.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Page Title Accessibility&lt;/strong&gt; - In previous versions than Angular 14, it was very difficult to change the title of the page, but now it is very easy to set it up dynamically.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Typed Angular Form&lt;/strong&gt; - In Angular 13, in the reactive forms, the system was allowed the untyped form controls without any error, but now from Angular 14, it will give developers an error message if the developer uses the Untyped form. To resolve it, developers will need to use the class name ‘UntypedFormControl’&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Angular CLI Enhancement&lt;/strong&gt; - There are some enhancements in the Angular CLI over the previous versions,&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ng analytics&lt;/strong&gt; - Now, your angular project can be directly connected with google analytics to check the information. By default it is disabled but you can enable it if you want.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ng completion&lt;/strong&gt; - When running the commands, developers generally make typos, to resolve this problem the Angular CLI will provide you the auto-completion for your command and will will reduce command line typo errors&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ng-cache&lt;/strong&gt; - Now you can enable/disable the browser cache using the command line.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Summary&lt;/strong&gt;- So, based on the above discussion, one thing is very much clear that Angular is adding a number of interesting and advanced features in every major release which will make the developers life easy by providing developer specific features; better experience by providing analytical and performance related features. And it is still continuing, so as a developer we can definitely keep an eye on the each major release and keep upgraded the project and the ourself.&lt;/p&gt;

&lt;p&gt;Happy Reading!!&lt;/p&gt;

</description>
      <category>angular</category>
      <category>beginners</category>
      <category>programming</category>
      <category>webdev</category>
    </item>
    <item>
      <title>What is New in Angular 12</title>
      <dc:creator>Paresh Awashank</dc:creator>
      <pubDate>Mon, 03 Apr 2023 05:27:26 +0000</pubDate>
      <link>https://dev.to/paresh4734/what-is-new-in-angular-12-4eg0</link>
      <guid>https://dev.to/paresh4734/what-is-new-in-angular-12-4eg0</guid>
      <description>&lt;p&gt;Hello All, in this quarter (Q3 2022), I set my learning goal to learn Angular 12 because of the project requirement. I completed the course with an assignment and then I also checked the Angular official blog site to understand what is new in Angular 12. I previously worked on older versions of angular and hence I could understand them easily. I am writing this blog based on the official angular blog details and with my analysis on related areas, so that it will be easy to understand the changes in simple words. So, let's start. I have added the details pointwise as per my understanding below,&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Big Step in Shifting from View Engine -&amp;gt; Ivy&lt;/strong&gt; 
Ivy and View Engine are basically the compilers. In Angular, the compiler compiles the Angular code into JavaScript (The Browser understanding scripting language). Ivy Compiler was introduced in Angular from Angular version 9 with default Engine and before that, only View Engine was used. To make the system faster, Angular has deprecated the View Engine, and this will be completely removed in future major releases. Now, what is Depreciation? So, there are two similar words ‘Deprecate’ and ‘Sunset’. Deprecation means the things will work with it, but you will get the warning for it. And Sunset means it is no longer available and you cannot use it. So, View Engine is now deprecated, and they are moving closer to the Ivy compiler. The advantage of Ivy is, it doesn’t compile the previously compiled code again &amp;amp; again unless there is any change and it also reduces the bundle size, so it reduces the compilation time and run time as well due to less bundle size. Also, AOT (ahead of time) compiler is enabled in Ivy by default which helps fixing the errors on time. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fUAUrQ4L--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n3niiw1k28izvkabngxm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fUAUrQ4L--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n3niiw1k28izvkabngxm.png" alt="Image description" width="616" height="347"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Improvement in Styling&lt;/strong&gt;
The major improvement in the styling in Angular 12 is Support of inline Sass. Earlier if you wanted to use Sass, you needed to use it externally, but now it is available in @component decorator. Sass is &lt;strong&gt;S&lt;/strong&gt;yntactically &lt;strong&gt;A&lt;/strong&gt;wesome &lt;strong&gt;S&lt;/strong&gt;tyle &lt;strong&gt;S&lt;/strong&gt;heet and it is an extension to the normal CSS. Also, the latest version of Angular now supports Tailwind CSS. Tailwind CSS makes it quicker to write and maintain the code of your application and it uses the utility-first framework, which means it provides a low-level utility classes to build the design for example ‘bg-yellow-200’ will replace ‘background-color: rgba(229, 231, 235, 1);’, ‘m-4’ is replacement for ‘margin: 1rem;’ and so on.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3HzuZcRu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zuglso82hbwtvvjuxnwn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3HzuZcRu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zuglso82hbwtvvjuxnwn.png" alt="Image description" width="504" height="244"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Protector – Yes or No&lt;/strong&gt;
This is not an actual change, but this is just a thought process Angular has kept in front of the community about whether the Protector (which is an end-to-end testing framework) should be available in future or not because of it’s less use. So, after review and analysis Angular will take decision in upcoming versions whether to keep or remove the Protector framework&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VnQLji3V--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/prnvb3cfeamowrc8p72k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VnQLji3V--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/prnvb3cfeamowrc8p72k.png" alt="Image description" width="468" height="263"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Nullish Coalescing operator support&lt;/strong&gt;
The Nullish Coalescing operator (??) was widely used in Typescript and it was very helpful to the developer to minimize the code to check null/undefined/blank values. Now the same operator is available in Angular Version 12. For Example,&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Old Code&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;{{age !== null &amp;amp;&amp;amp; age !== undefined ? age : calculateAge() }}&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;New Code&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;{{ age ?? calculateAge() }}&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--IvacOcA4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6sg9qoqksif9o8p4dqmz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--IvacOcA4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6sg9qoqksif9o8p4dqmz.png" alt="Image description" width="486" height="254"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Transition from old i18n Message IDs&lt;/strong&gt;
I18n or Internationalization is the process of making your web application compatible with rendering text in multiple different languages. There were some problems using this i18n message ids and hence Angular is replacing it with the new canonical message ids which are more reliable and error free and this format will reduce the unnecessary translation invalidation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DM4bcTgv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pmbycdez4y8f6syneel1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DM4bcTgv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pmbycdez4y8f6syneel1.png" alt="Image description" width="499" height="281"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Deprecating support of IE 11&lt;/strong&gt;
Angular keeps themselves up to date. Hence removing support for old browsers, allow Angular to focus on providing modern solutions and better support to users. So, in Angular 12 the deprecated warning message is included, and the complete support is removed in Angular 13&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UmBg6Fwx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e74egruaq6c66z519do0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UmBg6Fwx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e74egruaq6c66z519do0.png" alt="Image description" width="506" height="338"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So, these are some major changes along with some other changes in &lt;strong&gt;Documentation, Strict Mode in CLI, Webpack5 Support, ng build command for production&lt;/strong&gt; etc. are available now in Angular 12 and there are more available in current latest versions of Angular. Many more changes are on the way in upcoming versions so that the development is more and more exciting!&lt;/p&gt;

&lt;p&gt;Happy Reading!&lt;/p&gt;

</description>
      <category>angular</category>
      <category>webdev</category>
      <category>beginners</category>
      <category>programming</category>
    </item>
    <item>
      <title>Angular Version Upgrade - My Experience</title>
      <dc:creator>Paresh Awashank</dc:creator>
      <pubDate>Wed, 28 Dec 2022 10:44:25 +0000</pubDate>
      <link>https://dev.to/paresh4734/angular-version-upgrade-my-experience-17ac</link>
      <guid>https://dev.to/paresh4734/angular-version-upgrade-my-experience-17ac</guid>
      <description>&lt;p&gt;Before writing this Blog, I was very curious about the Angular Version Upgrade process because I had never done it before even if I worked on Angular projects in past organizations. This time finally the moment came and in one of the technical calls, my client informed us that they are planning to upgrade the all Angular project to the latest versions. As this conversation happened before 30th November 2022, Angular 14 was the latest version at that time (now it is Angular 15). Because I was waiting a long time to learn this activity; without wasting any time I raised my hand and conveyed my interest in involving myself in this activity. At the same time the Q4 was about to start; we have a great culture ‘Learn N Grow’ at &lt;a href="https://www.elastikteams.com/"&gt;Elastik Teams&lt;/a&gt; and as a part of it we set at-least 3 goals each quarter. One is a learning goal, second is project related goal and last but not the list is the goal related to giving back to the community. And then I decided to keep the goal to upgrade two angular projects to the latest version (version 14).&lt;/p&gt;

&lt;p&gt;So, I started my analysis to upgrade the Angular projects. I was assigned two relatively less complex projects to start with. One project was at Angular version 11 and another was at Angular version 9. Hence I decided to start with the project with version 11 because that would be easy to upgrade 3 versions (11 to 14). So based on it, I searched for the process of Angular version upgrade on the internet and I found the official &lt;a href="https://update.angular.io/"&gt;Angular website&lt;/a&gt; which provides the detailed explanation and steps to be performed for upgrading from any version to any higher version.&lt;/p&gt;

&lt;p&gt;Here the actual upgrade process started for Version Upgrade 11 to 14. There is no recommended way to upgrade directly from more than one upgrade at a time, for example, in my case, I should not directly upgrade from 11 to 14, rather it should be step by step, from 11 to 12, then 12 to 13 and at last 13 to 14.  Angular has provided the different configurations to choose different options, like ‘&lt;strong&gt;Complexity of the Project&lt;/strong&gt;’ where you can select either &lt;strong&gt;Basic, Medium and Advanced&lt;/strong&gt; level. Also it provides an options to choose &lt;strong&gt;Other Dependencies&lt;/strong&gt; like&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;I use ngUpgrade to combine AngularJS &amp;amp; Angular&lt;/li&gt;
&lt;li&gt;I use Angular Material&lt;/li&gt;
&lt;li&gt;I use Windows&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Based on the options selection, it changes the steps to follow. As per my requirement I selected ‘&lt;strong&gt;Basic&lt;/strong&gt;’ complexity and option #2 and #3 from the other dependencies because the project was using Angular Material and on Windows. Even if I followed every step mentioned in the checklist, there are few additional things I needed to do and I would like to discuss them with you. &lt;/p&gt;

&lt;p&gt;Comparatively, the upgrade from 11 to 14 was smooth for me because of the less complex project and less breaking changes as well. Below are some &lt;strong&gt;extra steps&lt;/strong&gt; than the steps provided by official website, which I followed&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Need to choose correct Node.js version before run the update command, in my case, I needed to install node version 14.20.0&lt;/li&gt;
&lt;li&gt;I Needed to run the ‘&lt;em&gt;npm install&lt;/em&gt;’ command every time I completed the major upgrade process like from 11 to 12, 12 to 13 and 13 to 14, if not I was getting errors for some dependencies.&lt;/li&gt;
&lt;li&gt;If you are using git or any repository for your project, you will need to check-in/commit the changes made by each major upgrade. Otherwise, the update command won’t execute and throw an error.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Next upgrade project was from Angular version 9 to 14. Again, as mentioned above, it is not recommended to upgrade directly from 9 to 14, we will need to update the versions step-by-step. The configuration for this time is the same as in the last project, except the versions. I kept the node version also the same, that is 14.20.0. The upgrade process itself updated a number of places with new compatible code. Also, I followed all the same steps as the previous upgrade in this upgrade and below are some &lt;strong&gt;more extra steps&lt;/strong&gt; I needed to perform.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If you are getting an incompatible peer dependency related error, then for each major Angular upgrade command, you will need to use ‘&lt;em&gt;--force&lt;/em&gt;’ flag at the end of command &lt;/li&gt;
&lt;li&gt;If you are getting a python related error which says ‘Can't find Python executable "python", you can set the PYTHON env variable.’  then execute below command
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install -g windows-build-tools
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;The latest installed typescript version (4.6.4) along with the upgrade process, makes the type casting rules more strict and you will get errors for mismatched data type assignments. For me, I got errors if Date typed variables assigned to date Strings etc. In that case I needed to convert the string into date explicitly. Also you will get an error if any property is used elsewhere before initialization etc.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And after completing all the steps mentioned above, I successfully upgraded the projects to the Angular version &lt;strong&gt;14.2.12&lt;/strong&gt; and Angular Material version &lt;strong&gt;14.2.7&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Apart from the above experience I learned a few more things about the version system in the package.json file. For example the difference between tilde(~) and caret(^) symbols in prefixes of the package versions. So, the version in the package.json is always in the form of &lt;strong&gt;major.minor.patch&lt;/strong&gt;. **Tilde **freezes the major version and minor version and updates the package to the latest bug fixes or patch version, where **Caret **freezes the major version and updates the minor version along with the patch.&lt;/p&gt;

&lt;p&gt;Angular official update guide has provided very detailed information and covered all the points needed to follow while upgrading the project, but above are some extra steps I needed to follow which can be very subjective to the project application or environment you are using, but I hope this information may help in similar scenarios as above. Thanks.&lt;/p&gt;

&lt;p&gt;Happy Reading!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Data Migration of Encrypted data</title>
      <dc:creator>Paresh Awashank</dc:creator>
      <pubDate>Thu, 07 Jul 2022 09:57:53 +0000</pubDate>
      <link>https://dev.to/paresh4734/data-migration-of-encrypted-data-3p6f</link>
      <guid>https://dev.to/paresh4734/data-migration-of-encrypted-data-3p6f</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--raFwZr3x--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zhci7oafqlva10fz139e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--raFwZr3x--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zhci7oafqlva10fz139e.png" alt="Image description" width="267" height="189"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This blog is about the process of data migration of the encrypted data from one application to another application which uses different cryptographic algorithms, without affecting the current functionality. This requirement came into picture when I was working on the project to refactor the application from one framework to another. The old framework was having inbuilt Encryption and Decryption methods written in encapsulated classes with no access for the source code. Hence it was very difficult to &lt;strong&gt;‘break the wall’&lt;/strong&gt; to implement the same logic used for Encryption and Decryption.&lt;/p&gt;

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

&lt;p&gt;Then I discussed the same problem with some experts. And finally after doing lots of analysis and a number of discussions, I got the solution. So, instead of breaking an existing wall, I decided to &lt;strong&gt;‘construct a new wall’&lt;/strong&gt;, which will behave exactly the same as the old one.&lt;/p&gt;

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

&lt;p&gt;So, I decided to create an utility which will do the data migration for the Encrypted data  (like passwords and credit card numbers), but with some different &lt;strong&gt;Encryption Algorithm&lt;/strong&gt;, in such a way that all the functionalities using the old system data or the code written for encryption/decryption will work as is, without making any modification.&lt;/p&gt;

&lt;p&gt;After doing some more analysis on the latest cryptographic algorithms, I came across the technique which is being widely used nowadays, which is &lt;strong&gt;‘Advanced Encryption Standard (AES)’&lt;/strong&gt;. This is a symmetric block cipher, chosen by the US government to protect the information. &lt;strong&gt;Symmetric&lt;/strong&gt; cipher is the type of encryption, where a single key is used for both encryption and decryption. In the old system the keys were already stored for the previously used algorithm and I planned to use the same keys for the new methodology also. &lt;strong&gt;Block Cipher&lt;/strong&gt; takes a block of plaintext and generates a block of ciphertext. In AES, it converts plaintext into a block of 128 bits and returns ciphertext as a block of the same 128 bits.&lt;/p&gt;

&lt;p&gt;The AES algorithm uses the different key sizes based on different versions of the algorithm. So, it supports 128 bit, 192 bit and 256 bit keys for three different versions. I planned to use the version with a 128 bit key, but here I face one challenge because the length of the keys already created in the old system was not enough to create the 128 bits key, and hence in the logic I needed to add some extra characters on the run time to an existing key. &lt;/p&gt;

&lt;p&gt;Then I created the utility, which first takes the copy of old encrypted data in another new column, so that if anything wrong happens, I can use the backup to restore the data back to the original column, then it converts old encrypted data into plaintext using the old decryption algorithm. Then the new method with the AES algorithm converts the plaintext into a new ciphertext using a new encryption algorithm and replaces the old ciphertext with the new one. Once all data migration was done, I just needed to replace the old decrypt method with a new Decrypt method which uses AES and that’s it! Everything worked as expected!   &lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Happy Reading!!&lt;/strong&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>‘Materials UI’ or ‘Chakra UI’ what is better for React?</title>
      <dc:creator>Paresh Awashank</dc:creator>
      <pubDate>Mon, 27 Sep 2021 08:52:00 +0000</pubDate>
      <link>https://dev.to/paresh4734/materials-ui-or-chakra-ui-what-is-better-for-react-37mh</link>
      <guid>https://dev.to/paresh4734/materials-ui-or-chakra-ui-what-is-better-for-react-37mh</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction:&lt;/strong&gt;&lt;br&gt;
Now a days in IT, &lt;strong&gt;React JS&lt;/strong&gt; framework is the most favorite framework for developing the &lt;strong&gt;Single Page Applications&lt;/strong&gt;. React is an open-source JavaScript library that helps you to build top interface for both the &lt;strong&gt;Web&lt;/strong&gt; as well as &lt;strong&gt;Mobile&lt;/strong&gt; apps. Along with React Library, it is equally important to choose the UI library for react, which will provide the number of prebuild controls like buttons, list, grids etc. with great styling features and control properties which can be easily configured.&lt;/p&gt;

&lt;p&gt;In this blog we will compare two React UI component libraries &lt;strong&gt;‘Material UI’&lt;/strong&gt; and &lt;strong&gt;‘Chakra UI’&lt;/strong&gt;, which comes under top 10 React JS supporting UI libraries and we will see what is the better to use among them. We will mainly compare them based on three factors &lt;strong&gt;‘Ease of Modification’&lt;/strong&gt;, &lt;strong&gt;‘Ease of Use’&lt;/strong&gt; and &lt;strong&gt;‘Reliability’&lt;/strong&gt; and also few others.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Analysis:&lt;/strong&gt;&lt;br&gt;
First of let’s talk about &lt;strong&gt;‘Ease of Modification’&lt;/strong&gt; with these two UI libraries, the Chakra UI is having clean class names structure. Now what does that mean, for example if you see the HTML source code build in both libraries, you will see the material UI adds so many classes to each HTML tags created for material component, where Chakra UI adds comparatively less classes. Also, Chakra UI provides easy manual manipulation in CSS classes, where Material UI has way more options to do it for way more components than Chakra UI. In additions, Material UI components has more feature and properties which make them more Flexible.&lt;/p&gt;

&lt;p&gt;Then let’s talk about second point of comparison, which is &lt;strong&gt;‘Ease of Use’&lt;/strong&gt;. Since Material UI is having lot more controls and their too many numbers of properties, this will naturally lead to more time to understand them and decide which component to use in some scenarios. Since Chakra UI is newer, it is currently easier to pick up controls from it. In terms of documentation, both options have good documentation but I think material UI will win in it, but it takes more time to go through. So, both libraries are easy to use but Chakra is easier than Material UI.&lt;/p&gt;

&lt;p&gt;Now the last point &lt;strong&gt;‘Reliability’&lt;/strong&gt;, here in terms of reliability and active community, there is no competition and Material Ui is the definite winner here. Material UI has 70.9K starts as of now on GitHub and strong community makes it most popular UI framework. The Chakra UI is created only 2 years back and currently having over 20.6K stars as of now on GitHub, but during this short period of time Chakra UI has earned a lot of positive comments from top React developers as it is very extensible and customizable.&lt;/p&gt;

&lt;p&gt;Along with the three criteria’s (‘Ease of Modification’, ‘Ease of Use’ and ‘Reliability’), for &lt;strong&gt;Responsiveness&lt;/strong&gt;, with Material UI we need to add sperate code to make the controls responsive, where the Chakra UI provides a built-in support with very few code changes. Also, Chakra UI provides some built -in themes like &lt;strong&gt;Night Mode&lt;/strong&gt; which makes applications night vision compatible and saves more energy when user use these kinds of themes in compare with bright themes.&lt;/p&gt;

&lt;p&gt;Below are some &lt;strong&gt;top clients&lt;/strong&gt; of Material and Chakra UI,&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Material UI

&lt;ol&gt;
&lt;li&gt;Spotify&lt;/li&gt;
&lt;li&gt;Amazon&lt;/li&gt;
&lt;li&gt;NASA&lt;/li&gt;
&lt;li&gt;Netflix&lt;/li&gt;
&lt;li&gt;Unity&lt;/li&gt;
&lt;li&gt;ShutterStock&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;Chakra UI

&lt;ol&gt;
&lt;li&gt;Bonton&lt;/li&gt;
&lt;li&gt;LUGGit&lt;/li&gt;
&lt;li&gt;Development&lt;/li&gt;
&lt;li&gt;Webridge&lt;/li&gt;
&lt;li&gt;Vytruve Web Platform&lt;/li&gt;
&lt;li&gt;Orbital Chat&lt;/li&gt;
&lt;li&gt;PLUGIN Corp.&lt;/li&gt;
&lt;li&gt;You Got Bud&lt;/li&gt;
&lt;li&gt;Write0&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Conclusion:&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;So, after this analysis, which one should you choose? Basically, if your app is smaller or medium size, and if you want something quicker, the Chakra UI would be the definite choice for you. Because it is easy to learn and lightweight. Material UI has long term reliability and if you want you create larger applications you can go with Material UI as it has scalability and grate active community.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Happy Reading!!&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>ui</category>
      <category>elastikteams</category>
    </item>
  </channel>
</rss>
