<?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: Lynn Stanikmas</title>
    <description>The latest articles on DEV Community by Lynn Stanikmas (@lstanikmas).</description>
    <link>https://dev.to/lstanikmas</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%2F2625344%2Fcacb6618-c424-454a-9796-229d9ef22ec8.jpg</url>
      <title>DEV Community: Lynn Stanikmas</title>
      <link>https://dev.to/lstanikmas</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/lstanikmas"/>
    <language>en</language>
    <item>
      <title>Stanikmas, Lynn. (2025). CodeChallenge. GitHub.</title>
      <dc:creator>Lynn Stanikmas</dc:creator>
      <pubDate>Tue, 20 Jan 2026 03:15:52 +0000</pubDate>
      <link>https://dev.to/lstanikmas/stanikmas-lynn-2025-codechallenge-github-33je</link>
      <guid>https://dev.to/lstanikmas/stanikmas-lynn-2025-codechallenge-github-33je</guid>
      <description>&lt;p&gt;This Angular to-do list, completed as a coding challenge as part of a job interview, showcases accessibility features, the conditional control flow syntax, a modern, block-based template feature that conditionally renders content based on a boolean expression, replacing older &lt;code&gt;*ngIf&lt;/code&gt; directives for cleaner, more performant, and readable template logic with built-in &lt;code&gt;@else if&lt;/code&gt; and &lt;code&gt;@else&lt;/code&gt; support, and use of ElementRef, Renderer2, and ReactiveFormsModule.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/l-stanny/code-challenge" rel="noopener noreferrer"&gt;https://github.com/l-stanny/code-challenge&lt;/a&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%2Fuploads%2Farticles%2Fvcwlf3aqaz3nliwlrfqv.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%2Fvcwlf3aqaz3nliwlrfqv.png" alt=" " width="482" height="547"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>angular</category>
      <category>typescript</category>
      <category>a11y</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>Angular Version 21 eStore + Shopping Cart Prototype</title>
      <dc:creator>Lynn Stanikmas</dc:creator>
      <pubDate>Thu, 08 Jan 2026 22:21:13 +0000</pubDate>
      <link>https://dev.to/lstanikmas/angular-version-21-estore-shopping-cart-prototype-30ce</link>
      <guid>https://dev.to/lstanikmas/angular-version-21-estore-shopping-cart-prototype-30ce</guid>
      <description>&lt;p&gt;This Angular web application started as an educational assignment while attending Boston University CDIA as a student of web development and was developed originally using PHP and MySQL in 2014. It has been upgraded recently from Angular version 20 to Angular version 21, and has been upgraded regularly since its inception in 2021 &lt;a href="https://horsecode-e216d.web.app/signup-login" rel="noopener noreferrer"&gt;https://horsecode-e216d.web.app/signup-login&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Upgrading to Angular version 21 provides significant benefits centered on performance, developer experience, and modern architecture, particularly through the full implementation of the standalone APIs and signal-based reactivity.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key benefits of upgrading to Angular 21 include:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Performance Improvements&lt;/strong&gt;: New applications use zoneless change detection by default. Build optimizations, such as esbuild/Vite integration, lead to faster application rendering, smaller bundle sizes (up to 40% reduction), and quicker build times.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Simplified Reactivity with Signals&lt;/strong&gt;: Signals are fully integrated, providing a more straightforward method to manage state. This reduces the need for complex RxJS patterns for basic UI updates.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enhanced Server-Side Rendering (SSR) &amp;amp; SEO&lt;/strong&gt;: Improvements to SSR and hydration, such as SSR streaming and faster hydration, result in better Core Web Vitals, improved SEO, and a better user experience.&lt;/li&gt;
&lt;/ul&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%2F19fhtlzxdrbajougclsq.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%2F19fhtlzxdrbajougclsq.png" alt="Horsecode screen captue 1 of 3" width="800" height="715"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Image preloader service for the hero images:
&lt;/h2&gt;

&lt;p&gt;`&lt;br&gt;
import { Injectable, inject, PLATFORM_ID } from '@angular/core';&lt;br&gt;
import { isPlatformBrowser } from '@angular/common';&lt;br&gt;
import { Subject, Observable } from 'rxjs';&lt;/p&gt;

&lt;p&gt;@Injectable({&lt;br&gt;
  providedIn: 'root',&lt;br&gt;
})&lt;br&gt;
export class PreloadimgService {&lt;br&gt;
  private platformId: object = inject(PLATFORM_ID);&lt;/p&gt;

&lt;p&gt;preloadImages(imageUrls: string[]): Observable {&lt;br&gt;
    if (!isPlatformBrowser(this.platformId)) {&lt;br&gt;
      return new Observable((observer) =&amp;gt; observer.complete()); // Skip on server&lt;br&gt;
    }&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const loadedSubject = new Subject&amp;lt;string&amp;gt;();
let loadedCount = 0;
const totalImages = imageUrls.length;

for (const url of imageUrls) {
  const img = new Image();
  img.onload = () =&amp;gt; {
    loadedCount++;
    loadedSubject.next(url);
    if (loadedCount === totalImages) {
      loadedSubject.complete();
    }
  };
  img.onerror = () =&amp;gt; {
    loadedCount++;
    loadedSubject.error(`Failed to load image: ${url}`);
    if (loadedCount === totalImages) {
      loadedSubject.complete();
    }
  };
  img.src = url;
}

return loadedSubject.asObservable();
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;`&lt;/p&gt;

&lt;h2&gt;
  
  
  Image preloader implemented in the component, which precedes the component that uses the images:
&lt;/h2&gt;

&lt;p&gt;`&lt;br&gt;
...&lt;br&gt;
imageLocations: string[] = [&lt;br&gt;
    '/images/topic_one.jpg',&lt;br&gt;
    '/images/topic_two.jpg',&lt;br&gt;
    '/images/topic_three.jpg',&lt;br&gt;
  ];&lt;br&gt;
  allImagesLoaded = false;&lt;/p&gt;

&lt;p&gt;private preloader: PreloadimgService = inject(PreloadimgService);&lt;br&gt;
...&lt;/p&gt;

&lt;p&gt;ngOnInit(): void {&lt;br&gt;
    this.preloader.preloadImages(this.imageLocations).subscribe({&lt;br&gt;
      complete: () =&amp;gt; {&lt;br&gt;
        this.allImagesLoaded = true;&lt;br&gt;
      },&lt;br&gt;
      error: (err) =&amp;gt; console.error(err),&lt;br&gt;
    });&lt;br&gt;
  }&lt;br&gt;
...&lt;br&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%2Fuploads%2Farticles%2F6gspm2ggwuyfaadm3bwo.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%2F6gspm2ggwuyfaadm3bwo.png" alt="Horsecode screen captue 2 of 3" width="800" height="652"&gt;&lt;/a&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%2Fuploads%2Farticles%2F2npf74f7joeoptqbk8oc.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%2F2npf74f7joeoptqbk8oc.png" alt="Horsecode screen captue 3 of 3" width="800" height="615"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>angular</category>
      <category>softwareengineering</category>
      <category>softwaredevelopment</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Angular Version 21 Upgrade Example</title>
      <dc:creator>Lynn Stanikmas</dc:creator>
      <pubDate>Thu, 08 Jan 2026 21:59:12 +0000</pubDate>
      <link>https://dev.to/lstanikmas/angular-version-21-upgraded-example-3mkb</link>
      <guid>https://dev.to/lstanikmas/angular-version-21-upgraded-example-3mkb</guid>
      <description>&lt;p&gt;This Angular web application was the first one I developed - as a self-directed study - in 2020, has been upgraded recently from Angular version 20 to Angular version 21, and has been upgraded regularly since its Angular version 8 inception &lt;a href="https://listings-d5ac7.web.app/home" rel="noopener noreferrer"&gt;https://listings-d5ac7.web.app/home&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Upgrading to Angular version 21 provides significant benefits centered on performance, developer experience, and modern architecture, particularly through the full implementation of the standalone APIs and signal-based reactivity.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key benefits of upgrading to Angular 21 include:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Performance Improvements&lt;/strong&gt;: New applications use zoneless change detection by default. Build optimizations, such as esbuild/Vite integration, lead to faster application rendering, smaller bundle sizes (up to 40% reduction), and quicker build times.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Simplified Reactivity with Signals&lt;/strong&gt;: Signals are fully integrated, providing a more straightforward method to manage state. This reduces the need for complex RxJS patterns for basic UI updates.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enhanced Server-Side Rendering (SSR) &amp;amp; SEO&lt;/strong&gt;: Improvements to SSR and hydration, such as SSR streaming and faster hydration, result in better Core Web Vitals, improved SEO, and a better user experience.&lt;/li&gt;
&lt;/ol&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%2Fpu2tayel9jokq6lzjtfy.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%2Fpu2tayel9jokq6lzjtfy.png" alt="Piklib Angular web app screen capture 1 of 5" width="800" height="462"&gt;&lt;/a&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%2Fuploads%2Farticles%2Fcc9qsh857bucogvmdee5.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%2Fcc9qsh857bucogvmdee5.png" alt="Piklib Angular web app screen capture 2 of 5" width="800" height="1631"&gt;&lt;/a&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%2Fuploads%2Farticles%2F3cps60tpsvw13a9kcyom.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%2F3cps60tpsvw13a9kcyom.png" alt="Piklib Angular web app screen capture 3 of 5" width="800" height="1433"&gt;&lt;/a&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%2Fuploads%2Farticles%2F8k82h7z88szdfbcxtj35.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%2F8k82h7z88szdfbcxtj35.png" alt="Piklib Angular web app screen capture 4 of 5" width="800" height="459"&gt;&lt;/a&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%2Fuploads%2Farticles%2Fwpivr248tktev6mp4bk1.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%2Fwpivr248tktev6mp4bk1.png" alt="Piklib Angular web app screen capture 5 of 5" width="800" height="1402"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>angular</category>
      <category>webdev</category>
      <category>softwareengineering</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>Stanikmas, Lynn. (2024). Angular Studies | Advanced Components. GitHub.</title>
      <dc:creator>Lynn Stanikmas</dc:creator>
      <pubDate>Sat, 28 Dec 2024 12:07:42 +0000</pubDate>
      <link>https://dev.to/lstanikmas/stanikmas-lynn-2024-angular-studies-advanced-components-github-3cdo</link>
      <guid>https://dev.to/lstanikmas/stanikmas-lynn-2024-angular-studies-advanced-components-github-3cdo</guid>
      <description>&lt;p&gt;This self-directed study project showcases several advanced features in using Angular's built-in directives and in Angular + Typescript components development including styling components (with encapsulation), modifying host DOM elements, modifying templates with content projection, and accessing directives.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/l-stanny/angular-studies-advanced-components" rel="noopener noreferrer"&gt;https://github.com/l-stanny/angular-studies-advanced-components&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>typescript</category>
      <category>softwaredevelopment</category>
    </item>
  </channel>
</rss>
