blog main page

JavaScript to Angular Easy Migration Guide: Part 3 - Building the Final Angular Version with Signals, Forms, Routing, and Quality Rules

In the previous parts, we first established the mindset shift behind Angular and TypeScript, and then redesigned the original plain JavaScript app into a cleaner Angular architecture with clear responsibilities and state boundaries. In this final part, we bring that design to life by building the full Angular version of the Task Board using modern Angular practices such as standalone components, signals, computed state, reactive forms, and routing. We will also go beyond implementation details and cover important quality concerns such as template discipline, project structure, edge-state handling, performance habits, security-aware UI practices, and testing strategy, so that the result feels like a complete and professional migration guide rather than just a code conversion exercise.

Read more →

JavaScript to Angular Easy Migration Guide: Part 2 - Redesigning the Plain JavaScript App as an Angular Application

In the previous part, we focused on the conceptual shift from DOM-centric scripting to component- and state-driven application design. Now, in this second part, we take that mindset and apply it directly to our teaching example by redesigning the plain JavaScript Task Board as a real Angular application before fully implementing it. We will discuss route boundaries, component taxonomy, communication patterns, state ownership, service responsibilities, TypeScript models, form boundaries, and the anti-patterns from the original app that we intentionally refuse to carry into the Angular version. This part is where the migration becomes a serious architectural redesign rather than a mechanical rewrite.

Read more →

JavaScript to Angular Easy Migration Guide: Part 1 - From Plain JavaScript to Angular, the Real Mindset Shift

In this first part, we begin with the most important foundation: the mindset shift required when moving from a plain HTML, CSS, and JavaScript application to Angular and TypeScript. Before talking about components, state, forms, or routing, we first need to understand why a direct syntax rewrite is not enough and why Angular asks us to think in terms of explicit state, typed models, component boundaries, and clear communication contracts. This part introduces the teaching example, explains the architectural weaknesses that often appear in plain JavaScript apps, and sets up the core ideas that the later parts will build on in much more practical detail.

Read more →

Why Teams Using AI Coding Agents May Need One No-Agent Day a Week

I wrote a short piece on a topic that, in my view, still does not receive enough attention in software teams that rely heavily on AI: AI coding agents can improve output in obvious and immediate ways, while also weakening engineering quality indirectly when their use is not managed with enough discipline. The issue is not only code generation itself. It is also what repeated dependence on these tools can do to problem framing, debugging habits, code review quality, design ownership, and even a team’s ability to keep moving when the agent is unavailable. I also suggest one practical response: keeping at least one no-agent engineering day each week, and using that day to establish the engineering standard for the rest of the week.

Read more →