<?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[Stories by Sonu Yohannan on Medium]]></title>
        <description><![CDATA[Stories by Sonu Yohannan on Medium]]></description>
        <link>https://medium.com/@sonuyohannan?source=rss-9a0ef4443060------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/0*ZGaI4N-drCKhZhcA</url>
            <title>Stories by Sonu Yohannan on Medium</title>
            <link>https://medium.com/@sonuyohannan?source=rss-9a0ef4443060------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sun, 17 May 2026 10:18:20 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@sonuyohannan/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[REST API vs SOAP API: A Comprehensive Comparison]]></title>
            <link>https://medium.com/@sonuyohannan/rest-api-vs-soap-api-a-comprehensive-comparison-23e6950ffc4e?source=rss-9a0ef4443060------2</link>
            <guid isPermaLink="false">https://medium.com/p/23e6950ffc4e</guid>
            <category><![CDATA[software-development]]></category>
            <category><![CDATA[rest-api]]></category>
            <category><![CDATA[soup]]></category>
            <category><![CDATA[rest]]></category>
            <dc:creator><![CDATA[Sonu Yohannan]]></dc:creator>
            <pubDate>Sun, 14 Jul 2024 05:20:01 GMT</pubDate>
            <atom:updated>2024-10-02T10:50:26.223Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*U1L_Cw4XyNrA2eA_" /><figcaption>Photo by <a href="https://unsplash.com/@jerrykavan?utm_source=medium&amp;utm_medium=referral">Jerry Kavan</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p>In the world of web services, REST (Representational State Transfer) and SOAP (Simple Object Access Protocol) are two of the most widely used protocols. Both have their own strengths and weaknesses, and the choice between them often depends on the specific needs of a project. Let’s dive into the key differences, use cases, and examples of each to help you decide which might be better for your needs.</p><h4>What is REST API?</h4><p>REST is an architectural style that uses standard HTTP methods (GET, POST, PUT, DELETE) to interact with resources. It is designed to be simple, scalable, and stateless.</p><p>Key Features of REST:</p><ul><li><strong>Stateless:</strong> Each request from a client to a server must contain all the information needed to understand and process the request.</li><li><strong>Cacheable:</strong> Responses must define themselves as cacheable or not to prevent clients from reusing stale data.</li><li><strong>Uniform Interface:</strong> REST uses standard HTTP methods and status codes.</li><li><strong>Flexible Data Formats:</strong> REST can use multiple formats like JSON, XML, HTML, and plain text.</li></ul><p>Example of REST API:</p><pre>GET /users/123<br>Host: api.example.com<br>Accept: application/json</pre><p>Response:</p><p>JSON</p><pre>{<br>  &quot;id&quot;: 123,<br>  &quot;name&quot;: &quot;John Doe&quot;,<br>  &quot;email&quot;: &quot;john.doe@example.com&quot;<br>}</pre><h4>What is SOAP API?</h4><p>SOAP is a protocol that relies on XML-based messaging to exchange information among computers. It is highly standardized and designed to work well in distributed enterprise environments.</p><p>Key Features of SOAP:</p><ul><li><strong>Protocol-Based:</strong> SOAP is a protocol with strict standards.</li><li><strong>Extensibility:</strong> Supports WS-Security, WS-AtomicTransaction, and other standards.</li><li><strong>Language and Platform Independent:</strong> Can be used across different platforms and languages.</li><li><strong>Built-In Error Handling:</strong> Provides detailed error messages.</li></ul><p>Example of SOAP API:</p><pre>&lt;soapenv:Envelope xmlns:soapenv=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot; xmlns:web=&quot;http://example.com/webservices&quot;&gt;<br>   &lt;soapenv:Header/&gt;<br>   &lt;soapenv:Body&gt;<br>      &lt;web:GetUser&gt;<br>         &lt;web:UserId&gt;123&lt;/web:UserId&gt;<br>      &lt;/web:GetUser&gt;<br>   &lt;/soapenv:Body&gt;<br>&lt;/soapenv:Envelope&gt;</pre><p>XML</p><pre>&lt;soapenv:Envelope xmlns:soapenv=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot; xmlns:web=&quot;http://example.com/webservices&quot;&gt;<br>   &lt;soapenv:Header/&gt;<br>   &lt;soapenv:Body&gt;<br>      &lt;web:GetUserResponse&gt;<br>         &lt;web:User&gt;<br>            &lt;web:Id&gt;123&lt;/web:Id&gt;<br>            &lt;web:Name&gt;John Doe&lt;/web:Name&gt;<br>            &lt;web:Email&gt;john.doe@example.com&lt;/web:Email&gt;<br>         &lt;/web:User&gt;<br>      &lt;/web:GetUserResponse&gt;<br>   &lt;/soapenv:Body&gt;<br>&lt;/soapenv:Envelope&gt;</pre><p>Response:</p><pre>&lt;soapenv:Envelope xmlns:soapenv=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot; xmlns:web=&quot;http://example.com/webservices&quot;&gt;<br>   &lt;soapenv:Header/&gt;<br>   &lt;soapenv:Body&gt;<br>      &lt;web:GetUserResponse&gt;<br>         &lt;web:User&gt;<br>            &lt;web:Id&gt;123&lt;/web:Id&gt;<br>            &lt;web:Name&gt;John Doe&lt;/web:Name&gt;<br>            &lt;web:Email&gt;john.doe@example.com&lt;/web:Email&gt;<br>         &lt;/web:User&gt;<br>      &lt;/web:GetUserResponse&gt;<br>   &lt;/soapenv:Body&gt;<br>&lt;/soapenv:Envelope&gt;</pre><h4>REST vs SOAP: Key Differences</h4><ul><li><strong>Data Format:</strong></li><li><strong>REST:</strong> Supports multiple formats like JSON, XML, HTML, and plain text.</li><li><strong>SOAP:</strong> Only supports XML.</li><li><strong>Performance:</strong></li><li><strong>REST:</strong> Generally faster and uses less bandwidth due to its support for JSON.</li><li><strong>SOAP:</strong> Slower due to the verbosity of XML.</li><li><strong>Security</strong>:</li><li><strong>REST:</strong> Relies on underlying protocols (like HTTPS) for security.</li><li><strong>SOAP:</strong> Built-in security features like WS-Security.</li><li><strong>Complexity</strong>:</li><li><strong>REST:</strong> Simpler to implement and use.</li><li><strong>SOAP:</strong> More complex due to strict standards and extensive features.</li><li><strong>Use Cases:</strong></li><li><strong>REST:</strong> Ideal for web and mobile applications where simplicity, speed, and scalability are crucial.</li><li><strong>SOAP:</strong> Suitable for enterprise-level applications requiring high security and transactional reliability.</li></ul><h4>Which is Better?</h4><p>The choice between REST and SOAP depends on your specific needs:</p><ul><li><strong>Choose REST if:</strong></li><li>You need a lightweight, scalable, and flexible solution.</li><li>Your application requires fast performance and low bandwidth usage.</li><li>You prefer working with JSON.</li><li><strong>Choose SOAP if:</strong></li><li>You need built-in security and transactional support.</li><li>Your application operates in a distributed enterprise environment.</li><li>You require strict standards and detailed error handling.</li></ul><p>In conclusion, both REST and SOAP have their own advantages and are suited for different scenarios. Understanding their differences will help you make an informed decision based on your project’s requirements.</p><p>Source:Microsoft bing</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=23e6950ffc4e" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Basic Spring boot test with Junit 5]]></title>
            <link>https://medium.com/@sonuyohannan/basic-spring-boot-test-with-junit-5-89e601abfb38?source=rss-9a0ef4443060------2</link>
            <guid isPermaLink="false">https://medium.com/p/89e601abfb38</guid>
            <category><![CDATA[junit-5]]></category>
            <category><![CDATA[spring]]></category>
            <category><![CDATA[spring-boot]]></category>
            <category><![CDATA[java]]></category>
            <category><![CDATA[junit]]></category>
            <dc:creator><![CDATA[Sonu Yohannan]]></dc:creator>
            <pubDate>Wed, 05 Jun 2024 18:25:49 GMT</pubDate>
            <atom:updated>2024-06-05T18:25:49.934Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*WOlH7mqCIfh7Qflr" /><figcaption>Photo by <a href="https://unsplash.com/@carterjack?utm_source=medium&amp;utm_medium=referral">Jack Carter</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p>Testing a Java Spring Boot application using JUnit 5 involves setting up test dependencies, writing test cases, and running them. Here’s a step-by-step guide to help you through the process:</p><h3>1. Setup Dependencies</h3><p>First, ensure your pom.xml (for Maven) or build.gradle (for Gradle) includes the necessary dependencies for Spring Boot and JUnit 5.</p><p><strong>Maven:</strong></p><pre>&lt;dependency&gt;<br>    &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;<br>    &lt;artifactId&gt;spring-boot-starter-test&lt;/artifactId&gt;<br>    &lt;scope&gt;test&lt;/scope&gt;<br>&lt;/dependency&gt;<br>&lt;dependency&gt;<br>    &lt;groupId&gt;org.junit.jupiter&lt;/groupId&gt;<br>    &lt;artifactId&gt;junit-jupiter-api&lt;/artifactId&gt;<br>    &lt;scope&gt;test&lt;/scope&gt;<br>&lt;/dependency&gt;<br>&lt;dependency&gt;<br>    &lt;groupId&gt;org.junit.jupiter&lt;/groupId&gt;<br>    &lt;artifactId&gt;junit-jupiter-engine&lt;/artifactId&gt;<br>    &lt;scope&gt;test&lt;/scope&gt;<br>&lt;/dependency&gt;</pre><p>Gradle:</p><pre>dependencies {<br>    testImplementation &#39;org.springframework.boot:spring-boot-starter-test&#39;<br>    testImplementation &#39;org.junit.jupiter:junit-jupiter-api&#39;<br>    testRuntimeOnly &#39;org.junit.jupiter:junit-jupiter-engine&#39;<br>}</pre><h3>2. Create a Basic Spring Boot Application</h3><p>Create a simple Spring Boot application with a basic service and controller to test.</p><p><strong>Service:</strong></p><pre>package com.example.demo;<br><br>import org.springframework.stereotype.Service;<br><br>@Service<br>public class GreetingService {<br>    public String greet(String name) {<br>        return &quot;Hello, &quot; + name;<br>    }<br>}</pre><p>Controller:</p><pre>package com.example.demo;<br><br>import org.springframework.beans.factory.annotation.Autowired;<br>import org.springframework.web.bind.annotation.GetMapping;<br>import org.springframework.web.bind.annotation.RequestParam;<br>import org.springframework.web.bind.annotation.RestController;<br><br>@RestController<br>public class GreetingController {<br><br>    @Autowired<br>    private GreetingService greetingService;<br><br>    @GetMapping(&quot;/greet&quot;)<br>    public String greet(@RequestParam String name) {<br>        return greetingService.greet(name);<br>    }<br>}</pre><h3>3. Write Test Cases</h3><p>Now, let’s write some test cases using JUnit 5.</p><p><strong>Service Test:</strong></p><pre>package com.example.demo;<br><br>import static org.junit.jupiter.api.Assertions.assertEquals;<br><br>import org.junit.jupiter.api.Test;<br><br>class GreetingServiceTest {<br><br>    private final GreetingService greetingService = new GreetingService();<br><br>    @Test<br>    void testGreet() {<br>        String result = greetingService.greet(&quot;World&quot;);<br>        assertEquals(&quot;Hello, World&quot;, result);<br>    }<br>}</pre><p><strong>Controller Test:</strong></p><p>For testing the controller, we need to use @SpringBootTest and @AutoConfigureMockMvc annotations to load the context and auto-configure MockMvc.</p><pre>package com.example.demo;<br><br>import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;<br>import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;<br>import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;<br><br>import org.junit.jupiter.api.Test;<br>import org.springframework.beans.factory.annotation.Autowired;<br>import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;<br>import org.springframework.boot.test.context.SpringBootTest;<br>import org.springframework.test.web.servlet.MockMvc;<br><br>@SpringBootTest<br>@AutoConfigureMockMvc<br>class GreetingControllerTest {<br><br>    @Autowired<br>    private MockMvc mockMvc;<br><br>    @Test<br>    void testGreet() throws Exception {<br>        mockMvc.perform(get(&quot;/greet&quot;).param(&quot;name&quot;, &quot;World&quot;))<br>                .andExpect(status().isOk())<br>                .andExpect(content().string(&quot;Hello, World&quot;));<br>    }<br>}</pre><h3>4. Running Tests</h3><p>You can run your tests using your IDE’s built-in support for JUnit or using Maven/Gradle commands.</p><p><strong>Maven:</strong></p><pre>mvn test<br><br>// if gradle<br><br>gradle test</pre><p>thanks ;) Keep following</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=89e601abfb38" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Understanding Kafka Command Line Interface (CLI) Commands]]></title>
            <link>https://medium.com/@sonuyohannan/understanding-kafka-command-line-interface-cli-commands-1c6cf62fad3a?source=rss-9a0ef4443060------2</link>
            <guid isPermaLink="false">https://medium.com/p/1c6cf62fad3a</guid>
            <category><![CDATA[java]]></category>
            <category><![CDATA[microservices]]></category>
            <category><![CDATA[kafka-cli]]></category>
            <category><![CDATA[kafka]]></category>
            <category><![CDATA[spring-boot]]></category>
            <dc:creator><![CDATA[Sonu Yohannan]]></dc:creator>
            <pubDate>Fri, 17 Nov 2023 17:45:01 GMT</pubDate>
            <atom:updated>2023-11-17T17:45:01.143Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*03-HiQ-WoBWPUGch" /><figcaption>Photo by <a href="https://unsplash.com/@ricklipsett?utm_source=medium&amp;utm_medium=referral">Rick Lipsett</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p>Apache Kafka, a distributed event streaming platform, offers a robust Command Line Interface (CLI) tool that enables users to interact with Kafka clusters effortlessly. Whether it’s managing topics, querying consumer groups, or inspecting the cluster’s metadata, Kafka CLI commands provide a useful and efficient way to manage Kafka.</p><ol><li>Create Topic</li></ol><pre>kafka-topics.sh --create --topic &lt;topic_name&gt; --bootstrap-server &lt;bootstrap_server&gt; --partitions &lt;num_partitions&gt; --replication-factor &lt;replication_factor&gt;</pre><p>2. List Topic</p><pre>kafka-topics.sh --list --bootstrap-server &lt;bootstrap_server&gt;</pre><p>3. Describe a Topic</p><pre>kafka-topics.sh --describe --topic &lt;topic_name&gt; --bootstrap-server &lt;bootstrap_server&gt;</pre><p>4. Produce message</p><pre>kafka-console-producer.sh --topic &lt;topic_name&gt; --broker-list &lt;broker_server&gt;</pre><p>5. Consume message</p><pre>kafka-console-consumer.sh --topic &lt;topic_name&gt; --bootstrap-server &lt;bootstrap_server&gt; --from-beginning</pre><p>6. List Consume group</p><pre>kafka-consumer-groups.sh --list --bootstrap-server &lt;bootstrap_server&gt;</pre><p>7. Describe Consumer group</p><pre>kafka-consumer-groups.sh --describe --group &lt;group_name&gt; --bootstrap-server &lt;bootstrap_server&gt;</pre><p>8. Start zookeeper (windows cmd .bat , if linux you can use .sh)</p><pre>.\bin\windows\zookeeper-server-start.bat .\config\zookeeper.properties</pre><p>9. Start kafka server</p><pre>.\bin\windows\kafka-server-start.bat .\config\server.properties</pre><p>10. View Broker List</p><pre>zookeeper-shell.sh &lt;zookeeper_server&gt;: &lt;zookeeper_port&gt; ls /brokers/ids</pre><p>These are the necessary Kafka CLI commands to manage and configure kafka.</p><p>happy Learning :)</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=1c6cf62fad3a" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Dolt : A SQL Database that Works like Git]]></title>
            <link>https://medium.com/@sonuyohannan/dolt-a-sql-database-that-works-like-git-f66d345dd58f?source=rss-9a0ef4443060------2</link>
            <guid isPermaLink="false">https://medium.com/p/f66d345dd58f</guid>
            <category><![CDATA[software-development]]></category>
            <category><![CDATA[developer]]></category>
            <category><![CDATA[sql]]></category>
            <category><![CDATA[git]]></category>
            <category><![CDATA[github]]></category>
            <dc:creator><![CDATA[Sonu Yohannan]]></dc:creator>
            <pubDate>Tue, 05 Sep 2023 11:16:55 GMT</pubDate>
            <atom:updated>2023-09-05T11:16:55.082Z</atom:updated>
            <content:encoded><![CDATA[<h3>Dolt : A SQL Database that Works like Git</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*6xlJX-bINumWtiEO" /><figcaption>Photo by <a href="https://unsplash.com/@glencarrie?utm_source=medium&amp;utm_medium=referral">Glen Carrie</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p>Imagine having the best of both worlds a rock-solid database and Git’s version control magic. That’s exactly what you get when you bring Dolt and Git together.</p><p><strong>Why Connect Dolt and Git?</strong></p><p>Before we dive into the “how,” let’s understand the “why.” Why would you want to connect Dolt with Git?</p><ol><li><strong>Data Versioning:</strong> Just like Git lets you track code changes, Dolt helps you monitor data changes. Syncing them means you have a complete history of both code and data, making troubleshooting a breeze.</li><li><strong>Team Collaboration:</strong> Git is the go-to tool for collaboration in the coding world. By connecting Dolt to Git, you extend that collaboration power to your data. Multiple team members can work on the same data, with Git’s familiar workflows.</li></ol><p><strong>Connecting Dolt and Git: The Easy Way</strong></p><p>Alright, let’s get to the nitty-gritty of how to connect Dolt and Git. It’s simpler than you might think:</p><p><strong>Step 1: Initialize a Dolt Database</strong></p><ul><li>Create a Dolt database using dolt init. This sets up a Dolt repository.</li></ul><p><strong>Step 2: Connect to a Git Repository</strong></p><ul><li>To sync Dolt with Git, you need a Git repository. If you don’t have one, create it on a platform like GitHub or GitLab.</li></ul><p><strong>Step 3: Configure Remote</strong></p><ul><li>Link your Dolt database to the Git repository with dolt remote add.</li></ul><p><strong>Step 4: Push Changes</strong></p><ul><li>Now comes the fun part! Make changes to your data using SQL, then commit with dolt commit. After that, push your changes to Git using dolt push.</li></ul><p><strong>Step 5: Pull and Collaborate</strong></p><ul><li>If you’re working with others, they can clone the Git repository, pull the Dolt changes using dolt pull, and collaborate seamlessly.</li></ul><p><strong>Step 6: Merge Data with Git Workflow</strong></p><ul><li>Embrace the Git workflow you’re familiar with. Create branches, merge changes, and resolve conflicts, just as you do with code.</li></ul><p><strong>Step 7: Query and Analyze</strong></p><ul><li>Use SQL queries to dig into your Dolt data. Git’s version control ensures you can always track changes and see who did what.</li></ul><p>Conclusion</p><p>Connecting Dolt Database with Git brings harmony to your data management efforts. With the ability to version control your data and collaborate effortlessly, you’ve got a potent combination at your disposal. Say goodbye to data chaos and hello to a streamlined, organized approach.</p><p>So, data enthusiasts, it’s time to embark on this exciting journey of merging Dolt and Git into your workflow. Get ready to experience data management like never before. Connect, collaborate, and conquer the world of data with confidence!</p><p><a href="http://head on to official documentation DoltHub Home | DoltHub">head on to official documentation</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=f66d345dd58f" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Behind YouTube subtitle generation]]></title>
            <link>https://medium.com/@sonuyohannan/behind-youtube-subtitle-generation-a2afc5209b1d?source=rss-9a0ef4443060------2</link>
            <guid isPermaLink="false">https://medium.com/p/a2afc5209b1d</guid>
            <category><![CDATA[youtube]]></category>
            <category><![CDATA[software-development]]></category>
            <category><![CDATA[algorithms]]></category>
            <category><![CDATA[youtube-creators]]></category>
            <category><![CDATA[machine-learning]]></category>
            <dc:creator><![CDATA[Sonu Yohannan]]></dc:creator>
            <pubDate>Sat, 19 Aug 2023 11:44:14 GMT</pubDate>
            <atom:updated>2023-08-19T11:44:14.303Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*KPKGWMe1SQ1qUCA8" /><figcaption>Photo by <a href="https://unsplash.com/@charlesdeluvio?utm_source=medium&amp;utm_medium=referral">charlesdeluvio</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p>YouTube uses a combination of automated speech recognition (ASR) technology and machine learning algorithms to generate subtitles for videos. The process can be broken down into several steps:</p><ol><li><strong>Audio-to-Text Conversion</strong></li></ol><p>The first step involves converting the audio content of the video into text. This is done using automated speech recognition (ASR) technology. ASR algorithms analyze the audio waveform and attempt to transcribe the spoken words into text. These algorithms have been trained on vast amounts of audio data and are designed to recognize various accents, languages, and speaking styles.</p><p><strong>2. Training Data</strong></p><p>ASR systems require large amounts of training data to accurately recognize speech. This data typically includes transcribed speech from a wide variety of sources. The training data helps the ASR system learn to recognize phonemes, words, and linguistic patterns in different languages and contexts.</p><p><strong>3. Acoustic Modeling</strong></p><p>Acoustic modeling is a crucial aspect of ASR. It involves creating statistical models that relate audio features to phonemes or other linguistic units. These models help the system distinguish between different sounds and predict which words or phonemes are most likely to occur based on the audio input.</p><p><strong>4. Language Modeling</strong></p><p>Language modeling is another important component of ASR. It involves predicting the most likely sequence of words based on the context of the audio. This helps the system choose the most appropriate words to generate the transcribed text.</p><p><strong>5. Decoding and Post-Processing</strong></p><p>Once the ASR system has transcribed the audio, the generated text might still contain errors, especially for complex words, accents, or background noise. Decoding algorithms analyze the output of the ASR system and apply post-processing techniques to correct errors, improve grammar, and make the text more coherent.</p><p><strong>6. Training and Fine-Tuning</strong></p><p>YouTube’s ASR system is trained on a diverse range of audio samples to improve accuracy. Fine-tuning involves training the system on specific datasets that reflect the types of content found on YouTube. This can help the system better handle specific accents, slang, or subject matter that might be prevalent in videos.</p><p><strong>7. User Corrections</strong></p><p>YouTube allows content creators and viewers to manually edit and correct the autogenerated subtitles. These corrections are valuable for improving the quality of the subtitles and training the ASR system further.</p><p>It’s important to note that while ASR technology has advanced significantly, it’s not perfect and can still produce errors, especially in cases of poor audio quality, strong accents, or complex terminology. However, YouTube’s subtitle generation algorithm aims to provide a convenient way for creators and viewers to access content in multiple languages and to make videos more accessible to a wider audience.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=a2afc5209b1d" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[The Genesis of Git: How Linus Torvalds Revolutionized Version Control]]></title>
            <link>https://medium.com/@sonuyohannan/the-genesis-of-git-how-linus-torvalds-revolutionized-version-control-525c2b0035aa?source=rss-9a0ef4443060------2</link>
            <guid isPermaLink="false">https://medium.com/p/525c2b0035aa</guid>
            <category><![CDATA[software-development]]></category>
            <category><![CDATA[version-control]]></category>
            <category><![CDATA[git]]></category>
            <category><![CDATA[github]]></category>
            <dc:creator><![CDATA[Sonu Yohannan]]></dc:creator>
            <pubDate>Sat, 19 Aug 2023 11:21:26 GMT</pubDate>
            <atom:updated>2023-08-19T11:23:42.514Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*oM1p8oJKqFC4-OkU" /><figcaption>Photo by <a href="https://unsplash.com/@pankajpatel?utm_source=medium&amp;utm_medium=referral">Pankaj Patel</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p><strong>Introduction:</strong></p><p>In the world of software development, version control systems play a critical role in managing code changes, collaborations, and project history. One name that stands out in this domain is Git, a distributed version control system that has transformed the way developers work together on code projects. In this blog post, we’ll delve into the history of Git and explore how its creator, Linus Torvalds, wrote the code that would change the course of software development forever.</p><p><strong>The Need for a New Approach:</strong></p><p>Before the birth of Git, developers relied on centralized version control systems like CVS and Subversion to manage their code projects. However, these systems posed significant challenges when it came to handling large-scale, distributed projects. Linus Torvalds faced these very challenges while managing the development of the Linux kernel, and it was this frustration that led to the creation of Git.</p><p><strong>Design and Architecture:</strong></p><p>The journey began with Linus identifying the limitations of existing version control systems and conceptualizing a solution that could handle the unique demands of the Linux kernel. He set out to design an architecture that would become the backbone of Git. This architecture encompassed the data model, branches, commits, and the crucial concept of decentralization, enabling developers to work independently yet collaborate seamlessly.</p><p><strong>Choosing the Right Language:</strong></p><p>As a skilled programmer well-versed in the intricacies of the C programming language, Linus opted to implement Git using C. This choice was influenced by C’s efficiency and the fact that the Linux kernel itself was predominantly written in this language. It allowed him to create a powerful and performant tool that would be capable of handling the complexities of version control.</p><p><strong>Code Implementation and Iterative Development:</strong></p><p>With the architecture in place and the programming language chosen, Linus embarked on the process of coding Git’s core functionalities. He developed code for operations such as creating repositories, making commits, managing branches, and handling merges. This was an iterative process, where each round of coding, testing, and refining brought Git closer to its final form.</p><p><strong>Testing and Debugging:</strong></p><p>No software development process is complete without rigorous testing and debugging, and Git was no exception. Linus meticulously tested Git’s behavior in various scenarios, identifying bugs and issues that needed fixing. This meticulous approach ensured that Git would be reliable and robust when put to real-world use.</p><p><strong>Community Involvement and Release:</strong></p><p>As Git gained traction, other developers joined the effort, contributing ideas, code, and feedback. Linus played a vital role in reviewing contributions, merging changes, and fostering a collaborative environment. This collective effort was crucial in shaping Git into the versatile tool we know today.</p><p><strong>Conclusion:</strong></p><p>In the early 2000s, Linus Torvalds embarked on a journey to solve the version control challenges that plagued the Linux kernel development. His creation, Git, emerged as a decentralized, efficient, and powerful version control system that has revolutionized the way software developers collaborate. Through careful architecture design, iterative development, and community involvement, Linus Torvalds laid the foundation for a tool that would change the landscape of software development forever. Git’s impact has extended far beyond its initial purpose, influencing various industries and domains, and cementing its place as an indispensable part of the developer toolkit.</p><p><a href="https://tinyurl.com/43k98e3z">Advice for software developers from Linux legend -&gt;</a> <em>Read Now</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=525c2b0035aa" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Linus Torvalds’ Timeless Advice for Developers: Insights from the Linux Legend]]></title>
            <link>https://medium.com/@sonuyohannan/linus-torvalds-timeless-advice-for-developers-insights-from-the-linux-legend-81a22eb11a15?source=rss-9a0ef4443060------2</link>
            <guid isPermaLink="false">https://medium.com/p/81a22eb11a15</guid>
            <category><![CDATA[linux]]></category>
            <category><![CDATA[linus-torvalds]]></category>
            <category><![CDATA[software-development]]></category>
            <category><![CDATA[developer]]></category>
            <dc:creator><![CDATA[Sonu Yohannan]]></dc:creator>
            <pubDate>Sat, 19 Aug 2023 11:06:32 GMT</pubDate>
            <atom:updated>2023-08-19T11:09:13.113Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*G0RGlQmZD7Khgazoh53U-g.jpeg" /></figure><p>In the world of software development, few names hold as much weight as Linus Torvalds. The mastermind behind the Linux kernel, Linus has not only given the tech community one of the most widely used open-source operating systems but also shared a wealth of wisdom that continues to guide developers worldwide. Let’s delve into some of the timeless advice he’s offered over the years and how it can shape your journey as a developer.</p><h3>1. Starting Small and Building Big</h3><p>Linus Torvalds reminds us that even monumental projects like Linux started as small, personal endeavors. It’s easy to get overwhelmed by the grandeur of an idea, but the key lies in taking that first step. Begin with a small, manageable component and build on it. Success often comes from a solid foundation.</p><h3>2. Embrace Early and Frequent Releases</h3><p>“Release early, release often” is a mantra that has driven Linus’s work. Don’t wait for perfection; put your work out there, flaws and all. By doing so, you engage with real-world feedback that informs improvements. It’s through iteration that you refine your creation into something remarkable.</p><h3>3. Power of Open Source Collaboration</h3><p>Open source is at the heart of Linus’s philosophy. Collaboration trumps competition. Sharing code, ideas, and knowledge fosters innovation. Embrace the collective wisdom of the community to accelerate your projects and achieve results you could never accomplish alone.</p><h3>4. Problem-Solving over Technology Showcasing</h3><p>Amid the excitement of new technologies and programming languages, Linus advises us to remain focused on problem-solving. Technology is a means to an end, a tool to address real-world challenges. Keep your eyes on the bigger picture — solving user needs.</p><h3>5. Writing Code and Communication Skills</h3><p>Linus underscores the importance of clean, organized code that’s easy to maintain. But code isn’t the only language you need to master. Communication skills are equally vital. Treat fellow developers with respect, and engage in technical discussions with professionalism.</p><h3>6. Iterative Development for Longevity</h3><p>Linus champions iterative development — constantly refining and adapting based on feedback and evolving requirements. It’s a surefire way to build robust, adaptable solutions that stand the test of time.</p><h3>7. Passion and Fun Drive Excellence</h3><p>Passion is the engine that propels projects forward. Linus advocates for pursuing projects that ignite your passion and bring joy. Quality work arises when you’re genuinely invested and enthusiastic about what you’re doing.</p><h3>8. Real-World Relevance</h3><p>Linus reminds us that software should cater to real-world needs. Don’t get lost in the allure of technical intricacies; instead, prioritize functionality that tangibly benefits users in practical scenarios.</p><h3>9. Embrace Lifelong Learning</h3><p>The tech world is ever-evolving, and Linus encourages developers to stay curious and keep learning. Embrace new technologies and concepts to remain relevant and effective in your field.</p><h3>10. Challenge the Norms</h3><p>Linus is known for his willingness to challenge the status quo( the current state of things.). He advocates for healthy debates and critical thinking, which lead to more refined solutions and push the boundaries of innovation.</p><h3>11. Resilience in the Face of Challenges</h3><p>Building software can be tough, but Linus emphasizes resilience. Learn from your mistakes, adapt to challenges, and persevere. These moments of difficulty often lead to breakthroughs.</p><p>Linus Torvalds’ advice is a treasure trove for developers, offering insights that span the spectrum from technical expertise to the nuances of collaboration and communication. By incorporating his principles into your development journey, you can craft not only outstanding code but also a rewarding and impactful career.</p><p>As we navigate the constantly evolving landscape of technology, let Linus’s wisdom guide us toward success, innovation, and a commitment to making the world of software development a better place.</p><p>Happy Reading )</p><p>source :ChatGpt and other forums</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=81a22eb11a15" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Connecting Spring Boot to MySQL and Creating Tables and Fields Using Entity Classes]]></title>
            <link>https://medium.com/@sonuyohannan/how-to-connect-spring-boot-with-mysql-and-create-a-table-and-fields-using-entity-class-74582067db06?source=rss-9a0ef4443060------2</link>
            <guid isPermaLink="false">https://medium.com/p/74582067db06</guid>
            <category><![CDATA[mysql]]></category>
            <category><![CDATA[spring-boot]]></category>
            <category><![CDATA[java]]></category>
            <category><![CDATA[spring]]></category>
            <category><![CDATA[software-development]]></category>
            <dc:creator><![CDATA[Sonu Yohannan]]></dc:creator>
            <pubDate>Thu, 10 Aug 2023 05:01:44 GMT</pubDate>
            <atom:updated>2023-08-10T05:04:06.827Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*IMXRBQKEcG1lys7d" /><figcaption>Photo by <a href="https://unsplash.com/@heftiba?utm_source=medium&amp;utm_medium=referral">Toa Heftiba</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p>Connecting Spring Boot with MySQL involves several steps. Here’s a basic guide to get you started.</p><p>Before all we need MySQL JDBC driver dependency in the pom.xml</p><pre>&lt;dependency&gt;<br>   &lt;groupId&gt;com.mysql&lt;/groupId&gt;<br>   &lt;artifactId&gt;mysql-connector-j&lt;/artifactId&gt;<br>   &lt;scope&gt;runtime&lt;/scope&gt;<br>  &lt;/dependency&gt;</pre><p><strong>Step 1: Set Up Your MySQL Database</strong></p><p>Before connecting Spring Boot to MySQL, make sure you have a MySQL database set up and running. You’ll need the database URL, username, and password to configure Spring Boot.</p><p>You can use xampp server to start the mysql</p><p><strong>Step 2: Create a Spring Boot Project</strong></p><p>If you haven’t already, create a Spring Boot project using your preferred development environment (such as Spring Initializr or your IDE’s Spring Boot project template).</p><p><em>how to create a springboot project using spring initializr</em></p><p>follow the link <a href="https://start.spring.io/"><em>Spring Initializr</em></a></p><p><strong>Step 3: Configure Database Properties</strong></p><p>In your Spring Boot project, open the application.properties or application.yml file (usually located in the src/main/resources directory). Configure the MySQL database properties:</p><p>For application.properties</p><pre>spring.datasource.url=jdbc:mysql://localhost:3306/your_database_name<br>spring.datasource.username=your_username<br>spring.datasource.password=your_password<br>spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver<br>spring.jpa.hibernate.ddl-auto=update</pre><p>For application.yml</p><pre>spring:<br>  datasource:<br>    url: jdbc:mysql://localhost:3306/your_database_name<br>    username: your_username<br>    password: your_password<br>    driver-class-name: com.mysql.cj.jdbc.Driver<br>  jpa:<br>    hibernate:<br>      ddl-auto: update</pre><p>Replace your_database_name, your_username, and your_password with your actual MySQL database information.</p><p><strong>Step 4: Create Entity Classes</strong></p><p>Create your entity classes (Java classes that represent database tables) using JPA annotations. An example entity class might look like this</p><pre>import javax.persistence.*; // All package required for the entity class<br><br>@Entity<br>@Table(name = &quot;user&quot;)<br>public class User{<br>    @Id<br>    @GeneratedValue(strategy = GenerationType.IDENTITY)<br>    private Long id;<br>    <br>    private String firstName;<br>    private String lastName;<br>    <br>    // Getters and setters<br>}</pre><p>By default the table name will be user based on our class name , in this example I already have the @table annotation to represent the table name.</p><p><strong>Step 5: Create a Repository Interface</strong></p><p>Create a repository interface that extends JpaRepository (or a related interface) for each entity. This will provide CRUD (Create, Read, Update, Delete) operations for your entity.</p><pre>import org.springframework.data.jpa.repository.JpaRepository;<br><br>public interface UserRepository extends JpaRepository&lt;User, Long&gt; {<br>    // You can add custom queries here if needed<br>}</pre><p><strong>Step 6: Build Your Service Layer</strong></p><p>Create service classes that interact with your repository interfaces. This is where you can define your business logic and operations on your entities.</p><pre><br><br>import org.springframework.beans.factory.annotation.Autowired;<br>import org.springframework.stereotype.Service;<br><br>@Service<br>public class User{<br>    private final UserRepository;<br><br>    @Autowired<br>    public UserService(UserRepository userRepository) {<br>        //write your bussiness logic here <br>    }</pre><p><strong>Step 7: Build Your Controller Layer</strong></p><p>Create controller classes to handle incoming HTTP requests and interact with your service layer. You’ll typically use annotations like @RestController and @RequestMapping.</p><pre>import org.springframework.beans.factory.annotation.Autowired;<br>import org.springframework.http.HttpStatus;<br>import org.springframework.http.ResponseEntity;<br>import org.springframework.web.bind.annotation.*;<br><br><br>@RestController<br>@RequestMapping(&quot; &quot;)<br>public class UserController{<br>    private final UserService userService; // object intialization for UserService<br><br>    @Autowired<br>    public UserDetails(UserService userService) {<br>       this.userservice=userservice;<br>        <br>       // controller logic and return statement<br>        <br>       return UserService.getUser(); // if we have getUser function in the service class<br><br>    }</pre><p><strong>Step 8: Run Your Application</strong></p><p>Run your Spring Boot application. Spring Boot’s auto-configuration should handle the database connection based on the properties you provided.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=74582067db06" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Schrödinger’s Cat Experiment: A Fascinating Tale of Quantum Superposition]]></title>
            <link>https://medium.com/@sonuyohannan/schr%C3%B6dingers-cat-experiment-a-fascinating-tale-of-quantum-superposition-4734ea70d06a?source=rss-9a0ef4443060------2</link>
            <guid isPermaLink="false">https://medium.com/p/4734ea70d06a</guid>
            <category><![CDATA[quantum-physics]]></category>
            <category><![CDATA[science]]></category>
            <category><![CDATA[medium]]></category>
            <category><![CDATA[physics]]></category>
            <dc:creator><![CDATA[Sonu Yohannan]]></dc:creator>
            <pubDate>Wed, 02 Aug 2023 04:59:13 GMT</pubDate>
            <atom:updated>2023-08-02T04:59:13.518Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*64v-idhKQ1pC5Jwd" /><figcaption>Photo by <a href="https://unsplash.com/@pactovisual?utm_source=medium&amp;utm_medium=referral">Pacto Visual</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p>Introduction</p><p>In the realm of quantum mechanics, the Schrödinger’s Cat Experiment stands as one of the most iconic and intriguing thought experiments. It was proposed by Austrian physicist Erwin Schrödinger in 1935 to illustrate the puzzling nature of quantum superposition, a fundamental principle that challenges our understanding of reality. This thought experiment continues to captivate scientists and laypeople alike, as it delves into the bizarre world where cats can be both dead and alive simultaneously. In this blog, we will explore the concept of Schrödinger’s Cat, its implications on quantum theory, and the intriguing paradox it presents.</p><p>Understanding Quantum Superposition</p><p>At the core of the Schrödinger’s Cat Experiment lies the principle of quantum superposition. In classical physics, we understand that objects exist in specific states; for instance, a light switch can be either on or off. However, in the quantum realm, particles such as electrons and photons can exist in multiple states simultaneously until they are measured or observed. This phenomenon is described by a mathematical equation known as a wave function.</p><p>The essence of quantum superposition can be best understood through the famous thought experiment of Schrödinger’s Cat.</p><p>The Schrödinger’s Cat Experiment</p><p>Imagine a scenario where a cat is placed inside a sealed box alongside a radioactive atom, a Geiger counter, a vial of poison, and a hammer. The Geiger counter is designed to detect radioactive decay, and if it does, the hammer will smash the vial of poison, leading to the demise of the cat. The radioactive decay is an unpredictable event, and its occurrence is described by a wave function that includes both the decayed and non-decayed states.</p><p>According to quantum mechanics, until the box is opened and observed, the cat exists in a superposition of two states: alive and dead. In other words, the cat is simultaneously alive and dead until an external observer looks inside the box, causing the wave function to collapse into one of the two possible states.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*7nJvMlTbypzx0oLw.png" /></figure><p>The Paradox and Its Implications</p><p>The Schrödinger’s Cat Experiment raises several profound questions and paradoxes. One of the primary questions is about the role of the observer in quantum mechanics. Does the act of observation truly collapse the wave function and determine the outcome? And if so, what constitutes an observer? These questions challenge our understanding of reality and the nature of existence.</p><p>Moreover, the experiment demonstrates the stark contrast between the macroscopic world we experience daily and the bizarre behavior of particles in the quantum world. Quantum mechanics suggests that superposition occurs at the microscopic level, but the concept of applying it to a macroscopic object like a cat is perplexing.</p><p>Example of Quantum Superposition</p><p>A common example used to explain quantum superposition involves a single photon passing through a double-slit experiment. When a single photon is fired toward a screen with two slits, it behaves as both a particle and a wave simultaneously. The photon exhibits wave-like interference patterns, which can only be explained if we consider it passing through both slits simultaneously. However, once we attempt to observe which slit the photon passes through, the interference pattern disappears, and the photon behaves solely as a particle.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*Kz-FNoC-OlGIdfl0.png" /></figure><p>Conclusion</p><p>Schrödinger’s Cat Experiment serves as a captivating glimpse into the strange world of quantum mechanics, challenging our intuitions and perceptions about reality. The concept of quantum superposition, where particles can exist in multiple states at once, offers an intriguing perspective on the fundamental nature of matter and energy. Though Schrödinger’s Cat remains confined to the realm of thought experiments, it continues to play a crucial role in shaping our understanding of quantum mechanics and inspires ongoing research into the mysteries of the quantum world.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=4734ea70d06a" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[java: warning: source release 17 requires target release 17,Module yourApp SDK 16 is not compatible…]]></title>
            <link>https://medium.com/@sonuyohannan/java-warning-source-release-17-requires-target-release-17-module-yourapp-sdk-16-is-not-compatible-d921c4d617e9?source=rss-9a0ef4443060------2</link>
            <guid isPermaLink="false">https://medium.com/p/d921c4d617e9</guid>
            <category><![CDATA[java]]></category>
            <category><![CDATA[spring-boot]]></category>
            <category><![CDATA[spring]]></category>
            <dc:creator><![CDATA[Sonu Yohannan]]></dc:creator>
            <pubDate>Thu, 27 Jul 2023 07:49:54 GMT</pubDate>
            <atom:updated>2023-07-27T07:49:54.347Z</atom:updated>
            <content:encoded><![CDATA[<h3>java: warning: source release 17 requires target release 17,Module yourApp SDK 16 is not compatible with the source version 17.</h3><p>Hello folks!</p><p>While running the spring boot App that created using spring initializer with version of java is 17 and mine was 16. I eventually discovered the problem and its remedy.</p><p>Error or warning :</p><pre>java: warning: source release 17 requires target release 17<br><br>Module tutorial-crud SDK 16 is not compatible with the source version 17.</pre><p>Solution:</p><p>Upgrade Module SDK in project settings to 17 or higher ,</p><ol><li>Open file if you are using Inteligi idea</li><li>select project struture</li><li>change sdk version (your version) to version 17 ( Amazon correto)</li><li>Download the sdk version 17 ( Amazon correto )</li></ol><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=d921c4d617e9" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>