SuitsLearn LogoSuitsLearn

Engineering Notes

Software engineering insights, system design discussions, and practical development knowledge from building modern full-stack and backend systems.

I write about architecture decisions, APIs, backend design, and real-world tradeoffs in software development.

Readings

Software Engineering

The Cost of an Assumption: A Cross-Platform Engineering Lesson I Learned the Hard Way

A real-world engineering lesson about technology selection, cross-platform development, and why validating the riskiest assumptions early can prevent major project blockers.

By Ishan Wickremasuriya

Published 2026-08-16 8 min read

software engineeringtechnology selectionarchitecturecross-platform developmentproof of concepttechnical decision makingengineering lessonssoftware architecture

Node.js

Advanced Event Loop Patterns and Alternatives — Part 4

The final part of the event loop series: scaling Node.js beyond a single process with Cluster, Child Processes, message queues, background jobs, and distributed processing — and an honest look at when Node.js isn't the right tool at all.

By Ishan Wickremasuriya

Published 2026-06-20 16 min read

Node.jsJavaScript RuntimeEvent LoopBackend EngineeringSystem DesignDistributed SystemsSoftware ArchitectureProduction Systems

Node.js

Event Loop Performance Optimization Techniques — Part 3

A practical guide to measuring and fixing event loop performance in production Node.js applications: event loop lag, monitoring, profiling, Worker Threads, streams, backpressure, batching, and queue-based architecture.

By Ishan Wickremasuriya

Published 2026-06-19 15 min read

Node.jsJavaScript RuntimeEvent LoopBackend EngineeringPerformance OptimizationObservabilityWorker ThreadsProduction Systems

Node.js

Writing Production Code With the Event Loop in Mind — Part 2

A practical guide to the patterns that quietly block the Node.js event loop in production: CPU-heavy operations, synchronous APIs, JSON processing, regular expression traps, large loops, memory pressure, and the async patterns that fix them.

By Ishan Wickremasuriya

Published 2026-06-18 14 min read

Node.jsJavaScript RuntimeEvent LoopBackend EngineeringPerformance OptimizationAsynchronous ProgrammingProduction SystemsEngineering Lessons

Node.js

Understanding the Node.js Event Loop: The Engine Behind Async JavaScript — Part 1

A deep technical explanation of the Node.js event loop, how asynchronous execution works internally, how libuv manages operations, and how understanding runtime behavior helps engineers build high-performance and scalable backend systems.

By Ishan Wickremasuriya

Published 2026-06-16 16 min read

Node.jsJavaScript RuntimeEvent LoopBackend EngineeringPerformance OptimizationAsynchronous ProgrammingSystem DesignSoftware ArchitectureEngineering LessonsProduction Systems

Node.js

How Console Logging Nearly Broke My Node.js Production System — Lessons Learned

A production incident that initially appeared to be a memory leak turned out to be a logging and I/O backpressure problem. This article explores how excessive console logging affected memory usage, event loop responsiveness, and overall system stability in a Node.js application.

By Ishan Wickremasuriya

Published 2026-06-13 9 min read

Node.jsPerformanceProduction EngineeringLoggingEvent LoopBackpressureObservabilityWinston

Engineering

Why I Started Writing After 13 Years in Software Development

After more than 13 years in software development, I started this blog to document engineering lessons, architectural decisions, technical tradeoffs, and practical insights gained from building real-world systems.

By Ishan Wickremasuriya

Published 2026-06-10 5 min read

Software EngineeringCareerEngineering JourneySystem DesignArchitectureLessons Learned