Skip to main content

13 posts tagged with "Software Engineering"

Articles on software engineering, system design, and backend development.

View All Tags

Concurrency in Computer Science

· 5 min read
PSVNL Sai Kumar
Senior Software Development Engineer, Oracle

Introduction to Concurrency

Concurrency is a fundamental concept in computer science that allows multiple tasks or processes to make progress independently. It is the basis of responsive UIs, high-throughput servers, and efficient use of modern multi-core CPUs.

Concurrency is not the same as parallelism:

  • Concurrency — multiple tasks are in progress at the same time (they may take turns on one CPU)
  • Parallelism — multiple tasks execute at the exact same instant on multiple CPU cores

An event loop handling 10,000 connections on one thread is concurrent but not parallel. Four threads crunching different sections of a matrix are parallel.

Why Node.js is Called Single-Threaded and How It Serves Millions of Requests

· 4 min read
PSVNL Sai Kumar
Senior Software Development Engineer, Oracle

Introduction

Node.js is often described as a single-threaded environment, yet it is capable of handling millions of concurrent requests. This document explains the reasons behind this design and how Node.js achieves high concurrency through its architecture. Additionally, it provides a detailed overview of the event loop and a full example to illustrate these concepts.

Creating and Using WebSocket Connections in Go

· 4 min read
PSVNL Sai Kumar
Senior Software Development Engineer, Oracle

Overview

WebSockets provide a persistent, full-duplex connection between a client and server, enabling real-time communication without repeated HTTP handshakes. In Go, the github.com/gorilla/websocket package is the standard way to work with WebSockets. This guide walks through building a working WebSocket server and client, handling multiple connections, and keeping connections alive.

Designing a Ride-Sharing App

· 4 min read
PSVNL Sai Kumar
Senior Software Development Engineer, Oracle

Designing a Ride-Sharing App

Designing a ride-sharing app involves several components and considerations to ensure scalability, performance, and a smooth user experience. Here’s a comprehensive guide to designing a ride-sharing application, including trade-offs and reasoning behind key decisions.

How to Ace the System Design Round

· 7 min read
PSVNL Sai Kumar
Senior Software Development Engineer, Oracle

How to Ace the System Design Round

The system design interview is the most open-ended round in software engineering hiring. There is no single correct answer — you are evaluated on how you structure your thinking, communicate trade-offs, and demonstrate awareness of real-world constraints. This guide covers the framework, key concepts, and worked examples to help you prepare.

Understanding Non-Blocking Design in Software Development

· 4 min read
PSVNL Sai Kumar
Senior Software Development Engineer, Oracle

Non-blocking design is one of the most important architectural principles in modern software. If you have ever wondered why Node.js can handle thousands of simultaneous connections on a single thread, or why a Go service stays responsive under load, the answer is non-blocking I/O and event-driven execution.