<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Developer Community SASTRA - Medium]]></title>
        <description><![CDATA[We help students bridge the gap between theory and practice and grow their knowledge by providing a peer-to-peer learning environment, by conducting workshops, study jams. - Medium]]></description>
        <link>https://medium.com/dsc-sastra-deemed-to-be-university?source=rss----64bfb37ac01b---4</link>
        <image>
            <url>https://cdn-images-1.medium.com/proxy/1*TGH72Nnw24QL3iV9IOm4VA.png</url>
            <title>Developer Community SASTRA - Medium</title>
            <link>https://medium.com/dsc-sastra-deemed-to-be-university?source=rss----64bfb37ac01b---4</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Tue, 21 Apr 2026 22:52:29 GMT</lastBuildDate>
        <atom:link href="https://medium.com/feed/dsc-sastra-deemed-to-be-university" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[Statemanagement In Flutter — Bloc]]></title>
            <link>https://medium.com/dsc-sastra-deemed-to-be-university/statemanagement-in-flutter-bloc-5b887f3a1da0?source=rss----64bfb37ac01b---4</link>
            <guid isPermaLink="false">https://medium.com/p/5b887f3a1da0</guid>
            <category><![CDATA[flutter-app-development]]></category>
            <category><![CDATA[flutter]]></category>
            <category><![CDATA[flutter-state-management]]></category>
            <category><![CDATA[state-management]]></category>
            <category><![CDATA[bloc]]></category>
            <dc:creator><![CDATA[Pavisentil]]></dc:creator>
            <pubDate>Thu, 05 Mar 2026 15:43:54 GMT</pubDate>
            <atom:updated>2026-03-05T15:44:02.255Z</atom:updated>
            <content:encoded><![CDATA[<h3>State Management In Flutter — Bloc</h3><p>Managing state is one of the most crucial aspects of building robust, scalable Flutter applications. Whether you are dealing with UI updates, asynchronous operations, or user interactions, understanding state and how to manage it effectively can make a significant difference in the quality and maintainability of your app.</p><p>In this article, we’ll explore what <strong>state</strong> means in Flutter, why <a href="https://docs.flutter.dev/get-started/fundamentals/state-management"><strong>State management</strong></a> matters, and how the <a href="https://pub.dev/packages/flutter_bloc"><strong>Bloc</strong></a> pattern provides a clean, scalable approach for managing state in real-world apps.</p><h3>What Is State in Flutter?</h3><p>In Flutter, <strong>state</strong> refers to all the data and objects that determine how your app’s UI appears and behaves at any given moment. Your application is constantly in some form of state — whether it’s idle, loading, completed, or error.</p><p>For example:</p><ul><li>Waiting for an API response? That’s a <strong>loading state</strong>.</li><li>Received data successfully? That’s a <strong>success state</strong>.</li><li>Encountered an error? That’s an <strong>error state</strong>.</li></ul><p>Every interaction in your app affects the state, and managing it properly ensures a smooth user experience and clean code architecture.</p><h3>Why State Management Matters</h3><p>State management is essential for building maintainable and scalable apps. Here’s why:</p><ul><li><strong>Track App State</strong>: Keep track of changes such as loading, error, or success.</li><li><strong>Separate Concerns</strong>: Keep business logic away from the UI, leading to better code organisation.</li><li><strong>Handle Complex Workflows</strong>: Async operations, form inputs, navigation — all rely on well-managed state.</li><li><strong>Centralised Logic</strong>: Reduces the overuse of setState() and keeps logic consistent and testable.</li></ul><h3>Enter Bloc: Business Logic Component</h3><p><strong>Bloc (Business Logic Component)</strong> is a popular state management library in Flutter that enforces a clear separation between UI and business logic.</p><p>Bloc works using a simple <strong>input-output</strong> pattern:</p><ul><li>The UI <strong>sends events</strong> (e.g., button press).</li><li>Bloc <strong>processes logic</strong> and <strong>emits states</strong> (e.g., loading, success).</li><li>The UI listens to state changes and <strong>reacts accordingly</strong>.</li></ul><p>This unidirectional data flow makes your app <strong>predictable</strong>, <strong>testable</strong>, and <strong>easy to maintain</strong>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Hp41fygdEMgjgiKDuJx6Kw.png" /><figcaption>Visual Representation for Bloc</figcaption></figure><h3>Why Use Bloc?</h3><ul><li><strong>Testability</strong>: Business logic is separated, making it easy to write unit tests.</li><li><strong>Scalability</strong>: Suitable for both small and large applications.</li><li><strong>Predictability</strong>: Clear flow of data — events in, states out.</li><li><strong>Reusability</strong>: Logic can be shared across widgets and screens.</li><li><strong>Well-Documented</strong>: The <a href="https://pub.dev/packages/flutter_bloc">flutter_bloc</a> package has solid documentation and community support.</li></ul><h3>Bloc Widgets</h3><h4>BlocProvider:</h4><p>State management in Flutter becomes powerful and clean when paired with patterns like BLoC (Business Logic Component). A key player in this pattern is the BlocProvider. Whether you&#39;re working on a simple app or scaling a large production-ready project, knowing how to use BlocProvider efficiently is essential.</p><pre>BlocProvider(<br>  create: (BuildContext context) =&gt; BlocA(),<br>  child: ChildA(),<br>);</pre><h4>BlocBuilder:</h4><p>BlocBuilder is a Flutter widget that takes a Bloc and a builder function. It listens to the Bloc’s state changes and rebuilds the UI whenever a new state is emitted. The builder function should be <strong>pure</strong>—meaning it must return a widget based on the current state without side effects.</p><p>You can either:</p><ul><li>Let BlocBuilder <strong>automatically find the Bloc</strong> using BlocProvider, or</li><li><strong>Manually pass a Bloc instance</strong> if it’s scoped locally.</li></ul><pre>BlocBuilder&lt;BlocA, BlocAState&gt;(<br>  builder: (context, state) {<br>    // return widget here based on BlocA&#39;s state<br>  },<br>);</pre><h4>BlocListener:</h4><p>BlocListener is a Flutter widget used to <strong>listen for state changes</strong> and perform one-time actions such as:</p><ul><li>Navigation</li><li>Showing SnackBars or Dialogs</li><li>Triggering side effects</li></ul><p>Unlike BlocBuilder, the listener callback in BlocListener is called <strong>once per state change</strong> and does <strong>not rebuild the UI</strong>.</p><pre>BlocListener&lt;BlocA, BlocAState&gt;(<br>  listener: (context, state) {<br>    // do stuff here based on BlocA&#39;s state<br>  },<br>  child: const SizedBox(),<br>);</pre><h3>How Bloc Works — A Simple Example</h3><p>Let’s walk through a basic <strong>Login flow</strong> using Bloc.</p><p>Step 1: Add Dependencies</p><p>In your <a href="https://dart.dev/tools/pub/pubspec">pubspec.yaml</a>:</p><pre>dependencies:<br>  flutter_bloc:</pre><p>Step 2: Create Event, State, and Bloc Classes</p><p>Event Class</p><pre>abstract class LoginEvent {}<br><br>class LoginButtonPressed extends LoginEvent {<br>  final String username;<br>  final String password;<br><br>  LoginButtonPressed({required this.username, required this.password});<br>}</pre><p>State Class</p><pre>abstract class LoginState {}<br><br>class LoginInitial extends LoginState {}<br><br>class LoginLoading extends LoginState {}<br><br>class LoginSuccess extends LoginState {}<br><br>class LoginFailure extends LoginState {<br>  final String error;<br>  LoginFailure({required this.error});<br>}</pre><p>Bloc Class</p><pre>import &#39;package:flutter_bloc/flutter_bloc.dart&#39;;<br><br>class LoginBloc extends Bloc&lt;LoginEvent, LoginState&gt; {<br>  LoginBloc() : super(LoginInitial()) {<br>    on&lt;LoginButtonPressed&gt;((event, emit) async {<br>      emit(LoginLoading());<br><br>      try {<br>        // Simulate API call<br>        await Future.delayed(Duration(seconds: 2));<br><br>        if (event.username == &quot;admin&quot; &amp;&amp; event.password == &quot;admin&quot;) {<br>          emit(LoginSuccess());<br>        } else {<br>          emit(LoginFailure(error: &quot;Invalid credentials&quot;));<br>        }<br>      } catch (e) {<br>        emit(LoginFailure(error: e.toString()));<br>      }<br>    });<br>  }<br>}</pre><p>Step 3: Connect Bloc to the UI</p><p>Use BlocProvider to make the Bloc accessible and BlocBuilder to rebuild the UI based on the current state:</p><pre>BlocProvider(<br>  create: (_) =&gt; LoginBloc(),<br>  child: BlocBuilder&lt;LoginBloc, LoginState&gt;(<br>    builder: (context, state) {<br>      if (state is LoginInitial) {<br>        return LoginForm(); // Show form<br>      } else if (state is LoginLoading) {<br>        return Center(child: CircularProgressIndicator()); // Show loading<br>      } else if (state is LoginSuccess) {<br>        return SuccessScreen(); // Navigate or show success<br>      } else if (state is LoginFailure) {<br>        return Text(state.error, style: TextStyle(color: Colors.red)); // Show error<br>      }<br>      return Container();<br>    },<br>  ),<br>);</pre><blockquote><strong>Bloc in a Nutshell</strong></blockquote><blockquote>Bloc is like a <strong>engine</strong>: it takes in <strong>events</strong> as fuel and provides <strong>states</strong> as performance. The UI (the car’s body) only cares about what the engine (BLoC) is telling it to do (the state) and what the driver (user) is doing (the event). The BLoC handles all the complex business logic, keeping the UI simple and clean. This makes the code more organised, testable, and reusable.</blockquote><h3>Final Thoughts</h3><p>State management is not just about updating the UI — it’s about <strong>maintaining structure</strong>, <strong>scalability</strong>, and <strong>stability</strong> across your Flutter app. Bloc provides a powerful and elegant solution for managing state while keeping your codebase clean and maintainable.</p><p>If you’re building an app that handles complex flows, asynchronous calls, or requires a lot of user interaction, Bloc is definitely worth considering.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=5b887f3a1da0" width="1" height="1" alt=""><hr><p><a href="https://medium.com/dsc-sastra-deemed-to-be-university/statemanagement-in-flutter-bloc-5b887f3a1da0">Statemanagement In Flutter — Bloc</a> was originally published in <a href="https://medium.com/dsc-sastra-deemed-to-be-university">Developer Community SASTRA</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[From Syntax to Symmetry: A Journey into Generative Art with p5.js — I]]></title>
            <link>https://medium.com/dsc-sastra-deemed-to-be-university/from-syntax-to-symmetry-a-journey-into-generative-art-with-p5-js-i-fabafad7c26d?source=rss----64bfb37ac01b---4</link>
            <guid isPermaLink="false">https://medium.com/p/fabafad7c26d</guid>
            <category><![CDATA[p5js]]></category>
            <category><![CDATA[generative-art]]></category>
            <category><![CDATA[creative-coding]]></category>
            <dc:creator><![CDATA[Math.CS]]></dc:creator>
            <pubDate>Thu, 29 May 2025 14:11:49 GMT</pubDate>
            <atom:updated>2025-05-29T14:11:49.055Z</atom:updated>
            <content:encoded><![CDATA[<h3>From Syntax to Symmetry: A Journey into Generative Art with p5.js — I</h3><p>Generative art, also known as algorithmic art, refers to artworks that are partially or entirely created through non-human or autonomous systems. While generative art isn’t limited to programming alone, in this post, we’ll explore how to create artwork using just code — specifically through a JavaScript library called p5.js.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/225/1*nLZRqTC789bpAxllYboRpg.png" /></figure><p>Most people associate programming with automating tasks, building applications, or competing in coding challenges. But have you ever wondered if there’s a fun, creative, and artistic side to coding?</p><p>That’s exactly the side we’ll be diving into here — <strong>creative coding</strong>. It’s all about using your coding skills to create art or cool digital experiences, not just practical things like apps or websites. Think of it as coding for expression, exploration, and play.</p><p>As a first step into this world, we’ll start by creating some geometric and abstract patterns — purely through code. And just like every artist needs a canvas, every programmer needs an editor. Luckily, <strong>p5.js</strong> provides a <a href="https://editor.p5js.org/">web-based editor</a> that’s perfect for getting started. If you prefer, you can also <a href="https://p5js.org/tutorials/setting-up-your-environment/#vscode">set it up in VS Code</a>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*aa3gDRbKwfTSTqFbXeEStw.png" /></figure><p>The image above shows the default screen in the <strong>p5.js editor</strong>. You’ll be writing your main code in the sketch.js file, and when you click the <strong>Run</strong> button in the top-left corner, the output will appear in the <strong>preview window</strong>. As always, the <strong>console window</strong> is your debugging buddy—use it to catch any errors or log values while experimenting.</p><p>Before jumping into writing programs, it might be helpful to skim through the official <a href="https://p5js.org/tutorials/">p5.js documentation</a>. It’s well-organized and super beginner-friendly! Okay, so… ready to paint your canvas?</p><p>p5.js relies on two main functions: setup() and draw().</p><ul><li>The setup() function runs <strong>once</strong> when the program starts. You typically define initial settings here—like canvas size, background color, and other static values.</li><li>The draw() function runs <strong>continuously</strong>, from top to bottom, by default <strong>60 times per second</strong> (this is known as the <strong>frame rate</strong>).</li></ul><p>Since we’re going to be creating <strong>static patterns</strong>, we can skip the draw() function for now. So, how do we go about designing these patterns?</p><p>Let’s start simple — with just some squares displayed on the screen, like this:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/400/1*WPTLelUWW2ut9bxMAZQhMg.png" /></figure><pre>function setup() {<br>  createCanvas(500,500);<br>  fill(255, 0, 0);<br>  let space = 50;<br>  for (x=0;x&lt;width+50;x+=space){<br>    for (y=0;y&lt;height+50;y+=space){<br>      square(x,y,10)<br>      square(x+space/2,y+space/2,10)<br>    }<br>  }<br>}</pre><p>Now, let’s try to understand the code a bit.</p><blockquote>1. The createCanvas() function takes two parameters: the <strong>width</strong> and <strong>height</strong> of the canvas. In this case, it&#39;s 500x500, which means we&#39;ll be drawing on a square area that&#39;s 500 pixels wide and 500 pixels tall.</blockquote><blockquote>2. Next, we use the fill() function to define the <strong>color</strong> that will be used to fill all the shapes. fill(0) sets the color to black<strong> </strong>and <em>fill(255,0,0) </em>as in our case sets it to red.</blockquote><blockquote>3. We then create a variable called space, which defines the amount of <strong>space between each square</strong>. Here, it&#39;s set to 50 pixels.</blockquote><blockquote>4. Finally, we use <strong>two nested loops</strong> to span the entire canvas — one loop for the x-axis and one for the y-axis — each incrementing by the value of space. In each iteration, two squares are drawn:<br>One at (x, y) with a side length of 10, and another slightly offset at (x + space / 2, y + space / 2)—which places it 25 pixels diagonally from the first.</blockquote><blockquote>This alternating placement gives the pattern a nice, staggered grid effect.</blockquote><p>So, that was fun. Let’s take it up a notch and add some lines to our pattern to get something like this:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/402/1*8HT4TDXcZYeqcT_Q_unkNA.png" /></figure><p>Let’s try to understand what has happened here. We have lines that run horizontally and vertically through the main squares. To achieve this, we just need to tweak the code a bit.</p><pre>function setup() {<br>  createCanvas(502,502);<br>  fill(255, 0, 0);<br>  rectMode(CENTER);<br>  let space = 50;<br>  for (x=0;x&lt;width;x+=space){<br>    for (y=0;y&lt;height;y+=space){<br>      line(x,y,x+space,y);<br>      line(x,y,x,y+space);<br>      square(x,y,10)<br>      square(x+space/2,y+space/2,10)<br>    }<br>  }<br>}</pre><blockquote>We’ve made only a few changes here:</blockquote><blockquote>1.First off, rectMode(CENTER) ensures that the squares (and the lines passing through them) are centered at the given (x, y) coordinates, rather than starting from the top-left corner.</blockquote><blockquote>2. Apart from that, inside the loop, we’ve added two line() calls. The line() function takes four parameters: the first two specify the start coordinates, and the next two specify the end coordinates.</blockquote><p>In addition to the basic patterns we’ve explored, p5.js also allows us to create much more intricate and visually stunning designs. From complex geometric shapes to organic, flowing patterns, the possibilities are endless. Below are a few examples of patterns that can be made using p5.js, showcasing the versatility and creativity that can be achieved. These patterns range from mesmerizing fractals to dynamic, interactive visuals, giving you a glimpse of what we can dive deeper into in future posts. The images below are made completely out of p5.js.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*e2DhgMHE9O7cJ3Isj3rC7w.png" /></figure><p>This was a fun and simple start to exploring p5.js! The patterns we created are just the tip of the iceberg. There’s so much more to discover, from interactive visuals to complex animations. Stay tuned for upcoming posts where we’ll continue to dive deeper into the exciting world of p5.js and create even more fascinating projects together!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=fabafad7c26d" width="1" height="1" alt=""><hr><p><a href="https://medium.com/dsc-sastra-deemed-to-be-university/from-syntax-to-symmetry-a-journey-into-generative-art-with-p5-js-i-fabafad7c26d">From Syntax to Symmetry: A Journey into Generative Art with p5.js — I</a> was originally published in <a href="https://medium.com/dsc-sastra-deemed-to-be-university">Developer Community SASTRA</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Privacy Isn’t a Myth but Basic Math]]></title>
            <link>https://medium.com/dsc-sastra-deemed-to-be-university/privacy-isnt-a-myth-but-basic-math-bc65ea595719?source=rss----64bfb37ac01b---4</link>
            <guid isPermaLink="false">https://medium.com/p/bc65ea595719</guid>
            <category><![CDATA[technology]]></category>
            <category><![CDATA[safety]]></category>
            <category><![CDATA[security]]></category>
            <category><![CDATA[tech]]></category>
            <category><![CDATA[privacy]]></category>
            <dc:creator><![CDATA[Krithik]]></dc:creator>
            <pubDate>Sun, 30 Mar 2025 11:48:51 GMT</pubDate>
            <atom:updated>2025-03-30T11:48:51.220Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*fdwdoNLR8qXlTOSvfGZJfg.png" /></figure><blockquote>To say privacy doesn’t matter because you have nothing to hide is like saying free speech doesn’t matter because you have nothing to say — Edward Snowden</blockquote><p>In a world where technology and social media control our lives, privacy is quietly slipping away. Once a fundamental right, it’s now a heated topic of debate. You’ve probably heard people dismiss concerns with remarks like, “I have nothing to hide” or “I just want to stay connected.” On the surface, these arguments might seem reasonable. But only when you dig deeper, you start to understand that these same arguments crumble in an era where personal data is mined, analyzed, and even used against us.</p><h3>The Myth of “I Have Nothing to Hide”</h3><p>Many of us think privacy only matters if we’re doing something wrong. But this mindset fundamentally misunderstands what privacy represents. Privacy isn’t about hiding — the right to decide what parts of your life remain personal. Imagine if someone followed you around all day, jotting down every single thing you did, from what you bought at the store to who you talked to. Creepy, right? Well, that’s exactly what happens online. Social media platforms and apps track everything — your likes, clicks, and even how long you look at a post, stitching together a profile of your habits, fears, and desires.</p><p>“You’re just seeing ads,” you might argue. But the stakes are far higher. The problem is that this data is used to make decisions about you. Companies use it to show you ads, sure, but also to shape your beliefs, spending habits, and even your voting choices. And the scary part? You don’t even realize it’s happening. Today, it’s an ad for shoes. Tomorrow, it could be your health insurance premium skyrocketing because an algorithm decided you’re too risky {if only we could ask Luigi Mangione on this ;)} <br>Still think it’s just about ads? Give that thought a different perspective.</p><h3>“But I Want to Stay Connected with what’s happening”</h3><p>Now, let’s talk about the second argument: “I just want to stay connected with what’s happening.” We’ve all been there — scrolling through our feeds to see what our friends are up to or checking the latest news. It feels like we’re staying informed, but there’s a hidden cost.</p><p>Social media platforms don’t just show you what your friends post. They use algorithms to decide what will keep you hooked. This means you’re not seeing the full picture. Instead, you’re seeing a version of reality carefully curated to keep you scrolling. It’s like living in a bubble, where everything is designed to make you feel good, outraged, or curious enough to stay engaged. Meanwhile, you’re giving away tons of personal data — your location, interests, and even how you interact with posts.</p><p>And don’t forget, sharing on social media affects others too. Tagging a friend in a photo or checking in at a location might seem harmless, but it adds to their digital footprint as well. In our quest to stay connected, we’re exposing ourselves and those we care about , to risks that are puzzling to comprehend.</p><p>Staying connected doesn’t have to mean surrendering to social media. Sometimes, not being on these platforms is a boon. Instead of passively watching someone’s Instagram stories, you can meet with them for a cup of coffee, and have a heartfelt conversation about what’s happening in each other’s lives. Those moments — raw, unfiltered, and free from algorithms, are where true connection thrives. Social media offers the illusion of closeness, but is it really a substitute for the richness of real, human interactions?</p><h3>What Can We Do?</h3><p>You don’t have to disappear off the grid to protect your privacy. There are simple steps you can take to regain control. Start by paying attention to what you share and who you share it with. Use <a href="https://www.privacytools.io/">privacy-oriented apps</a>, in-app <a href="https://github.com/StellarSand/privacy-settings">privacy settings</a>, or browsers like <a href="https://brave.com/">Brave</a>, <a href="https://zen-browser.app/">Zen</a>. And don’t hesitate to question how your data is being used. Who has <a href="https://privacyspy.org/">access</a> to it? What are they doing with it?</p><p>It’s also crucial to speak up. Support companies and policies that prioritize privacy. The more we demand transparency and accountability, the more pressure there is for change.</p><h3><strong>Time to Wrap it all up!</strong></h3><p>Remember! Privacy isn’t about keeping secrets. It’s about protecting your right to be yourself. The arguments we went through like “I have nothing to hide” or “I just want to stay connected” might seem reasonable at first, but they fall apart when you realize what’s really at stake.</p><p>So, the next time you post, scroll, or share, take a moment to think about what you’re giving up. Privacy isn’t something we can afford to take for granted — it’s what keeps us free in a world that’s always watching. Let’s protect it, not just for ourselves, but for the people we care about and future generations to come!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=bc65ea595719" width="1" height="1" alt=""><hr><p><a href="https://medium.com/dsc-sastra-deemed-to-be-university/privacy-isnt-a-myth-but-basic-math-bc65ea595719">Privacy Isn’t a Myth but Basic Math</a> was originally published in <a href="https://medium.com/dsc-sastra-deemed-to-be-university">Developer Community SASTRA</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Exploring Rust]]></title>
            <link>https://medium.com/dsc-sastra-deemed-to-be-university/exploring-rust-39392df9c092?source=rss----64bfb37ac01b---4</link>
            <guid isPermaLink="false">https://medium.com/p/39392df9c092</guid>
            <category><![CDATA[memory-management]]></category>
            <category><![CDATA[embedded-systems]]></category>
            <category><![CDATA[rust-programming-language]]></category>
            <category><![CDATA[programming-languages]]></category>
            <dc:creator><![CDATA[Arka]]></dc:creator>
            <pubDate>Mon, 20 Jan 2025 13:25:22 GMT</pubDate>
            <atom:updated>2025-01-20T13:25:22.160Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*AOGmRUHszrrKGh-dBpEpyQ.png" /></figure><blockquote>While some may downplay the significance of personal side projects, many of the world’s most groundbreaking innovations have emerged from such endeavours.</blockquote><h3>History</h3><p>A similar story unfolded with <a href="https://www.rust-lang.org/"><em>Rust</em></a>. It all began when Graydon Hoare, a 29-year-old programmer at Mozilla, became frustrated with his apartment’s malfunctioning elevator. He knew that the issue was stemming from the software controlling it and more specifically , the underlying programming language behind it. This sparked his curiosity and drive to try out writing a new language that fixes this ; a language that was supposed to fix the issues that come along with writing code for hardware in C/C++ ; the problem with <a href="https://www.w3schools.com/c/c_memory_management.php"><em>memory management</em></a><em> </em>. The solution was to design a language that struck the perfect balance between hardware control and memory management. Before Rust, the programming world was largely split between two domains: languages like C and C++ for high-performance or embedded applications and languages like Java, JavaScript and Python for building real-world applications more easily. Rust bridged this gap by combining the best of both worlds — eliminating the need for manual memory management while introducing strict rules to ensure safe and efficient data handling within programs. Code is harder to write but once compiled it’s memory safe and concurrency safe.</p><p>Graydon Hoare began designing Rust in 2006, and after years of iteration and refinement, a turning point came in 2009 when Mozilla decided to fund its development. By 2010, Rust had attracted a growing team of talented coders and programmers from around the world. During this time, critical features were introduced, including the Rust <em>compiler</em>, which converts Rust code into executable software and the <em>“ownership”</em> system, which ensures that each piece of data is tied to only one variable at a time, significantly reducing memory issues.</p><p>Rust’s design cleverly implemented decades of prior research into practical tools for modern programming. By 2013, Rust had achieved a rare combination: <em>performance</em> close to bare-metal languages like C and C++ while maintaining robust <em>memory safety</em>. This was complemented by a welcoming and inclusive community that encouraged contributions from developers of all backgrounds and expertise levels.</p><p>In 2015, Rust released its first stable version, allowing companies to begin using it for production-grade software. Mozilla’s Servo web browser engine became the first major software built with Rust in 2016 ; paving the way for adoption by other tech giants, including Samsung, Microsoft, and Meta (formerly Facebook). By 2020, modern companies like Dropbox and Discord were leveraging Rust to enhance their products. Amazon Web Services even discovered that applications written in Rust consumed half the electricity compared to similar ones written in Java!!</p><p>In 2021, major companies united to established a non-profit organization dedicated to supporting Rust’s ongoing development by its community of volunteer contributors. By this year i.e 2024, Rust has solidified it’s reputation , with the <a href="https://survey.stackoverflow.co/2024/technology#2-programming-scripting-and-markup-languages">Stack Overflow Developer Survey</a> for the 9th time naming it the most loved programming language for its unparalleled combination of performance, safety, and developer experience.</p><p>Now Let’s explore some features of Rust.</p><h4>Memory Safety without Garbage collection</h4><p>Popular languages like Java , JavaScript and Python all use garbage collectors , components that periodically clean up the memory as a piece of software is running but along with that comes the loss of low-level control for the programmer. Rust makes it easier , it gives memory safety to programmers but without garbage collection and hence providing more accessibility.</p><pre>fn main() {<br>    let s1 = String::from(&quot;Hello&quot;); <br>    let s2 = s1; <br>    // println!(&quot;{}&quot;, s1);<br>    let s3 = s2.clone(); <br>    println!(&quot;{}&quot;, s2); <br>    println!(&quot;{}&quot;, s3); <br>}</pre><p>Here first the ownership is allocated to <em>s1</em> and then <em>s1’s</em> ownership is allocated to <em>s2</em> and hence <em>println(“{}”,s1)</em> will throw error as s1 doesn’t own the value thus eliminating the possibility of dangling references or multiple owners.</p><p>But next <em>s3 </em>explicitly clones <em>s2</em> hence there is no ownership issue and thus the next print statement works just fine.</p><p>Lets compare a similar code in C++</p><pre>#include &lt;iostream&gt;<br>#include &lt;string&gt;<br>using namespace std;<br>int main() {<br>    string s1 = &quot;Hello&quot;;<br>    string s2 = s1; <br>    cout &lt;&lt; s1 &lt;&lt; std::endl;<br>    cout &lt;&lt; s2 &lt;&lt; std::endl;<br>    string* s3 = new std::string(&quot;World&quot;);<br>    delete s3; <br>    // std::cout &lt;&lt; *s3; <br>}</pre><p>In this code <em>s1</em> and <em>s2 </em>are two independent variables and both are valid.Hence both the “<em>cout” </em>commands will work , something that rust doesn’t allow.Variable <em>s3</em> on the other hand is dynamically allocates memory initialised with the string <em>world</em> , <em>s3</em> is a raw pointer to this dynamically allocated memory. <em>delete s3 </em>means the allocated memory is explicitly removed and hence <em>s3 </em>becomes a dangling pointer i.e a pointer who’s memory has been already been freed and hence the <em>cout</em> will not work and hence commented out.</p><h4>Zero Cost Abstraction</h4><p>This core feature in Rust allows developers to write <em>high level</em> code without introducing any runtime performance <em>overhead </em>.Under this concept abstract constructs and higher-order programming concepts that can be used without having a negative impact on <em>execution speed</em> or <em>efficiency</em>.</p><p>Rust also allows developers to write code that is as <em>fast</em> and <em>efficient</em> as optimised low-level code, while also taking advantage of high-level abstractions that make programming easier and more secure.Another advantage of Rust’s zero-cost abstractions is that they allow developers to maintain precise control over system resources, similar to low-level system programming languages.</p><pre>fn main() {<br>    let numbers = vec![1, 2, 3, 4, 5];<br>    let sum_of_squares: i32 = numbers.iter()<br>        .map(|&amp;x| x * x) <br>        .filter(|&amp;x| x % 2 == 0)<br>        .sum(); <br>    println!(&quot;Sum of even squares: {}&quot;, sum_of_squares);<br>}</pre><p>Rust iterator methods like<em> .map() </em>, <em>.filter()</em> , <em>.sum()</em> are lazy and don’t create intermediate collections or perform extra memory allocations.</p><p>Instead <em>.sum()</em> builds a chain of operations that are executed in single pass.Here abstractions like <em>.map()</em> and <em>.filter() </em>are zero-cost , the compiler inlines them into efficient machine code during compilation. Hence all of this makes the code more expressive and concise yet without any overhead.</p><h4>Concurrency</h4><p>Rust has built in support for concurrency through things like its <em>type system</em> and <em>ownership</em> concept.The ownership system enforces strict rules for data access, and its <em>borrowing model</em> prevents <em>data races</em> by allowing controlled, simultaneous access. This ensures that multiple threads can work on shared data without introducing memory-related issues making it an excellent choice for systems that need to run in parallel.</p><pre>use std::thread;<br>use std::sync::mpsc; <br>fn main() {<br>    let (tx, rx) = mpsc::channel();<br>    let handle = thread::spawn(move || {<br>        let data = vec![1, 2, 3, 4, 5];<br>        for value in data {<br>            tx.send(value).unwrap(); <br>            println!(&quot;Sent: {}&quot;, value);<br>        }<br>    });<br>    for received in rx {<br>        println!(&quot;Received: {}&quot;, received);<br>    }<br>    handle.join().unwrap(); <br>}</pre><p>Here <em>mpsc::channel() </em>creates<em> tx</em> and <em>rx </em>for sending and receiving messages. <em>thread :: spawn ()</em> creates a new thread. The move keyword makes sure that ownership of <em>tx</em> is moved into the thread , allowing thread to use it . Inside the thread a vector of numbers is iterated and each number is sent using <em>tx.send()</em> . The main thread receives messages using the<em> rx</em> channel in a for loop, which processes the data as it arrives.</p><p>The ownership of the sent data (value) is transferred through the channel, so no data is shared unsafely between threads. This avoids potential race conditions.</p><p>The <em>handle.join()</em> ensures the main thread waits for the spawned thread to finish before exiting. This code hence is an example of how concurrency can be implemented in Rust.</p><h4>Cargo package manager</h4><p>Rust’s integrated package manager , <a href="https://doc.rust-lang.org/cargo/index.html"><em>Cargo</em></a>, significantly improves project management, dependency tracking and the build process, helping produce a better, well-structured development workflow. As a matter of fact Rust was actually the first systems programming language to have a standard package manage.</p><pre>[workspace]<br>resolver = &quot;2&quot;<br>members = [<br>    &quot;libs/*&quot;,      <br>    &quot;services/*&quot;,  <br>    &quot;tests/unit&quot;,  <br>    &quot;benchmarks/throughput&quot;,  <br>    &quot;docs&quot;          <br>]<br>exclude = [<br>    &quot;target/&quot;,  <br>    &quot;tmp/&quot;      <br>]<br>[workspace.package]<br>rust-version = &quot;1.70&quot;  <br>edition = &quot;2021&quot;<br>license = &quot;MIT&quot;       <br>authors = [&quot;moderator&lt;moderator@teamdcs.com&gt;&quot;] <br>[workspace.dependencies]<br>log = &quot;0.4&quot;           <br>serde = { version = &quot;1.0&quot;, features = [&quot;derive&quot;] }  <br>serde_json = &quot;1.0&quot;    <br>regex = &quot;1.5&quot;          <br>dotenv = &quot;0.15&quot;        <br><br>[dependencies]<br>anyhow = &quot;1.0.75&quot;       <br>base64 = &quot;0.21.5&quot;       <br>bytesize = &quot;1.3&quot;</pre><h4>Use-cases</h4><p>Use-cases of Rust are widely varied , since it is a general purpose language with direct access to both hardware and memory. Let’s explore a few use cases.</p><p><strong><em>CLI Tools</em></strong> : CLI tools or Command Line Interface Tools can be efficiently made due to its <em>efficient</em> machine code and it’s <em>expressive</em> syntax. Check out the rust <a href="https://rust-cli.github.io/book/index.html"><em>doc</em></a> to learn how to make CLI tools in Rust.</p><p><strong><em>Web Development</em></strong> : The <em>async</em> programming model and it’s performance make it fitting to make high performance web-servers APIs and backend services.Check out the rust <a href="https://rustwasm.github.io/docs/book/"><em>doc</em></a> to learn how to make browser-native libraries in Rust.</p><p><strong><em>Web3 and Blockchain</em></strong> : In recent times Rust has become a big player in the web3 ecosystem. With its multiple features of <em>memory safety</em> , <em>concurrency</em> , <em>performance</em> it is widely used to make smart contracts for blockchain. Some examples are <a href="https://solana.com/docs/programs/rust"><em>Solana</em></a> , <a href="https://crates.io/crates/polkadot"><em>Polkadot</em></a>.</p><p><strong><em>Embedded Systems and IoT </em></strong>: It all started with making low level programming better and hence it makes sense that rust is an excellent choice to program small hardware systems with it’s minimal runtime and great control over memory layout. Check out the rust <a href="https://rustwasm.github.io/docs/book/"><em>doc</em></a> to learn how to program embedded devices in Rust.</p><p><strong><em>Operating Systems</em></strong> : Rust was originally created to solve an operating system issue. Hence it can be used to build operating systems, kernels, device drivers, or other low-level components where control over memory and performance is crucial. Eg : <a href="https://www.redox-os.org/"><em>Redox</em></a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=39392df9c092" width="1" height="1" alt=""><hr><p><a href="https://medium.com/dsc-sastra-deemed-to-be-university/exploring-rust-39392df9c092">Exploring Rust</a> was originally published in <a href="https://medium.com/dsc-sastra-deemed-to-be-university">Developer Community SASTRA</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Laplace Transform in Cybersecurity]]></title>
            <link>https://medium.com/dsc-sastra-deemed-to-be-university/laplace-transform-in-cybersecurity-17699853b794?source=rss----64bfb37ac01b---4</link>
            <guid isPermaLink="false">https://medium.com/p/17699853b794</guid>
            <category><![CDATA[laplace-transforms]]></category>
            <category><![CDATA[cryptography]]></category>
            <category><![CDATA[cybersecurity]]></category>
            <dc:creator><![CDATA[V V Shivashaila Shrii ]]></dc:creator>
            <pubDate>Sat, 14 Dec 2024 14:01:28 GMT</pubDate>
            <atom:updated>2024-12-14T14:01:27.917Z</atom:updated>
            <content:encoded><![CDATA[<p>In today’s digital age, protecting sensitive information and ensuring the security of digital systems hinges on cybersecurity. As cyber threats become more sophisticated, we need smarter mathematical techniques to enhance security. The <strong>Laplace transform</strong> is one such technique. While it’s used in engineering and physics, it now has a significant influence on cybersecurity in fields like <strong>signal processing, system modelling and cryptography</strong>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/626/0*cOXeUBnibDsd1v23.jpg" /></figure><p>The use of this great mathematical technique in <strong>Digital Signal Processing</strong> is that it converts a signal from one domain to another. The two types of transforms include continuous and discrete ones. The continuous ones are used for continuous signals and discrete ones are used for discrete time signals. It analyses the signals in the complex frequency domain, which is useful for analysing stability and performance of control systems. Other transforms which are also used in the same niche are <strong>Fourier transforms, Z transforms</strong> and so on.</p><p>The general form of Laplace transform is :</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/839/1*mWDI4KEvYnH4uDTITLVT6A.png" /><figcaption>One-sided Laplace Transform</figcaption></figure><p>For DSP, we use two-sided or <strong>bilateral Laplace Transform</strong> which integrates from −∞ to ∞.</p><p>Laplace transform in <strong>Digital Signal Processing (DSP)</strong> –</p><figure><img alt="The above image shows how a signal in time domain x(t) is converted to s-domain. This is done by the formula x(t)e^-(decay constant)t. After this step, Fourier transform of the result has to be taken and then each spectrum has to be arranged in s-plane such that positive ones should be in the upper half and the negative ones should be in the lower half." src="https://cdn-images-1.medium.com/max/923/1*suxPm9WeL4kL8ldwi_hlBw.png" /><figcaption>The above image shows how a signal in time domain x(t) is converted to s-domain. This is done by the formula x(t)e^-(decay constant)t. After this step, Fourier transform of the result has to be taken and then each spectrum has to be arranged in s-plane such that positive ones should be in the upper half and the negative ones should be in the lower half.</figcaption></figure><p>Additionally, Cybersecurity systems are made up of many interconnected parts, each with its own changing behaviour. Trying to model these systems time to time can be difficult because it involves dealing with complex differential equations. The Laplace transform allows for the characterization of system responses, stability analysis, and control system design. For example, the <strong>stability of a firewall system</strong> or the <strong>robustness of an intrusion detection system</strong> can be analysed by this method.</p><p>Another major use of this tool is in <strong>Cryptography</strong>. It is the process of hiding or coding information so that only the person a message was intended for can read it. It is a technique of <strong>securing communication</strong> by converting plain text into cipher text. This art has been used to code messages for thousands of years and continues to be used in bank cards, computer passwords, and ecommerce. An <strong>iterative method</strong> is used for both <strong>encoding</strong> and <strong>decoding</strong>. This process involves applying the Laplace transform to a suitable function for <strong>encrypting</strong> the plaintext, and then using the corresponding inverse Laplace transform to <strong>decrypt</strong> it.</p><p>Laplace transform in cryptography -</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/923/1*xZUDR6FmNPXrAZNKMMSRNw.png" /><figcaption>Here, SECURITY is encoded as RLZZDFJPXHFX and the key used is 1 10 3 147 314 517 2619 15596 36824 98304 1257157 8227288.</figcaption></figure><p>There are ample of different <strong>algorithms</strong> for this method. The pictures shown below is an example of one such algorithm.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/935/1*f8-FYYNEtP2zpg7taDjIZQ.png" /><figcaption>The above image is for encryption. This algorithm uses laplace transform for f(t). Here, message Di is converted to Ei by the above formula. The value of ck, Dj, m and alpha are taken for various ranges.</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/932/1*njx52c9N20JsvF1Yvy0yUA.png" /><figcaption>The above one is for decryption. This algorithm uses inverse laplace. Here, the function is generalized to Di and q in the function represents the length of the cipher text. The value of n, ci, Dj, m and alpha are taken for various ranges.</figcaption></figure><p>Moreover, the Laplace transform’s effectiveness depends on the quality of the input data. <strong>Noisy or incomplete data</strong> can lead to inaccurate results, limiting the <strong>transform’s utility</strong> in certain scenarios. Therefore, ongoing research is necessary to develop robust preprocessing techniques that can enhance the <strong>quality of data</strong> before applying the Laplace transform.</p><p>In conclusion, the Laplace transform is a powerful mathematical tool with significant applications in cybersecurity. Its ability to <strong>simplify complex systems</strong>, enhance signal processing, and improve cryptographic algorithm makes it invaluable for protecting digital infrastructures. As cyber threats continue to evolve, leveraging advanced mathematical techniques like the Laplace transform will be crucial for staying ahead of malicious actors and ensuring the <strong>security of sensitive information</strong>.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=17699853b794" width="1" height="1" alt=""><hr><p><a href="https://medium.com/dsc-sastra-deemed-to-be-university/laplace-transform-in-cybersecurity-17699853b794">Laplace Transform in Cybersecurity</a> was originally published in <a href="https://medium.com/dsc-sastra-deemed-to-be-university">Developer Community SASTRA</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Datafication: Turning boring bits into mind-blowing hits!]]></title>
            <link>https://medium.com/dsc-sastra-deemed-to-be-university/datafication-meet-one-of-the-most-underrated-tool-in-the-tech-world-25b739ec37d7?source=rss----64bfb37ac01b---4</link>
            <guid isPermaLink="false">https://medium.com/p/25b739ec37d7</guid>
            <category><![CDATA[technology]]></category>
            <category><![CDATA[science]]></category>
            <category><![CDATA[education]]></category>
            <category><![CDATA[software-development]]></category>
            <dc:creator><![CDATA[Mathumiitha Srinivasan ]]></dc:creator>
            <pubDate>Sat, 02 Mar 2024 03:54:02 GMT</pubDate>
            <atom:updated>2024-03-02T03:54:11.738Z</atom:updated>
            <content:encoded><![CDATA[<p>In today’s rapidly evolving tech world, it’s surprising that the concept of datafication is often overlooked and underrated. Datafication, the process of collecting and analyzing data, has become an essential component in driving innovation and success for businesses across industries. Yet, many still fail to recognize its true value.</p><p>By harnessing the power of data, companies are able to make more informed decisions, identify patterns and trends, and gain a competitive edge. It not only helps in understanding customer behavior but also enables businesses to predict future outcomes and tailor products and services accordingly. From e-commerce giants utilizing data to personalize recommendations to healthcare organizations using data to improve patient outcomes, the possibilities are endless.</p><p>However, the lack of understanding and underestimation of datafication’s impact remains a prevalent issue. In this article, we will delve into why datafication is underrated in the tech world and explore the ramifications of this overlooking. From misconceptions to reluctance in adopting data-driven approaches, we’ll uncover the underlying reasons and shed light on the immense potential that datafication holds for businesses in the digital age.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*p4kPiYTgPTIdO55m" /></figure><h3>The Significance Of Datafication In The Tech World</h3><p>Datafication plays a crucial role in the tech world, driving innovation and fueling advancements in various sectors. The availability of vast amounts of data allows businesses to identify patterns, trends, and correlations that were previously hidden. By analyzing this data, companies can gain a deeper understanding of customer behavior and preferences. For instance, Netflix uses datafication to analyze viewers’ watching habits and make personalized recommendations, resulting in increased customer satisfaction and engagement. Similarly, online retailers like Amazon use data to tailor product recommendations based on individual browsing and purchase history.</p><p>Furthermore, datafication enables businesses to predict future outcomes and make proactive decisions. By analyzing historical data, companies can identify trends and patterns that help them anticipate market shifts, customer demands, and potential risks. This predictive capability allows organizations to stay ahead of the competition and adapt their strategies accordingly. For example, Uber uses data to predict demand patterns and optimize driver availability, ensuring efficient transportation services.</p><h3>Examples Of Successful Datafication Strategies</h3><p>One of the key impacts of datafication is the ability to personalize products and services. By analyzing customer data, businesses can understand individual preferences and tailor their offerings accordingly. Several companies have successfully implemented datafication strategies, showcasing the transformative power of data in driving business success. These examples serve as inspiration for organizations looking to harness the potential of datafication in their own operations.</p><ol><li><strong>Amazon:</strong> Amazon is a prime example of a company that has leveraged datafication to revolutionize e-commerce. By analyzing customer data, purchase history, and browsing behavior, Amazon is able to provide personalized product recommendations and offers. This data-driven approach has significantly contributed to its success as a leading online marketplace.</li><li><strong>Netflix:</strong> Netflix is renowned for its recommendation system, which is powered by datafication. By analyzing viewers’ watching habits and preferences, Netflix suggests personalized content, leading to increased user engagement and satisfaction. This data-driven approach has helped Netflix become a dominant player in the streaming industry.</li><li><strong>Tesla: </strong>Tesla, the electric car manufacturer, utilizes datafication to continuously improve its vehicles’ performance and safety. By collecting and analyzing sensor data from its vehicles, Tesla can identify areas for improvement, push software updates, and enhance the overall driving experience. This data-driven approach has positioned Tesla as an industry leader in electric vehicle technology.</li><li><strong>Google:</strong> Google, the search engine giant, leverages datafication to deliver highly relevant search results to its users. By analyzing search queries, user behavior, and other data points, Google continually refines its search algorithms to provide accurate and personalized search results. This data-driven approach has solidified Google’s dominance in the search engine market.</li></ol><p>These examples demonstrate the power of datafication in driving innovation, personalization, and operational excellence. By learning from these success stories, businesses can gain insights into how datafication can be effectively implemented in their own industries.</p><h3>Challenges And Risks Of Datafication</h3><p>While datafication presents immense opportunities, it also comes with challenges and risks that organizations must navigate. These challenges can hinder the effective implementation of data-driven strategies and impact business outcomes.</p><ol><li><strong>Data quality and integrity:</strong> Ensuring data quality and integrity is a critical challenge in datafication. The accuracy, completeness, and reliability of data can significantly impact the insights derived from data analysis. Organizations must invest in data quality management processes and technologies to maintain the integrity of their data.</li><li><strong>Data privacy and security:</strong> With the increasing volume of data being collected, organizations face the challenge of safeguarding sensitive information. Data breaches and privacy concerns can have severe consequences, including reputational damage and legal implications. Organizations must implement robust data privacy and security measures to protect customer data and comply with regulations.</li><li><strong>Data silos and integration:</strong> Many organizations struggle with data silos, where data is fragmented and scattered across different systems or departments. This fragmentation hampers the ability to gain holistic insights and limits the effectiveness of datafication strategies. The integration of data from disparate sources is crucial for deriving meaningful insights and maximizing the value of data.</li><li><strong>Lack of skilled talent:</strong> Data analysis and interpretation require specialized skills and expertise. The shortage of data scientists, analysts, and other professionals with the necessary skills poses a challenge for organizations seeking to leverage datafication. Businesses must invest in talent acquisition and development to build a data-driven workforce.</li><li><strong>Bias and ethical considerations:</strong> Data-driven decision-making can be susceptible to biases, both in data collection and analysis. Biased data can lead to biased insights and decisions, perpetuating inequalities or discriminatory practices. Organizations must be mindful of potential biases and implement ethical frameworks to ensure fairness and accountability in datafication.</li></ol><p>Despite these challenges, organizations that proactively address them can navigate the risks associated with datafication and unlock its full potential. By implementing robust data governance frameworks, investing in data privacy and security measures, and fostering a culture of ethical data usage, businesses can overcome the challenges and reap the rewards of data-driven strategies.</p><h3>Ethical Considerations In Datafication</h3><p>The rise of datafication has raised ethical concerns that organizations must address to ensure responsible and ethical data usage. As businesses collect and analyze vast amounts of data, they must consider the following ethical considerations:</p><ol><li><strong>Data privacy and consent:</strong> Organizations must obtain informed consent from individuals when collecting their data and ensure transparency in how it will be used. Respecting individuals’ privacy rights and providing them with control over their data is essential for maintaining trust.</li><li><strong>Data security: </strong>Organizations have a responsibility to protect the data they collect from unauthorized access, breaches, and misuse. Implementing robust security measures, encryption techniques, and regular security audits is crucial to safeguard sensitive information.</li><li><strong>Fairness and bias:</strong> Data-driven decision-making must be fair and free from biases. Organizations should assess their data collection and analysis processes for potential biases and take steps to mitigate them. Fairness in data usage helps prevent discrimination and ensures equal opportunities for all individuals.</li></ol><p>By considering these ethical considerations, organizations can establish a framework for responsible datafication and ensure that data-driven strategies align with societal values and norms.</p><h3>The Future Of Datafication In The Tech World</h3><p>The future of datafication looks promising, with advancements in technology and the increasing availability of data. As technology continues to evolve, datafication will play an even more significant role in shaping the tech world.</p><ol><li><strong>Artificial Intelligence and Machine Learning:</strong> The integration of artificial intelligence (AI) and machine learning (ML) with datafication will enable more advanced data analysis and predictive capabilities. AI-powered algorithms will uncover insights from complex and unstructured data, leading to more accurate predictions and improved decision-making.</li><li><strong>Internet of Things (IoT):</strong> The proliferation of IoT devices will generate an unprecedented amount of data. This data, when combined with data from other sources, will provide organizations with a more holistic view of their operations and customers. The integration of IoT data with datafication will fuel innovation and enable organizations to create new products and services.</li><li><strong>Data-driven innovation:</strong> Datafication will continue to drive innovation across industries. By leveraging data, organizations can identify emerging trends, develop new business models, and create disruptive products and services. The ability to extract insights from data will be a key differentiator for businesses in the future.</li><li><strong>Data privacy and regulation:</strong> As datafication becomes more prevalent, the need for robust data privacy regulations will intensify. Governments and regulatory bodies will play a crucial role in setting guidelines and ensuring responsible data usage. Organizations will need to adapt to evolving regulations and prioritize data privacy to maintain public trust.</li></ol><p><strong>In conclusion,</strong> datafication is poised to shape the future of the tech world. Its potential to drive innovation, improve decision-making, and create value is undeniable. Organizations that embrace datafication and invest in data-driven strategies will be at the forefront of the digital revolution.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=25b739ec37d7" width="1" height="1" alt=""><hr><p><a href="https://medium.com/dsc-sastra-deemed-to-be-university/datafication-meet-one-of-the-most-underrated-tool-in-the-tech-world-25b739ec37d7">Datafication: Turning boring bits into mind-blowing hits!</a> was originally published in <a href="https://medium.com/dsc-sastra-deemed-to-be-university">Developer Community SASTRA</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[3D Chips— The future of computing!]]></title>
            <link>https://medium.com/dsc-sastra-deemed-to-be-university/3d-chips-the-future-of-computing-743170bc8e8e?source=rss----64bfb37ac01b---4</link>
            <guid isPermaLink="false">https://medium.com/p/743170bc8e8e</guid>
            <dc:creator><![CDATA[vijay baradwaj]]></dc:creator>
            <pubDate>Tue, 30 Jan 2024 01:33:50 GMT</pubDate>
            <atom:updated>2024-01-30T01:35:13.915Z</atom:updated>
            <content:encoded><![CDATA[<p>The tiny, humble, yet the powerhouse of the electronic devices we use, the humble transistors has come a long way since its inception, from a MOSFET with a gate size of 20 micrometers in 1968 to 2 nanometer gate FinFETs under risk production from 2024, the devices have become incredibly small and in the inverse, have become insanely powerful and reliable in terms of its performance and power to output ratio. From using 5 kB of RAM and 32kB of memory for the Apollo 11 mission in 1969, now everything has moved a minimum of Giga and Tera scales for the memory. While the gate size has evolved by manifolds over the years with regard to Moore’s Law which is the observation that the number of transistors in an integrated circuit (IC) doubles about every two years.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*CliJ-h7oylElHvEE" /></figure><p>While the transistor’s gate size drastically reduced, the architecture of placement of chips has also evolved through the years.</p><h4><strong>2D System on Chip ( 2D SoC )</strong></h4><p>Traditional chip design process involves placement of the transistors on the wafer side by side, making the layout in a 2D format.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/223/1*23koAO218XtldSwUbfvKMQ.jpeg" /><figcaption>Picture Source: Challenges and recent prospectives of 3D heterogeneous integration- sciencedirect.com</figcaption></figure><p>This method of chip layout in the wafer requires:</p><p>1: A lot of space on the wafer, as less components can be placed on the sides as each chip requires its own space, which in turn decreases the chip density for the wafer.</p><p>2: Complex electric network layout for the various ICs to perform optimally.</p><p>3: Higher time required for data transfer as the memory chip might be located not near to the processor and the memory bus follows a convoluted path which reduces the data transfer rates.</p><p>4: Increased bulkiness of the device as the final board will be larger and bulkier.</p><p>5: As the number of soldered joints are high and as every single chip might have its own joint, the risk of failure is very high.</p><p>6: With less density of chips on a wafer, the cost of manufacturing soars. Considering a single 30 cm diameter wafer can cost around $1000 dollars for a wafer containing sub 150 nm architecture and increases drastically with reduced length of chip architecture.</p><h4>2.5 D System on Chip ( 2.5 D SoC )</h4><p>With the following parameters in mind, the manufacturing process moved initially to 2.5D which involved the placement of an interposer. Interposers are wide, extremely fast electrical signal conduits used between wafers in a 2.5D configuration.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/605/0*geWKKF29essEepAA" /><figcaption>( Picture Source: Architecture, Chip, and Package Co-design Flow for 2.5D IC Design Enabling Heterogeneous IP Reuse (researchgate.net) )</figcaption></figure><p>2.5 D Chips is just a better optimised version of 2D Chips, the 2D Chips lack the interposers the 2.5 D ICs possess. As interposers just manage power supply and give better thermal stability, With Moore’s law and the laws of physics reducing the possibility of a sub &lt; 2 nm gate IC, it becomes inevitable for the manufacturers to move to a different assembly of ICs where the existing issues can be addressed and fixed.</p><h4>3D System on Chip ( 3D SoC )</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/955/0*1dBewhzyB3qEFNoN" /><figcaption>Picture Source: 2.5D and 3D ICs: New Paradigms in ASIC ( einfochips.com )</figcaption></figure><p>3D SoCs is manufactured with chips stacked over each upto 16 ICs over each, which effectively reduces the area occupied in 2D and 2.5D ICs. By vertically stacking the chips, the advantages are:</p><p>1: Better space management as the ICs on the wafer are increased and more ICs can be stacked over the same IC on the same wafer reducing the lateral usage which increases the space on the sides.</p><p>2: The stacking process makes way for a less convoluted electric network for a better power supply and the network design becomes easy and has less joints.</p><p>3: Data transfer speed increases by manifolds as the distance between the processor and the memory drastically reduces and with the memory buses having a less turbulent path to take, the data transfer speed increases exponentially.</p><p>4: With fewer joints, the possibility of failure reduces and in case of any issues, troubleshooting becomes easy.</p><p>5: 3D Chips ICs can reach upto a speed of 100 GHz for data transfer within the SoC.</p><h4>Conclusion :</h4><p>Intelligent use of space, power in the wafer has proven to be the real game changer, with reduced space, power usage, the chips have conversely become more efficient and more powerful than its predecessors. While 3D stacking is still under experimental usage and not out for commercial usage yet, the initial signs are promising and with AI and Data taking over the reigns, a faster mode for data transfer and processing the data is required and 3D ICs stand synonymous for the same.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=743170bc8e8e" width="1" height="1" alt=""><hr><p><a href="https://medium.com/dsc-sastra-deemed-to-be-university/3d-chips-the-future-of-computing-743170bc8e8e">3D Chips— The future of computing!</a> was originally published in <a href="https://medium.com/dsc-sastra-deemed-to-be-university">Developer Community SASTRA</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Unity Settings for a Seamless VR Experience]]></title>
            <link>https://medium.com/dsc-sastra-deemed-to-be-university/unity-settings-for-a-seamless-vr-experience-2776f424ce6d?source=rss----64bfb37ac01b---4</link>
            <guid isPermaLink="false">https://medium.com/p/2776f424ce6d</guid>
            <category><![CDATA[virtual-reality]]></category>
            <category><![CDATA[unity]]></category>
            <dc:creator><![CDATA[Math.CS]]></dc:creator>
            <pubDate>Thu, 04 Jan 2024 14:43:10 GMT</pubDate>
            <atom:updated>2024-01-04T14:43:10.373Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1000/1*9w-MahedNwKEVfN4DEkqiA.jpeg" /></figure><p>Unity is a Game Engine developed by Unity Technologies to work across platforms ranging from Desktops and Phones to even VR in the recent past. In Unity, there are some choices that are presented to us when we create new projects like 2D,3D, AR Core, etc. Most of the time, the project doesn’t change too much in the development process in terms of the settings it requires to function as required. But, when it comes to VR (Virtual Reality) in Unity, it is very important to make changes from the default settings for it to work properly. In this article, we will set up Unity for VR step-by-step and understand the reasoning for each step along the way.</p><p>But before we get into the technicalities, this article is written with Unity 2022.3.2f1 as a reference and the VR device referred to in this post is Oculus Quest 2. There might be some minor changes if you are using a different version than the one mentioned here, but the settings are mostly the same. Let’s get started then.</p><ol><li>Create a new 3D Core project. Since VR is usually associated with a multi-dimensional viewing experience, a 3D core is used.</li><li>Go to Edit &gt;&gt; Project Settings and click on XR Plugin Management. Click on Install XR Plugin Management. This might take some time depending on your system. XR Plugin Management is the package that provides a simple way to manage XR plugins from loading and initialization to build support for XR.</li><li>Now this window will be visible, if the installation is successful.</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/796/1*EOosFT4hRU_QHNeHD9WgRA.png" /></figure><p>Click on the computer symbol highlighted in red in the above image and check Oculus. Similarly, click on the tab with the Android symbol and check Oculus there too. Once this is done, close the window. <br>Here, we have selected Oculus as the plugin provider for Android because the Oculus device is powered by the Android OS and we want the project to work in that device.</p><p>4. Now, go to Window &gt;&gt; Package Manager, and in the drop-down menu next to the plus symbol in the top left corner, click on Packages: Unity Registry. In the packages section, scroll down to find the XR Interaction Toolkit. In the pane on the right side, click on install.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/996/1*PyJUynYJH0NMk8-ykVEOvw.png" /></figure><p>A popup will appear asking if Unity can be restarted. Make sure to give <strong>Yes</strong>. Then, a popup titled “XR InteractionLayerMask Update Required” appears. Click on <strong>I Made a Backup, Go Ahead</strong>.<br>XR Interaction Toolkit(XRI) is responsible for handling and managing how we interact in VR. For example, how clicking a button in the controller is transformed into functionality is all handled by XRI.</p><p>5. After Unity Editor restarts again,head over to the XR Interaction Toolkit in the Package Manager. Now, click on the tab named Samples,which will be visible in the right pane.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/993/1*RDp1aPAWY4en98taoydU2w.png" /></figure><p>Under Starter Assets, click on Import. Once it’s done, close the window. In the project, you would be able to find the package we just imported in Assets &gt;&gt; Samples &gt;&gt; XR Interaction Toolkit &gt;&gt; 2.3.2(Any version number).<br>The Starter Assets package is very important, as it contains default Input Action and Input Bindings, that contain presets for movement, turning, etc.</p><p>6. This is what the Starter Assets package looks like.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*xN0T56kwH_bzz0TtC_wsxQ.png" /></figure><p>Now, click on any file that has this icon given below.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/82/1*XYCHdLLmAZaLWgu-MwANPQ.png" /></figure><p>A pane similar to this will be visible in your in the Inspector tab.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/395/1*Tj6Y9tfzCKvH2uXOTFBoAg.png" /></figure><p>Now, click on the button highlighted in the image above. Perform the above step for all the files that have this icon.<br>Why are we doing this? Well, before this step, we had a preset that contained various functionalities,but we have to tell Unity to refer to it as its default behaviour. Clicking on <strong>Add to ActionBased</strong> essentially does that.</p><p>7. This is one of the most important steps in this process. Head over to Edit &gt;&gt; Project Settings &gt;&gt; Preset Manager and make changes as given in the image below.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/807/1*nlT7q_qQM8q--iUD5SXqAA.png" /></figure><p>There is some preset that is present by default for the controllers. But, we need to manually assign the particular preset for each controller. That is why we assign the values Right and Left for the controllers. Gaze is predominantly used for providing the users with more realism while interacting in VR through eye-tracking, head-tracking, and other features in newer headsets Meta Quest Pro and HoloLens 2.<br><strong>Note:</strong> Some versions of Unity might not have the option of Gaze. In that case, just fill up the values for Right and Left. Close the window.</p><p>8. This is the last and final step. You would have noticed that the Hierarchy Window still has the Main Camera in it. Delete it and add XR Origin(VR) in its place. For that, click on the ‘+’ symbol in the top left corner of the hierarchy window and go to XR &gt;&gt; XR Origin(VR). Doing this would have added two new things to your hierarchy window: XR Origin and XR Interaction Manager.<br> XR Origin is very important as it contains the Main Camera and the Right and Left Controllers. Just like how the main camera is like the eyes for a 2D or 3D game, the XR origin plays a similar role in XR. <br>The XR Interaction Manager is basically like the interface between the interactors and interactables. Most of the methods are called through the interaction manager ensuring integrity on both ends.</p><p>Once you have completed the above steps successfully, you can start developing your project and experience it on your VR device.</p><p><a href="https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit@1.0/manual/samples.html"><strong>Samples</strong></a> <br><a href="https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit@2.5/manual/index.html"><strong>XRI</strong></a><strong><br></strong><a href="https://docs.unity3d.com/Packages/com.unity.xr.management@4.4/manual/index.html"><strong>XR Plugin Management</strong></a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=2776f424ce6d" width="1" height="1" alt=""><hr><p><a href="https://medium.com/dsc-sastra-deemed-to-be-university/unity-settings-for-a-seamless-vr-experience-2776f424ce6d">Unity Settings for a Seamless VR Experience</a> was originally published in <a href="https://medium.com/dsc-sastra-deemed-to-be-university">Developer Community SASTRA</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Internet of Medical Things (IoMT)]]></title>
            <link>https://medium.com/dsc-sastra-deemed-to-be-university/internet-of-medical-things-iomt-b4431e14a3aa?source=rss----64bfb37ac01b---4</link>
            <guid isPermaLink="false">https://medium.com/p/b4431e14a3aa</guid>
            <category><![CDATA[iot]]></category>
            <category><![CDATA[medical]]></category>
            <category><![CDATA[iomt]]></category>
            <category><![CDATA[healthcare]]></category>
            <dc:creator><![CDATA[Apurv Kumar Jha]]></dc:creator>
            <pubDate>Thu, 28 Sep 2023 10:27:21 GMT</pubDate>
            <atom:updated>2023-09-28T10:37:28.315Z</atom:updated>
            <content:encoded><![CDATA[<p><strong>Internet of Medical Things (IoMT)</strong></p><p>The Internet of Things (IoT) has completely changed how we engage with technology, from linked automobiles to smart homes. The Internet of Medical Things (IoMT), which promises to improve patient care and alter healthcare delivery, is igniting a comparable revolution in the field of healthcare. The term “IoMT” refers to a network of interconnected medical devices and software programs that gather, transmit and analyze healthcare data in order to produce more effective, individualized and easily available healthcare services. The article examines how IoMT is revolutionizing patient care and healthcare delivery.</p><p><strong>IoMT : A Landscape of Possibilities</strong></p><p>IoMT includes a wide range of medical equipment and applications, including implanted medical devices like pacemakers and neurostimulators as well as wearable fitness trackers, remote patient monitoring systems, smart insulin pens and smart insulin pumps. These gadgets have sensors, connection features and powerful analytics capabilities that let them gather and send real-time data to patients and healthcare professionals.</p><ol><li><strong>Remote Patient Monitoring</strong> : Remote patient monitoring is one of IoMT’s most important contributions. Now, from the comfort of their homes, patients with chronic diseases like diabetes, heart disease or hypertension may have their health status checked in real-time. Continuous data is sent to healthcare practitioners, allowing them to make prompt interventions, modify treatment plans and avoid problems. In addition to improving patient outcomes, this lowers hospital re-admissions and hence lowers healthcare expenditures.</li><li><strong>Personalized Medicines</strong> : IoMT makes it possible to gather enormous volumes of patient data that may be used to create individualized treatment programs. Healthcare professionals can customize therapies and drugs to meet the particular requirements of each patient by examining the health indicators and historical data for that patient. Personalized medicine, which replaces the one-size-fits-all approach, promises more effective therapies and improved patient adherence.</li><li><strong>Enhanced Accessibility</strong>: IoMT has the ability to close access to healthcare geographical disparities. Patients in rural locations or those with mobility challenges may now obtain medical advice and care without having to travel far thanks to telemedicine and virtual consultations, which are becoming more and more common. When there are public health emergencies like the COVID-19 epidemic, this increased accessibility can be very important.</li><li><strong>Improved Patient Engagement </strong>: IoMT gives people the power to manage their health more actively. Users receive real-time feedback on their health and wellness through wearable technology and smartphone applications, which motivates them to adopt healthier lifestyle choices. In order to have better educated conversations with their healthcare professionals during meetings, patients can establish fitness goals, monitor their progress and share data with them.</li><li><strong>Data-Driven Decision-Making</strong> : The Internet of Medical Things (IoMT) creates enormous databases, which when examined using artificial intelligence (AI) and machine learning algorithms, can offer insightful information on population health patterns. Using this information, healthcare organizations may decide wisely regarding the allocation of resources, preventative measures and the creation of healthcare policies.</li><li><strong>Early Disease Detection </strong>: Ongoing monitoring made possible by IoMT can aid in the early diagnosis of medical problems. A patient and their healthcare practitioner, for example, may be made aware of abnormal cardiac rhythms via a wearable ECG monitor, potentially averting a stroke or heart attack. The results for patients can be greatly enhanced by this proactive approach, which can also lighten the load on the healthcare system.</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/850/1*Pv8wg7M736_aTwkv5TjWZg.png" /><figcaption>(Reference : ResearchGate)</figcaption></figure><p><strong>Challenges and Considerations</strong></p><p>IoMT has great potential, but it also has problems that need to be fixed:</p><ol><li><strong>Data Security and Privacy</strong> : Concerns regarding data security and privacy breaches are raised when sensitive medical data is sent via networks. Strong encryption and adherence to medical data rules are necessary.</li><li><strong>Interoperability </strong>: To offer a comprehensive picture of a patient’s health, IoMT platforms and devices from various manufacturers must be able to communicate easily. The problem of ensuring interoperability is considerable.</li><li><strong>Regulatory Compliance </strong>: To guarantee patient safety and data accuracy, IoMT devices must adhere to strict standards set by the highly regulated healthcare sector.</li><li><strong>Accessibility and affordability </strong>: For underprivileged groups in particular, the cost of IoMT equipment and services might be a barrier to adoption.</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/272/1*UwFAzf7Dl8BklRvwGQW3kg.jpeg" /><figcaption>(Reference : ScienceDirect)</figcaption></figure><p><strong>Conclusion</strong></p><p>By utilizing the power of linked devices, real-time data and sophisticated analytics, the Internet of Medical Things is revolutionizing patient care and healthcare delivery. It might raise accessibility, boost patient outcomes and save healthcare expenditures. However, it also presents issues with regulation, interoperability and data security. Stakeholders in the healthcare ecosystem must work together as IoMT develops in order to overcome these obstacles and realize this game-changing technology’s full potential. By doing this, we can anticipate a time when healthcare is really patient-centric and proactive rather than merely reactive.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=b4431e14a3aa" width="1" height="1" alt=""><hr><p><a href="https://medium.com/dsc-sastra-deemed-to-be-university/internet-of-medical-things-iomt-b4431e14a3aa">Internet of Medical Things (IoMT)</a> was originally published in <a href="https://medium.com/dsc-sastra-deemed-to-be-university">Developer Community SASTRA</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How software architecture influences source code efficiency?]]></title>
            <link>https://medium.com/dsc-sastra-deemed-to-be-university/how-software-architecture-influences-source-code-efficiency-f3a447be01dd?source=rss----64bfb37ac01b---4</link>
            <guid isPermaLink="false">https://medium.com/p/f3a447be01dd</guid>
            <category><![CDATA[source-code]]></category>
            <category><![CDATA[system-architecture]]></category>
            <category><![CDATA[code-efficiency]]></category>
            <dc:creator><![CDATA[Thulasi Maharajan]]></dc:creator>
            <pubDate>Tue, 12 Sep 2023 16:20:53 GMT</pubDate>
            <atom:updated>2023-08-27T02:09:01.957Z</atom:updated>
            <content:encoded><![CDATA[<p><strong>Software development</strong> is a complex process which includes system design. System design is about the individual modules and components of the software,aggregated to deploy a software architecture. Whereas software design is one of the juvenile phases of the software development life cycle. The components are analysed and built according to stakeholder and consumer requirements. It is important to design for scalability and performance of code — <strong>code efficiency. </strong>Some algorithms are more heavy and resource-intensive while accomplishing the same task than another algorithms. Practicing creating a low file size and low resource algorithm results in an efficient program.</p><p>When determining the software architecture, it is the system that comes in the first place in the design. From system design, software and hardware design is determined. Software is becoming more important in design and is closely connected to</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/748/0*4mzEJnkmVRDMN4GZ" /></figure><p>system design, while the computer hardware can undergo more amendments, whilst the <strong>software architecture has not changed</strong>. There is increased focus on software to support engineering, programming , commissioning and operation.</p><p>Software Architecture (SA) and Source Code (SC) are two intertwined artefacts that represent the interdependent design decisions made at different levels of abstractions — High-Level (HL) and Low-Level (LL). An understanding of the relationship between SA and SC is expected to bridge the gap between SA and SC for supporting maintenance and evolution of software systems.</p><p><strong>Software Architecture (SA)</strong> represents the high-level structure of a software system. It characterizes the key design decisions taken to achieve the functional and non-functional requirements of a system. The representation of SA is described from different perspectives by using architectural styles, views, patterns, tactics and decisions. Due to the difference in the abstraction levels (i.e., HL and LL), there exists a gap between SA and Source Code (SC). This gap leads to a problematic situation exacerbated by a general lack of efforts allocated to keep the SA documentation updated. Even if SA is well documented or updated, it is still a challenge about how to embody SA in implementation and update SA and SC synchronously to ensure their consistency during software evolution. Several different approaches already address the problem of narrowing the gap to align and evolve SA with SC over time.</p><p>During the software development life cycle, architectural level elements, e.g., modules, components, decisions, tactics and patterns are transformed to low-level design elements to be implemented. SA elements of a system can also be reconstructed by reengineering the SC elements of a system. When an SA is modified to satisfy new requirements, its corresponding SC also gets changed when a software system evolves to avoid architecture erosion. When anomalies in architecturally relevant SC are detected and corrected, the corresponding SA problems should also be fixed to maintain a system. <strong>It is important to analyze and leverage the relationship between SA and SC to effectively improve the maintenance and evolution of a software system.</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/600/0*ywyOI4WyEDyPvlLO" /></figure><p><strong>Understanding of the Relationships between SA and SC</strong></p><p><strong>Transformability :</strong></p><p>Transformability means that SA can be transformed into SC. The architecture defines the structure and organization of the code. Architecture defines the components, their structural organization, their interfaces, and the interactions required to perform the required overall system functions. It also defines the sequences of interactions required to execute overall system functions.</p><p>Code is generated from or implements architecture specifications, architecture diagrams, or reference architecture. Because any architecture needs implementation. Which is done by code. Patterns, practices and project-specific decisions instruct how architecture ought to be implemented in code.</p><p>Arch and code are on opposite sides of the abstract/concrete spectrum. Architecture views reflecting the code aspect such as module views, code views, etc. directly represent the system’s code structure.</p><p><strong>Traceability :</strong></p><p>Traceability denotes that software architecture can be traced to the source code of a system and vice versa. Dynamic traceability in practice, which can help them figure out the actual operation and execution of systems, such as how system services and processes interact at runtime. Static traceability between structure and source code, because their goals are to check whether the implementation realizes the functionalities of modules defined in architecture without considering how the modules interact and execute at runtime.</p><p><strong>Consistency :</strong></p><p>Refers to the relationship between SA and SC that the intended architecture should be consistent with the implemented system. Code adheres/diverges in various ways from architecture. Either code follows architecture or architecture follows code. In agile, the evolutionary architecture follows code. Architecture and code should be changed synchronously due to, e.g., new requirements.</p><p><strong>Interplay :</strong></p><p>Interplay means that architecture quality influences code quality, and vice versa. Software architecture defines programming languages, layers, components, middleware etc., which heavily influence the relevant code patterns. This feature refers to the situation where a poorly conceived and defined architecture can cause code flaws, defects, or anomalies, whereas the subfeature Architecture leads or guides code emphasizes that architecture decisions or patterns can determine the decisions of code structure and patterns.</p><p><strong>Recovery :</strong></p><p>Architecture recovery is a process to extract architecture information from entities at the code level. The elements in architecture design (e.g., tactics, components, and interfaces) can be reflected in code. The code reflects software architecture components and structure definitions. Architecture can be identified from code artefacts (e.g., code structure or elements). Design patterns are one of them, the structure of the code (say the folder structure, and the file naming policies) will show them too (say, if you are using MVC patterns, you’ll see the models, views and controllers in different folders, quite easy to find).</p><p><strong>Interrelationships between the SA and SC relationships</strong></p><p>The five features of relationships (Transformability, Traceability, Consistency, Interplay, and Recovery) between SA and SC are reported in the literature. A few dedicated approaches and tools in the literature are employed to identify, analyze, and use specific relationships, such as consistency. It is critical to identify, analyze, and use the relationships in order to improve system qualities, especially maintainability and reliability. The cost and effort are the major barriers that hinder identifying, analyzing, and using the relationship. Therefore, the ignorance of the relationship between SA and SC could bring short-term gains for fast development and delivery, but more effort is required to maintain systems in the long run. The benefit of maintainability can be improved by analyzing and using the relationships between SA and SC. Currently, no effective approaches have been available to quantify the benefits and costs. Therefore, the unclear cost-benefit quantification and time pressure for fast delivery hinder the consideration of identifying, analyzing, and using the relationships between SA and SC.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=f3a447be01dd" width="1" height="1" alt=""><hr><p><a href="https://medium.com/dsc-sastra-deemed-to-be-university/how-software-architecture-influences-source-code-efficiency-f3a447be01dd">How software architecture influences source code efficiency?</a> was originally published in <a href="https://medium.com/dsc-sastra-deemed-to-be-university">Developer Community SASTRA</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>