<?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 Abdul Rehman Kalsekar on Medium]]></title>
        <description><![CDATA[Stories by Abdul Rehman Kalsekar on Medium]]></description>
        <link>https://medium.com/@arkalsekar?source=rss-e0be25b0fef9------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*eF027Sbe8NUK-pOL3FwesA.jpeg</url>
            <title>Stories by Abdul Rehman Kalsekar on Medium</title>
            <link>https://medium.com/@arkalsekar?source=rss-e0be25b0fef9------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Thu, 12 Nov 2026 08:22:46 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@arkalsekar/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[How to Setup Secugen based Fingerprint Scanners.]]></title>
            <link>https://arkalsekar.medium.com/how-to-setup-secugen-based-fingerprint-scanners-2bd74a38a173?source=rss-e0be25b0fef9------2</link>
            <guid isPermaLink="false">https://medium.com/p/2bd74a38a173</guid>
            <category><![CDATA[how-to-setup]]></category>
            <category><![CDATA[how-to]]></category>
            <category><![CDATA[secugen]]></category>
            <category><![CDATA[fingerprint-scanner-setup]]></category>
            <category><![CDATA[fingerprint]]></category>
            <dc:creator><![CDATA[Abdul Rehman Kalsekar]]></dc:creator>
            <pubDate>Thu, 01 Feb 2024 18:09:07 GMT</pubDate>
            <atom:updated>2024-02-01T18:09:07.249Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="Fingerprint" src="https://cdn-images-1.medium.com/max/1024/1*A-cggA5cOpyrGyQXFgEosQ.jpeg" /></figure><p>Nowadays, Fingerprint Scanners are being used extensively in some or the other way in many government Procedures. From Aadhar Updation to Openning a Post Office Bank to Generating Drafts for Leave and License Agreement and beyond; Everywhere Biometric Authentication is required and a result not only the Device is neccessary but setting it up correctly is equally important. So, Here’s how you can install correct drivers and successfully connect Secugen based Fingerprint Scanners to your PC as many of government websites are only compatible to few Fingerprint Scanners.</p><p>In order to successfully make Secugen based Fingerprint Scanners work on your PC, you would need to install 3 Drivers / Softwares ie <strong>Main Driver</strong>, <strong>Legacy Driver </strong>and <strong>RD Service</strong>.</p><p>First, you need to install the <strong>Main Driver </strong>based on your Operating System which can be downloaded from <a href="https://secugen.com/drivers/">here</a>.</p><p>Secondly, you would need to Install <strong>Legacy Driver</strong> based on your Operating System. This driver can also be installed from <a href="https://secugen.com/drivers/">here.</a></p><p>Now, you would need to Install <strong>RD Service</strong> ie <strong>Registered Device Service</strong>. This can be downloaded from <a href="https://secugenindia.com/download">here.</a> After, successfull installation of the same, you can verify the Fingerprint Scanner by going to this <a href="https://secugenindia.in/rdstatus/rdstatus.html">website.</a></p><p>Optionally ;</p><p>If you want to check whether all the drivers and hardware are working fine, you can Use <strong>Secugen’s Diagnostic Tool</strong> and take some sample Fingerprint to check the same. Secugen’s Diagnostic Tool can be downloaded from <a href="https://secugen.com/rma-instructions/diagnostic-tool/">here</a>.</p><p>This tutorial and links work fine as of Jan 2024. Some of the links might be broken in near future. Update if any.</p><p>Feel Free to Connect with me on <a href="https://linkedin.in/in/arkalsekar">Linkedin</a>, <a href="https://twitter.com/ar_kalsekar">Twitter </a>for any difficulties.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=2bd74a38a173" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[A Complete Guide for Learning a New Programming Language.]]></title>
            <link>https://arkalsekar.medium.com/a-complete-guide-for-learning-a-new-programming-language-185d2d1a1310?source=rss-e0be25b0fef9------2</link>
            <guid isPermaLink="false">https://medium.com/p/185d2d1a1310</guid>
            <category><![CDATA[how-to]]></category>
            <category><![CDATA[how-to-learn-coding]]></category>
            <category><![CDATA[coding]]></category>
            <category><![CDATA[how-to-learn-programming]]></category>
            <category><![CDATA[learning-new-language]]></category>
            <dc:creator><![CDATA[Abdul Rehman Kalsekar]]></dc:creator>
            <pubDate>Fri, 26 Jan 2024 20:45:05 GMT</pubDate>
            <atom:updated>2024-01-26T20:47:01.108Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="Image of Laptop with Different Porgramming Languages" src="https://cdn-images-1.medium.com/max/1024/1*LnB7Vdhn2aS6VgOAWFCOcg.png" /><figcaption>Learning a New Programming Language</figcaption></figure><p>Here is a Complete Guide / Checklist which can help you learn a specific language via a guided path. Hope it helps and easen your journey of learning a new programming language.</p><p>Firstly, Start by knowing the basics of the language like<br>1. What the Language is mainly used for ?<br>2. Is the Language Compiler based or Interpretor based ?<br>3. What are some of the Features of the Language which are not in other Language?</p><p>Now You Know most of the Basics and you have an overview of the Language; Let’s Start by Learning the Language. The most important aspect of any language/framework or any other new technology is to Install the Necessary Softwares/IDE/Compiler etc and get the system locally running. Now that you have a System Locally, we can start learning the Actual Language. Start by <strong>Learning the Basics</strong> :</p><ul><li>Hello World</li><li>Comments — (Single / MultiLine Comments)</li><li>IO / Performing basic Terminal based input / output operations</li><li>Variables</li><li>Datatypes — (Primitives and Non-Primitives)</li><li>String Datatype with its Properties</li><li>Number (Int / float / double) Datatype</li><li>TypeCasting a Number</li><li>Built-in Standard Function</li><li>Operators and Their Types</li></ul><p>Now move on to <strong>Conditionals </strong>and learn about :</p><ul><li>Conditionals</li><li>Only If</li><li>If Else</li><li>Nested If Else</li><li>Ternary Operator</li><li>Break and Continue Statements</li></ul><p>Now move on to learning about the <strong>Loops</strong> :</p><ul><li>For Loop</li><li>While Loop</li><li>Do While Loop</li><li>For Each Loop (if available)</li></ul><p>Now move on <strong>Functional/Procedural Programming</strong> and learn about:</p><ul><li>Functions / Methods</li><li>Declaring and Defining a Function</li><li>Function Parameters and Arguments</li><li>Calling / Invoking a Function</li><li>Call by Value / Call By Reference</li><li>Scope of Varibles — Local / Global</li><li>Function OverLoading</li><li>Recursive Funcitons</li></ul><p>Here are some Additional Libraries which are highly essential :</p><ul><li>RegEX</li><li>Date API (Language Built in Date API to get Local Date and Time)</li><li>File IO</li><li>Creating a File</li><li>Reading a File Content</li><li>Updating a File Content</li><li>Deleting a File Content</li></ul><p>Yo Ho !! So far you have mastered the Functional Programming Part of the Programming Language and you can now create create almost anything and everything you want and you can think. So give yourself sometime to absorb all these concepts and get back to learning <strong>OOPS </strong>when you are refreshed. Start by learning the Basics like :</p><ul><li>Intro to OOPS (Object-Oriented Programming)</li><li>Basic of OOPs</li><li>Creating a Custom Class</li><li>Creating an Object of the Class (Instantiatoin of the Class)</li><li>Attributes and Methods</li><li>Creating a Class with Some Attributes and Methods — (Consider Attributes as the Properties / Adjective and Methods as Verbs and Class/Objec as the Noun)</li><li>Access Modifiers and defining the scope of Variable of a Custom Class</li><li>Constructors</li><li>Constructor OverLoading</li></ul><p>Now that you have some basic understanding of Object-Oriented Programming; It’s time to learn about the Principles of OOPS:</p><p><strong>Encapsulation</strong></p><ul><li>Encapsulating the Data of Custom Class by making it private and making methods to Get and Set the Data</li><li>Getters</li><li>Setters</li></ul><p><strong>Abstraction</strong></p><ul><li>Concept of Abstraction and Hiding Data / Details / Complexity from the Users</li><li>Concept of Abstract Classes</li></ul><p><strong>Inheritance</strong></p><ul><li>Concept of Inheritance</li><li>Concept of Base Class / Parent Class / Super Class and Derived Class / Child Class / Sub Class</li></ul><p><strong>Polymorphism</strong></p><ul><li>Method Overriding</li><li>Creating Multiples Classes from the Base Class</li></ul><figure><img alt="Man Clapping" src="https://cdn-images-1.medium.com/max/200/1*21ewJGHR6G-mg3fs4wXT1g.gif" /></figure><p>Congratulations !! If you have made it so far. You have learned all the Basics and Intermediate Stuffs of the Language. Now you can explore External Libraries / Frameworks / Packages made publicly available by the language and Unlock the true potential of that language. Follow <a href="https://arkalsekar.in/">Abdul Rehman Kalsekar</a> @<a href="https://arkalsekar.medium.com/">arkalsekar</a> for more such contents.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=185d2d1a1310" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Coding a Twitter Clone using ChatGPT.]]></title>
            <link>https://arkalsekar.medium.com/coding-a-twitter-clone-using-chatgpt-8993dab64404?source=rss-e0be25b0fef9------2</link>
            <guid isPermaLink="false">https://medium.com/p/8993dab64404</guid>
            <category><![CDATA[chatgpt3]]></category>
            <category><![CDATA[how-to]]></category>
            <category><![CDATA[chatgpt]]></category>
            <category><![CDATA[ai]]></category>
            <category><![CDATA[twitter-clone]]></category>
            <dc:creator><![CDATA[Abdul Rehman Kalsekar]]></dc:creator>
            <pubDate>Sun, 19 Feb 2023 19:11:47 GMT</pubDate>
            <atom:updated>2023-02-19T19:11:47.667Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*7Wt8LCqNwUKZzWCG8hSdtA.png" /></figure><p>Recently, I was just trying out ChatGPT and got an idea to test the limits of ChatGPT by asking it to create a Twitter clone using HTML, CSS, and JavaScript.</p><p>Stay tuned till the end of this post to learn to create one for yourself as well. Do Like and Share this post with your fellow developers as well. We will be discussing the whole code using prompts and their responses.</p><p>First Prompt: <em>“Create a Twitter Clone using HTML, CSS, and JS.”</em></p><p>Here is the response given to me by ChatGPT.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/875/1*qTBDOOsSftF67eMwiVoXmw.png" /></figure><p>Then I asked it to <em>“Create the basic structure of the website using HTML elements such as header, main, footer, etc for a Twitter Clone”</em></p><p>Here is what it generated.</p><pre>&lt;!DOCTYPE html&gt;<br>&lt;html&gt;<br>&lt;head&gt;<br>  &lt;title&gt;Twitter Clone&lt;/title&gt;<br>&lt;/head&gt;<br>&lt;body&gt;<br>  &lt;header&gt;<br>    &lt;h1&gt;Twitter Clone&lt;/h1&gt;<br>  &lt;/header&gt;<br><br>  &lt;main&gt;<br>    &lt;section class=&quot;input-section&quot;&gt;<br>      &lt;form action=&quot;submit-tweet.php&quot; method=&quot;post&quot;&gt;<br>        &lt;textarea name=&quot;tweet&quot;&gt;&lt;/textarea&gt;<br>        &lt;input type=&quot;submit&quot; value=&quot;Tweet&quot;&gt;<br>      &lt;/form&gt;<br>    &lt;/section&gt;<br><br>    &lt;section class=&quot;tweets-section&quot;&gt;<br>      &lt;h2&gt;Tweets&lt;/h2&gt;<br>      &lt;ul class=&quot;tweets-list&quot;&gt;<br>        &lt;li class=&quot;tweet&quot;&gt;<br>          &lt;p class=&quot;username&quot;&gt;@username&lt;/p&gt;<br>          &lt;p class=&quot;message&quot;&gt;This is a sample tweet.&lt;/p&gt;<br>        &lt;/li&gt;<br>        &lt;!-- Add more tweets here --&gt;<br>      &lt;/ul&gt;<br>    &lt;/section&gt;<br>  &lt;/main&gt;<br><br>  &lt;footer&gt;<br>    &lt;p&gt;&amp;copy; Twitter Clone 2023&lt;/p&gt;<br>  &lt;/footer&gt;<br>&lt;/body&gt;<br>&lt;/html&gt;</pre><p>Then I asked it to style the above page.</p><pre>body {<br>  font-family: Arial, sans-serif;<br>  background-color: #eee;<br>}<br><br>header {<br>  background-color: #1DA1F2;<br>  color: white;<br>  padding: 20px;<br>  text-align: center;<br>}<br><br>main {<br>  padding: 20px;<br>}<br><br>.input-section {<br>  background-color: white;<br>  padding: 20px;<br>  border-radius: 10px;<br>  box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);<br>  margin-bottom: 20px;<br>}<br><br>.input-section textarea {<br>  width: 100%;<br>  height: 150px;<br>  padding: 10px;<br>  font-size: 16px;<br>  border: none;<br>  border-radius: 10px;<br>  resize: none;<br>}<br><br>.input-section input[type=&quot;submit&quot;] {<br>  background-color: #1DA1F2;<br>  color: white;<br>  padding: 10px 20px;<br>  border: none;<br>  border-radius: 10px;<br>  font-size: 16px;<br>  float: right;<br>}<br><br>.tweets-section {<br>  background-color: white;<br>  padding: 20px;<br>  border-radius: 10px;<br>  box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);<br>}<br><br>.tweets-list {<br>  list-style: none;<br>  padding: 0;<br>  margin: 0;<br>}<br><br>.tweet {<br>  padding: 20px;<br>  border-bottom: 1px solid #ddd;<br>}<br><br>.username {<br>  font-weight: bold;<br>  color: #1DA1F2;<br>}<br><br>footer {<br>  background-color: #1DA1F2;<br>  color: white;<br>  padding: 20px;<br>  text-align: center;<br>}</pre><p>After a few more prompts here, I was a decently acceptable css.</p><pre>body {<br>  font-family: Arial, sans-serif;<br>  background-color: #e6ecf0;<br>}<br><br>header {<br>  background-color: #1DA1F2;<br>  color: white;<br>  padding: 20px;<br>  text-align: center;<br>  display: flex;<br>  justify-content: space-between;<br>}<br><br>header h1 {<br>  margin: 0;<br>}<br><br>header nav {<br>  display: flex;<br>  align-items: center;<br>}<br><br>header nav a {<br>  color: white;<br>  text-decoration: none;<br>  margin-right: 20px;<br>}<br><br>main {<br>  padding: 20px;<br>  display: flex;<br>}<br><br>.input-section {<br>  background-color: white;<br>  padding: 20px;<br>  border-radius: 10px;<br>  box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);<br>  margin-bottom: 20px;<br>  width: 100%;<br>}<br><br>.input-section textarea {<br>  width: 100%;<br>  height: 150px;<br>  padding: 10px;<br>  font-size: 16px;<br>  border: none;<br>  border-radius: 10px;<br>  resize: none;<br>}<br><br>.input-section input[type=&quot;submit&quot;] {<br>  background-color: #1DA1F2;<br>  color: white;<br>  padding: 10px 20px;<br>  border: none;<br>  border-radius: 10px;<br>  font-size: 16px;<br>  float: right;<br>  margin-top: 20px;<br>}<br><br>.tweets-section {<br>  background-color: white;<br>  padding: 20px;<br>  border-radius: 10px;<br>  box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);<br>  width: 30%;<br>  margin-left: 20px;<br>}<br><br>.tweets-section h2 {<br>  margin: 0;<br>}<br><br>.tweets-list {<br>  list-style: none;<br>  padding: 0;<br>  margin: 0;<br>}<br><br>.tweet {<br>  padding: 20px;<br>  border-bottom: 1px solid #ddd;<br>  display: flex;<br>  align-items: center;<br>}<br><br>.tweet img {<br>  width: 50px;<br>  height: 50px;<br>  border-radius: 25px;<br>  margin-right: 20px;<br>}<br><br>.username {<br>  font-weight: bold;<br>  color: #1DA1F2;<br>}<br><br>footer {<br>  background-color: #1DA1F2;<br>  color: white;<br>  padding: 20px;<br>  text-align: center;<br>}</pre><p>Now It was time to give some life to our dead application. I asked ChatGPT to <em>“Add JavaScript to save the tweets in localstorage and display them in tweet list section.”</em></p><p>I know, this isn&#39;t the best way to save such tweets, but I just needed to make the application work. Here is what it generated and to my surprise, it was way better than I could even imagine.</p><pre>const form = document.querySelector(&#39;form&#39;);<br>const tweetList = document.querySelector(&#39;.tweet-list&#39;);<br><br>form.addEventListener(&#39;submit&#39;, saveTweet);<br><br>function saveTweet(e) {<br>  e.preventDefault();<br>  const tweetText = document.querySelector(&#39;#tweet-text&#39;).value;<br><br>  let tweets = localStorage.getItem(&#39;tweets&#39;)<br>    ? JSON.parse(localStorage.getItem(&#39;tweets&#39;))<br>    : [];<br><br>  const tweet = {<br>    text: tweetText,<br>    time: new Date().toLocaleString(),<br>  };<br><br>  tweets.unshift(tweet);<br>  localStorage.setItem(&#39;tweets&#39;, JSON.stringify(tweets));<br>  displayTweets();<br>}<br><br>function displayTweets() {<br>  const tweets = localStorage.getItem(&#39;tweets&#39;)<br>    ? JSON.parse(localStorage.getItem(&#39;tweets&#39;))<br>    : [];<br><br>  tweetList.innerHTML = &#39;&#39;;<br><br>  tweets.forEach((tweet) =&gt; {<br>    const li = document.createElement(&#39;li&#39;);<br>    li.classList.add(&#39;tweet&#39;);<br>    li.innerHTML = `<br>      &lt;img src=&quot;https://picsum.photos/50&quot; alt=&quot;avatar&quot;&gt;<br>      &lt;div&gt;<br>        &lt;span class=&quot;username&quot;&gt;User:&lt;/span&gt;<br>        &lt;p class=&quot;tweet-text&quot;&gt;${tweet.text}&lt;/p&gt;<br>        &lt;div class=&quot;tweet-actions&quot;&gt;<br>          &lt;i class=&quot;fa fa-retweet&quot;&gt;&lt;/i&gt;<br>          &lt;span&gt;0&lt;/span&gt;<br>          &lt;i class=&quot;fa fa-heart&quot;&gt;&lt;/i&gt;<br>          &lt;span&gt;0&lt;/span&gt;<br>          &lt;i class=&quot;fa fa-ellipsis-h&quot;&gt;&lt;/i&gt;<br>        &lt;/div&gt;<br>        &lt;p class=&quot;tweet-time&quot;&gt;${tweet.time}&lt;/p&gt;<br>      &lt;/div&gt;<br>    `;<br>    tweetList.appendChild(li);<br>  });<br>}<br><br>displayTweets();</pre><p>Now, it&#39;s time for the final touches. I added All 3 sections ie HTML, CSS, and JS to see what it has created.</p><p><strong><em>Index.html</em></strong></p><pre><br>&lt;!DOCTYPE html&gt;<br>&lt;html lang=&quot;en&quot;&gt;<br>&lt;head&gt;<br>  &lt;meta charset=&quot;UTF-8&quot;&gt;<br>  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;<br>  &lt;link rel=&quot;stylesheet&quot; href=&quot;style.css&quot;&gt;<br>  &lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.14.0/css/all.min.css&quot;&gt;<br>&lt;link rel=&quot;stylesheet&quot; href=&quot;style.css&quot;&gt;<br>  &lt;title&gt;Twitter Clone&lt;/title&gt;<br>&lt;/head&gt;<br>&lt;body&gt;<br>  &lt;header&gt;<br>    &lt;nav&gt;<br>      &lt;h1 class=&quot;logo&quot;&gt;Twitter&lt;/h1&gt;<br>      &lt;ul class=&quot;nav-links&quot;&gt;<br>        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Home&lt;/a&gt;&lt;/li&gt;<br>        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Notifications&lt;/a&gt;&lt;/li&gt;<br>        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Messages&lt;/a&gt;&lt;/li&gt;<br>      &lt;/ul&gt;<br>      &lt;form&gt;<br>        &lt;input type=&quot;text&quot; placeholder=&quot;What&#39;s happening?&quot; id=&quot;tweet-text&quot;&gt;<br>        &lt;button type=&quot;submit&quot;&gt;Tweet&lt;/button&gt;<br>      &lt;/form&gt;<br>    &lt;/nav&gt;<br>  &lt;/header&gt;<br>  &lt;main&gt;<br>    &lt;ul class=&quot;tweet-list&quot;&gt;&lt;/ul&gt;<br>  &lt;/main&gt;<br>  &lt;footer&gt;<br>    &lt;p&gt;&amp;copy; Twitter 2023&lt;/p&gt;<br>  &lt;/footer&gt;<br>  &lt;script src=&quot;app.js&quot;&gt;&lt;/script&gt;<br>&lt;/body&gt;<br>&lt;/html&gt;</pre><p><strong>Style.css</strong></p><pre>body {<br>  font-family: Arial, sans-serif;<br>  background-color: #e6ecf0;<br>}<br><br>header {<br>  background-color: #1DA1F2;<br>  color: white;<br>  padding: 20px;<br>  text-align: center;<br>  display: flex;<br>  justify-content: space-between;<br>}<br><br>header h1 {<br>  margin: 0;<br>}<br><br>header nav {<br>  display: flex;<br>  align-items: center;<br>}<br><br>header nav a {<br>  color: white;<br>  text-decoration: none;<br>  margin-right: 20px;<br>}<br><br>main {<br>  padding: 20px;<br>  display: flex;<br>}<br><br>.input-section {<br>  background-color: white;<br>  padding: 20px;<br>  border-radius: 10px;<br>  box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);<br>  margin-bottom: 20px;<br>  width: 100%;<br>}<br><br>.input-section textarea {<br>  width: 100%;<br>  height: 150px;<br>  padding: 10px;<br>  font-size: 16px;<br>  border: none;<br>  border-radius: 10px;<br>  resize: none;<br>}<br><br>.input-section input[type=&quot;submit&quot;] {<br>  background-color: #1DA1F2;<br>  color: white;<br>  padding: 10px 20px;<br>  border: none;<br>  border-radius: 10px;<br>  font-size: 16px;<br>  float: right;<br>  margin-top: 20px;<br>}<br><br>.tweets-section {<br>  background-color: white;<br>  padding: 20px;<br>  border-radius: 10px;<br>  box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);<br>  width: 30%;<br>  margin-left: 20px;<br>}<br><br>.tweets-section h2 {<br>  margin: 0;<br>}<br><br>.tweets-list {<br>  list-style: none;<br>  padding: 0;<br>  margin: 0;<br>}<br><br>.tweet {<br>  padding: 20px;<br>  border-bottom: 1px solid #ddd;<br>  display: flex;<br>  align-items: center;<br>}<br><br>.tweet img {<br>  width: 50px;<br>  height: 50px;<br>  border-radius: 25px;<br>  margin-right: 20px;<br>}<br><br>.username {<br>  font-weight: bold;<br>  color: #1DA1F2;<br>}<br><br>footer {<br>  background-color: #1DA1F2;<br>  color: white;<br>  padding: 20px;<br>  text-align: center;<br>}</pre><p><strong><em>app.js</em></strong></p><pre>const form = document.querySelector(&#39;form&#39;);<br>const tweetList = document.querySelector(&#39;.tweet-list&#39;);<br><br>form.addEventListener(&#39;submit&#39;, saveTweet);<br><br>function saveTweet(e) {<br>  e.preventDefault();<br>  const tweetText = document.querySelector(&#39;#tweet-text&#39;).value;<br><br>  let tweets = localStorage.getItem(&#39;tweets&#39;)<br>    ? JSON.parse(localStorage.getItem(&#39;tweets&#39;))<br>    : [];<br><br>  const tweet = {<br>    text: tweetText,<br>    time: new Date().toLocaleString(),<br>  };<br><br>  tweets.unshift(tweet);<br>  localStorage.setItem(&#39;tweets&#39;, JSON.stringify(tweets));<br>  displayTweets();<br>}<br><br>function displayTweets() {<br>  const tweets = localStorage.getItem(&#39;tweets&#39;)<br>    ? JSON.parse(localStorage.getItem(&#39;tweets&#39;))<br>    : [];<br><br>  tweetList.innerHTML = &#39;&#39;;<br><br>  tweets.forEach((tweet) =&gt; {<br>    const li = document.createElement(&#39;li&#39;);<br>    li.classList.add(&#39;tweet&#39;);<br>    li.innerHTML = `<br>      &lt;img src=&quot;https://picsum.photos/50&quot; alt=&quot;avatar&quot;&gt;<br>      &lt;div&gt;<br>        &lt;span class=&quot;username&quot;&gt;User:&lt;/span&gt;<br>        &lt;p class=&quot;tweet-text&quot;&gt;${tweet.text}&lt;/p&gt;<br>        &lt;div class=&quot;tweet-actions&quot;&gt;<br>          &lt;i class=&quot;fa fa-retweet&quot;&gt;&lt;/i&gt;<br>          &lt;span&gt;0&lt;/span&gt;<br>          &lt;i class=&quot;fa fa-heart&quot;&gt;&lt;/i&gt;<br>          &lt;span&gt;0&lt;/span&gt;<br>          &lt;i class=&quot;fa fa-ellipsis-h&quot;&gt;&lt;/i&gt;<br>        &lt;/div&gt;<br>        &lt;p class=&quot;tweet-time&quot;&gt;${tweet.time}&lt;/p&gt;<br>      &lt;/div&gt;<br>    `;<br>    tweetList.appendChild(li);<br>  });<br>}<br><br>displayTweets();</pre><p>Here is what it looks like when merged together.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*7Wt8LCqNwUKZzWCG8hSdtA.png" /></figure><p>This is really scary to see ChatGPT developing such complete applications. It is really a matter to think about and ponder. Let&#39;s see what AI and ML have instore for us in the future.</p><p>Do Like and Follow <a href="https://medium.com/u/e0be25b0fef9">Abdul Rehman Kalsekar</a> for more such amazing content.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=8993dab64404" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Microsoft and Google are also in the race.]]></title>
            <link>https://arkalsekar.medium.com/microsoft-and-google-are-also-in-the-race-26365a301437?source=rss-e0be25b0fef9------2</link>
            <guid isPermaLink="false">https://medium.com/p/26365a301437</guid>
            <category><![CDATA[google]]></category>
            <category><![CDATA[google-bard]]></category>
            <category><![CDATA[openai]]></category>
            <category><![CDATA[microsoft]]></category>
            <dc:creator><![CDATA[Abdul Rehman Kalsekar]]></dc:creator>
            <pubDate>Fri, 10 Feb 2023 12:24:19 GMT</pubDate>
            <atom:updated>2023-02-10T12:24:19.707Z</atom:updated>
            <content:encoded><![CDATA[<p>It&#39;s been about 2 months since people have been using and reviewing OpenAI ChatGPT. But now, It’s time for Google and Microsoft as well.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*PH7KSanbls0nwP21L7YfLg.png" /></figure><p>Google has recently launched its <a href="https://blog.google/technology/ai/bard-google-ai-search-updates/">Google Bard</a> and Microsoft has also announced something known as <a href="https://github.com/microsoft/BioGPT">BioGPT</a> which is built on this <a href="https://academic.oup.com/bib/article/23/6/bbac409/6713511?guestAccessKey=a66d9b5d-4f83-4017-bb52-405815c907b9&amp;login=false">paper</a>. Lets see what these companies promise about their models.</p><p>Here is what Sundar Pichai has to say about Google’s Bard.</p><p>“It’s a really exciting time to be working on these technologies as we translate deep research and breakthroughs into products that truly help people. That’s the journey we’ve been on with large language models. Two years ago we unveiled next-generation language and conversation capabilities powered by our Language Model for Dialogue Applications (or <a href="https://blog.google/technology/ai/lamda/">LaMDA</a> for short).”</p><p>He also said, “Bard seeks to combine the breadth of the world’s knowledge with the power, intelligence, and creativity of our large language models. It draws on information from the web to provide fresh, high-quality responses. Bard can be an outlet for creativity, and a launchpad for curiosity, helping you to explain new discoveries from NASA’s James Webb Space Telescope to a 9-year-old, or learn more about the best strikers in football right now, and then get drills to build your skills.”</p><p>Here are some of the statements of Microsoft regarding their BioGPT.</p><p>According to their Paper, “We propose BioGPT, a domain-specific generative pre-trained Transformer language model for biomedical text generation and mining. BioGPT follows the Transformer language model backbone and is pre-trained on 15M15 PubMed abstracts from scratch. We apply BioGPT to six biomedical NLP tasks: end-to-end relation extraction on BC5CDR, KD-DTI, and DDI, question answering on PubMedQA, document classification on HoC, and text generation. To adapt to the downstream tasks, we carefully design and analyze the target sequence format and the prompt for better modeling the tasks. Experiments demonstrate that BioGPT achieves better performance compared with baseline methods and other well-performing methods across all the tasks.”</p><p>Here is what OpenAI has to say about ChatGPT.</p><p>“We trained this model using Reinforcement Learning from Human Feedback (RLHF), using the same methods as <a href="https://openai.com/blog/instruction-following/">InstructGPT</a>, but with slight differences in the data collection setup. We trained an initial model using supervised fine-tuning: human AI trainers provided conversations in which they played both sides — the user and an AI assistant. We gave the trainers access to model-written suggestions to help them compose their responses. We mixed this new dialogue dataset with the InstructGPT dataset, which we transformed into a dialogue format.”</p><p>“To create a reward model for reinforcement learning, we needed to collect comparison data, which consisted of two or more model responses ranked by quality. To collect this data, we took conversations that AI trainers had with the chatbot. We randomly selected a model-written message, sampled several alternative completions, and had AI trainers rank them. Using these reward models, we can fine-tune the model using <a href="https://openai.com/blog/openai-baselines-ppo/">Proximal Policy Optimization</a>. We performed several iterations of this process.”</p><p>I am just waiting to see what all opportunities these big AI Models will bring. Really, What an era to live in !!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=26365a301437" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[ChatGPT Explains Itself.]]></title>
            <link>https://arkalsekar.medium.com/chatgpt-explains-itself-a94cf0121a82?source=rss-e0be25b0fef9------2</link>
            <guid isPermaLink="false">https://medium.com/p/a94cf0121a82</guid>
            <category><![CDATA[ai]]></category>
            <category><![CDATA[openai]]></category>
            <category><![CDATA[artificial-intelligence]]></category>
            <category><![CDATA[chatgpt3]]></category>
            <category><![CDATA[chatgpt]]></category>
            <dc:creator><![CDATA[Abdul Rehman Kalsekar]]></dc:creator>
            <pubDate>Fri, 03 Feb 2023 20:00:31 GMT</pubDate>
            <atom:updated>2023-02-03T20:00:31.500Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/875/1*9HHmwWIxPvwD5MhNtj9hIA.jpeg" /></figure><p>Recently, I was just trying out ChatGPT and got a thought to know more about ChatGPT using itself. Here is ChatGPT’s response to the Question <strong>Explain ChatGPT in (500) words.</strong></p><p>ChatGPT is an AI language model created by OpenAI, a leading research organization in the field of artificial intelligence. It is a state-of-the-art model trained on a massive corpus of text data from the internet, which allows it to generate human-like responses to a wide range of questions and prompts.</p><p>ChatGPT is part of a family of models known as Transformer-based language models, which have revolutionized the field of natural language processing (NLP) in recent years. Transformer models are designed to process sequences of data, such as sentences or paragraphs, in an efficient and parallel manner, allowing them to handle large amounts of text data and generate high-quality responses.</p><p>One of the key strengths of ChatGPT is its ability to generate text that is both accurate and coherent. During its training, the model was exposed to a diverse range of text data, which allows it to understand the context and meaning of words and phrases, and generate responses that are relevant to the task at hand.</p><p>In addition to text generation, ChatGPT also has the ability to answer questions and provide information on a wide range of topics. This is made possible by its training data, which includes a vast amount of knowledge on subjects such as history, science, and popular culture.</p><p>ChatGPT has many potential applications, from customer service and support to content creation and marketing. For example, it can be used to automate responses to frequently asked questions, or to generate articles and blog posts on a specific subject.</p><p>Despite its many strengths, ChatGPT is not perfect, and there are limitations to its capabilities. For example, while it has been trained on a large amount of data, it may still make mistakes or generate responses that are inappropriate or insensitive. This is why it is important to use ChatGPT with caution and to always critically evaluate the responses it generates.</p><p>Overall, ChatGPT is a powerful tool for anyone who needs assistance with language-related tasks. Its ability to generate high-quality text, answer questions, and provide information on a wide range of topics makes it an invaluable resource for businesses, individuals, and researchers alike.</p><p>However, as with any AI technology, it is important to use ChatGPT with caution and to be aware of its limitations. By being mindful of its strengths and limitations, you can ensure that you are getting the most out of this powerful tool, and that you are using it in a responsible and ethical manner.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=a94cf0121a82" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How to Get all the Co-ordinates of Hand using Mediapipe Hand Solutions ?]]></title>
            <link>https://arkalsekar.medium.com/how-to-get-all-the-co-ordinates-of-hand-using-mediapipe-hand-solutions-ac7e2742f702?source=rss-e0be25b0fef9------2</link>
            <guid isPermaLink="false">https://medium.com/p/ac7e2742f702</guid>
            <category><![CDATA[computer-vision]]></category>
            <category><![CDATA[mediapipe]]></category>
            <category><![CDATA[hand-tracking]]></category>
            <category><![CDATA[python]]></category>
            <dc:creator><![CDATA[Abdul Rehman Kalsekar]]></dc:creator>
            <pubDate>Sat, 17 Apr 2021 06:10:09 GMT</pubDate>
            <atom:updated>2024-02-01T18:00:22.647Z</atom:updated>
            <content:encoded><![CDATA[<h3>How to Get all the Co-ordinates of Hand using Mediapipe Hand Solutions ?</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/900/1*luVZzN32OJg5U_VDdiNJyA.jpeg" /><figcaption>Image from <a href="https://mediapipe.dev/">https://mediapipe.dev/</a></figcaption></figure><p>Its been a while since Google Released their <a href="https://mediapipe.dev/">Mediapipe Solutions</a>. They are Absolutely amazing. The Best Part about their Models is that they are extremely light-weight and Hence can even run on ARM Devices like Raspberry Pis and Even <a href="https://google.github.io/mediapipe/getting_started/android">Mobile Phones.</a></p><p>But the Problems with their Solution is that even they are well documented, there is not much code available and Most of their work happens internally. So even After running the model on your Local Computer or on any devices like Raspberrypi or Mobile Phones, you can do much Customization. The problem becomes worst when you cannot access the coordinates of your Hand. I invested my Hours just to figure out how to get these Coordinates and Finally I figured that out By Actually Going through their <a href="https://github.com/google/mediapipe/">Source Code </a>with at the <a href="https://github.com/google/mediapipe/blob/7c331ad58b2cca0dca468e342768900041d65adc/mediapipe/python/solutions/drawing_utils.py">drawing_utils file</a>.</p><p>So Today, we are going to install the Mediapipe Solutions and Learn how to Get all the Coordinates of your Hands using Mediapipe Hand Solutions API.</p><p>Lets Get Started ..</p><ol><li>Installation</li></ol><p>You can easily install the Mediapipe Solutions using pip install mediapipe and you should be good to go.</p><p>2. Runing the Provided Code for Hands Tracking.</p><p>Now lets run the code provided by the official Documentation of Mediapipe for Tracking Hand in realtime. You can read more about it <a href="https://google.github.io/mediapipe/solutions/hands"><em>here</em>.</a></p><pre>import cv2<br>import mediapipe as mp<br>mp_drawing = mp.solutions.drawing_utils<br>mp_hands = mp.solutions.hands<br><br><br># For webcam input:<br>cap = cv2.VideoCapture(0)<br>with mp_hands.Hands(<br>    min_detection_confidence=0.5,<br>    min_tracking_confidence=0.5) as hands:<br>  while cap.isOpened():<br>    success, image = cap.read()<br>    if not success:<br>      print(&quot;Ignoring empty camera frame.&quot;)<br>      # If loading a video, use &#39;break&#39; instead of &#39;continue&#39;.<br>      continue<br><br>    # Flip the image horizontally for a later selfie-view display, and convert<br>    # the BGR image to RGB.<br>    image = cv2.cvtColor(cv2.flip(image, 1), cv2.COLOR_BGR2RGB)<br>    # To improve performance, optionally mark the image as not writeable to<br>    # pass by reference.<br>    image.flags.writeable = False<br>    results = hands.process(image)<br><br>    # Draw the hand annotations on the image.<br>    image.flags.writeable = True<br>    image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)<br>    if results.multi_hand_landmarks:<br>      for hand_landmarks in results.multi_hand_landmarks:<br>        mp_drawing.draw_landmarks(<br>            image, hand_landmarks, mp_hands.HAND_CONNECTIONS)<br>    cv2.imshow(&#39;MediaPipe Hands&#39;, image)<br>    if cv2.waitKey(5) &amp; 0xFF == 27:<br>      break<br>cap.release()</pre><p>Above is the Code Provided by mediapipe’s official Documentation for Tracking Hands in Realtime using your Webcam.</p><p>3. Getting All the Coordinates of Hand.</p><p>Now comes the Most interesting part about this Article. How to get all the 21 coordinates of your Hand and How to Use it for your own Purpose.</p><p>Heres is how to Get all the Coordinates of all your hand.</p><pre>import cv2<br>import mediapipe as mp<br>mp_drawing = mp.solutions.drawing_utils<br>mp_hands = mp.solutions.hands<br><br><br># For webcam input:<br>cap = cv2.VideoCapture(0)<br>with mp_hands.Hands(<br>    min_detection_confidence=0.5,<br>    min_tracking_confidence=0.5) as hands:<br>  while cap.isOpened():<br>    success, image = cap.read()<br>    if not success:<br>      print(&quot;Ignoring empty camera frame.&quot;)<br>      # If loading a video, use &#39;break&#39; instead of &#39;continue&#39;.<br>      continue<br><br>    # Flip the image horizontally for a later selfie-view display, and convert<br>    # the BGR image to RGB.<br>    image = cv2.cvtColor(cv2.flip(image, 1), cv2.COLOR_BGR2RGB)<br>    # To improve performance, optionally mark the image as not writeable to<br>    # pass by reference.<br>    image.flags.writeable = False<br>    results = hands.process(image)<br>    image_height, image_width, _ = image.shape</pre><pre>    # Draw the hand annotations on the image.<br>    image.flags.writeable = True<br>    image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)<br>    if results.multi_hand_landmarks:<br>      for hand_landmarks in results.multi_hand_landmarks:<br>        # Here is How to Get All the Coordinates<br>        for ids, landmrk in enumerate(hand_landmarks.landmark):<br>            # print(ids, landmrk)<br>            cx, cy = landmrk.x * image_width, landmrk.y*image_height<br>            print(cx, cy)<br>            # print (ids, cx, cy)</pre><pre>        mp_drawing.draw_landmarks(<br>            image, hand_landmarks, mp_hands.HAND_CONNECTIONS)<br>    cv2.imshow(&#39;MediaPipe Hands&#39;, image)<br>    if cv2.waitKey(5) &amp; 0xFF == 27:<br>      break<br>cap.release()</pre><p>First we have edited this line after image image_height, image_width, _ = image.shape to get the width and height of the image. The reason to get this is because mediapipe gives the coordinates in range of 0 to 1 So we manually need to convert them in pixels so that we can perform operations on that.</p><p>Later down after the loop of handlandmarks we have created a Loop that enumerates the handlandmarks.landmark which is actually all the landmarks of hands.</p><p>Further you can get each of the 21 landmarks by comparing the ids with the handlandmark chart provided by mediapipe <a href="https://google.github.io/mediapipe/solutions/hands#hand-landmark-model">here</a>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*fMBLvkdLbg0MEfv7KbJZjQ.png" /><figcaption>Image from <a href="https://google.github.io/mediapipe/solutions/hands#hand-landmark-model">https://google.github.io/mediapipe/solutions/hands#hand-landmark-model</a></figcaption></figure><p>If you encounter any difficulties Feel Free to Connect with me <a href="https://medium.com/u/e0be25b0fef9">Abdul Rehman Kalsekar</a> or on Twitter @ar_kalsekar or https://arkalsekar.in😊</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=ac7e2742f702" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How to set up a Raspberry Pi and make it up Running.]]></title>
            <link>https://arkalsekar.medium.com/how-to-set-up-a-raspberry-pi-and-make-it-up-running-22f8f8e5ad98?source=rss-e0be25b0fef9------2</link>
            <guid isPermaLink="false">https://medium.com/p/22f8f8e5ad98</guid>
            <category><![CDATA[raspberry-pi-4]]></category>
            <category><![CDATA[hacking]]></category>
            <category><![CDATA[raspberry-pi]]></category>
            <dc:creator><![CDATA[Abdul Rehman Kalsekar]]></dc:creator>
            <pubDate>Fri, 25 Dec 2020 20:57:18 GMT</pubDate>
            <atom:updated>2021-01-04T05:30:35.550Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="Raspberry Pi Image." src="https://cdn-images-1.medium.com/max/1024/0*wygCg7iHRKCSSGMt" /><figcaption>Photo by <a href="https://unsplash.com/@jeffloucks?utm_source=medium&amp;utm_medium=referral">Jeff Loucks</a> on <a href="https://unsplash.com/?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p>So you Probably got a Raspberry Pi and you want to make it Running, or you have ordered your Raspberry Pi and you want to know how to set it up running. Whatever the Case may be, this article is for you. In the following article, you will learn how to Setup a Raspberry Pi and Ensure that its Working Fine.. So let&#39;s get started..</p><p>So, First things First. What will be the hardwares you will need before you go ahead. So here goes the List of the Items you will need to make your Raspberry Pi Running.</p><ol><li>Monitor with HDMI input.</li><li>HDMI to Micro HDMI Cable.</li><li>USB Type-C Power Cable.</li><li>SD Card (Minimum 8-GB is Preferred).</li><li>SD Card Reader/Adapter.</li></ol><p>So, Thats All What you need and Obviously a Raspberry Pi 4 or any Model which you Prefer. Also If you don’t have a HDMI to Micro HDMI Cable. You can use a Simple a HDMI to HDMI Cable with a HDMI to Micro HDMI adapter.</p><p>Alright, Now our Hardware is all set and Now we want to Set up our Software. For this you will need a Laptop or any other PC. If you dont have one Just go to your nearby Cyber-Cafe and use theirs.</p><p>1 . First insert your SD Card into your adapter and then your adapter into your PC.</p><p>2. Now Download the Official Raspbian OS from their Website. You can Download Raspbian from https://www.raspberrypi.org/software/</p><p>3. Now Format your SD with an SD Card Formatter.</p><p>4. Now run the Software you recently installed from <a href="https://raspberrypi.org/">Raspberry Pi Website</a> and Flash it to your SD Card.</p><p>Now you are all set to Boot your Raspberry Pi and Start using it.</p><p>So First,</p><ol><li>Insert the Flashed SD Card in the SD Card Slot on your Raspberry Pi.</li><li>Connect your Pi to your Monitor.</li><li>Connect your Ethernet cable if you want faster internet access while updating your Software.</li><li>Connect your Mouse and Keyboard to the Pi.</li><li>Power up your Monitor.</li><li>And Finally Power up your Raspberry Pi and wait for it boot it self and within 5–10 Seconds your Raspberry Pi will be started.</li></ol><p>Note : Always power your Raspberry Pi at last because as it gets powered it boots up very quickly, and if you powered you Pi First and then your Monitor then you wont see any display. In such case just keep your Pi Up and Remove the HDMI Cable and Insert it Again and you should be good to go.</p><p>If you are unable to set it up or you think your Raspberry Pi is damaged just contact your Retailer and ask for an Exchange. But if you think you are unable to set it up or you are getting some issues with it feel free to connect with me on Twitter <a href="https://twitter.com/AbdGeeky">@AbdGeeky</a></p><p>So, thats all for this article. See you Soon, Have a Good Day and</p><p>Happy Hacking !!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=22f8f8e5ad98" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>