Wanna see something cool? Check out Angular Spotify 🎧

Hello, I'm Trung Vo

Web expert with 10 years of experience, Google Developer Expert in Angular, fosters web dev communities and speaks globally, based in Singapore.

 β€” Upgrade to Angular 20 from Angular 13 - Part 1: Angular 14
 β€” Typescript this and implement debounce
 β€” Classnames implementation in TypeScript
 β€” Validating Python Indentation in TypeScript
 β€” React Aria Components - Slider with filled background
 β€” Learn Angular Signals by implementing your own
 β€” Cursor: Customize Your Sidebar Like VS Code
 β€” bundle install: Could not find MIME type database in the following locations
 β€” Netlify Redirects vs Gatsby Redirects: My Traffic Drop 90%
 β€” Understanding staleTime and gcTime (cacheTime) in React Query
 β€” Chrome DevTools Performance Panel: Analyze Your Website's Performance
 β€” Configuring Cloudflare Images and fixing ERROR 9421: Too many redirects
 β€” Sharing my go-to Gmail filter to clean up unnecessary Calendar notifications
 β€” TypeScript is Operator for Type Narrowing
 β€” nvm keeps "forgetting" node version in new VSCode terminal sessions
 β€” Improve Interaction to Next Paint (INP)
 β€” An error occurred while installing pg (1.5.6), and Bundler cannot continue (when running rails new)
 β€” Copy Code with Syntax Highlighting from VSCode to PowerPoint
 β€” Notion: Rounding to 2 Decimal Places
 β€” Adding "loading=lazy" to GIF files on my 7-year-old Gatsby blog (with ChatGPT assistance)
 β€” Angular v17’s View Transitions: Navigate in Elegance
 β€” Improving Website Performance with Browser-Level Image Lazy Loading (simply add loading="lazy")
 β€” Improve Cumulative Layout Shift (CLS)
 β€” Enhancing Cross-Document Navigation with the View Transitions API
 β€” Upgrading from Angular 15 to 17 in Nx Workspace: A Comprehensive Guide
 β€” Improve Largest Contentful Paint (LCP)
 β€” How to change VSCode terminal font?
 β€” @next/bundle-analyzer throw error Module not found: Can't resolve child_process
 β€” Angular Material 15 Migration
 β€” Improve First Contentful Paint (FCP)
 β€” Measuring Web Performance
 β€” Angular augmenting native elements
 β€” Core Web Vitals
 β€” Upgrading from Angular 12 to 15 in Nx Workspace: A Comprehensive Guide
 β€” nx:run-commands output not colored
 β€” Prettier - prevent HTML closing tag > being placed on a new line?
 β€” Perceived Performance: The psychology of waiting
 β€” zsh history not working after VSCode upgrade
 β€” The different between :focus and :focus-visible
 β€” Angular 13 upgrade - Error: Unknown keyword formatMinimum
 β€” Why Web Performance Matters: An Introduction
 β€” ngIf - Store the conditional result in a variable
 β€” Common use cases and solutions for accessibility in Angular
 β€” Error: Cannot install in Homebrew on ARM processor in Intel default prefix (/usr/local)
 β€” /usr/local/bin/code: line 6: python: command not found
 β€” Multiple ng-content
 β€” My React Reading List
 β€” Slick - prevent layout shift for your slider
 β€” CSS div jumped when adding a border
 β€” Align React Material UI Dialog to the top instead of center
 β€” TypeScript - Property 'onerror' does not exist on type 'EventTarget'
 β€” TypeScript data structure: Stack
 β€” TypeScript data structure: Queue
 β€” TypeScript data structure: Singly linked list
 β€” Difference between: function Person(){}, var person = Person(), and var person = new Person()?
 β€” Warning: Can’t perform a React state update on an unmounted component
 β€” Angular - Set page title automatically!
 β€” Angular Singapore
 β€” A simple Spotify client built with Angular 11, Nx workspace, ngrx, TailwindCSS and ng-zorro
 β€” Nx Workspace structure for an application with NestJS and Angular
 β€” SVG fill color doesn't work with hex colors
 β€” TypeScript unknown vs any types
 β€” Convert Promise to Observable
 β€” Migrate Angular to ESLint
 β€” Capture picture from your Webcam in Angular
 β€” Observable for Angular Output
 β€” 10 Modern CSS layout and sizing techniques
 β€” Build an Angular component to display snow ❄️ effect
 β€” Disable a reactive form control using custom directive
 β€” Angular Jira Clone Part 08 - Create placeholder loading (like Facebook's cards loading)
 β€” Get the last items of an array using array.slice()
 β€” Angular Jira Clone Part 07 - Build a rich text editor
 β€” How to iterate over objects in TypeScript
 β€” How to copy an object from the Chrome inspector console as code
 β€” Use async functions instead of callbacks for asynchronous code
 β€” The different between type and interface in TypeScript
 β€” Angular Jira Clone Part 06 - Build a markdown text editor
 β€” Apply types to entire function expressions when possible
 β€” Angular Jira Clone Part 05 - Build an interactive drag and drop board
 β€” How to kill the process currently using a given port on Windows
 β€” Use VSCode Like a PRO
 β€” Angular Jira Clone Part 04 - Build an editable textbox
 β€” Angular Jira Clone Part 03 - Setup Akita state management
 β€” Angular Jira Clone Part 02 - Build the application layout with flex and TailwindCSS
 β€” Top-level await
 β€” Space Invaders game built with Phaser 3 and TypeScript
 β€” Super Expressive - Easy Peasy Regex Generating
 β€” A childhood memory Tetris game built with Angular 10 and Akita
 β€” Angular Jira Clone Part 01 - Create a new repository and set up a new Angular application with CLI
 β€” Angular Jira Clone Part 00 - Prerequisites
 β€” I built a Jira clone application with Angular 9, Akita and ng-zorro
 β€” A painful Gatsby v1 to v2 migration
 β€” How to configure TailwindCSS with Angular and why you should use it
 β€” NPM vs Bower vs Browserify vs Gulp vs Grunt vs Webpack
 β€” Migrating my blog from Github to Gitlab, and deploy to Netlify
 β€” What is JavaScript Closure?
 β€” Angular - Using Visitor design pattern with Typescript
 β€” Front end editorial style guide
 β€” Jekyll dark theme (minimal-mistake)
 β€” Understand and prevent the most common memory leaks in Angular application - Subscription unsubscribe
 β€” The different between [value] and [ngValue] when passing to select option
 β€” Lesson learn from Git branches
 β€” Convert C# class to TypeScript interface
 β€” Angular CDK Drag/Drop List inside a table (not Material Table) - Handle rows distorting width
 β€” Angular async validator to validate an input field with a backend API
 β€” Angular - Correct singular/plural form of a noun using custom pipe or NgPlural
 β€” How to export a table or an array in Angular to Excel file (xlsx)
 β€” Limit the number of simultaneous ajax requests
 β€” Angular formArray/formGroup - Validate at least one checkbox was selected
 β€” Restrict null and undefined via Non-Nullable-Types in TypeScript
 β€” Error handling in JavaScript. Synchronous vs asynchronous code
 β€” TypeScript - Declare a function callback type
 β€” Angular [(ngModel)] and debounce
 β€” Casting a JSON object to a TypeScript class
 β€” Freeze screen in Chrome Debugger / DevTools for inspecting elements that disappear on hover/click (using setTimeout and Emulate a focused page)
 β€” Angular render recursive view using *ngFor and ng-template
 β€” Skiing in Singapore - a coding diversion
 β€” npm - Check and update package if needed
 β€” CSS Layout - Horizontal & Vertical Align
 β€” How we handle time zone and locale at Zyllem
 β€” The myth of the Genius Programmer
 β€” Angular Tips: Avoiding unnecessary RxJS in vendor.ts
 β€” Analyze webpack bundle with source-map-explorer. Optimize moment.js
 β€” Uncaught TypeError: Cannot read property 'name' of undefined
 β€” The combination of debounce and throttle
 β€” Find a sequence to produce a number by adding 5 or multiplying by 3
 β€” 10k StackOverFlow
 β€” Integrate Angular 2+ and Webpack in an ASP.NET MVC 5 application
 β€” Spinning button onSubmit form with jQuery and ASP.NET MVC
 β€” JavaScript naming convention
 β€” Shrinking Navigation Bar When Scrolling Down - Bootstrap 3 Navigation & jQuery
 β€” ES6 in my daily life
 β€” My new blog
 β€” JavaScript: Understanding the Weird Parts Notes