Day 1 of JavaScript Mastery

Welcome to Day 1 of my JavaScript Mastery Journey! ๐Ÿš€โœจ

Author: Ravindranath Porandla โœ๏ธ


The Story of JavaScript (Simple & Interesting) ๐Ÿ“–๐Ÿ’ก

Once upon a timeโ€ฆ ๐Ÿ•ฐ๏ธ

In 1995, the internet was growing fast. People used to browse websites that were static โ€” like reading a printed book. ๐Ÿ“ฐ boring! ๐Ÿ˜ด

But then came a superhero named Brendan Eich ๐Ÿ‘จโ€๐Ÿ’ป, who was working at a company called Netscape (one of the earliest web browsers). ๐ŸŒ


The Mission: Make the Web Interactive! ๐ŸŽฏ๐Ÿ’ป

Netscape wanted to make websites interactive โ€“ like when you click a button and something happens, or type into a form and get suggestions. ๐Ÿคฉ

So, they told Brendan:

โ€œHey! Can you make a small scripting language for our browser in 10 days?โ€ ๐Ÿคฏ (Yes, just 10 days!)

Brendan said:

โ€œSure! Iโ€™ll do it in 10 days.โ€ ๐Ÿ’ช (What a legend!)


The Birth of Mocha โ†’ LiveScript โ†’ JavaScript โ˜•๐Ÿ“œโœจ

He first called the language Mocha (like the coffee โ˜•, as there was a trend of giving languages the names of coffee like Java). Then it became LiveScript โ˜•โšก Finally, it was renamed to JavaScript โ˜•๐Ÿ“œ (And the rest is history!)


Why JavaScript? ๐Ÿค”

Because Java was very popular at that time, they thought (as a business tactic ๐Ÿ“ˆ):

"Letโ€™s name it JavaScript โ€” itโ€™ll sound like a mini Java! or an extended version of Java." clever, right? ๐Ÿ˜‰

โš ๏ธ But Java and JavaScript are NOT the same (just like a car and carpet aren't the same ๐Ÿš—๐Ÿงถ). Big difference!


So, What is JavaScript? ๐Ÿงฉ

JavaScript is a scripting language used to make websites interactive. โœจ

Imagine a human body: ๐Ÿง

  • HTML is the skeleton ๐Ÿฆด (the structure)

  • CSS is the flesh and dress you wear ๐Ÿ‘— (the style)

  • JavaScript is the movement of the body, the actions ๐Ÿคธ (the behavior!)


JavaScript is a Scripting Language โ€“ What Does That Mean? ๐Ÿง

Letโ€™s break it down: โฌ‡๏ธ

Types of Languages ๐Ÿ”ค

TypeMeaningExample
Markup LanguageUsed to structure contentHTML
Style Sheet LanguageUsed to style contentCSS
Scripting LanguageUsed to add behaviorJavaScript
Programming LanguageUsed to build full software appsJava, C++, Python

JavaScript Today โ€“ A Global Hero! ๐ŸŒ๐Ÿฆธ

โœ… It became the universal language of the web ๐ŸŒ โœ… Runs in all browsers (Chrome, Firefox, Safari, etc.) ๐ŸฆŠ๐Ÿฆ โœ… Used in frontend, backend, mobile apps, games, AI, and more! ๐Ÿ“ฑ๐ŸŽฎ๐Ÿง  (Truly versatile!)


JavaScript Versions โ€“ ES5 vs ES6 ๐Ÿ”„

What is ES? ๐Ÿค”

ES stands for ECMAScript โ€“ the official name of JavaScriptโ€™s versioning system. ๐Ÿ“œ

Think of it like iPhone models: ๐Ÿ“ฑ

  • ES5 = iPhone 5 ๐Ÿ“ฑ (the classic)

  • ES6 = iPhone 6 ๐Ÿš€ (newer, cooler, more features!)

ES5 (2009) ๐Ÿ•ฐ๏ธ

  • The old school ๐Ÿซ

  • Works on all browsers ๐ŸŒ

  • Features: var, Object.keys(), JSON, strict mode (you will be learning these as you progress in learning JS) ๐Ÿค“

ES6 (2015) โ€“ The Game Changer! ๐ŸŽฎโœจ

  • Introduced modern, cleaner ways to write code ๐Ÿงน

  • Features: (you will be learning these as you progress in learning JS)

    • let and const instead of var (better variable handling!)

    • Arrow functions ()=> (shorter syntax!)

    • Template literals (backticks Hello ${name}) (easy strings!)

    • class syntax (object-oriented goodness!)

    • import/export (module system!)

    • Promises (for async code) ๐Ÿค

    • Destructuring (unpacking values easily!)


Fun Fact: ๐Ÿง ๐Ÿ’ก

Brendan Eich made JavaScript in just 10 days. ๐Ÿคฏ Thatโ€™s why there were bugs, weird rules, and many ways to do the same thing. ๐Ÿ› But over time, JavaScript evolved beautifully into one of the most powerful languages in the world! ๐ŸŒ๐Ÿ’–


Summary for Interviews about the History of JS ๐ŸŽฏ๐Ÿ“

PointQuick Notes
Who created JSBrendan Eich in 1995
Original nameMocha โ†’ LiveScript โ†’ JavaScript
Why the nameTo ride the popularity of Java
Type of languageScripting (runs in browsers)
Used forMaking web pages interactive
Java vs JavaScriptTotally different
ES5Older version of JS
ES6Modern JS with new features

Tips to Remember ๐ŸŒŸ๐Ÿ”‘

๐Ÿ’ก Think of JS as the language of the web โ€” runs in all browsers ๐ŸŒ ๐Ÿ” Learn ES6 โ€“ most interview questions are based on modern JS ๐Ÿš€ ๐Ÿšซ Donโ€™t confuse Java and JavaScript ๐Ÿ™…โ€โ™‚๏ธ ๐ŸŽฌ Try using JS in the browser console (right-click โ†’ Inspect โ†’ Console) ๐Ÿง‘โ€๐Ÿ’ป


What is JavaScript? ๐Ÿ“˜

JavaScript is a programming language that runs in browsers and makes websites interactive. โœจ

๐Ÿ“ Example:

When you click "Add to Cart" and it instantly updates โ€“ that's JavaScript in action! ๐Ÿ›’๐Ÿ’จ

๐Ÿ’ก Tip:

HTML builds the structure ๐Ÿ—๏ธ, CSS styles it ๐ŸŽจ, and JavaScript brings it to life! ๐Ÿ’–


Engines that Run JS ๐Ÿ› ๏ธ๐ŸŽ๏ธ

EngineUsed In
V8Chrome, Node.js
SpiderMonkeyFirefox

JavaScript in Action ๐ŸŽฌ๐Ÿš€

Try this in the browser console: ๐Ÿ‘‡

console.log("Hello World"); // Prints a message to the console
alert("Welcome!");          // Displays a pop-up alert
clear();                    // Clears the console

Tools for Frontend Dev ๐Ÿงฐ๐Ÿ‘ฉโ€๐Ÿ’ป

Why VS Code? ๐Ÿ’™

  • Lightweight, open-source, and highly customizable ๐ŸŽจ

  • Preferred by most frontend developers ๐Ÿ‘

Why not IntelliJ / PyCharm (Community)? โŒ

  • Limited frontend features ๐Ÿ“‰

  • Slower setup for React/JavaScript ๐Ÿข


First JS Program ๐Ÿ’ปโœจ

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>My First JS</title>
</head>
<body>
  <h1>Hello World!</h1>
</body>
<script>
  console.log("Hello World from JS");
</script>
</html>

Structure of a JavaScript File ๐Ÿ“‚๐Ÿ“

Explanation:

  • JavaScript files contain statements, not HTML tags. ๐Ÿ“„

  • JS is written inside <script> tags. โœ๏ธ

  • Scripts can be placed in <head> or after <body>. โฌ†๏ธโฌ‡๏ธ

Difference:

  • If placed in <head>, the script runs before the DOM (Document Object Model, for now think of this as HTML) is loaded, which can cause errors if it tries to access elements that arenโ€™t loaded yet. ๐Ÿšซ When using JavaScript, you typically interact with HTML elements to make them interactive. Therefore, running JS before HTML is fully loaded can cause errors. ๐Ÿ›

  • If placed after <body>, it ensures the HTML is fully loaded before JS runs. โœ…

Best Practice: ๐Ÿ‘

Always place your script just before the closing </html> tag or use defer in the <script> tag within <head>, which ensures HTML loads first before JS runs. ๐Ÿš€

<script src="index.js" defer></script>

๐Ÿ’ก Tip:

Let HTML load first โ†’ then run JavaScript! ๐Ÿƒโ€โ™‚๏ธ๐Ÿ’จ


External vs Inline JS ๐Ÿ”—๐Ÿ“„

Explanation:

  • Inline JS is written directly in HTML. โžก๏ธ

  • External JS is in a .js file and linked via <script src="">. โฌ…๏ธ

๐Ÿ’ก Tip:

Keep logic in external files to separate concerns and keep code clean. ๐Ÿงผโœจ


JS Comments ๐Ÿ’ฌ

JavaScript

// Single-line comment
/* Multi-line comment */
/**
 * Doc-style comment
 * Use jsdoc.app for documentation
 * Refer to the web to learn more about Doc-style comments
 */

Note: When you hover over an inbuilt method or a function, you will see what the function does, what parameters it takes, and what it returns. This is achieved using Doc-Style comments. โ„น๏ธ

Doc-style (JSDoc) comment โ€” commonly used for documentation: ๐Ÿ“š

/**
 * Adds two numbers together.
 * @param {number} a - First number
 * @param {number} b - Second number
 * @returns {number} Sum of a and b
 */
function add(a, b) {
  return a + b;
}

JavaScript with Node.js โšก๏ธ๐ŸŒณ

History of Node.js โ€“ The Journey of JavaScript on the Server ๐Ÿ•ฐ๏ธ๐Ÿ—บ๏ธ

๐ŸŒฑ Before Node.js

JavaScript was born in 1995 and was only used in browsers for frontend tasks like button clicks, animations, etc. ๐Ÿ–ฑ๏ธ You couldnโ€™t run JavaScript outside the browser, which meant backend work (like databases, file access) needed languages like PHP, Java, Python, etc. ๐Ÿ’พ


2009 โ€“ Birth of Node.js! ๐ŸŽ‰

๐Ÿ‘จโ€๐Ÿ’ป The Creator: Ryan Dahl

A software engineer named Ryan Dahl noticed that traditional server software (like Apache) couldnโ€™t handle multiple connections efficiently. ๐Ÿข He wanted something faster and non-blocking (i.e., able to handle many requests without waiting). ๐Ÿš€


๐Ÿ’ก The Idea

โ€œWhy not run JavaScript outside the browser?โ€ ๐Ÿค” He picked Googleโ€™s V8 engine (used in Chrome) to run JavaScript on the server. ๐ŸŽ๏ธ And boom! Node.js was born in 2009. ๐Ÿ’ฅ


What does it mean:

โ€œTraditional server software (like Apache) couldnโ€™t handle multiple connections efficientlyโ€? ๐Ÿง

๐Ÿง‘โ€๐Ÿณ Analogy: The Single Chef Kitchen ๐Ÿฝ๏ธ

Imagine a restaurant (server) with just one chef (thread): ๐Ÿ‘จโ€๐Ÿณ

  • One customer (request) comes โ†’ Chef starts cooking. ๐Ÿณ

  • Another customer comes โ†’ Chef says โ€œWait! Iโ€™ll finish the first order first.โ€ โณ

  • So, others wait in a queue. ๐Ÿšถโ€โ™€๏ธ๐Ÿšถโ€โ™‚๏ธ๐Ÿšถโ€โ™€๏ธ

This is how traditional servers like Apache often worked:

  • They either created a new thread for each request (which used more memory) ๐Ÿง , or

  • They processed one request at a time (which was slow for many users). ๐ŸŒ


๐Ÿง  So what's the problem?

If 1000 users connect at once: ๐Ÿ‘ฅ๐Ÿ‘ฅ๐Ÿ‘ฅ

  • Apache may create 1000 threads (heavy for memory) ๐Ÿคฏ, or

  • Make others wait (slow performance). ๐Ÿ˜ฉ

Thatโ€™s why we say:

โ€œApache couldnโ€™t handle multiple connections efficiently.โ€ ๐Ÿ“‰


Now, Node.js Style: The Multi-Tasking Chef! ๐Ÿง‘โ€๐Ÿณโœจ

Node.js uses a smart trick called non-blocking I/O: ๐Ÿช„

  • The chef says: โ€œWhile that dish is baking, Iโ€™ll start chopping veggies for the next one.โ€ ๐Ÿฅ•๐Ÿง…

  • No one waits! All tasks move forward together โ€” faster & lighter. ๐Ÿš€๐Ÿ’จ

โœ… Conclusion:

  • Apache = good, but heavy & not ideal for real-time or high-traffic apps. ๐Ÿšฆ

  • Node.js = light, fast, handles many users at once without blocking others. ๐ŸŒŸ


What Made Node.js Special? ๐Ÿš€๐ŸŒŸ

  • Non-blocking I/O: It doesnโ€™t wait for one task to finish before starting another. Like a chef cooking many dishes at once. ๐Ÿ‘จโ€๐Ÿณ concurrently!

  • Event-driven: Works on events and callbacks, like "when done, call this function." ๐Ÿ””

  • Single-threaded but super efficient โ€“ ideal for real-time apps like chat, live updates, APIs. ๐Ÿ’ฌ๐Ÿ“ˆ


Node.js Takes Over the World! ๐ŸŒ๐Ÿ†

Initially, it was used by startups. ๐Ÿข Then big companies joined: Netflix, LinkedIn, PayPal, Uber. ๐Ÿš€ Developers loved writing frontend + backend in the same language โ€“ JavaScript. ๐Ÿ’–


npm (Node Package Manager) ๐Ÿ“ฆโœจ

Along with Node.js came npm โ€“ a treasure box of ready-made code (modules/packages). ๐ŸŽ Think of it like an โ€œapp store for developers.โ€ ๐Ÿ“ฑ๐Ÿ›๏ธ


Key Milestones ๐Ÿงฑ๐Ÿ—“๏ธ

YearMilestone
2009Node.js launched by Ryan Dahl
2010npm introduced
2011Microsoft and Joyent joined the project
2014io.js forked from Node.js for faster updates
2015io.js and Node.js merged again (Node.js 4.0)
NowWidely used across backend, APIs, full-stack apps

Fun Fact! ๐Ÿง ๐Ÿ’ก

Ryan Dahl later admitted some regrets and created a new project called Deno (an anagram of Node). ๐Ÿ”„


Simple Analogy ๐Ÿงฉ๐Ÿ‘ถ

Imagine JavaScript as a kid who was only allowed to play indoors (browser). ๐Ÿ  Ryan Dahl came along and said, โ€œWhy not let him explore the outside world too?โ€ ๐ŸŒณ That outside world became Node.js! ๐Ÿš€


What is Node.js? ๐Ÿ“˜

Node.js is a runtime environment that allows you to run JavaScript outside the browser, using Googleโ€™s V8 engine. ๐Ÿ’ปโš™๏ธ

๐Ÿ“ Example:

With Node.js, JavaScript can be used for backend scripting like reading files, accessing databases, and more. ๐Ÿ“๐Ÿ—„๏ธ

๐Ÿ”ง Commands:

node -v       # check version ๐Ÿ“
node index.js # run your JavaScript file โ–ถ๏ธ

๐Ÿ’ก Tip:

Think of Node as a server-side version of JavaScript. Great for full-stack! ๐ŸŒ๐Ÿง‘โ€๐Ÿ’ป


DOM Manipulation with JavaScript ๐Ÿงฑโœจ

What is DOM? (we will learn more as we progress) ๐Ÿ“˜

DOM (Document Object Model) is a representation of HTML elements as objects. JavaScript can interact with it to change content or style. ๐ŸŽจโœ๏ธ

๐Ÿ“ Example:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1 id="heading">Hello!!!!!</h1>
    <button id="click">click</button>
</body>
<script src="index.js"></script>
</html>
document.getElementById('click').onclick = function(){
    document.getElementById('heading').innerText = 'Hello World!!!!!!!!!!';
};

What is actually happening here? ๐Ÿค” When you click the button, the text in h1 changes from โ€˜Hello!!!!!โ€™ to โ€˜Hello World!!!!!!!!โ€™ ๐Ÿ’ฅ

๐Ÿ’ก Tip:

You can also manipulate style.backgroundColor ๐ŸŒˆ, hide elements ๐Ÿ‘ป, or dynamically create new ones using DOM APIs. โœจ


Variables in JavaScript ๐Ÿงฎ

var - old version of Java ES5 ๐Ÿ‘ด let and const - introduced in newer version of Java ES6 ๐Ÿง‘โ€๐ŸŽค We can use all 3 currently. ๐Ÿ”„

Definitions: ๐Ÿ“˜

Featurevarletconst
ScopeFunction-scopedBlock-scopedBlock-scoped
Re-declarationAllowedNot allowedNot allowed
Re-assignmentAllowedAllowedNot allowed
HoistingYes (initializes to undefined)Yes (but not initialized)Yes (but not initialized)
Attached to window object?YesNoNo

๐Ÿ”– Note: Youโ€™ll get to learn more about Hoisting and the Window Object as you progress. ๐Ÿค“

๐Ÿ’ก Tips:

  • Use UPPERCASE for constants. โฌ†๏ธ

  • Prefer let and const over var. โœ…

  • Follow naming conventions: โœ๏ธ

    • camelCase or snake_case for variables

    • UpperCamelCase for functions

โš ๏ธ Rules for Naming: ๐Ÿšซ

  • Start with a letter, $, or _. ๐Ÿ…ฐ๏ธ๐Ÿ’ฒ

  • No spaces or special characters. ๐Ÿ™…โ€โ™€๏ธ

  • Avoid reserved keywords (like return, if). ๐Ÿ›‘


JavaScript Data Types ๐Ÿ“ฆ๐Ÿ“Š

Primitive Types: ๐Ÿ”น

  • Number โ€“ 1, 3.14 ๐Ÿ”ข

  • String โ€“ 'hello', "name" ๐Ÿ’ฌ

  • Boolean โ€“ true, false โœ…โŒ

  • Undefined โ€“ variable declared but not assigned โ“

  • Null โ€“ intentional absence of value ๐Ÿšซ

Reference Types: ๐Ÿ”ธ

  • Object โ€“ key-value pairs ๐Ÿ”‘

  • Array โ€“ list of items (internally, arrays are objects) ๐Ÿ“‹

  • Function - A callable object that can be stored in variables, passed as arguments, and returned from other functions. (You will learn all types of functions as you progress). โš™๏ธ

Reference values are data types in JavaScript where only the reference (address in memory) is assigned to another variable, not the actual copy of the data. This means changes made through one reference affect the original value. ๐Ÿ”—

๐Ÿ” Hint: If the value has brackets (like [], {}, or functions ()), itโ€™s usually a reference type. ๐Ÿ’ก

Example: ๐Ÿงช

let arr1 = [1, 2, 3];
let arr2 = arr1;

arr2.push(4); // Adding 4 to arr2

console.log(arr1); // Output: [1, 2, 3, 4] (arr1 also changed!)
console.log(arr2); // Output: [1, 2, 3, 4]

Here, arr1 and arr2 point to the same array in memory, so changes in arr2 reflect in arr1. ๐Ÿค

Primitive Types: ๐Ÿ†š

Primitives (like numbers, strings, booleans) are copied by value: ๐Ÿ”ข๐Ÿ’ฌโœ…

let x = 10;
let y = x;
y = 20; // Changing y

console.log(x); // Output: 10 (x remains unchanged!)
console.log(y); // Output: 20

Here, x and y are independent, since primitives store actual values, not references. ๐Ÿงโ€โ™‚๏ธ๐Ÿงโ€โ™€๏ธ

Key Difference from Primitive Types โœจ

Primitive TypesReference Types
Stored by valueStored by reference
ImmutableMutable
Copied on assignmentReference is copied

๐Ÿ’ก Tip:

Use typeof to check type: ๐Ÿ•ต๏ธโ€โ™€๏ธ

console.log(typeof "hello");     // string
console.log(typeof [1, 2, 3]);   // object

Summary โœ…

Today, we covered: โœ…

  1. The Story of JavaScript: ๐Ÿ“–๐Ÿ’ก

    • Its creation in 1995 by Brendan Eich at Netscape in just 10 days! ๐Ÿคฏ

    • The evolution of its name (Mocha โ†’ LiveScript โ†’ JavaScript) and the business tactic behind it. โ˜•๐Ÿ“œ

    • A crucial clarification that Java and JavaScript are NOT the same. โš ๏ธ

  2. What JavaScript Is: ๐Ÿงฉ

    • Defined as a scripting language used to make websites interactive. โœจ

    • An analogy comparing HTML (skeleton), CSS (flesh/dress), and JavaScript (movement/actions) of a human body. ๐Ÿง

    • A breakdown of different language types: Markup, Style Sheet, Scripting, and Programming. ๐Ÿ”ค

  3. JavaScript Today โ€“ A Global Hero: ๐ŸŒ๐Ÿฆธ

    • Its status as the universal language of the web, running in all browsers. ๐ŸŒ

    • Its widespread use in frontend, backend, mobile apps, games, and AI. ๐Ÿ“ฑ๐ŸŽฎ๐Ÿง 

  4. JavaScript Versions โ€“ ES5 vs ES6: ๐Ÿ”„

    • Explanation of ECMAScript (ES) as JavaScript's versioning system. ๐Ÿ“œ

    • Comparison of ES5 (2009) as the "old school" version and ES6 (2015) as the "game-changer" that introduced modern features like let/const, arrow functions, template literals, class syntax, Promises, and more. ๐Ÿš€

  5. Setting up and Running JavaScript: ๐Ÿ› ๏ธ

    • Recommendation of VS Code as the preferred lightweight, customizable editor. ๐Ÿ’™

    • Demonstration of a basic HTML file with an inline <script> tag. ๐Ÿ’ป

    • Explanation of JavaScript file structure and the difference between placing scripts in <head> vs. after <body> (with best practices like defer). ๐Ÿ“‚

    • The distinction between External vs. Inline JS and the tip to keep logic in external files. ๐Ÿ”—

    • How to use JS Comments for documentation (//, /* */, /** */). ๐Ÿ’ฌ

  6. JavaScript with Node.js: โšก๏ธ๐ŸŒณ

    • The history of Node.js, created by Ryan Dahl in 2009, enabling JavaScript to run outside the browser using Google's V8 engine. ๐Ÿ’ก

    • A detailed analogy of the "Multi-Tasking Chef" to explain non-blocking I/O and event-driven architecture, highlighting Node.js's efficiency compared to traditional server software. ๐Ÿง‘โ€๐Ÿณโœจ

    • The importance of npm (Node Package Manager) as a "treasure box" of ready-made code. ๐Ÿ“ฆ

    • Key milestones in Node.js's development and its global adoption. ๐ŸŒ๐Ÿ†

    • A simple analogy comparing JavaScript in the browser to a kid playing indoors, and Node.js to exploring the outside world. ๐Ÿงฉ๐Ÿ‘ถ

  7. DOM Manipulation with JavaScript: ๐Ÿงฑโœจ

    • An introduction to the Document Object Model (DOM) as a representation of HTML elements that JavaScript can interact with to change content or style. ๐ŸŽจโœ๏ธ

    • A practical example showing how to change text on a button click. ๐Ÿ“

  8. Variables in JavaScript: ๐Ÿงฎ

    • A comparison of var (ES5) vs. let and const (ES6), outlining differences in scope, re-declaration, re-assignment, and hoisting. ๐Ÿ“˜

    • Tips for best practices in naming and choosing variable types (let/const preferred). โœ๏ธ

  9. JavaScript Data Types: ๐Ÿ“ฆ๐Ÿ“Š

    • Categorization into Primitive Types (Number, String, Boolean, Undefined, Null) which are copied by value. ๐Ÿ”น

    • Categorization into Reference Types (Object, Array, Function) which are copied by reference, illustrated with an example to show how changes in one reference affect the original. ๐Ÿ”ธ

    • The key difference between how primitive and reference types are stored and copied. โœจ

    • The use of typeof to check data types. ๐Ÿ•ต๏ธโ€โ™€๏ธ


Follow more at: Ravindranath Porandla Blog ๐Ÿง ๐Ÿ’–

โ€” Ravindranath Porandla ๐Ÿง‘โ€๐Ÿ’ป

11
Subscribe to my newsletter

Read articles from Ravindranath Porandla directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Ravindranath Porandla
Ravindranath Porandla