<?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: Vikram Kadiam</title>
    <description>The latest articles on DEV Community by Vikram Kadiam (@vikramkadiam).</description>
    <link>https://dev.to/vikramkadiam</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%2F199379%2F08f670bc-0765-4cbe-8cd7-949133ecfb60.png</url>
      <title>DEV Community: Vikram Kadiam</title>
      <link>https://dev.to/vikramkadiam</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vikramkadiam"/>
    <language>en</language>
    <item>
      <title>Migrated my Angular portfolio from v7 to v10</title>
      <dc:creator>Vikram Kadiam</dc:creator>
      <pubDate>Sat, 12 Dec 2020 04:09:21 +0000</pubDate>
      <link>https://dev.to/vikramkadiam/migrated-my-angular-portfolio-from-v7-to-v10-1olg</link>
      <guid>https://dev.to/vikramkadiam/migrated-my-angular-portfolio-from-v7-to-v10-1olg</guid>
      <description>&lt;p&gt;In my previous post, I've explained how I've developed my portfolio website(Progressive web app) using just angular.&lt;/p&gt;

&lt;p&gt;Here is the portfolio - &lt;a href="https://vikramkadiam.netlify.app/home"&gt;vikramkadiam.netlify.app&lt;/a&gt;&lt;/p&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="/vikramkadiam" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--19cY9RQ1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/practicaldev/image/fetch/s--tUlbtjwJ--/c_fill%2Cf_auto%2Cfl_progressive%2Ch_150%2Cq_auto%2Cw_150/https://dev-to-uploads.s3.amazonaws.com/uploads/user/profile_image/199379/08f670bc-0765-4cbe-8cd7-949133ecfb60.png" alt="vikramkadiam image"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/vikramkadiam/how-i-built-my-first-portfolio-website-using-just-angular-1i1j" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;How I built my first portfolio website using just Angular&lt;/h2&gt;
      &lt;h3&gt;Vikram Kadiam ・ Jul 10 ・ 3 min read&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#showdev&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#angular&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#portfolio&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#website&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


&lt;p&gt;Today I'm writing on my experience with Angular migration from v7 to v10.When I started out on my website I've built it on &lt;code&gt;@angular/core": "~7.2.0&lt;/code&gt;, even though at that time Angular 10 was just released and I was pretty much hyped about using it.&lt;/p&gt;

&lt;p&gt;Nevertheless now I got a chance to migrate my entire web app from v7 to v10 by following Angular official update guide from &lt;a href="https://update.angular.io/?l=3&amp;amp;v=7.0-10.2"&gt;update.angular.io&lt;/a&gt; &lt;/p&gt;

&lt;h3&gt;
  
  
  Migration steps
&lt;/h3&gt;

&lt;p&gt;In a nutshell all I had to run was below two commands for each Major version migration.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. ng update @angular/core@10 @angular/cli@10
2. ng update @angular/material@10  @angular/flex-layout@10.0.0-beta.32
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;blockquote&gt;
&lt;p&gt;NOTE: Above commands are executed when migrating from v9 to v10, the major version value will change accordingly.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h5&gt;
  
  
  Step:1
&lt;/h5&gt;

&lt;p&gt;Go to &lt;a href="https://update.angular.io/"&gt;update.angular.io&lt;/a&gt; and select the From &amp;amp; To major version you want to upgrade. In my case it was from &lt;code&gt;v7 --&amp;gt; v8 --&amp;gt; v9 --&amp;gt; v10&lt;/code&gt;.Select Angular material option if your project is using it.&lt;/p&gt;

&lt;p&gt;I would also advise to select app complexity as 'Advanced' just to understand what all are the changes that this migration needs for better view.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---hCl2Be---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/deibi1r6lvdt9usf8fp5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---hCl2Be---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/deibi1r6lvdt9usf8fp5.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Don't skip major versions while migrating, although you can skip minors &amp;amp; patches.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This step will list down all the changes that we need to ensure to migrate successfully and what changes &lt;code&gt;ng update&lt;/code&gt; command would do for you.&lt;/p&gt;
&lt;h5&gt;
  
  
  Step:2
&lt;/h5&gt;

&lt;p&gt;Once you are clear with the efforts and changes needed to migrate from one major version to another, run the first command.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ng update @angular/core@{target_major_v} @angular/cli@{target_major_v} 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;This will update core framework and CLI for the target major version of Angular.&lt;/p&gt;
&lt;h5&gt;
  
  
  Step:3
&lt;/h5&gt;

&lt;p&gt;After the successful execution verify the files that are changed and also check terminal logs for any errors or warnings. Mostly there shouldn't be any unless there are any peer dependencies.&lt;/p&gt;
&lt;h5&gt;
  
  
  Step:4
&lt;/h5&gt;

&lt;p&gt;Commit or stash(If you stash, you need to apply them at later step) the changes made by ng update command so that next command can be able to perform required changes.&lt;/p&gt;
&lt;h5&gt;
  
  
  Step:5
&lt;/h5&gt;

&lt;p&gt;This step is optional and only needed if your project has     &lt;code&gt;@angular/material and @angular/flex-layout&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;We need to update them together or else ng update will throw below error.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Package "@angular/flex-layout" has an incompatible peer dependency to "@angular/cdk" (requires "^7.0.0-rc.0", would install "8.2.3").
× Migration failed: Incompatible peer dependencies found.
Peer dependency warnings when installing dependencies means that those dependencies might not work correctly together.
You can use the '--force' option to ignore incompatible peer dependencies and instead address these warnings later.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Way around for this is to run &lt;code&gt;ng update @angular/material@{target_major_v} --force&lt;/code&gt; and then execute &lt;code&gt;ng update @angular/flex-layout@{target_major_v}&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;But it is safe to update them together by running below command&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ng update @angular/material@{target_major_v}  @angular/flex-layout@{target_major_v}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h5&gt;
  
  
  Step:6
&lt;/h5&gt;

&lt;p&gt;Review the changes made by ng update command and commit your changes on top of your previous commit from step 4.&lt;/p&gt;
&lt;h5&gt;
  
  
  Step:7
&lt;/h5&gt;

&lt;p&gt;Now repeat the steps from 1 to 6 for every major version upgrade.&lt;/p&gt;

&lt;p&gt;That's it! You are done, successfully migrated your angular project to latest version.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;DISCLAIMER: I'm not saying there will not be any issues by following the above mentioned steps, it depends on project by project basis, complexity and different dependencies. So please ensure you carefully understand the logs produced by ng update command to determine next best steps. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;My website is now live and running completely fine on Angular v10 without any major breakdowns. Although after migration I've observed that Angular has improved it's warnings during build time in terms of identifying circular dependencies or duplicate styles etc., which I've fixed post migration.&lt;/p&gt;

&lt;p&gt;You can check out my source code/issues/fixes in my repo below&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vJ70wriM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/KVikram"&gt;
        KVikram
      &lt;/a&gt; / &lt;a href="https://github.com/KVikram/mybrand"&gt;
        mybrand
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      #mybrand is a project that I've embarked on for creating a personal portfolio site showcasing my potential as a promising software architect.
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;



&lt;p&gt;Thanks for reading! Happy coding.. Cheers.&lt;/p&gt;

</description>
      <category>angular</category>
      <category>portfolio</category>
      <category>migration</category>
      <category>webdev</category>
    </item>
    <item>
      <title>How I built my first portfolio website using just Angular</title>
      <dc:creator>Vikram Kadiam</dc:creator>
      <pubDate>Fri, 10 Jul 2020 08:54:09 +0000</pubDate>
      <link>https://dev.to/vikramkadiam/how-i-built-my-first-portfolio-website-using-just-angular-1i1j</link>
      <guid>https://dev.to/vikramkadiam/how-i-built-my-first-portfolio-website-using-just-angular-1i1j</guid>
      <description>&lt;p&gt;Finally after over a month of lost weekends, long evenings and some *&amp;amp;%#@ from my beautiful wife! It's finally ready for everyone's eyes.. My first &lt;a href="https://vikramkadiam.netlify.app" rel="noopener noreferrer"&gt;portfolio&lt;/a&gt; website, completely built with &lt;a href="https://angular.io/" rel="noopener noreferrer"&gt;#angular&lt;/a&gt; and hosted on &lt;a href="https://www.netlify.com/" rel="noopener noreferrer"&gt;#netlify&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="//vikramkadiam.netlify.app"&gt;vikramkadiam.netlify.app&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h4&gt;
  
  
  TL;DR - "How did I build?"
&lt;/h4&gt;

&lt;h3&gt;
  
  
  Where did it start?
&lt;/h3&gt;

&lt;p&gt;Somewhere around in May 2020, where we were almost two months into COVID-19 lockdown, one day while surfing twitter I came across &lt;a href="https://twitter.com/search?q=%23100DaysOfCode&amp;amp;src=typeahead_click" rel="noopener noreferrer"&gt;#100DaysOfCode&lt;/a&gt; and saw some amazing stuff developed by programmers across the world.At that very moment I thought why not build something not just for this twitter challenge but for fun and utilise the time I've at my dispose after office hours.&lt;/p&gt;

&lt;p&gt;This gave a kick to my long dream of having my own personal site like an online resume or portfolio.Then I started looking for some inspiration, that's when I came across &lt;a class="mentioned-user" href="https://dev.to/jcoelho"&gt;@jcoelho&lt;/a&gt; post.&lt;/p&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="/jcoelho" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&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%2Fuser%2Fprofile_image%2F110690%2F763ea511-8e7e-4433-9e16-1ad0f89aa5d2.jpeg" alt="jcoelho"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/jcoelho/personal-website-template-an-open-source-project-5dgl" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Personal website template - an open source project&lt;/h2&gt;
      &lt;h3&gt;José Coelho ・ Dec 31 '19&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#javascript&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#react&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#node&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#showdev&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


&lt;p&gt;This gave me a lot of inspiration in designing layout and concepts around my site.Thanks to Jose.&lt;/p&gt;

&lt;p&gt;Another such inspirational site is from &lt;a class="mentioned-user" href="https://dev.to/nicolalc"&gt;@nicolalc&lt;/a&gt;, check it &lt;a href="https://dev.to/nicolalc/i-m-creating-an-entire-web-os-as-my-personal-website-for-2021-hc4"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  How did I design?
&lt;/h3&gt;

&lt;p&gt;The site design &amp;amp; layout is super simple with single page encapsulating all necessary details.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Home banner&lt;/li&gt;
&lt;li&gt;About section&lt;/li&gt;
&lt;li&gt;Technical skills section&lt;/li&gt;
&lt;li&gt;Work Experience section&lt;/li&gt;
&lt;li&gt;Blogposts section&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Also few little items like Theming, Material design, Mat Icons, Dynamic data from API's etc.,&lt;/p&gt;

&lt;h3&gt;
  
  
  How did I build?
&lt;/h3&gt;

&lt;p&gt;Agenda was simple, I wanted my app to be responsive(RWD), progressive web app(PWA), material design, lightening fast, user friendly.&lt;/p&gt;

&lt;p&gt;I was also strongly determined to build just using Angular framework libraries and strictly no additional(3rd party) libraries for any kind of functionality.Below are the list of things I used for building all kinds of functionalities in my site.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

 @angular/cdk                      7.3.7
 @angular/cli                      7.3.10
 @angular/flex-layout              7.0.0-beta.24
 @angular/material                 7.3.7
 @angular/pwa                      0.12.4


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

&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;P.S - Yes, I could've used Angular 9/10 but when I started building my app I didn't realise which version my local was running until I dived in ;)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The whole data(almost 97%) displayed on the site is dynamic and built on top of &lt;a href="https://jsonresume.org/schema/" rel="noopener noreferrer"&gt;JSON schema&lt;/a&gt; for resume details.These are fetched via &lt;a href="https://gitconnected.com/" rel="noopener noreferrer"&gt;gitconnected.com&lt;/a&gt; API.&lt;/p&gt;

&lt;p&gt;Blogs are from Wordpress as I used to write blogs there, WP has it's own &lt;a href="https://developer.wordpress.com/docs/api/console/" rel="noopener noreferrer"&gt;API&lt;/a&gt; to return &lt;a href="https://ngcoderscope.wordpress.com/" rel="noopener noreferrer"&gt;ngcoderscope.wordpress.com&lt;/a&gt; blogposts data.&lt;/p&gt;
&lt;h3&gt;
  
  
  Performance/Lighthouse score?
&lt;/h3&gt;

&lt;p&gt;Yea like many devs out there, even I was striving for perfect lighthouse score.I've spent most of the last few weeks on tweaking those lighthouse recommendations.As of now the site has below scores.&lt;/p&gt;

&lt;p&gt;I used &lt;a href="https://lighthouse-metrics.com/" rel="noopener noreferrer"&gt;lighthouse-metrics&lt;/a&gt; and Google &lt;a href="https://developers.google.com/speed/pagespeed/insights/" rel="noopener noreferrer"&gt;PageSpeed Insights&lt;/a&gt;.Both give out different results depending on lighthouse different available versions (5.6/6.0/6.1.0).&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;lighthouse-metrics - Mobile&lt;/p&gt;
&lt;/blockquote&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%2Fi%2Fklmp5du8bww1j27v1zsr.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%2Fi%2Fklmp5du8bww1j27v1zsr.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;PageSpeed Insights&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Mobile&lt;br&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%2Fi%2Fw11x54wjh5elqif3z53c.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%2Fi%2Fw11x54wjh5elqif3z53c.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Desktop&lt;br&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%2Fi%2Fgc0pimybbi9ng7tt4zux.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%2Fi%2Fgc0pimybbi9ng7tt4zux.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  What's next?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Upgrade from Angular v7 to v10.&lt;/li&gt;
&lt;li&gt;Improve site load performance a.k.a Lighthouse-100.&lt;/li&gt;
&lt;li&gt;Integrate dev.to posts into blogposts section of the site.&lt;/li&gt;
&lt;li&gt;Write more about different components of the site and how I built them.&lt;/li&gt;
&lt;li&gt;Fix bugs if any and implement any feedback/suggestions from you guys.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is it for this post, it already turned out to be a 3-4 min read for you guys :D Let me know what you think about my site and comment your feedback/suggestions/criticism or anything.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="//vikramkadiam.netlify.app"&gt;vikramkadiam.netlify.app&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Are you interested in development journey &amp;amp; process involved in build this Angular app ? DM me &lt;a href="https://twitter.com/vikramKadiam" rel="noopener noreferrer"&gt;@vikramKadiam&lt;/a&gt; or Comment below what would you like to know about, I'll include in my next post.Cheers!!&lt;/p&gt;



&lt;p&gt;Github repo  &lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&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%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/KVikram" rel="noopener noreferrer"&gt;
        KVikram
      &lt;/a&gt; / &lt;a href="https://github.com/KVikram/mybrand" rel="noopener noreferrer"&gt;
        mybrand
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      #mybrand is a project that I've embarked on for creating a personal portfolio site showcasing my potential as a promising software architect.
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;



</description>
      <category>showdev</category>
      <category>angular</category>
      <category>portfolio</category>
      <category>website</category>
    </item>
  </channel>
</rss>
