<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Meghana N</title>
    <description>The latest articles on DEV Community by Meghana N (@meghanananju).</description>
    <link>https://dev.to/meghanananju</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1381542%2Fb5c9b03e-d822-4d61-9a53-9d329bbd898d.jpg</url>
      <title>DEV Community: Meghana N</title>
      <link>https://dev.to/meghanananju</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/meghanananju"/>
    <language>en</language>
    <item>
      <title>JavaScript Array.sort() Explained: Why [11, 2] Sorts Before [2, 6]</title>
      <dc:creator>Meghana N</dc:creator>
      <pubDate>Thu, 05 Jun 2025 09:18:54 +0000</pubDate>
      <link>https://dev.to/meghanananju/javascript-arraysort-explained-why-11-2-sorts-before-2-6-50l1</link>
      <guid>https://dev.to/meghanananju/javascript-arraysort-explained-why-11-2-sorts-before-2-6-50l1</guid>
      <description>&lt;p&gt;I was just practicing some simple JavaScript, casually sorting an array like [2, 6, 11,...], when suddenly - [11, 2, 6,..]?! Wait, that can't be right... I stared at my screen, double-checked my code, and realized JavaScript's sort() wasn’t working how I expected. After some frantic head-scratching and a frustrated Google search, I finally understood what was happening under the hood.&lt;/p&gt;

&lt;p&gt;Let me save you (who’s just like me and didn’t know 🙃) from that confusion. Here’s why JavaScript sorts numbers this way, and how to actually sort them correctly.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3ddx6g76ta3mgqxb0ctc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3ddx6g76ta3mgqxb0ctc.png" alt="Image description" width="772" height="152"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5r9yebfjubspa1t8oz25.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5r9yebfjubspa1t8oz25.png" alt="Image description" width="688" height="62"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;JavaScript's &lt;strong&gt;Array.prototype.sort()&lt;/strong&gt; method converts elements to strings and compares them by their UTF-16 code unit values by default.&lt;/p&gt;

&lt;p&gt;Here's why you get [11, 2, 2, 2, 6, 8]:&lt;/p&gt;

&lt;p&gt;When sorted as strings, "11" comes before "2" because '1' has a lower Unicode value than '2'&lt;br&gt;
Similarly, "6" and "8" come after "2" because '6' and '8' have higher Unicode values than '2'.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffwazg0hlurqj7nvfeoz9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffwazg0hlurqj7nvfeoz9.png" alt="Image description" width="800" height="198"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This behavior occurs because &lt;strong&gt;Array.prototype.sort()&lt;/strong&gt; modifies the original array in place and returns a reference to the same (now sorted) array.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;arr.sort((a, b) =&amp;gt; a - b) sorts the original array (arr) in place.&lt;/li&gt;
&lt;li&gt;It also returns a reference to the same array (arr), not a new array.&lt;/li&gt;
&lt;li&gt;So, result and arr are pointing to the same array in memory.&lt;/li&gt;
&lt;li&gt;When you log them, both show the sorted values.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Q: How to avoid modifying the original array?&lt;br&gt;
A: If you want to keep the original array unchanged and get a new sorted array, you can:&lt;br&gt;
1.Use the spread operator ([...arr]) to create a copy first:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl6rtb1mdquysvrnpal1i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl6rtb1mdquysvrnpal1i.png" alt="Image description" width="688" height="158"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2.Use Array.from(arr) or arr.slice() to clone the array:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F66xuzg7f8xulec4mc43b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F66xuzg7f8xulec4mc43b.png" alt="Image description" width="747" height="261"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Q: Why does sort() work this way?&lt;br&gt;
A: JavaScript's sort() is designed to be efficient (modifying the original array avoids unnecessary memory usage).&lt;br&gt;
But it can be unintuitive if you expect it to return a new array (like map(), filter(), etc.).&lt;/p&gt;

&lt;p&gt;Key Takeaway:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;arr.sort() modifies the original array and returns a reference to it.&lt;/li&gt;
&lt;li&gt;If you don't want to mutate the original array, make a copy first.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>programming</category>
      <category>beginners</category>
    </item>
    <item>
      <title>The Dark Side of JavaScript: When the Magic Bites Back</title>
      <dc:creator>Meghana N</dc:creator>
      <pubDate>Fri, 11 Apr 2025 09:22:39 +0000</pubDate>
      <link>https://dev.to/meghanananju/the-dark-side-of-javascript-when-the-magic-bites-back-3b35</link>
      <guid>https://dev.to/meghanananju/the-dark-side-of-javascript-when-the-magic-bites-back-3b35</guid>
      <description>&lt;p&gt;JavaScript: the language we love to hate (and hate to love).&lt;br&gt;
It's the duct tape of the web — flexible, fast, forgiving…&lt;br&gt;
Too forgiving.&lt;br&gt;
Let’s take a walk down the alley where JavaScript goes from hero to horror:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Type Coercion Madness&lt;br&gt;
[] + []     // ''&lt;br&gt;
[] + {}     // '[object Object]'&lt;br&gt;
{} + []     // 0 (WHAT?)&lt;br&gt;
JavaScript will happily guess what you meant.&lt;br&gt;
Spoiler: it’s usually wrong.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The "this" Trap&lt;br&gt;
const obj = {&lt;br&gt;
value: 10,&lt;br&gt;
getValue: function () {&lt;br&gt;
return this.value;&lt;br&gt;
}&lt;br&gt;
};&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;const get = obj.getValue;&lt;br&gt;
get(); // undefined (RIP 'this')&lt;br&gt;
One misstep with this and your logic collapses like a house of cards.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Callback Hell
Nested callbacks inside callbacks inside callbacks...
Before async/await, JavaScript was basically a pasta dish.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;doSomething(function (res1) {&lt;br&gt;
  doSomethingElse(res1, function (res2) {&lt;br&gt;
    anotherThing(res2, function (res3) {&lt;br&gt;
      //...&lt;br&gt;
    });&lt;br&gt;
  });&lt;br&gt;
});&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Silent Errors&lt;br&gt;
const result = nonExistentFunction();&lt;br&gt;
// JavaScript: “No worries, just crash and burn at runtime.”&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Implicit Globals&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;function curseTheDay() {&lt;br&gt;
  notDeclared = "oops"; // becomes global&lt;br&gt;
}&lt;br&gt;
Miss one let, and you've polluted the global scope.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Equality Woes&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;false == 0      // true&lt;br&gt;
'' == 0         // true&lt;br&gt;
null == undefined // true&lt;br&gt;
'0' == false    // true&lt;br&gt;
Use == and JavaScript starts playing mind games.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Monkey Patching Mayhem&lt;br&gt;
Array.prototype.toString = () =&amp;gt; "I'm broken now.";&lt;br&gt;
Some devs just want to watch the world burn.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Floating Point Fiascos&lt;br&gt;
0.1 + 0.2 === 0.3 // false&lt;br&gt;
Thanks, IEEE 754. You had one job.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Yet we keep coming back.&lt;br&gt;
Because despite the chaos, JavaScript is powerful, everywhere, and oddly… fun.&lt;br&gt;
But always remember:&lt;br&gt;
With great power comes great wOWs.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>developer</category>
      <category>programming</category>
    </item>
    <item>
      <title>Hacker rank's Median SQL Solution</title>
      <dc:creator>Meghana N</dc:creator>
      <pubDate>Fri, 04 Apr 2025 14:30:21 +0000</pubDate>
      <link>https://dev.to/meghanananju/hacker-ranks-median-sql-solution-17be</link>
      <guid>https://dev.to/meghanananju/hacker-ranks-median-sql-solution-17be</guid>
      <description>&lt;p&gt;Let's get to know the question&lt;/p&gt;

&lt;p&gt;A median is defined as a number separating the higher half of a data set from the lower half. Query the median of the Northern Latitudes (LAT_N) from STATION and round your answer to  decimal places.&lt;br&gt;
Input Format&lt;br&gt;
The STATION table is described as follows:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmmgk43f2i6hdzfdqv50y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmmgk43f2i6hdzfdqv50y.png" alt="Image description" width="300" height="290"&gt;&lt;/a&gt;&lt;br&gt;
where LAT_N is the northern latitude and LONG_W is the western longitude.&lt;/p&gt;

&lt;p&gt;What's Median by the way ?&lt;br&gt;
Well in simple words let me explain through this.&lt;br&gt;
Okay! Imagine you have a bunch of numbers, like 3, 7, 1, 9, and 5. The median is the number that is right in the middle when you put them in order from smallest to biggest.Here when its ordered 1,3,5,7,9 and median comes to be 5!&lt;/p&gt;

&lt;p&gt;The formula for finding the median depends on whether you have an odd or even number of values.&lt;br&gt;
Median = (Value at (n/2)th position + Value at (n/2 + 1)th position) / 2&lt;/p&gt;

&lt;p&gt;It’s like finding the middle of a group of friends standing in a line. 😊&lt;/p&gt;

&lt;p&gt;Step-by-Step Explanation:&lt;br&gt;
1️⃣ Put all numbers in order (from smallest to biggest).&lt;/p&gt;

&lt;p&gt;2️⃣ Give each number a position (row number) so we can easily find the middle one.&lt;/p&gt;

&lt;p&gt;3️⃣ Find the middle number(s) we got this already:&lt;/p&gt;

&lt;p&gt;If there’s an odd number of values, the median is the middle one.&lt;/p&gt;

&lt;p&gt;If there’s an even number of values, the median is the average of the two middle ones.&lt;/p&gt;

&lt;p&gt;Calculate the median by taking the average of those middle numbers.&lt;/p&gt;

&lt;p&gt;Understanding Key SQL Functions:&lt;br&gt;
1️⃣ ROW_NUMBER()&lt;br&gt;
This is like giving each number a sticker with its position in the list.&lt;/p&gt;

&lt;p&gt;Example: If the numbers are [10, 20, 30, 40, 50], the row numbers will be:&lt;/p&gt;

&lt;p&gt;10 → Row 1&lt;br&gt;&lt;br&gt;
20 → Row 2&lt;br&gt;&lt;br&gt;
30 → Row 3&lt;br&gt;&lt;br&gt;
40 → Row 4&lt;br&gt;&lt;br&gt;
50 → Row 5 &lt;/p&gt;

&lt;p&gt;2️⃣ COUNT()&lt;br&gt;
This counts how many numbers we have.&lt;/p&gt;

&lt;p&gt;If we have 5 numbers, COUNT(lat_n) returns 5.&lt;/p&gt;

&lt;p&gt;3️⃣ CEIL() &amp;amp; FLOOR()&lt;br&gt;
These help us find the middle position.&lt;/p&gt;

&lt;p&gt;CEIL() rounds UP to the nearest whole number. Example: CEIL(2.5) = 3&lt;/p&gt;

&lt;p&gt;FLOOR() rounds DOWN to the nearest whole number. Example: FLOOR(2.5) = 2&lt;/p&gt;

&lt;p&gt;4️⃣ ROUND()&lt;br&gt;
This makes a number look cleaner by cutting extra decimal places.&lt;/p&gt;

&lt;p&gt;Example: ROUND(3.14159, 2) → 3.14 (keeps only 2 decimal places)&lt;/p&gt;

&lt;p&gt;How to write the Query ?&lt;br&gt;
Step 1: Order the Numbers and Give Them Row Numbers&lt;br&gt;
We use ROW_NUMBER() OVER (ORDER BY lat_n) to assign each latitude a number.&lt;/p&gt;

&lt;p&gt;SELECT lat_n, ROW_NUMBER() OVER (ORDER BY lat_n ASC) AS rownumber&lt;br&gt;
FROM station&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkbymvsrjohlr18nsm31t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkbymvsrjohlr18nsm31t.png" alt="Image description" width="213" height="202"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 2: Find the Middle Position(s)&lt;br&gt;
We use (COUNT(rownumber) + 1) / 2 to find the middle row number.&lt;/p&gt;

&lt;p&gt;Step 3: Get the Median&lt;br&gt;
If we have an odd number of values, we pick the exact middle.&lt;/p&gt;

&lt;p&gt;SELECT &lt;br&gt;
    ROUND(AVG(lat_n), 4) AS median&lt;br&gt;
FROM&lt;br&gt;
(&lt;br&gt;
    SELECT lat_n, ROW_NUMBER() OVER (ORDER BY lat_n) AS rownumber&lt;br&gt;
    FROM station&lt;br&gt;
) AS subquery&lt;br&gt;
WHERE&lt;br&gt;
    rownumber = (SELECT CEIL((COUNT(rownumber)+1)/2) FROM station)&lt;br&gt;
    OR&lt;br&gt;
    rownumber = (SELECT FLOOR((COUNT(rownumber)+1)/2) FROM station)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F359x1pz85bqgbf7afq2e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F359x1pz85bqgbf7afq2e.png" alt="Image description" width="203" height="85"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hope this makes sense! 😃&lt;/p&gt;

</description>
      <category>sql</category>
      <category>hackerrank</category>
      <category>tircky</category>
      <category>programming</category>
    </item>
    <item>
      <title>Telemetry</title>
      <dc:creator>Meghana N</dc:creator>
      <pubDate>Mon, 24 Feb 2025 05:10:22 +0000</pubDate>
      <link>https://dev.to/meghanananju/telemetry-5hfe</link>
      <guid>https://dev.to/meghanananju/telemetry-5hfe</guid>
      <description>&lt;p&gt;🚀 Currently, I'm working on a Telemetry Project – If you'd like a glimpse of it, here's what you need to know before diving in!&lt;/p&gt;

&lt;p&gt;Telemetry is at the heart of remote data collection and real-time monitoring. Whether it's tracking satellites, monitoring industrial systems, or analyzing IoT devices, telemetry plays a crucial role in enabling wireless communication between remote sensors and a central system.&lt;/p&gt;

&lt;p&gt;In this post, I’ll cover the basics of telemetry, how it works, key components, and its real-world applications. Let’s dive in!&lt;/p&gt;

&lt;p&gt;🔹 &lt;strong&gt;What is Telemetry?&lt;/strong&gt;&lt;br&gt;
Telemetry is the process of collecting data from remote or inaccessible locations and transmitting it wirelessly for monitoring and analysis. It is widely used in space exploration, healthcare, weather monitoring, and industrial automation.&lt;/p&gt;

&lt;p&gt;🔹 &lt;strong&gt;How Does Telemetry Work?&lt;/strong&gt;&lt;br&gt;
A typical telemetry system consists of three main parts:&lt;br&gt;
1️⃣ Sensors – Collects data (e.g., temperature, GPS location, pressure).&lt;br&gt;
2️⃣ Transmission System – Sends data wirelessly using RF, satellite, or GSM.&lt;br&gt;
3️⃣ Receiver &amp;amp; Monitoring – Processes and visualizes data at a remote location.&lt;/p&gt;

&lt;p&gt;For example, a weather telemetry system collects temperature and humidity data using sensors, transmits it via RF or satellite, and a ground station processes the information for weather forecasting.&lt;/p&gt;

&lt;p&gt;🔹&lt;strong&gt;Types of Telemetry Systems&lt;/strong&gt;&lt;br&gt;
🔸 Wireless Telemetry – Uses RF, satellite, or cellular networks (GSM, 5G, LoRa).&lt;br&gt;
🔸 Wired Telemetry – Uses fiber optics, Ethernet, or serial communication.&lt;br&gt;
🔸 Cloud-Based Telemetry – Uses IoT protocols like MQTT and WebSockets.&lt;/p&gt;

&lt;p&gt;🔹 &lt;strong&gt;Key Components of a Telemetry System&lt;/strong&gt;&lt;br&gt;
✅ Sensors – Collect real-time data (temperature, pressure, speed, etc.).&lt;br&gt;
✅ Data Acquisition Unit (DAU) – Converts sensor data into a digital format.&lt;br&gt;
✅ Telemetry Transmitter – Sends data using RF, satellite, or the internet.&lt;br&gt;
✅ Receiver &amp;amp; Ground Station – Processes received data for visualization.&lt;/p&gt;

&lt;p&gt;🔹 &lt;strong&gt;Communication Technologies Used in Telemetry&lt;/strong&gt;&lt;br&gt;
📡 RF Telemetry – Used in drones, UAVs, and space missions.&lt;br&gt;
🛰 Satellite Telemetry – Used for deep space communication (NASA, ISRO).&lt;br&gt;
📶 Cellular (GSM/4G/5G) Telemetry – Used in IoT-based smart monitoring.&lt;br&gt;
☁ Internet-Based Telemetry – Used in industrial automation (IoT, MQTT, HTTP).&lt;/p&gt;

&lt;p&gt;🔹 &lt;strong&gt;Real-World Applications of Telemetry&lt;/strong&gt;&lt;br&gt;
🚀 Space Exploration – NASA spacecraft send telemetry data to Earth.&lt;br&gt;
🚗 Vehicle Tracking – GPS telemetry used in fleet management.&lt;br&gt;
🌍 Weather Monitoring – Satellites transmit real-time climate data.&lt;br&gt;
🏭 Industrial IoT – Sensors collect machine diagnostics for predictive maintenance.&lt;br&gt;
🏥 Healthcare – Wireless telemetry monitors patient vitals remotely.&lt;/p&gt;

&lt;p&gt;🔹 &lt;strong&gt;Challenges in Telemetry Systems&lt;/strong&gt;&lt;br&gt;
❌ Signal Interference – RF and satellite signals can be affected by noise.&lt;br&gt;
❌ Power Consumption – Wireless telemetry requires optimized power management.&lt;br&gt;
❌ Security Risks – Data encryption is crucial for protecting transmitted data.&lt;/p&gt;

&lt;p&gt;🔹 A Simple Telemetry Setup Using Raspberry Pi Pico &amp;amp; RF Modem&lt;br&gt;
 Here’s the basic setup to establish the connectivity:&lt;/p&gt;

&lt;p&gt;🖥 HyperTerminal (PC)(TERA TERM or Thonny IDE) ↔ 🎛 Raspberry Pi Pico ↔ 📡 RF Telemetry Modem ↔ 📡 Telemetry Antenna&lt;/p&gt;

&lt;p&gt;🔧 MicroPython Code Snippet (SPI Communication)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkvmu6jrj4ily2nas5z2e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkvmu6jrj4ily2nas5z2e.png" alt="Image description" width="704" height="373"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Note: Check the Pin configurations and use those only&lt;/p&gt;

&lt;p&gt;This script transmits temperature data using SPI over RF telemetry. 🔥&lt;/p&gt;

&lt;p&gt;🔹 *&lt;em&gt;The Future of Telemetry *&lt;/em&gt;🚀&lt;br&gt;
✅ 5G &amp;amp; IoT – Faster data rates for real-time monitoring.&lt;br&gt;
✅ AI-Powered Telemetry – Machine learning for predictive analytics.&lt;br&gt;
✅ Advanced Space Telemetry – AI-driven satellite data processing.&lt;/p&gt;

&lt;p&gt;Telemetry is evolving rapidly, and it's exciting to work on projects that push the boundaries of remote data monitoring!🚀&lt;/p&gt;

</description>
      <category>rf</category>
      <category>telemetry</category>
      <category>iot</category>
      <category>communications</category>
    </item>
    <item>
      <title>Introduction to Bash Scripting</title>
      <dc:creator>Meghana N</dc:creator>
      <pubDate>Mon, 17 Feb 2025 09:44:13 +0000</pubDate>
      <link>https://dev.to/meghanananju/introduction-to-bash-scripting-5128</link>
      <guid>https://dev.to/meghanananju/introduction-to-bash-scripting-5128</guid>
      <description>&lt;p&gt;Bash scripting is a powerful tool for automating tasks in Unix-based systems like Linux and macOS. Whether you're a beginner or an experienced developer, learning Bash can help you streamline repetitive tasks and enhance your command-line productivity.This is a foundational guide that offers a glimpse into a vast and intricate ocean of BASH SCRIPTING!&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Getting Started with Bash Scripting&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;1.1 What is Bash?&lt;/p&gt;

&lt;p&gt;Bash (Bourne Again Shell) is a command-line interpreter that allows users to interact with the operating system through commands and scripts. A Bash script is simply a file containing a series of commands.&lt;/p&gt;

&lt;p&gt;1.2 Creating and Running a Bash Script&lt;/p&gt;

&lt;p&gt;Open a terminal and create a new file:&lt;/p&gt;

&lt;p&gt;nano myscript.sh&lt;/p&gt;

&lt;p&gt;Add the following lines:&lt;/p&gt;

&lt;p&gt;#!/bin/bash&lt;br&gt;
echo "Hello, World!"&lt;/p&gt;

&lt;p&gt;#!/bin/bash is the shebang, which tells the system to use Bash for execution.&lt;/p&gt;

&lt;p&gt;echo prints text to the terminal.&lt;/p&gt;

&lt;p&gt;Save and exit (CTRL + X, then Y, then Enter).&lt;/p&gt;

&lt;p&gt;Make the script executable:&lt;/p&gt;

&lt;p&gt;chmod +x myscript.sh&lt;/p&gt;

&lt;p&gt;Run the script:&lt;/p&gt;

&lt;p&gt;./myscript.sh&lt;/p&gt;

&lt;p&gt;Output:&lt;/p&gt;

&lt;p&gt;Hello, World!&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Variables and User Input&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;2.1 Using Variables&lt;/p&gt;

&lt;p&gt;#!/bin/bash&lt;br&gt;
name="John"&lt;br&gt;
echo "Hello, $name!"&lt;/p&gt;

&lt;p&gt;Variables store data (name="John").&lt;/p&gt;

&lt;p&gt;$name accesses the value.&lt;/p&gt;

&lt;p&gt;2.2 Reading User Input&lt;/p&gt;

&lt;p&gt;#!/bin/bash&lt;br&gt;
echo "Enter your name:"&lt;br&gt;
read user_name&lt;br&gt;
echo "Hello, $user_name!"&lt;/p&gt;

&lt;p&gt;read gets user input.&lt;/p&gt;

&lt;p&gt;str1="Harry"&lt;br&gt;
echo ${str1^} - prints everything in lower case&lt;br&gt;
echo ${str1^^} - prints everything in upper case&lt;/p&gt;

&lt;p&gt;#for single line comment&lt;br&gt;
: ' --lines ' multiline comment&lt;/p&gt;

&lt;p&gt;args=("$@") #for unlimited input&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Conditionals and Loops&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;3.1 If Statements&lt;/p&gt;

&lt;p&gt;#!/bin/bash&lt;br&gt;
echo "Enter a number:"&lt;br&gt;
read num&lt;br&gt;
if [ $num -gt 10 ]; then&lt;br&gt;
   echo "Number is greater than 10"&lt;br&gt;
else&lt;br&gt;
   echo "Number is 10 or less"&lt;br&gt;
fi&lt;/p&gt;

&lt;p&gt;-gt means greater than.&lt;/p&gt;

&lt;p&gt;3.2 Loops&lt;/p&gt;

&lt;p&gt;For Loop&lt;/p&gt;

&lt;p&gt;#!/bin/bash&lt;br&gt;
for i in {1..5}; do&lt;br&gt;
  echo "Number $i"&lt;br&gt;
done&lt;/p&gt;

&lt;p&gt;While Loop&lt;/p&gt;

&lt;p&gt;#!/bin/bash&lt;br&gt;
count=1&lt;br&gt;
while [ $count -le 5 ]; do&lt;br&gt;
  echo "Count: $count"&lt;br&gt;
  ((count++))&lt;br&gt;
done&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Functions in Bash&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;#!/bin/bash&lt;br&gt;
greet() {&lt;br&gt;
  echo "Hello, $1!"&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;greet "Adam"&lt;/p&gt;

&lt;p&gt;$1 is the first argument (Adam).&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;File Handling&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;5.1 Writing to a File&lt;/p&gt;

&lt;p&gt;#!/bin/bash&lt;br&gt;
echo "This is a test" &amp;gt; output.txt&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;writes to output.txt.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;5.2 Reading a File&lt;/p&gt;

&lt;p&gt;#!/bin/bash&lt;br&gt;
cat output.txt&lt;/p&gt;

&lt;p&gt;cat displays the file contents.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Advanced Bash Scripting Techniques&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;6.1 Command-Line Arguments&lt;/p&gt;

&lt;p&gt;#!/bin/bash&lt;br&gt;
echo "Script Name: $0"&lt;br&gt;
echo "First Argument: $1"&lt;/p&gt;

&lt;p&gt;Run:&lt;/p&gt;

&lt;p&gt;./script.sh hello&lt;/p&gt;

&lt;p&gt;Output:&lt;/p&gt;

&lt;p&gt;Script Name: script.sh&lt;br&gt;
First Argument: hello&lt;/p&gt;

&lt;p&gt;6.2 Error Handling&lt;br&gt;
#!/bin/bash&lt;br&gt;
if [ ! -f myfile.txt ]; then&lt;br&gt;
  echo "Error: File does not exist!"&lt;br&gt;
  exit 1&lt;br&gt;
fi&lt;br&gt;
exit 1 exits with an error code.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Additional Resources&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For more in-depth learning, check out these resources:&lt;br&gt;
Bash Official Documentation - &lt;a href="http://www.gnu.org/software/bash/" rel="noopener noreferrer"&gt;http://www.gnu.org/software/bash/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Linux Command Line Basics - &lt;a href="https://www.linux.org/forums/#linux-tutorials" rel="noopener noreferrer"&gt;https://www.linux.org/forums/#linux-tutorials&lt;/a&gt;&lt;/p&gt;

</description>
      <category>bash</category>
      <category>basic</category>
      <category>bashscripting</category>
      <category>linux</category>
    </item>
    <item>
      <title>JMeter: A Powerful Tool for Performance Testing</title>
      <dc:creator>Meghana N</dc:creator>
      <pubDate>Thu, 13 Feb 2025 10:39:30 +0000</pubDate>
      <link>https://dev.to/meghanananju/jmeter-a-powerful-tool-for-performance-testing-27ci</link>
      <guid>https://dev.to/meghanananju/jmeter-a-powerful-tool-for-performance-testing-27ci</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;br&gt;
Apache JMeter is a widely used open-source tool designed for performance testing, load testing, and functional testing of web applications and other services. It helps developers and testers measure how applications handle concurrent users, stress, and high volumes of traffic.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why Use JMeter?&lt;/strong&gt;&lt;br&gt;
Key Features&lt;br&gt;
✅ Load Testing – Simulates multiple users to evaluate application performance under different loads.&lt;br&gt;
✅ Multi-Protocol Support – Works with HTTP, HTTPS, FTP, JDBC, JMS, and other protocols.&lt;br&gt;
✅ Extensibility – Supports plugins and scripting for custom test scenarios.&lt;br&gt;
✅ User-Friendly Interface – Provides a graphical user interface (GUI) for creating test plans, along with command-line execution for automation.&lt;br&gt;
✅ Comprehensive Test Plans – Includes elements like thread groups, samplers, listeners, and assertions to define structured test cases.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to work with JMeter ?&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Creating a Test Plan&lt;br&gt;
A test plan defines all the components of your test, including users, requests, and response validations.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Configuring Thread Groups&lt;br&gt;
Thread groups simulate virtual users interacting with your application. You can configure:&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Number of Threads (Users) – The total number of users simulated.&lt;br&gt;
Ramp-Up Period – The time taken to reach the full number of users.&lt;br&gt;
Loop Count – The number of times each user repeats the test.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Using Samplers&lt;br&gt;
Samplers define what actions JMeter should perform, such as sending HTTP requests, database queries, or FTP uploads.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Adding Listeners&lt;br&gt;
Listeners capture test results and provide insights through reports, graphs, and tables.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Implementing Assertions&lt;br&gt;
Assertions help verify test results by checking response codes, text validations, and latency.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Analyzing JMeter Results&lt;/strong&gt;&lt;br&gt;
JMeter generates detailed performance reports. Below is an example of interpreting the data:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmxagtvhwqsfh7zc7krr1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmxagtvhwqsfh7zc7krr1.png" alt="Image description" width="731" height="465"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Example: Running a Test with 1000 Users&lt;br&gt;
If you set:&lt;br&gt;
Threads (Users) = 1000&lt;br&gt;
Ramp-Up Period = 1 second&lt;br&gt;
JMeter will attempt to start all 1000 users within 1 second, creating significant load on the server.&lt;/p&gt;

&lt;p&gt;This helps determine how well your application scales under high traffic conditions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros &amp;amp; Cons of JMeter&lt;/strong&gt;&lt;br&gt;
✅ Advantages&lt;br&gt;
Free &amp;amp; Open Source – No licensing costs.&lt;br&gt;
Feature-Rich – Supports distributed testing, API testing, and custom scripting.&lt;br&gt;
Strong Community Support – Extensive documentation and plugins available.&lt;/p&gt;

&lt;p&gt;❌ Disadvantages&lt;br&gt;
High Resource Usage – Running large tests can consume significant CPU &amp;amp; memory.&lt;br&gt;
Steep Learning Curve – Requires knowledge of test planning and result analysis.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Popular JMeter Plugins &amp;amp; Tools&lt;/strong&gt;&lt;br&gt;
🔹 JMeter Plugins Manager – Extends JMeter with additional features.&lt;br&gt;
🔹 BlazeMeter – Cloud-based JMeter testing solution.&lt;br&gt;
🔹 Grafana &amp;amp; InfluxDB – Real-time monitoring of test results.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
JMeter is a powerful and versatile tool for performance testing web applications, APIs, and databases. By simulating real-world loads and analyzing detailed metrics, it helps ensure scalability, reliability, and efficiency of your application.&lt;/p&gt;

&lt;p&gt;🚀 Whether you're a beginner or an experienced tester, mastering JMeter can significantly improve your ability to optimize application performance!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>testing</category>
      <category>jmeter</category>
    </item>
    <item>
      <title>Wireframing: The Blueprint of Digital Design</title>
      <dc:creator>Meghana N</dc:creator>
      <pubDate>Thu, 13 Feb 2025 09:46:29 +0000</pubDate>
      <link>https://dev.to/meghanananju/wireframing-the-blueprint-of-digital-design-353f</link>
      <guid>https://dev.to/meghanananju/wireframing-the-blueprint-of-digital-design-353f</guid>
      <description>&lt;p&gt;&lt;strong&gt;What is Wireframing?&lt;/strong&gt;&lt;br&gt;
Wireframing is a fundamental step in the website and app design process. It is a basic visual representation of elements on a webpage or application, serving as a structural sketch before detailed design and development. This process is often referred to as structural wireframing and acts as a blueprint for digital interfaces.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why is Wireframing Important?&lt;/strong&gt;&lt;br&gt;
A well-structured wireframe helps in:&lt;br&gt;
• Providing a clear blueprint for development.&lt;br&gt;
• Enabling precise app evaluation and development planning.&lt;br&gt;
• Identifying pending elements and their status.&lt;br&gt;
• Predicting the volume of data required.&lt;br&gt;
• Reducing frequent design changes and ensuring a smoother workflow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How is Wireframing Done?&lt;/strong&gt;&lt;br&gt;
Wireframing can be created using:&lt;br&gt;
• Pen &amp;amp; Paper for quick sketches.&lt;br&gt;
• Basic tools like Paint and Balsamiq for low-fidelity designs.&lt;br&gt;
• Advanced tools like Figma, Sketch, and MockFlow for detailed wireframes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Types of Wireframing&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Low-Fidelity Wireframe
• A simple layout with basic placeholders, headings, and labels.
• Focuses on structural elements, such as navigation and content flow.
• Does not emphasize details like grid, scale, or typography.&lt;/li&gt;
&lt;li&gt;Mid-Fidelity Wireframe
• More detailed and structured than low-fidelity wireframes.
• Provides a clearer design approach for developers.
• Avoids unnecessary design elements but includes text hierarchy, weights, and structure.&lt;/li&gt;
&lt;li&gt;High-Fidelity Wireframe
• A highly detailed wireframe with pixel-specific layouts.
• Includes featured text, menu systems, and interactive elements.
• Often used to finalize the design before development begins.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Advantages of Wireframing&lt;/strong&gt;&lt;br&gt;
✅ Brings clarity to the project.&lt;br&gt;
✅ Enhances functional focus by defining key elements.&lt;br&gt;
✅ Easily updatable, allowing for quick revisions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Disadvantages of Wireframing&lt;/strong&gt;&lt;br&gt;
❌ Can be time-consuming if done manually.&lt;br&gt;
❌ Risk of misinterpretation if not well-documented.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Popular Wireframing Tools&lt;/strong&gt;&lt;br&gt;
• Figma&lt;br&gt;
• Sketch&lt;br&gt;
• Balsamiq&lt;br&gt;
• Moqups&lt;br&gt;
• MockFlow&lt;/p&gt;

&lt;p&gt;Wireframing is an essential step in digital product development, ensuring a clear and structured approach to design. Whether you're building a website or an app, starting with a well-planned wireframe can streamline the entire development process. 🚀&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>uiux</category>
      <category>wireframe</category>
    </item>
  </channel>
</rss>
